From 7ccc1e0144a6454bf31c94a0d0d0566186921280 Mon Sep 17 00:00:00 2001 From: Jon Ross-Perkins Date: Mon, 21 Jul 2025 11:45:07 -0700 Subject: [PATCH] Expand naming for impls and functions (#5808) Change impls from `.impl` to `.as..impl`, and *member* functions to `.` (non-member functions exclude their parent scope). Stop special-casing builtin functions, given the new naming scheme. The purpose of this is to make it clearer when a member function is being accessed and, if so, which member function. In particular, we often access interface `Op` functions. The builtin function special-casing was intended to help with that, but we still have lots of `Op` functions. This particular approach should make the interactions clearer. This changes up queueing of block IDs a little because, in particular, we need to process bodies of entities only after constants finish processing. But, it should also result in less memory usage during processing because it means we have less on the insts stack at any given time, since we track a block rather than all instructions contained by the block. --- .../check/testdata/alias/builtins.carbon | 8 +- toolchain/check/testdata/array/basics.carbon | 84 +- .../check/testdata/array/bound_values.carbon | 92 +- toolchain/check/testdata/array/import.carbon | 10 +- .../testdata/array/index_not_literal.carbon | 116 +- .../array/init_dependent_bound.carbon | 68 +- .../testdata/as/adapter_conversion.carbon | 94 +- toolchain/check/testdata/as/basics.carbon | 68 +- .../testdata/basics/dump_sem_ir_ranges.carbon | 50 +- .../basics/duplicate_name_same_line.carbon | 16 +- toolchain/check/testdata/basics/parens.carbon | 48 +- .../testdata/basics/type_literals.carbon | 6 +- .../check/testdata/builtins/bool/eq.carbon | 30 +- .../testdata/builtins/bool/make_type.carbon | 6 +- .../check/testdata/builtins/bool/neq.carbon | 30 +- .../check/testdata/builtins/float/add.carbon | 6 +- .../check/testdata/builtins/float/div.carbon | 6 +- .../check/testdata/builtins/float/eq.carbon | 6 +- .../testdata/builtins/float/greater.carbon | 6 +- .../testdata/builtins/float/greater_eq.carbon | 6 +- .../check/testdata/builtins/float/less.carbon | 6 +- .../testdata/builtins/float/less_eq.carbon | 6 +- .../testdata/builtins/float/make_type.carbon | 6 +- .../check/testdata/builtins/float/mul.carbon | 6 +- .../testdata/builtins/float/negate.carbon | 6 +- .../check/testdata/builtins/float/neq.carbon | 6 +- .../check/testdata/builtins/float/sub.carbon | 6 +- .../check/testdata/builtins/int/and.carbon | 6 +- .../testdata/builtins/int/and_assign.carbon | 2 +- .../testdata/builtins/int/complement.carbon | 6 +- .../testdata/builtins/int/convert.carbon | 18 +- .../builtins/int/convert_checked.carbon | 72 +- .../check/testdata/builtins/int/eq.carbon | 6 +- .../testdata/builtins/int/greater.carbon | 6 +- .../testdata/builtins/int/greater_eq.carbon | 6 +- .../testdata/builtins/int/left_shift.carbon | 12 +- .../builtins/int/left_shift_assign.carbon | 4 +- .../check/testdata/builtins/int/less.carbon | 6 +- .../testdata/builtins/int/less_eq.carbon | 6 +- .../check/testdata/builtins/int/neq.carbon | 6 +- .../check/testdata/builtins/int/or.carbon | 6 +- .../testdata/builtins/int/or_assign.carbon | 2 +- .../testdata/builtins/int/right_shift.carbon | 12 +- .../builtins/int/right_shift_assign.carbon | 4 +- .../check/testdata/builtins/int/sadd.carbon | 6 +- .../check/testdata/builtins/int/sdiv.carbon | 6 +- .../testdata/builtins/int/sdiv_assign.carbon | 2 +- .../check/testdata/builtins/int/smod.carbon | 6 +- .../testdata/builtins/int/smod_assign.carbon | 2 +- .../check/testdata/builtins/int/smul.carbon | 6 +- .../testdata/builtins/int/smul_assign.carbon | 2 +- .../testdata/builtins/int/snegate.carbon | 6 +- .../check/testdata/builtins/int/ssub.carbon | 6 +- .../testdata/builtins/int/ssub_assign.carbon | 2 +- .../check/testdata/builtins/int/uadd.carbon | 6 +- .../testdata/builtins/int/uadd_assign.carbon | 2 +- .../check/testdata/builtins/int/udiv.carbon | 6 +- .../testdata/builtins/int/udiv_assign.carbon | 2 +- .../check/testdata/builtins/int/umod.carbon | 6 +- .../testdata/builtins/int/umod_assign.carbon | 2 +- .../check/testdata/builtins/int/umul.carbon | 6 +- .../testdata/builtins/int/umul_assign.carbon | 2 +- .../testdata/builtins/int/unegate.carbon | 6 +- .../check/testdata/builtins/int/usub.carbon | 6 +- .../testdata/builtins/int/usub_assign.carbon | 2 +- .../check/testdata/builtins/int/xor.carbon | 6 +- .../testdata/builtins/int/xor_assign.carbon | 2 +- .../check/testdata/builtins/no_op.carbon | 10 +- .../check/testdata/builtins/print/char.carbon | 52 +- .../check/testdata/builtins/print/int.carbon | 52 +- .../check/testdata/builtins/read/char.carbon | 12 +- toolchain/check/testdata/choice/basic.carbon | 76 +- .../testdata/class/access_modifers.carbon | 272 +-- .../check/testdata/class/adapter/adapt.carbon | 18 +- .../testdata/class/adapter/adapt_copy.carbon | 112 +- .../class/adapter/extend_adapt.carbon | 66 +- .../testdata/class/adapter/init_adapt.carbon | 96 +- toolchain/check/testdata/class/base.carbon | 48 +- .../class/base_function_unqualified.carbon | 40 +- .../check/testdata/class/base_method.carbon | 52 +- .../class/base_method_qualified.carbon | 80 +- .../testdata/class/base_method_shadow.carbon | 54 +- toolchain/check/testdata/class/basic.carbon | 64 +- .../class/complete_in_member_fn.carbon | 10 +- .../testdata/class/derived_to_base.carbon | 76 +- .../check/testdata/class/destroy_calls.carbon | 318 ++-- .../testdata/class/fail_addr_self.carbon | 66 +- .../check/testdata/class/field_access.carbon | 84 +- .../class/field_access_in_value.carbon | 84 +- .../class/generic/base_is_generic.carbon | 174 +- .../check/testdata/class/generic/basic.carbon | 116 +- .../check/testdata/class/generic/call.carbon | 290 +-- .../generic/complete_in_conversion.carbon | 102 +- .../testdata/class/generic/import.carbon | 294 +-- .../check/testdata/class/generic/init.carbon | 26 +- .../class/generic/member_access.carbon | 252 +-- .../class/generic/member_inline.carbon | 108 +- .../class/generic/member_out_of_line.carbon | 286 +-- .../testdata/class/generic/member_type.carbon | 366 ++-- .../class/generic/method_deduce.carbon | 292 +-- .../check/testdata/class/generic/self.carbon | 194 +- .../testdata/class/generic/stringify.carbon | 120 +- .../testdata/class/generic_method.carbon | 56 +- .../testdata/class/generic_vs_params.carbon | 10 +- toolchain/check/testdata/class/import.carbon | 166 +- .../check/testdata/class/import_base.carbon | 110 +- .../testdata/class/import_member_cycle.carbon | 14 +- .../class/indirect_import_member.carbon | 80 +- .../testdata/class/inheritance_access.carbon | 340 ++-- toolchain/check/testdata/class/init_as.carbon | 62 +- .../check/testdata/class/init_nested.carbon | 22 +- toolchain/check/testdata/class/local.carbon | 74 +- toolchain/check/testdata/class/method.carbon | 178 +- .../check/testdata/class/method_access.carbon | 16 +- toolchain/check/testdata/class/nested.carbon | 98 +- .../check/testdata/class/nested_name.carbon | 14 +- .../check/testdata/class/raw_self.carbon | 24 +- .../check/testdata/class/raw_self_type.carbon | 44 +- .../check/testdata/class/redeclaration.carbon | 12 +- .../check/testdata/class/reenter_scope.carbon | 34 +- toolchain/check/testdata/class/reorder.carbon | 62 +- .../testdata/class/reorder_qualified.carbon | 200 +- toolchain/check/testdata/class/scope.carbon | 118 +- toolchain/check/testdata/class/self.carbon | 34 +- .../testdata/class/self_conversion.carbon | 74 +- .../check/testdata/class/self_type.carbon | 32 +- .../check/testdata/class/static_method.carbon | 32 +- .../testdata/class/syntactic_merge.carbon | 18 +- .../class/syntactic_merge_literal.carbon | 88 +- .../class/todo_access_modifiers.carbon | 20 +- .../testdata/class/virtual_modifiers.carbon | 1536 ++++++++-------- toolchain/check/testdata/deduce/array.carbon | 354 ++-- .../testdata/deduce/binding_pattern.carbon | 124 +- .../check/testdata/deduce/generic_type.carbon | 136 +- .../check/testdata/deduce/int_float.carbon | 48 +- toolchain/check/testdata/deduce/tuple.carbon | 62 +- .../testdata/deduce/type_operator.carbon | 42 +- .../value_with_type_through_access.carbon | 126 +- .../check/testdata/eval/aggregates.carbon | 286 +-- toolchain/check/testdata/facet/access.carbon | 104 +- .../facet/call_combined_impl_witness.carbon | 168 +- .../convert_class_type_to_facet_type.carbon | 6 +- ...t_class_type_to_generic_facet_value.carbon | 114 +- ...rt_class_value_to_facet_value_value.carbon | 20 +- ..._value_to_generic_facet_value_value.carbon | 200 +- ...t_value_as_type_knows_original_type.carbon | 112 +- .../convert_facet_value_to_itself.carbon | 6 +- ..._facet_value_to_narrowed_facet_type.carbon | 126 +- ...t_facet_value_value_to_blanket_impl.carbon | 18 +- ..._value_to_generic_facet_value_value.carbon | 62 +- ...convert_facet_value_value_to_itself.carbon | 20 +- .../testdata/facet/convert_interface.carbon | 6 +- ...t_class_type_to_generic_facet_value.carbon | 50 +- ...l_convert_type_erased_type_to_facet.carbon | 6 +- ...uction_uses_runtime_type_conversion.carbon | 60 +- toolchain/check/testdata/for/actual.carbon | 806 ++++---- toolchain/check/testdata/for/basic.carbon | 128 +- toolchain/check/testdata/for/pattern.carbon | 704 +++---- .../function/builtin/adapted_type.carbon | 44 +- .../testdata/function/builtin/call.carbon | 98 +- .../builtin/call_from_operator.carbon | 668 +++---- .../testdata/function/builtin/import.carbon | 92 +- .../testdata/function/builtin/method.carbon | 204 +- .../check/testdata/function/call/alias.carbon | 14 +- .../function/call/fail_not_callable.carbon | 14 +- .../call/fail_return_type_mismatch.carbon | 20 +- .../check/testdata/function/call/i32.carbon | 48 +- .../function/call/more_param_ir.carbon | 62 +- .../testdata/function/call/params_one.carbon | 34 +- .../function/call/params_one_comma.carbon | 44 +- .../testdata/function/call/params_two.carbon | 48 +- .../function/call/params_two_comma.carbon | 68 +- .../call/prefer_unqualified_lookup.carbon | 120 +- .../function/call/return_implicit.carbon | 14 +- .../function/declaration/extern.carbon | 20 +- .../fail_import_incomplete_return.carbon | 22 +- .../function/declaration/import.carbon | 220 +-- .../definition/fail_local_decl.carbon | 22 +- .../function/definition/import.carbon | 44 +- .../testdata/function/generic/call.carbon | 28 +- .../call_method_on_generic_facet.carbon | 126 +- .../testdata/function/generic/deduce.carbon | 124 +- .../generic/deduce_nested_facet_value.carbon | 54 +- .../function/generic/param_in_type.carbon | 52 +- .../function/generic/resolve_used.carbon | 40 +- .../function/generic/return_slot.carbon | 190 +- .../function/generic/type_param.carbon | 12 +- .../function/generic/undefined.carbon | 102 +- .../testdata/generic/call_basic_depth.carbon | 126 +- .../testdata/generic/complete_type.carbon | 68 +- .../testdata/generic/dependent_param.carbon | 100 +- .../generic/dot_self_symbolic_type.carbon | 198 +- toolchain/check/testdata/generic/local.carbon | 76 +- .../testdata/generic/template/convert.carbon | 26 +- .../generic/template/unimplemented.carbon | 26 +- .../generic/template_dependence.carbon | 12 +- toolchain/check/testdata/if/basics.carbon | 24 +- toolchain/check/testdata/if_expr/basic.carbon | 54 +- .../if_expr/constant_condition.carbon | 112 +- .../testdata/if_expr/control_flow.carbon | 54 +- .../if_expr/fail_partial_constant.carbon | 6 +- .../check/testdata/if_expr/nested.carbon | 94 +- .../check/testdata/if_expr/struct.carbon | 68 +- .../testdata/impl/assoc_const_self.carbon | 122 +- toolchain/check/testdata/impl/basic.carbon | 34 +- toolchain/check/testdata/impl/compound.carbon | 344 ++-- .../check/testdata/impl/declaration.carbon | 8 +- toolchain/check/testdata/impl/empty.carbon | 6 +- .../check/testdata/impl/error_recovery.carbon | 6 +- .../check/testdata/impl/extend_impl.carbon | 18 +- .../testdata/impl/extend_impl_generic.carbon | 282 +-- .../check/testdata/impl/fail_alias.carbon | 10 +- .../testdata/impl/fail_call_invalid.carbon | 82 +- .../impl/fail_extend_impl_forall.carbon | 102 +- .../impl/fail_extend_impl_scope.carbon | 94 +- .../impl/fail_extend_impl_type_as.carbon | 22 +- .../impl/fail_extend_non_interface.carbon | 6 +- ..._extend_partially_defined_interface.carbon | 16 +- .../fail_extend_undefined_interface.carbon | 6 +- .../testdata/impl/fail_impl_as_scope.carbon | 226 +-- .../impl/fail_impl_bad_assoc_const.carbon | 6 +- .../impl/fail_impl_bad_assoc_fn.carbon | 628 +++---- .../impl/fail_impl_bad_interface.carbon | 36 +- .../testdata/impl/fail_impl_bad_type.carbon | 4 +- .../testdata/impl/fail_redefinition.carbon | 10 +- .../impl/fail_self_type_mismatch.carbon | 98 +- .../impl/fail_undefined_interface.carbon | 16 +- .../check/testdata/impl/forward_decls.carbon | 362 ++-- .../impl/generic_redeclaration.carbon | 246 +-- toolchain/check/testdata/impl/impl_as.carbon | 48 +- .../testdata/impl/impl_assoc_const.carbon | 8 +- .../impl/impl_assoc_const_with_prelude.carbon | 212 +-- .../check/testdata/impl/impl_forall.carbon | 60 +- .../check/testdata/impl/impl_thunk.carbon | 314 ++-- .../impl/impl_thunk_min_prelude.carbon | 40 +- .../testdata/impl/import_builtin_call.carbon | 486 ++--- .../testdata/impl/import_compound.carbon | 200 +- .../testdata/impl/import_extend_impl.carbon | 68 +- .../check/testdata/impl/import_generic.carbon | 162 +- .../impl/import_interface_assoc_const.carbon | 146 +- .../check/testdata/impl/import_self.carbon | 124 +- .../check/testdata/impl/import_thunk.carbon | 326 ++-- .../testdata/impl/import_use_generic.carbon | 142 +- .../check/testdata/impl/interface_args.carbon | 532 +++--- .../check/testdata/impl/lookup/alias.carbon | 44 +- .../impl/lookup/canonical_query_self.carbon | 190 +- .../lookup/fail_alias_impl_not_found.carbon | 24 +- .../lookup/fail_todo_undefined_impl.carbon | 52 +- .../check/testdata/impl/lookup/generic.carbon | 800 ++++---- .../testdata/impl/lookup/impl_forall.carbon | 266 +-- .../check/testdata/impl/lookup/import.carbon | 688 +++---- .../impl/lookup/instance_method.carbon | 78 +- ...g_generic_inside_rewrite_constraint.carbon | 266 +-- ...pecialization_with_symbolic_rewrite.carbon | 162 +- .../testdata/impl/lookup/specific_args.carbon | 222 +-- .../testdata/impl/lookup/transitive.carbon | 110 +- .../testdata/impl/multiple_extend.carbon | 374 ++-- .../impl/no_definition_in_impl_file.carbon | 42 +- .../check/testdata/impl/redeclaration.carbon | 10 +- .../check/testdata/impl/self_in_class.carbon | 58 +- .../testdata/impl/self_in_signature.carbon | 216 +-- .../impl/todo_impl_with_unrelated_fn.carbon | 44 +- .../testdata/impl/use_assoc_const.carbon | 1638 ++++++++--------- .../index/array_element_access.carbon | 76 +- .../check/testdata/index/expr_category.carbon | 204 +- .../index/fail_array_large_index.carbon | 62 +- .../index/fail_array_non_int_indexing.carbon | 34 +- .../fail_array_out_of_bound_access.carbon | 48 +- .../testdata/index/fail_expr_category.carbon | 132 +- .../testdata/index/fail_name_not_found.carbon | 14 +- .../index/fail_negative_indexing.carbon | 86 +- .../testdata/interface/as_type_of_type.carbon | 12 +- .../interface/assoc_const_in_generic.carbon | 58 +- .../check/testdata/interface/basic.carbon | 16 +- .../interface/compound_member_access.carbon | 544 +++--- .../testdata/interface/default_fn.carbon | 82 +- .../fail_add_member_outside_definition.carbon | 42 +- .../interface/fail_assoc_const_alias.carbon | 310 ++-- .../fail_assoc_fn_invalid_use.carbon | 42 +- .../testdata/interface/fail_duplicate.carbon | 54 +- .../interface/fail_lookup_undefined.carbon | 26 +- .../interface/fail_member_lookup.carbon | 24 +- .../testdata/interface/fail_modifiers.carbon | 76 +- .../interface/fail_redeclare_member.carbon | 26 +- .../fail_todo_assoc_const_default.carbon | 34 +- .../fail_todo_define_default_fn_inline.carbon | 30 +- ..._todo_define_default_fn_out_of_line.carbon | 144 +- .../fail_todo_generic_default_fn.carbon | 110 +- .../interface/fail_todo_modifiers.carbon | 30 +- .../check/testdata/interface/generic.carbon | 56 +- .../generic_binding_after_assoc_const.carbon | 42 +- .../testdata/interface/generic_import.carbon | 62 +- .../testdata/interface/generic_method.carbon | 606 +++--- .../interface/generic_vs_params.carbon | 42 +- .../check/testdata/interface/import.carbon | 32 +- .../interface/import_interface_decl.carbon | 8 +- .../check/testdata/interface/local.carbon | 66 +- .../check/testdata/interface/self.carbon | 50 +- .../interface/todo_define_not_default.carbon | 64 +- .../testdata/interop/cpp/class/class.carbon | 44 +- .../testdata/interop/cpp/class/method.carbon | 170 +- .../testdata/interop/cpp/class/struct.carbon | 44 +- .../testdata/interop/cpp/class/union.carbon | 10 +- .../function/arithmetic_types_bridged.carbon | 300 +-- .../function/arithmetic_types_mapped.carbon | 390 ++-- .../interop/cpp/function/class.carbon | 126 +- .../interop/cpp/function/full_semir.carbon | 68 +- .../interop/cpp/function/in_template.carbon | 44 +- .../interop/cpp/function/pointer.carbon | 56 +- .../interop/cpp/function/struct.carbon | 126 +- .../interop/cpp/function/union.carbon | 106 +- .../testdata/interop/cpp/namespace.carbon | 10 +- .../check/testdata/interop/cpp/typedef.carbon | 78 +- .../testdata/let/compile_time_bindings.carbon | 276 +-- .../testdata/let/fail_duplicate_decl.carbon | 48 +- .../check/testdata/let/fail_generic.carbon | 6 +- .../check/testdata/let/fail_modifiers.carbon | 104 +- toolchain/check/testdata/let/generic.carbon | 14 +- toolchain/check/testdata/let/global.carbon | 34 +- .../check/testdata/let/shadowed_decl.carbon | 34 +- .../check/testdata/main_run/return_i32.carbon | 34 +- .../testdata/namespace/add_to_import.carbon | 34 +- .../check/testdata/namespace/alias.carbon | 34 +- .../namespace/fail_decl_in_alias.carbon | 34 +- .../merging_with_indirections.carbon | 30 +- .../check/testdata/namespace/shadow.carbon | 66 +- .../testdata/operators/builtin/and.carbon | 106 +- .../operators/builtin/assignment.carbon | 228 +-- .../fail_and_or_not_in_function.carbon | 12 +- .../fail_and_or_partial_constant.carbon | 36 +- .../fail_assignment_to_non_assignable.carbon | 142 +- .../fail_redundant_compound_access.carbon | 62 +- .../builtin/fail_type_mismatch.carbon | 20 +- .../fail_type_mismatch_assignment.carbon | 48 +- .../testdata/operators/builtin/or.carbon | 106 +- .../operators/builtin/unary_op.carbon | 64 +- .../testdata/operators/overloaded/add.carbon | 26 +- .../operators/overloaded/bit_and.carbon | 26 +- .../overloaded/bit_complement.carbon | 14 +- .../operators/overloaded/bit_or.carbon | 26 +- .../operators/overloaded/bit_xor.carbon | 26 +- .../testdata/operators/overloaded/dec.carbon | 12 +- .../testdata/operators/overloaded/div.carbon | 26 +- .../testdata/operators/overloaded/eq.carbon | 136 +- .../overloaded/fail_assign_non_ref.carbon | 70 +- .../operators/overloaded/fail_no_impl.carbon | 14 +- .../operators/overloaded/implicit_as.carbon | 74 +- .../testdata/operators/overloaded/inc.carbon | 12 +- .../operators/overloaded/index.carbon | 114 +- .../overloaded/index_with_prelude.carbon | 148 +- .../operators/overloaded/left_shift.carbon | 26 +- .../testdata/operators/overloaded/mod.carbon | 26 +- .../testdata/operators/overloaded/mul.carbon | 26 +- .../operators/overloaded/negate.carbon | 14 +- .../operators/overloaded/ordered.carbon | 166 +- .../operators/overloaded/right_shift.carbon | 26 +- .../testdata/operators/overloaded/sub.carbon | 26 +- .../package_expr/fail_not_found.carbon | 14 +- .../check/testdata/package_expr/syntax.carbon | 118 +- .../packages/implicit_imports_prelude.carbon | 34 +- .../check/testdata/packages/raw_core.carbon | 34 +- .../check/testdata/patterns/underscore.carbon | 14 +- .../testdata/pointer/address_of_deref.carbon | 48 +- .../testdata/pointer/address_of_lvalue.carbon | 148 +- toolchain/check/testdata/pointer/arrow.carbon | 22 +- toolchain/check/testdata/pointer/basic.carbon | 62 +- .../pointer/fail_address_of_value.carbon | 28 +- .../check/testdata/pointer/import.carbon | 34 +- .../return/code_after_return_value.carbon | 40 +- .../fail_return_with_returned_var.carbon | 76 +- .../fail_returned_var_no_return_type.carbon | 28 +- .../return/fail_returned_var_shadow.carbon | 126 +- .../return/fail_returned_var_type.carbon | 20 +- .../return/import_convert_function.carbon | 1426 +++++++------- .../check/testdata/return/returned_var.carbon | 76 +- .../testdata/return/returned_var_scope.carbon | 130 +- toolchain/check/testdata/return/struct.carbon | 34 +- toolchain/check/testdata/return/tuple.carbon | 48 +- toolchain/check/testdata/return/value.carbon | 34 +- .../struct/fail_member_access_type.carbon | 6 +- .../struct/fail_non_member_access.carbon | 34 +- toolchain/check/testdata/struct/import.carbon | 188 +- .../struct/literal_member_access.carbon | 14 +- .../testdata/struct/member_access.carbon | 40 +- .../struct/nested_struct_in_place.carbon | 36 +- .../check/testdata/struct/one_entry.carbon | 34 +- .../testdata/struct/partially_const.carbon | 44 +- .../testdata/struct/reorder_fields.carbon | 24 +- .../testdata/struct/tuple_as_element.carbon | 48 +- .../check/testdata/struct/two_entries.carbon | 68 +- .../testdata/tuple/element_access.carbon | 106 +- toolchain/check/testdata/tuple/import.carbon | 48 +- .../testdata/tuple/in_place_tuple_init.carbon | 118 +- .../check/testdata/tuple/tuple_pattern.carbon | 50 +- toolchain/check/testdata/var/decl.carbon | 14 +- .../check/testdata/var/decl_with_init.carbon | 14 +- .../testdata/var/fail_duplicate_decl.carbon | 22 +- .../testdata/var/fail_init_with_self.carbon | 14 +- .../var/fail_lookup_outside_scope.carbon | 14 +- .../testdata/var/fail_not_copyable.carbon | 28 +- .../var/global_lookup_in_scope.carbon | 14 +- toolchain/check/testdata/var/lookup.carbon | 14 +- toolchain/check/testdata/var/shadowing.carbon | 30 +- .../check/testdata/var/var_pattern.carbon | 176 +- .../testdata/where_expr/equal_rewrite.carbon | 18 +- .../testdata/array/array_in_place.carbon | 8 +- toolchain/lower/testdata/builtins/bool.carbon | 12 +- .../lower/testdata/builtins/float.carbon | 44 +- toolchain/lower/testdata/builtins/int.carbon | 332 ++-- .../builtins/method_vs_nonmethod.carbon | 8 +- .../builtins/overloaded_operator.carbon | 6 +- .../lower/testdata/builtins/print_read.carbon | 16 +- toolchain/lower/testdata/builtins/uint.carbon | 72 +- toolchain/lower/testdata/class/adapt.carbon | 4 +- toolchain/lower/testdata/class/convert.carbon | 4 +- toolchain/lower/testdata/class/generic.carbon | 8 +- toolchain/lower/testdata/class/method.carbon | 4 +- toolchain/lower/testdata/class/virtual.carbon | 18 +- toolchain/lower/testdata/for/bindings.carbon | 4 +- .../lower/testdata/for/break_continue.carbon | 10 +- toolchain/lower/testdata/for/for.carbon | 10 +- .../generic/call_different_impls.carbon | 4 +- .../call_different_impls_with_const.carbon | 4 +- .../generic/call_impl_function.carbon | 4 +- .../function/generic/call_method.carbon | 4 +- .../generic/call_recursive_basic.carbon | 24 +- .../generic/call_recursive_diamond.carbon | 54 +- .../generic/call_recursive_impl.carbon | 20 +- .../generic/call_recursive_mutual.carbon | 48 +- .../generic/call_recursive_reorder.carbon | 8 +- .../call_recursive_reorder_more.carbon | 56 +- .../generic/call_recursive_sccs_deep.carbon | 72 +- .../generic/call_specific_in_class.carbon | 16 +- .../lower/testdata/impl/assoc_fn_alias.carbon | 4 +- .../lower/testdata/impl/extend_impl.carbon | 8 +- toolchain/lower/testdata/impl/impl.carbon | 4 +- toolchain/lower/testdata/impl/import.carbon | 4 +- .../testdata/impl/instance_method.carbon | 4 +- .../lower/testdata/interop/cpp/method.carbon | 8 +- .../testdata/operators/arithmetic.carbon | 56 +- toolchain/sem_ir/inst_namer.cpp | 105 +- toolchain/sem_ir/inst_namer.h | 8 +- 442 files changed, 19993 insertions(+), 19948 deletions(-) diff --git a/toolchain/check/testdata/alias/builtins.carbon b/toolchain/check/testdata/alias/builtins.carbon index 5156b09c26ec..3af3ca294505 100644 --- a/toolchain/check/testdata/alias/builtins.carbon +++ b/toolchain/check/testdata/alias/builtins.carbon @@ -76,7 +76,7 @@ let a_test: bool = a; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %b: = bind_alias b, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -99,9 +99,9 @@ let a_test: bool = a; // CHECK:STDOUT: %a_test.patt: %pattern_type.831 = binding_pattern a_test [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc12_13.1: type = splice_block %.loc12_13.3 [concrete = bool] { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc12_13.2: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc12_13.3: type = converted %bool.make_type, %.loc12_13.2 [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc12_13.2: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc12_13.3: type = converted %Bool.call, %.loc12_13.2 [concrete = bool] // CHECK:STDOUT: } // CHECK:STDOUT: %a_test: bool = bind_name a_test, [concrete = ] // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/array/basics.carbon b/toolchain/check/testdata/array/basics.carbon index bbd040b3de78..5a403ece24e8 100644 --- a/toolchain/check/testdata/array/basics.carbon +++ b/toolchain/check/testdata/array/basics.carbon @@ -181,11 +181,11 @@ var a: array(1, 1); // CHECK:STDOUT: %tuple.type.14a: type = tuple_type (%tuple.type.734, %tuple.type.734) [concrete] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete] -// CHECK:STDOUT: %Op.type.fe9: type = fn_type @Op.1, @Destroy.impl(%tuple.type.734) [concrete] -// CHECK:STDOUT: %Op.ae1: %Op.type.fe9 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.fe9: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%tuple.type.734) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ae1: %T.as.Destroy.impl.Op.type.fe9 = struct_value () [concrete] // CHECK:STDOUT: %ptr.dbe: type = ptr_type %tuple.type.734 [concrete] -// CHECK:STDOUT: %Op.type.280: type = fn_type @Op.1, @Destroy.impl(%array_type) [concrete] -// CHECK:STDOUT: %Op.d4f: %Op.type.280 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.280: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%array_type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.d4f: %T.as.Destroy.impl.Op.type.280 = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -199,20 +199,20 @@ var a: array(1, 1); // CHECK:STDOUT: } // CHECK:STDOUT: %v.var: ref %array_type = var %v.var_patt // CHECK:STDOUT: %F.ref.loc10_33: %F.type = name_ref F, file.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %.loc10_41.1: ref %tuple.type.734 = splice_block %.loc10_41.2 { +// CHECK:STDOUT: %.loc10_41.1: ref %tuple.type.734 = splice_block %.loc10_41.6 { // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] -// CHECK:STDOUT: %.loc10_41.2: ref %tuple.type.734 = array_index %v.var, %int_0 +// CHECK:STDOUT: %.loc10_41.6: ref %tuple.type.734 = array_index %v.var, %int_0 // CHECK:STDOUT: } // CHECK:STDOUT: %F.call.loc10_35: init %tuple.type.734 = call %F.ref.loc10_33() to %.loc10_41.1 // CHECK:STDOUT: %F.ref.loc10_38: %F.type = name_ref F, file.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %.loc10_41.3: ref %tuple.type.734 = splice_block %.loc10_41.4 { +// CHECK:STDOUT: %.loc10_41.2: ref %tuple.type.734 = splice_block %.loc10_41.5 { // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1] -// CHECK:STDOUT: %.loc10_41.4: ref %tuple.type.734 = array_index %v.var, %int_1 +// CHECK:STDOUT: %.loc10_41.5: ref %tuple.type.734 = array_index %v.var, %int_1 // CHECK:STDOUT: } -// CHECK:STDOUT: %F.call.loc10_40: init %tuple.type.734 = call %F.ref.loc10_38() to %.loc10_41.3 -// CHECK:STDOUT: %.loc10_41.5: %tuple.type.14a = tuple_literal (%F.call.loc10_35, %F.call.loc10_40) -// CHECK:STDOUT: %.loc10_41.6: init %array_type = array_init (%F.call.loc10_35, %F.call.loc10_40) to %v.var -// CHECK:STDOUT: %.loc10_3: init %array_type = converted %.loc10_41.5, %.loc10_41.6 +// CHECK:STDOUT: %F.call.loc10_40: init %tuple.type.734 = call %F.ref.loc10_38() to %.loc10_41.2 +// CHECK:STDOUT: %.loc10_41.3: %tuple.type.14a = tuple_literal (%F.call.loc10_35, %F.call.loc10_40) +// CHECK:STDOUT: %.loc10_41.4: init %array_type = array_init (%F.call.loc10_35, %F.call.loc10_40) to %v.var +// CHECK:STDOUT: %.loc10_3: init %array_type = converted %.loc10_41.3, %.loc10_41.4 // CHECK:STDOUT: assign %v.var, %.loc10_3 // CHECK:STDOUT: %.loc10_28: type = splice_block %array_type [concrete = constants.%array_type] { // CHECK:STDOUT: %C.ref.loc10_17: type = name_ref C, file.%C.decl [concrete = constants.%C] @@ -224,21 +224,21 @@ var a: array(1, 1); // CHECK:STDOUT: %array_type: type = array_type %int_2, %.loc10_24.2 [concrete = constants.%array_type] // CHECK:STDOUT: } // CHECK:STDOUT: %v: ref %array_type = bind_name v, %v.var -// CHECK:STDOUT: %Op.bound.loc10_41.1: = bound_method %.loc10_41.3, constants.%Op.ae1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10_41.1: = bound_method %.loc10_41.2, constants.%T.as.Destroy.impl.Op.ae1 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc10_41.1: = bound_method %.loc10_41.3, %Op.specific_fn.1 -// CHECK:STDOUT: %addr.loc10_41.1: %ptr.dbe = addr_of %.loc10_41.3 -// CHECK:STDOUT: %no_op.loc10_41.1: init %empty_tuple.type = call %bound_method.loc10_41.1(%addr.loc10_41.1) -// CHECK:STDOUT: %Op.bound.loc10_41.2: = bound_method %.loc10_41.1, constants.%Op.ae1 +// CHECK:STDOUT: %bound_method.loc10_41.1: = bound_method %.loc10_41.2, %T.as.Destroy.impl.Op.specific_fn.1 +// CHECK:STDOUT: %addr.loc10_41.1: %ptr.dbe = addr_of %.loc10_41.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10_41.1: init %empty_tuple.type = call %bound_method.loc10_41.1(%addr.loc10_41.1) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10_41.2: = bound_method %.loc10_41.1, constants.%T.as.Destroy.impl.Op.ae1 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc10_41.2: = bound_method %.loc10_41.1, %Op.specific_fn.2 +// CHECK:STDOUT: %bound_method.loc10_41.2: = bound_method %.loc10_41.1, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc10_41.2: %ptr.dbe = addr_of %.loc10_41.1 -// CHECK:STDOUT: %no_op.loc10_41.2: init %empty_tuple.type = call %bound_method.loc10_41.2(%addr.loc10_41.2) -// CHECK:STDOUT: %Op.bound.loc10_3: = bound_method %v.var, constants.%Op.d4f +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10_41.2: init %empty_tuple.type = call %bound_method.loc10_41.2(%addr.loc10_41.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10_3: = bound_method %v.var, constants.%T.as.Destroy.impl.Op.d4f // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc10_3: = bound_method %v.var, %Op.specific_fn.3 +// CHECK:STDOUT: %bound_method.loc10_3: = bound_method %v.var, %T.as.Destroy.impl.Op.specific_fn.3 // CHECK:STDOUT: %addr.loc10_3: %ptr.c6b = addr_of %v.var -// CHECK:STDOUT: %no_op.loc10_3: init %empty_tuple.type = call %bound_method.loc10_3(%addr.loc10_3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10_3: init %empty_tuple.type = call %bound_method.loc10_3(%addr.loc10_3) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -253,10 +253,10 @@ var a: array(1, 1); // CHECK:STDOUT: %tuple.type: type = tuple_type (%empty_tuple.type, %empty_tuple.type, %empty_tuple.type) [concrete] // CHECK:STDOUT: %ptr.7fe: type = ptr_type %tuple.type [concrete] // CHECK:STDOUT: %pattern_type.8c1: type = pattern_type %tuple.type [concrete] -// CHECK:STDOUT: %Op.type.073: type = fn_type @Op.1, @Destroy.impl(%tuple.type) [concrete] -// CHECK:STDOUT: %Op.dce: %Op.type.073 = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.c60: type = fn_type @Op.1, @Destroy.impl(%array_type) [concrete] -// CHECK:STDOUT: %Op.f81: %Op.type.c60 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.073: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.dce: %T.as.Destroy.impl.Op.type.073 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.c60: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%array_type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.f81: %T.as.Destroy.impl.Op.type.c60 = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -292,16 +292,16 @@ var a: array(1, 1); // CHECK:STDOUT: %.loc8_21.6: type = converted %.loc8_21.2, constants.%tuple.type [concrete = constants.%tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %b: ref %tuple.type = bind_name b, %b.var -// CHECK:STDOUT: %Op.bound.loc8: = bound_method %b.var, constants.%Op.dce +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8: = bound_method %b.var, constants.%T.as.Destroy.impl.Op.dce // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc8: = bound_method %b.var, %Op.specific_fn.1 +// CHECK:STDOUT: %bound_method.loc8: = bound_method %b.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc8: %ptr.7fe = addr_of %b.var -// CHECK:STDOUT: %no_op.loc8: init %empty_tuple.type = call %bound_method.loc8(%addr.loc8) -// CHECK:STDOUT: %Op.bound.loc7: = bound_method %a.var, constants.%Op.f81 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8: init %empty_tuple.type = call %bound_method.loc8(%addr.loc8) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc7: = bound_method %a.var, constants.%T.as.Destroy.impl.Op.f81 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc7: = bound_method %a.var, %Op.specific_fn.2 +// CHECK:STDOUT: %bound_method.loc7: = bound_method %a.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc7: %ptr.20b = addr_of %a.var -// CHECK:STDOUT: %no_op.loc7: init %empty_tuple.type = call %bound_method.loc7(%addr.loc7) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc7: init %empty_tuple.type = call %bound_method.loc7(%addr.loc7) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -319,11 +319,11 @@ var a: array(1, 1); // CHECK:STDOUT: %pattern_type.fe8: type = pattern_type %array_type [concrete] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %array: %array_type = tuple_value (%empty_tuple) [concrete] -// CHECK:STDOUT: %Op.type.23e: type = fn_type @Op.1, @Destroy.impl(%tuple.type) [concrete] -// CHECK:STDOUT: %Op.f19: %Op.type.23e = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.23e: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.f19: %T.as.Destroy.impl.Op.type.23e = struct_value () [concrete] // CHECK:STDOUT: %ptr.652: type = ptr_type %tuple.type [concrete] -// CHECK:STDOUT: %Op.type.471: type = fn_type @Op.1, @Destroy.impl(%array_type) [concrete] -// CHECK:STDOUT: %Op.688: %Op.type.471 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.471: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%array_type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.688: %T.as.Destroy.impl.Op.type.471 = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -355,16 +355,16 @@ var a: array(1, 1); // CHECK:STDOUT: %array_type: type = array_type %int_1, %.loc8_17.2 [concrete = constants.%array_type] // CHECK:STDOUT: } // CHECK:STDOUT: %t: ref %array_type = bind_name t, %t.var -// CHECK:STDOUT: %Op.bound.loc8_27: = bound_method %.loc8_27.1, constants.%Op.f19 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8_27: = bound_method %.loc8_27.1, constants.%T.as.Destroy.impl.Op.f19 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc8_27: = bound_method %.loc8_27.1, %Op.specific_fn.1 +// CHECK:STDOUT: %bound_method.loc8_27: = bound_method %.loc8_27.1, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc8_27: %ptr.652 = addr_of %.loc8_27.1 -// CHECK:STDOUT: %no_op.loc8_27: init %empty_tuple.type = call %bound_method.loc8_27(%addr.loc8_27) -// CHECK:STDOUT: %Op.bound.loc8_3: = bound_method %t.var, constants.%Op.688 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8_27: init %empty_tuple.type = call %bound_method.loc8_27(%addr.loc8_27) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8_3: = bound_method %t.var, constants.%T.as.Destroy.impl.Op.688 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc8_3: = bound_method %t.var, %Op.specific_fn.2 +// CHECK:STDOUT: %bound_method.loc8_3: = bound_method %t.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc8_3: %ptr.b99 = addr_of %t.var -// CHECK:STDOUT: %no_op.loc8_3: init %empty_tuple.type = call %bound_method.loc8_3(%addr.loc8_3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8_3: init %empty_tuple.type = call %bound_method.loc8_3(%addr.loc8_3) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/array/bound_values.carbon b/toolchain/check/testdata/array/bound_values.carbon index 093ebc01030c..5fd1c91b4c76 100644 --- a/toolchain/check/testdata/array/bound_values.carbon +++ b/toolchain/check/testdata/array/bound_values.carbon @@ -73,21 +73,21 @@ var b: array(1, 39999999999999999993); // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %AddWith.type.d7d: type = facet_type <@AddWith, @AddWith(Core.IntLiteral)> [concrete] -// CHECK:STDOUT: %Op.type.0ee: type = fn_type @Op.1, @AddWith(Core.IntLiteral) [concrete] +// CHECK:STDOUT: %AddWith.Op.type.0ee: type = fn_type @AddWith.Op, @AddWith(Core.IntLiteral) [concrete] // CHECK:STDOUT: %AddWith.impl_witness.568: = impl_witness imports.%AddWith.impl_witness_table.255 [concrete] // CHECK:STDOUT: %AddWith.facet: %AddWith.type.d7d = facet_value Core.IntLiteral, (%AddWith.impl_witness.568) [concrete] -// CHECK:STDOUT: %.e1a: type = fn_type_with_self_type %Op.type.0ee, %AddWith.facet [concrete] -// CHECK:STDOUT: %Op.type.b60: type = fn_type @Op.6 [concrete] -// CHECK:STDOUT: %Op.14b: %Op.type.b60 = struct_value () [concrete] -// CHECK:STDOUT: %Op.bound: = bound_method %int_1.5b8, %Op.14b [concrete] +// CHECK:STDOUT: %.e1a: type = fn_type_with_self_type %AddWith.Op.type.0ee, %AddWith.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.AddWith.impl.Op.type: type = fn_type @Core.IntLiteral.as.AddWith.impl.Op [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.AddWith.impl.Op: %Core.IntLiteral.as.AddWith.impl.Op.type = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.AddWith.impl.Op.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.AddWith.impl.Op [concrete] // CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [concrete] // CHECK:STDOUT: %array_type: type = array_type %int_3.1ba, %i32 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core.import_ref.abd9 = import_ref Core//prelude/operators/arithmetic, loc95_57, unloaded -// CHECK:STDOUT: %Core.import_ref.d10: %Op.type.b60 = import_ref Core//prelude/operators/arithmetic, loc96_42, loaded [concrete = constants.%Op.14b] -// CHECK:STDOUT: %AddWith.impl_witness_table.255 = impl_witness_table (%Core.import_ref.abd9, %Core.import_ref.d10), @AddWith.impl.013 [concrete] +// CHECK:STDOUT: %Core.import_ref.d10: %Core.IntLiteral.as.AddWith.impl.Op.type = import_ref Core//prelude/operators/arithmetic, loc96_42, loaded [concrete = constants.%Core.IntLiteral.as.AddWith.impl.Op] +// CHECK:STDOUT: %AddWith.impl_witness_table.255 = impl_witness_table (%Core.import_ref.abd9, %Core.import_ref.d10), @Core.IntLiteral.as.AddWith.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -96,11 +96,11 @@ var b: array(1, 39999999999999999993); // CHECK:STDOUT: %i32.loc6: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %impl.elem1: %.e1a = impl_witness_access constants.%AddWith.impl_witness.568, element1 [concrete = constants.%Op.14b] -// CHECK:STDOUT: %bound_method: = bound_method %int_1, %impl.elem1 [concrete = constants.%Op.bound] -// CHECK:STDOUT: %int.sadd: init Core.IntLiteral = call %bound_method(%int_1, %int_2) [concrete = constants.%int_3.1ba] -// CHECK:STDOUT: %.loc6_18.1: Core.IntLiteral = value_of_initializer %int.sadd [concrete = constants.%int_3.1ba] -// CHECK:STDOUT: %.loc6_18.2: Core.IntLiteral = converted %int.sadd, %.loc6_18.1 [concrete = constants.%int_3.1ba] +// CHECK:STDOUT: %impl.elem1: %.e1a = impl_witness_access constants.%AddWith.impl_witness.568, element1 [concrete = constants.%Core.IntLiteral.as.AddWith.impl.Op] +// CHECK:STDOUT: %bound_method: = bound_method %int_1, %impl.elem1 [concrete = constants.%Core.IntLiteral.as.AddWith.impl.Op.bound] +// CHECK:STDOUT: %Core.IntLiteral.as.AddWith.impl.Op.call: init Core.IntLiteral = call %bound_method(%int_1, %int_2) [concrete = constants.%int_3.1ba] +// CHECK:STDOUT: %.loc6_18.1: Core.IntLiteral = value_of_initializer %Core.IntLiteral.as.AddWith.impl.Op.call [concrete = constants.%int_3.1ba] +// CHECK:STDOUT: %.loc6_18.2: Core.IntLiteral = converted %Core.IntLiteral.as.AddWith.impl.Op.call, %.loc6_18.1 [concrete = constants.%int_3.1ba] // CHECK:STDOUT: %array_type.loc6: type = array_type %.loc6_18.2, %i32.loc6 [concrete = constants.%array_type] // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -118,40 +118,40 @@ var b: array(1, 39999999999999999993); // CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [concrete] // CHECK:STDOUT: %u32: type = class_type @UInt, @UInt(%int_32) [concrete] // CHECK:STDOUT: %As.type.ce0: type = facet_type <@As, @As(%u32)> [concrete] -// CHECK:STDOUT: %Convert.type.b94: type = fn_type @Convert.1, @As(%u32) [concrete] +// CHECK:STDOUT: %As.Convert.type.b94: type = fn_type @As.Convert, @As(%u32) [concrete] // CHECK:STDOUT: %To.c80: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] // CHECK:STDOUT: %ImplicitAs.type.2fd: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [concrete] // CHECK:STDOUT: %From: Core.IntLiteral = bind_symbolic_name From, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.002: type = fn_type @Convert.5, @ImplicitAs.impl.750(%From) [symbolic] -// CHECK:STDOUT: %Convert.819: %Convert.type.002 = struct_value () [symbolic] -// CHECK:STDOUT: %Convert.type.71e: type = fn_type @Convert.2, @ImplicitAs(Core.IntLiteral) [concrete] -// CHECK:STDOUT: %Convert.type.792: type = fn_type @Convert.6, @As.impl.2f2(%To.c80) [symbolic] -// CHECK:STDOUT: %Convert.c02: %Convert.type.792 = struct_value () [symbolic] -// CHECK:STDOUT: %As.impl_witness.d2d: = impl_witness imports.%As.impl_witness_table.afe, @As.impl.2f2(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.70b: type = fn_type @Convert.6, @As.impl.2f2(%int_32) [concrete] -// CHECK:STDOUT: %Convert.92a: %Convert.type.70b = struct_value () [concrete] +// CHECK:STDOUT: %UInt.as.ImplicitAs.impl.Convert.type.002: type = fn_type @UInt.as.ImplicitAs.impl.Convert, @UInt.as.ImplicitAs.impl(%From) [symbolic] +// CHECK:STDOUT: %UInt.as.ImplicitAs.impl.Convert.819: %UInt.as.ImplicitAs.impl.Convert.type.002 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.Convert.type.71e: type = fn_type @ImplicitAs.Convert, @ImplicitAs(Core.IntLiteral) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.792: type = fn_type @Core.IntLiteral.as.As.impl.Convert.1, @Core.IntLiteral.as.As.impl.2f2(%To.c80) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.c02: %Core.IntLiteral.as.As.impl.Convert.type.792 = struct_value () [symbolic] +// CHECK:STDOUT: %As.impl_witness.d2d: = impl_witness imports.%As.impl_witness_table.afe, @Core.IntLiteral.as.As.impl.2f2(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.70b: type = fn_type @Core.IntLiteral.as.As.impl.Convert.1, @Core.IntLiteral.as.As.impl.2f2(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.92a: %Core.IntLiteral.as.As.impl.Convert.type.70b = struct_value () [concrete] // CHECK:STDOUT: %As.facet: %As.type.ce0 = facet_value Core.IntLiteral, (%As.impl_witness.d2d) [concrete] -// CHECK:STDOUT: %.68c: type = fn_type_with_self_type %Convert.type.b94, %As.facet [concrete] -// CHECK:STDOUT: %Convert.bound.7d9: = bound_method %int_3.1ba, %Convert.92a [concrete] -// CHECK:STDOUT: %Convert.specific_fn.4cf: = specific_function %Convert.92a, @Convert.6(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.94d: = bound_method %int_3.1ba, %Convert.specific_fn.4cf [concrete] +// CHECK:STDOUT: %.68c: type = fn_type_with_self_type %As.Convert.type.b94, %As.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.bound: = bound_method %int_3.1ba, %Core.IntLiteral.as.As.impl.Convert.92a [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.As.impl.Convert.92a, @Core.IntLiteral.as.As.impl.Convert.1(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.94d: = bound_method %int_3.1ba, %Core.IntLiteral.as.As.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_3.d14: %u32 = int_value 3 [concrete] -// CHECK:STDOUT: %ImplicitAs.impl_witness.a11: = impl_witness imports.%ImplicitAs.impl_witness_table.6ad, @ImplicitAs.impl.750(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.e06: type = fn_type @Convert.5, @ImplicitAs.impl.750(%int_32) [concrete] -// CHECK:STDOUT: %Convert.47f: %Convert.type.e06 = struct_value () [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.a11: = impl_witness imports.%ImplicitAs.impl_witness_table.6ad, @UInt.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %UInt.as.ImplicitAs.impl.Convert.type.e06: type = fn_type @UInt.as.ImplicitAs.impl.Convert, @UInt.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %UInt.as.ImplicitAs.impl.Convert.47f: %UInt.as.ImplicitAs.impl.Convert.type.e06 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet.84e: %ImplicitAs.type.2fd = facet_value %u32, (%ImplicitAs.impl_witness.a11) [concrete] -// CHECK:STDOUT: %.268: type = fn_type_with_self_type %Convert.type.71e, %ImplicitAs.facet.84e [concrete] -// CHECK:STDOUT: %Convert.bound.258: = bound_method %int_3.d14, %Convert.47f [concrete] -// CHECK:STDOUT: %Convert.specific_fn.2eb: = specific_function %Convert.47f, @Convert.5(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.3a6: = bound_method %int_3.d14, %Convert.specific_fn.2eb [concrete] +// CHECK:STDOUT: %.268: type = fn_type_with_self_type %ImplicitAs.Convert.type.71e, %ImplicitAs.facet.84e [concrete] +// CHECK:STDOUT: %UInt.as.ImplicitAs.impl.Convert.bound: = bound_method %int_3.d14, %UInt.as.ImplicitAs.impl.Convert.47f [concrete] +// CHECK:STDOUT: %UInt.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %UInt.as.ImplicitAs.impl.Convert.47f, @UInt.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.3a6: = bound_method %int_3.d14, %UInt.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %array_type: type = array_type %int_3.1ba, %i32 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core.import_ref.823: @ImplicitAs.impl.750.%Convert.type (%Convert.type.002) = import_ref Core//prelude/types/uint, loc24_44, loaded [symbolic = @ImplicitAs.impl.750.%Convert (constants.%Convert.819)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.6ad = impl_witness_table (%Core.import_ref.823), @ImplicitAs.impl.750 [concrete] -// CHECK:STDOUT: %Core.import_ref.aef: @As.impl.2f2.%Convert.type (%Convert.type.792) = import_ref Core//prelude/types/uint, loc29_40, loaded [symbolic = @As.impl.2f2.%Convert (constants.%Convert.c02)] -// CHECK:STDOUT: %As.impl_witness_table.afe = impl_witness_table (%Core.import_ref.aef), @As.impl.2f2 [concrete] +// CHECK:STDOUT: %Core.import_ref.823: @UInt.as.ImplicitAs.impl.%UInt.as.ImplicitAs.impl.Convert.type (%UInt.as.ImplicitAs.impl.Convert.type.002) = import_ref Core//prelude/types/uint, loc24_44, loaded [symbolic = @UInt.as.ImplicitAs.impl.%UInt.as.ImplicitAs.impl.Convert (constants.%UInt.as.ImplicitAs.impl.Convert.819)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.6ad = impl_witness_table (%Core.import_ref.823), @UInt.as.ImplicitAs.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.aef: @Core.IntLiteral.as.As.impl.2f2.%Core.IntLiteral.as.As.impl.Convert.type (%Core.IntLiteral.as.As.impl.Convert.type.792) = import_ref Core//prelude/types/uint, loc29_40, loaded [symbolic = @Core.IntLiteral.as.As.impl.2f2.%Core.IntLiteral.as.As.impl.Convert (constants.%Core.IntLiteral.as.As.impl.Convert.c02)] +// CHECK:STDOUT: %As.impl_witness_table.afe = impl_witness_table (%Core.import_ref.aef), @Core.IntLiteral.as.As.impl.2f2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -161,19 +161,19 @@ var b: array(1, 39999999999999999993); // CHECK:STDOUT: %int_3.loc6: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] // CHECK:STDOUT: %int_32.loc6_21: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %u32: type = class_type @UInt, @UInt(constants.%int_32) [concrete = constants.%u32] -// CHECK:STDOUT: %impl.elem0.loc6_18.1: %.68c = impl_witness_access constants.%As.impl_witness.d2d, element0 [concrete = constants.%Convert.92a] -// CHECK:STDOUT: %bound_method.loc6_18.1: = bound_method %int_3.loc6, %impl.elem0.loc6_18.1 [concrete = constants.%Convert.bound.7d9] -// CHECK:STDOUT: %specific_fn.loc6_18.1: = specific_function %impl.elem0.loc6_18.1, @Convert.6(constants.%int_32) [concrete = constants.%Convert.specific_fn.4cf] +// CHECK:STDOUT: %impl.elem0.loc6_18.1: %.68c = impl_witness_access constants.%As.impl_witness.d2d, element0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.92a] +// CHECK:STDOUT: %bound_method.loc6_18.1: = bound_method %int_3.loc6, %impl.elem0.loc6_18.1 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc6_18.1: = specific_function %impl.elem0.loc6_18.1, @Core.IntLiteral.as.As.impl.Convert.1(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc6_18.2: = bound_method %int_3.loc6, %specific_fn.loc6_18.1 [concrete = constants.%bound_method.94d] -// CHECK:STDOUT: %int.convert_checked.loc6_18.1: init %u32 = call %bound_method.loc6_18.2(%int_3.loc6) [concrete = constants.%int_3.d14] -// CHECK:STDOUT: %.loc6_18.1: %u32 = value_of_initializer %int.convert_checked.loc6_18.1 [concrete = constants.%int_3.d14] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.call: init %u32 = call %bound_method.loc6_18.2(%int_3.loc6) [concrete = constants.%int_3.d14] +// CHECK:STDOUT: %.loc6_18.1: %u32 = value_of_initializer %Core.IntLiteral.as.As.impl.Convert.call [concrete = constants.%int_3.d14] // CHECK:STDOUT: %.loc6_18.2: %u32 = converted %int_3.loc6, %.loc6_18.1 [concrete = constants.%int_3.d14] -// CHECK:STDOUT: %impl.elem0.loc6_18.2: %.268 = impl_witness_access constants.%ImplicitAs.impl_witness.a11, element0 [concrete = constants.%Convert.47f] -// CHECK:STDOUT: %bound_method.loc6_18.3: = bound_method %.loc6_18.2, %impl.elem0.loc6_18.2 [concrete = constants.%Convert.bound.258] -// CHECK:STDOUT: %specific_fn.loc6_18.2: = specific_function %impl.elem0.loc6_18.2, @Convert.5(constants.%int_32) [concrete = constants.%Convert.specific_fn.2eb] +// CHECK:STDOUT: %impl.elem0.loc6_18.2: %.268 = impl_witness_access constants.%ImplicitAs.impl_witness.a11, element0 [concrete = constants.%UInt.as.ImplicitAs.impl.Convert.47f] +// CHECK:STDOUT: %bound_method.loc6_18.3: = bound_method %.loc6_18.2, %impl.elem0.loc6_18.2 [concrete = constants.%UInt.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc6_18.2: = specific_function %impl.elem0.loc6_18.2, @UInt.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%UInt.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc6_18.4: = bound_method %.loc6_18.2, %specific_fn.loc6_18.2 [concrete = constants.%bound_method.3a6] -// CHECK:STDOUT: %int.convert_checked.loc6_18.2: init Core.IntLiteral = call %bound_method.loc6_18.4(%.loc6_18.2) [concrete = constants.%int_3.1ba] -// CHECK:STDOUT: %.loc6_18.3: Core.IntLiteral = value_of_initializer %int.convert_checked.loc6_18.2 [concrete = constants.%int_3.1ba] +// CHECK:STDOUT: %UInt.as.ImplicitAs.impl.Convert.call: init Core.IntLiteral = call %bound_method.loc6_18.4(%.loc6_18.2) [concrete = constants.%int_3.1ba] +// CHECK:STDOUT: %.loc6_18.3: Core.IntLiteral = value_of_initializer %UInt.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_3.1ba] // CHECK:STDOUT: %.loc6_18.4: Core.IntLiteral = converted %.loc6_18.2, %.loc6_18.3 [concrete = constants.%int_3.1ba] // CHECK:STDOUT: %array_type.loc6: type = array_type %.loc6_18.4, %i32.loc6 [concrete = constants.%array_type] // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/array/import.carbon b/toolchain/check/testdata/array/import.carbon index 6ded94ca36ec..c224281b759d 100644 --- a/toolchain/check/testdata/array/import.carbon +++ b/toolchain/check/testdata/array/import.carbon @@ -37,8 +37,8 @@ fn G(n: i32) -> i32 { // CHECK:STDOUT: %int_42: Core.IntLiteral = int_value 42 [concrete] // CHECK:STDOUT: %array_type: type = array_type %int_42, %i32 [concrete] // CHECK:STDOUT: %ptr.830: type = ptr_type %array_type [concrete] -// CHECK:STDOUT: %Op.type.b8c: type = fn_type @Op.1, @Destroy.impl(%array_type) [concrete] -// CHECK:STDOUT: %Op.552: %Op.type.b8c = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.b8c: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%array_type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.552: %T.as.Destroy.impl.Op.type.b8c = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -56,11 +56,11 @@ fn G(n: i32) -> i32 { // CHECK:STDOUT: %i32.loc6: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %.loc6_15.1: ref %i32 = array_index %.loc6_12.2, %n.ref // CHECK:STDOUT: %.loc6_15.2: %i32 = bind_value %.loc6_15.1 -// CHECK:STDOUT: %Op.bound: = bound_method %.loc6_12.1, constants.%Op.552 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc6_12.1, constants.%T.as.Destroy.impl.Op.552 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc6_12.1, %Op.specific_fn +// CHECK:STDOUT: %bound_method: = bound_method %.loc6_12.1, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.830 = addr_of %.loc6_12.1 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %.loc6_15.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/array/index_not_literal.carbon b/toolchain/check/testdata/array/index_not_literal.carbon index 031f24186568..f145c5f65cb3 100644 --- a/toolchain/check/testdata/array/index_not_literal.carbon +++ b/toolchain/check/testdata/array/index_not_literal.carbon @@ -62,33 +62,33 @@ fn F(a: array({}, 3)) -> {} { // CHECK:STDOUT: %tuple.type: type = tuple_type (Core.IntLiteral, Core.IntLiteral, Core.IntLiteral) [concrete] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] -// CHECK:STDOUT: %Convert.bound.b30: = bound_method %int_3.1ba, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.047: = bound_method %int_3.1ba, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.b30: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.047: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_3.822: %i32 = int_value 3 [concrete] // CHECK:STDOUT: %array: %array_type = tuple_value (%int_1.5d2, %int_2.ef8, %int_3.822) [concrete] -// CHECK:STDOUT: %Op.type.1e4: type = fn_type @Op.1, @Destroy.impl(%array_type) [concrete] -// CHECK:STDOUT: %Op.f0b: %Op.type.1e4 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.1e4: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%array_type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.f0b: %T.as.Destroy.impl.Op.type.1e4 = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F(%arr.param: %array_type, %i.param: %i32) -> %i32 { @@ -111,31 +111,31 @@ fn F(a: array({}, 3)) -> {} { // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] // CHECK:STDOUT: %.loc10_20.1: %tuple.type = tuple_literal (%int_1.loc10_13, %int_2.loc10_16, %int_3) // CHECK:STDOUT: %int_1.loc10_23: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0.loc10_20.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc10_20.1: = bound_method %int_1.loc10_13, %impl.elem0.loc10_20.1 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc10_20.1: = specific_function %impl.elem0.loc10_20.1, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc10_20.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc10_20.1: = bound_method %int_1.loc10_13, %impl.elem0.loc10_20.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc10_20.1: = specific_function %impl.elem0.loc10_20.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc10_20.2: = bound_method %int_1.loc10_13, %specific_fn.loc10_20.1 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc10_20.1: init %i32 = call %bound_method.loc10_20.2(%int_1.loc10_13) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc10_20.2: init %i32 = converted %int_1.loc10_13, %int.convert_checked.loc10_20.1 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10_20.1: init %i32 = call %bound_method.loc10_20.2(%int_1.loc10_13) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc10_20.2: init %i32 = converted %int_1.loc10_13, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10_20.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc10_20.3: ref %array_type = temporary_storage // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] // CHECK:STDOUT: %.loc10_20.4: ref %i32 = array_index %.loc10_20.3, %int_0 // CHECK:STDOUT: %.loc10_20.5: init %i32 = initialize_from %.loc10_20.2 to %.loc10_20.4 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %impl.elem0.loc10_20.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc10_20.3: = bound_method %int_2.loc10_16, %impl.elem0.loc10_20.2 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc10_20.2: = specific_function %impl.elem0.loc10_20.2, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc10_20.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc10_20.3: = bound_method %int_2.loc10_16, %impl.elem0.loc10_20.2 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc10_20.2: = specific_function %impl.elem0.loc10_20.2, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc10_20.4: = bound_method %int_2.loc10_16, %specific_fn.loc10_20.2 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc10_20.2: init %i32 = call %bound_method.loc10_20.4(%int_2.loc10_16) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc10_20.6: init %i32 = converted %int_2.loc10_16, %int.convert_checked.loc10_20.2 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10_20.2: init %i32 = call %bound_method.loc10_20.4(%int_2.loc10_16) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc10_20.6: init %i32 = converted %int_2.loc10_16, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10_20.2 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %int_1.loc10_20: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %.loc10_20.7: ref %i32 = array_index %.loc10_20.3, %int_1.loc10_20 // CHECK:STDOUT: %.loc10_20.8: init %i32 = initialize_from %.loc10_20.6 to %.loc10_20.7 [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %impl.elem0.loc10_20.3: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc10_20.5: = bound_method %int_3, %impl.elem0.loc10_20.3 [concrete = constants.%Convert.bound.b30] -// CHECK:STDOUT: %specific_fn.loc10_20.3: = specific_function %impl.elem0.loc10_20.3, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc10_20.3: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc10_20.5: = bound_method %int_3, %impl.elem0.loc10_20.3 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.b30] +// CHECK:STDOUT: %specific_fn.loc10_20.3: = specific_function %impl.elem0.loc10_20.3, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc10_20.6: = bound_method %int_3, %specific_fn.loc10_20.3 [concrete = constants.%bound_method.047] -// CHECK:STDOUT: %int.convert_checked.loc10_20.3: init %i32 = call %bound_method.loc10_20.6(%int_3) [concrete = constants.%int_3.822] -// CHECK:STDOUT: %.loc10_20.9: init %i32 = converted %int_3, %int.convert_checked.loc10_20.3 [concrete = constants.%int_3.822] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10_20.3: init %i32 = call %bound_method.loc10_20.6(%int_3) [concrete = constants.%int_3.822] +// CHECK:STDOUT: %.loc10_20.9: init %i32 = converted %int_3, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10_20.3 [concrete = constants.%int_3.822] // CHECK:STDOUT: %int_2.loc10_20: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %.loc10_20.10: ref %i32 = array_index %.loc10_20.3, %int_2.loc10_20 // CHECK:STDOUT: %.loc10_20.11: init %i32 = initialize_from %.loc10_20.9 to %.loc10_20.10 [concrete = constants.%int_3.822] @@ -143,21 +143,21 @@ fn F(a: array({}, 3)) -> {} { // CHECK:STDOUT: %.loc10_20.13: init %array_type = converted %.loc10_20.1, %.loc10_20.12 [concrete = constants.%array] // CHECK:STDOUT: %.loc10_20.14: ref %array_type = temporary %.loc10_20.3, %.loc10_20.13 // CHECK:STDOUT: %.loc10_20.15: %array_type = bind_value %.loc10_20.14 -// CHECK:STDOUT: %impl.elem0.loc10_23: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc10_23.1: = bound_method %int_1.loc10_23, %impl.elem0.loc10_23 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc10_23: = specific_function %impl.elem0.loc10_23, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc10_23: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc10_23.1: = bound_method %int_1.loc10_23, %impl.elem0.loc10_23 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc10_23: = specific_function %impl.elem0.loc10_23, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc10_23.2: = bound_method %int_1.loc10_23, %specific_fn.loc10_23 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc10_23: init %i32 = call %bound_method.loc10_23.2(%int_1.loc10_23) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc10_23.1: %i32 = value_of_initializer %int.convert_checked.loc10_23 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10_23: init %i32 = call %bound_method.loc10_23.2(%int_1.loc10_23) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc10_23.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10_23 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc10_23.2: %i32 = converted %int_1.loc10_23, %.loc10_23.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %F.call: init %i32 = call %F.ref(%.loc10_20.15, %.loc10_23.2) // CHECK:STDOUT: %.loc10_25.1: %i32 = value_of_initializer %F.call // CHECK:STDOUT: %.loc10_25.2: %i32 = converted %F.call, %.loc10_25.1 -// CHECK:STDOUT: %Op.bound: = bound_method %.loc10_20.3, constants.%Op.f0b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc10_20.3, constants.%T.as.Destroy.impl.Op.f0b // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc10_20.7: = bound_method %.loc10_20.3, %Op.specific_fn +// CHECK:STDOUT: %bound_method.loc10_20.7: = bound_method %.loc10_20.3, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.f01 = addr_of %.loc10_20.3 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc10_20.7(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc10_20.7(%addr) // CHECK:STDOUT: return %.loc10_25.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -173,25 +173,25 @@ fn F(a: array({}, 3)) -> {} { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F(%a.param: %array_type) -> %empty_struct_type { @@ -204,12 +204,12 @@ fn F(a: array({}, 3)) -> {} { // CHECK:STDOUT: %.loc6_24.1: Core.IntLiteral = struct_access %.loc6_23.2, element0 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc6_24.1: = bound_method %.loc6_24.1, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc6_24.1: = bound_method %.loc6_24.1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc6_24.2: = bound_method %.loc6_24.1, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc6_24.2(%.loc6_24.1) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc6_24.2: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc6_24.2(%.loc6_24.1) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc6_24.2: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc6_24.3: %i32 = converted %.loc6_24.1, %.loc6_24.2 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc6_30.1: ref %array_type = value_as_ref %a.ref // CHECK:STDOUT: %.loc6_30.2: ref %empty_struct_type = array_index %.loc6_30.1, %.loc6_24.3 diff --git a/toolchain/check/testdata/array/init_dependent_bound.carbon b/toolchain/check/testdata/array/init_dependent_bound.carbon index 3342c2ae02f5..4a097a3f07e8 100644 --- a/toolchain/check/testdata/array/init_dependent_bound.carbon +++ b/toolchain/check/testdata/array/init_dependent_bound.carbon @@ -68,33 +68,33 @@ fn H() { G(3); } // CHECK:STDOUT: %pattern_type.d48: type = pattern_type %array_type.281 [symbolic] // CHECK:STDOUT: %array.2ed: %array_type.281 = tuple_value () [symbolic] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.bae: type = fn_type @Op.1 [concrete] -// CHECK:STDOUT: %Op.type.bc9: type = fn_type @Op.2, @Destroy.impl(%T) [symbolic] -// CHECK:STDOUT: %Op.46f: %Op.type.bc9 = struct_value () [symbolic] +// CHECK:STDOUT: %Destroy.Op.type: type = fn_type @Destroy.Op [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.bc9: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%T) [symbolic] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.46f: %T.as.Destroy.impl.Op.type.bc9 = struct_value () [symbolic] // CHECK:STDOUT: %require_complete.662: = require_complete_type %ptr.e06 [symbolic] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %array_type.281, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.cdc: %Destroy.type = facet_value %array_type.281, (%Destroy.lookup_impl_witness) [symbolic] -// CHECK:STDOUT: %.77e: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.cdc [symbolic] +// CHECK:STDOUT: %.77e: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.cdc [symbolic] // CHECK:STDOUT: %impl.elem0: %.77e = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Op.1(%Destroy.facet.cdc) [symbolic] +// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Destroy.Op(%Destroy.facet.cdc) [symbolic] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %array_type.6f1: type = array_type %int_0, %C [concrete] // CHECK:STDOUT: %ptr.cf4: type = ptr_type %array_type.6f1 [concrete] // CHECK:STDOUT: %complete_type.ed6: = complete_type_witness %array_type.6f1 [concrete] // CHECK:STDOUT: %pattern_type.9c8: type = pattern_type %array_type.6f1 [concrete] // CHECK:STDOUT: %array.2e5: %array_type.6f1 = tuple_value () [concrete] -// CHECK:STDOUT: %Destroy.impl_witness.8b8: = impl_witness imports.%Destroy.impl_witness_table, @Destroy.impl(%array_type.6f1) [concrete] -// CHECK:STDOUT: %Op.type.a3e: type = fn_type @Op.2, @Destroy.impl(%array_type.6f1) [concrete] -// CHECK:STDOUT: %Op.dc5: %Op.type.a3e = struct_value () [concrete] +// CHECK:STDOUT: %Destroy.impl_witness.8b8: = impl_witness imports.%Destroy.impl_witness_table, @T.as.Destroy.impl(%array_type.6f1) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a3e: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%array_type.6f1) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.dc5: %T.as.Destroy.impl.Op.type.a3e = struct_value () [concrete] // CHECK:STDOUT: %complete_type.3e1: = complete_type_witness %ptr.cf4 [concrete] // CHECK:STDOUT: %Destroy.facet.da7: %Destroy.type = facet_value %array_type.6f1, (%Destroy.impl_witness.8b8) [concrete] -// CHECK:STDOUT: %.a21: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.da7 [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.dc5, @Op.2(%array_type.6f1) [concrete] +// CHECK:STDOUT: %.a21: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.da7 [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.dc5, @T.as.Destroy.impl.Op(%array_type.6f1) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core.import_ref.0b9: @Destroy.impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @Destroy.impl.%Op (constants.%Op.46f)] -// CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @Destroy.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.0b9: @T.as.Destroy.impl.%T.as.Destroy.impl.Op.type (%T.as.Destroy.impl.Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @T.as.Destroy.impl.%T.as.Destroy.impl.Op (constants.%T.as.Destroy.impl.Op.46f)] +// CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @T.as.Destroy.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @G(%T.loc4_6.2: type) { @@ -107,9 +107,9 @@ fn H() { G(3); } // CHECK:STDOUT: %array: @G.%array_type.loc7_22.2 (%array_type.281) = tuple_value () [symbolic = %array (constants.%array.2ed)] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %array_type.loc7_22.2, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness)] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %array_type.loc7_22.2, (%Destroy.lookup_impl_witness) [symbolic = %Destroy.facet (constants.%Destroy.facet.cdc)] -// CHECK:STDOUT: %.loc7_3.3: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.loc7_3.3 (constants.%.77e)] +// CHECK:STDOUT: %.loc7_3.3: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet [symbolic = %.loc7_3.3 (constants.%.77e)] // CHECK:STDOUT: %impl.elem0.loc7_3.2: @G.%.loc7_3.3 (%.77e) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc7_3.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %specific_impl_fn.loc7_3.2: = specific_impl_function %impl.elem0.loc7_3.2, @Op.1(%Destroy.facet) [symbolic = %specific_impl_fn.loc7_3.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc7_3.2: = specific_impl_function %impl.elem0.loc7_3.2, @Destroy.Op(%Destroy.facet) [symbolic = %specific_impl_fn.loc7_3.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %ptr: type = ptr_type %array_type.loc7_22.2 [symbolic = %ptr (constants.%ptr.e06)] // CHECK:STDOUT: %require_complete.loc7_3: = require_complete_type %ptr [symbolic = %require_complete.loc7_3 (constants.%require_complete.662)] // CHECK:STDOUT: @@ -132,7 +132,7 @@ fn H() { G(3); } // CHECK:STDOUT: %arr: ref @G.%array_type.loc7_22.2 (%array_type.281) = bind_name arr, %arr.var // CHECK:STDOUT: %impl.elem0.loc7_3.1: @G.%.loc7_3.3 (%.77e) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc7_3.2 (constants.%impl.elem0)] // CHECK:STDOUT: %bound_method.loc7_3.1: = bound_method %arr.var, %impl.elem0.loc7_3.1 -// CHECK:STDOUT: %specific_impl_fn.loc7_3.1: = specific_impl_function %impl.elem0.loc7_3.1, @Op.1(constants.%Destroy.facet.cdc) [symbolic = %specific_impl_fn.loc7_3.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc7_3.1: = specific_impl_function %impl.elem0.loc7_3.1, @Destroy.Op(constants.%Destroy.facet.cdc) [symbolic = %specific_impl_fn.loc7_3.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %bound_method.loc7_3.2: = bound_method %arr.var, %specific_impl_fn.loc7_3.1 // CHECK:STDOUT: %addr: @G.%ptr (%ptr.e06) = addr_of %arr.var // CHECK:STDOUT: %.loc7_3.2: init %empty_tuple.type = call %bound_method.loc7_3.2(%addr) @@ -155,8 +155,8 @@ fn H() { G(3); } // CHECK:STDOUT: %Destroy.lookup_impl_witness => constants.%Destroy.impl_witness.8b8 // CHECK:STDOUT: %Destroy.facet => constants.%Destroy.facet.da7 // CHECK:STDOUT: %.loc7_3.3 => constants.%.a21 -// CHECK:STDOUT: %impl.elem0.loc7_3.2 => constants.%Op.dc5 -// CHECK:STDOUT: %specific_impl_fn.loc7_3.2 => constants.%Op.specific_fn +// CHECK:STDOUT: %impl.elem0.loc7_3.2 => constants.%T.as.Destroy.impl.Op.dc5 +// CHECK:STDOUT: %specific_impl_fn.loc7_3.2 => constants.%T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %ptr => constants.%ptr.cf4 // CHECK:STDOUT: %require_complete.loc7_3 => constants.%complete_type.3e1 // CHECK:STDOUT: } @@ -173,34 +173,34 @@ fn H() { G(3); } // CHECK:STDOUT: %tuple.type: type = tuple_type (Core.IntLiteral, Core.IntLiteral, Core.IntLiteral) [concrete] // CHECK:STDOUT: %ImplicitAs.type.2fd: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [concrete] // CHECK:STDOUT: %From: Core.IntLiteral = bind_symbolic_name From, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.708: type = fn_type @Convert.3, @ImplicitAs.impl.971(%From) [symbolic] -// CHECK:STDOUT: %Convert.c68: %Convert.type.708 = struct_value () [symbolic] -// CHECK:STDOUT: %Convert.type.71e: type = fn_type @Convert.2, @ImplicitAs(Core.IntLiteral) [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.type.708: type = fn_type @Int.as.ImplicitAs.impl.Convert, @Int.as.ImplicitAs.impl(%From) [symbolic] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.c68: %Int.as.ImplicitAs.impl.Convert.type.708 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.Convert.type.71e: type = fn_type @ImplicitAs.Convert, @ImplicitAs(Core.IntLiteral) [concrete] // CHECK:STDOUT: %int_3.822: %i32 = int_value 3 [concrete] -// CHECK:STDOUT: %ImplicitAs.impl_witness.a11: = impl_witness imports.%ImplicitAs.impl_witness_table.1d9, @ImplicitAs.impl.971(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.4ad: type = fn_type @Convert.3, @ImplicitAs.impl.971(%int_32) [concrete] -// CHECK:STDOUT: %Convert.960: %Convert.type.4ad = struct_value () [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.a11: = impl_witness imports.%ImplicitAs.impl_witness_table.1d9, @Int.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.type.4ad: type = fn_type @Int.as.ImplicitAs.impl.Convert, @Int.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.960: %Int.as.ImplicitAs.impl.Convert.type.4ad = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet.f49: %ImplicitAs.type.2fd = facet_value %i32, (%ImplicitAs.impl_witness.a11) [concrete] -// CHECK:STDOUT: %.0ea: type = fn_type_with_self_type %Convert.type.71e, %ImplicitAs.facet.f49 [concrete] -// CHECK:STDOUT: %Convert.bound.2d6: = bound_method %int_3.822, %Convert.960 [concrete] -// CHECK:STDOUT: %Convert.specific_fn.8a8: = specific_function %Convert.960, @Convert.3(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.c6f: = bound_method %int_3.822, %Convert.specific_fn.8a8 [concrete] +// CHECK:STDOUT: %.0ea: type = fn_type_with_self_type %ImplicitAs.Convert.type.71e, %ImplicitAs.facet.f49 [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.bound: = bound_method %int_3.822, %Int.as.ImplicitAs.impl.Convert.960 [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Int.as.ImplicitAs.impl.Convert.960, @Int.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.c6f: = bound_method %int_3.822, %Int.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %inst.splice_block: = inst_value [concrete] { // CHECK:STDOUT: %.df7: Core.IntLiteral = splice_block %.dd0 [concrete = %int_3.1ba] { -// CHECK:STDOUT: %impl.elem0.c2d: %.0ea = impl_witness_access %ImplicitAs.impl_witness.a11, element0 [concrete = %Convert.960] -// CHECK:STDOUT: %bound_method.8d1: = bound_method %int_3.822, %impl.elem0.c2d [concrete = %Convert.bound.2d6] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0.c2d, @Convert.3(%int_32) [concrete = %Convert.specific_fn.8a8] +// CHECK:STDOUT: %impl.elem0.c2d: %.0ea = impl_witness_access %ImplicitAs.impl_witness.a11, element0 [concrete = %Int.as.ImplicitAs.impl.Convert.960] +// CHECK:STDOUT: %bound_method.8d1: = bound_method %int_3.822, %impl.elem0.c2d [concrete = %Int.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0.c2d, @Int.as.ImplicitAs.impl.Convert(%int_32) [concrete = %Int.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.9ef: = bound_method %int_3.822, %specific_fn [concrete = %bound_method.c6f] -// CHECK:STDOUT: %int.convert_checked: init Core.IntLiteral = call %bound_method.9ef(%int_3.822) [concrete = %int_3.1ba] -// CHECK:STDOUT: %.5d1: Core.IntLiteral = value_of_initializer %int.convert_checked [concrete = %int_3.1ba] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call: init Core.IntLiteral = call %bound_method.9ef(%int_3.822) [concrete = %int_3.1ba] +// CHECK:STDOUT: %.5d1: Core.IntLiteral = value_of_initializer %Int.as.ImplicitAs.impl.Convert.call [concrete = %int_3.1ba] // CHECK:STDOUT: %.dd0: Core.IntLiteral = converted %int_3.822, %.5d1 [concrete = %int_3.1ba] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core.import_ref.85c: @ImplicitAs.impl.971.%Convert.type (%Convert.type.708) = import_ref Core//prelude/parts/int, loc20_44, loaded [symbolic = @ImplicitAs.impl.971.%Convert (constants.%Convert.c68)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.1d9 = impl_witness_table (%Core.import_ref.85c), @ImplicitAs.impl.971 [concrete] +// CHECK:STDOUT: %Core.import_ref.85c: @Int.as.ImplicitAs.impl.%Int.as.ImplicitAs.impl.Convert.type (%Int.as.ImplicitAs.impl.Convert.type.708) = import_ref Core//prelude/parts/int, loc20_44, loaded [symbolic = @Int.as.ImplicitAs.impl.%Int.as.ImplicitAs.impl.Convert (constants.%Int.as.ImplicitAs.impl.Convert.c68)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.1d9 = impl_witness_table (%Core.import_ref.85c), @Int.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @G(%N.loc5_15.2: %i32) { diff --git a/toolchain/check/testdata/as/adapter_conversion.carbon b/toolchain/check/testdata/as/adapter_conversion.carbon index 07cbd8b6d34a..7ebcb6b864f8 100644 --- a/toolchain/check/testdata/as/adapter_conversion.carbon +++ b/toolchain/check/testdata/as/adapter_conversion.carbon @@ -180,8 +180,8 @@ var b: B = {.x = ()} as B; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %A: type = class_type @A [concrete] -// CHECK:STDOUT: %Make.type: type = fn_type @Make [concrete] -// CHECK:STDOUT: %Make: %Make.type = struct_value () [concrete] +// CHECK:STDOUT: %A.Make.type: type = fn_type @A.Make [concrete] +// CHECK:STDOUT: %A.Make: %A.Make.type = struct_value () [concrete] // CHECK:STDOUT: %B: type = class_type @B [concrete] // CHECK:STDOUT: %pattern_type.049: type = pattern_type %B [concrete] // CHECK:STDOUT: %ptr.e79: type = ptr_type %B [concrete] @@ -229,12 +229,12 @@ var b: B = {.x = ()} as B; // CHECK:STDOUT: %.loc23_25.2: ref %B = converted %a_ref.ref.loc23, %.loc23_25.1 [concrete = constants.%a_ref.var] // CHECK:STDOUT: %addr: %ptr.e79 = addr_of %.loc23_25.2 [concrete = constants.%addr] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A] -// CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, @A.%Make.decl [concrete = constants.%Make] +// CHECK:STDOUT: %Make.ref: %A.Make.type = name_ref Make, @A.%A.Make.decl [concrete = constants.%A.Make] // CHECK:STDOUT: %.loc25_1: ref %B = splice_block file.%b_factory.var [concrete = file.%b_factory.var] {} -// CHECK:STDOUT: %Make.call: init %A = call %Make.ref() to %.loc25_1 +// CHECK:STDOUT: %A.Make.call: init %A = call %Make.ref() to %.loc25_1 // CHECK:STDOUT: %B.ref.loc25: type = name_ref B, file.%B.decl [concrete = constants.%B] -// CHECK:STDOUT: %.loc25_29.1: init %B = as_compatible %Make.call -// CHECK:STDOUT: %.loc25_29.2: init %B = converted %Make.call, %.loc25_29.1 +// CHECK:STDOUT: %.loc25_29.1: init %B = as_compatible %A.Make.call +// CHECK:STDOUT: %.loc25_29.2: init %B = converted %A.Make.call, %.loc25_29.1 // CHECK:STDOUT: assign file.%b_factory.var, %.loc25_29.2 // CHECK:STDOUT: // CHECK:STDOUT: } @@ -248,26 +248,26 @@ var b: B = {.x = ()} as B; // CHECK:STDOUT: %pattern_type.c10: type = pattern_type %A [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %As.type.fd4: type = facet_type <@As, @As(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.99b: type = fn_type @Convert.1, @As(%i32) [concrete] +// CHECK:STDOUT: %As.Convert.type.99b: type = fn_type @As.Convert, @As(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.062: type = fn_type @Convert.5, @As.impl.686(%To) [symbolic] -// CHECK:STDOUT: %Convert.527: %Convert.type.062 = struct_value () [symbolic] -// CHECK:STDOUT: %As.impl_witness.6b4: = impl_witness imports.%As.impl_witness_table.eb4, @As.impl.686(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.4fd: type = fn_type @Convert.5, @As.impl.686(%int_32) [concrete] -// CHECK:STDOUT: %Convert.197: %Convert.type.4fd = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.062: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.527: %Core.IntLiteral.as.As.impl.Convert.type.062 = struct_value () [symbolic] +// CHECK:STDOUT: %As.impl_witness.6b4: = impl_witness imports.%As.impl_witness_table.eb4, @Core.IntLiteral.as.As.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.4fd: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.197: %Core.IntLiteral.as.As.impl.Convert.type.4fd = struct_value () [concrete] // CHECK:STDOUT: %As.facet: %As.type.fd4 = facet_value Core.IntLiteral, (%As.impl_witness.6b4) [concrete] -// CHECK:STDOUT: %.982: type = fn_type_with_self_type %Convert.type.99b, %As.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.197 [concrete] +// CHECK:STDOUT: %.982: type = fn_type_with_self_type %As.Convert.type.99b, %As.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert.197 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.197, @Convert.5(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.As.impl.Convert.197, @Core.IntLiteral.as.As.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %int_1.e78: %A = int_value 1 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core.import_ref.78a: @As.impl.686.%Convert.type (%Convert.type.062) = import_ref Core//prelude/parts/int, loc25_39, loaded [symbolic = @As.impl.686.%Convert (constants.%Convert.527)] -// CHECK:STDOUT: %As.impl_witness_table.eb4 = impl_witness_table (%Core.import_ref.78a), @As.impl.686 [concrete] +// CHECK:STDOUT: %Core.import_ref.78a: @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert.type (%Core.IntLiteral.as.As.impl.Convert.type.062) = import_ref Core//prelude/parts/int, loc25_39, loaded [symbolic = @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert (constants.%Core.IntLiteral.as.As.impl.Convert.527)] +// CHECK:STDOUT: %As.impl_witness_table.eb4 = impl_witness_table (%Core.import_ref.78a), @Core.IntLiteral.as.As.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -291,12 +291,12 @@ var b: B = {.x = ()} as B; // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_32.loc9: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc9: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %impl.elem0: %.982 = impl_witness_access constants.%As.impl_witness.6b4, element0 [concrete = constants.%Convert.197] -// CHECK:STDOUT: %bound_method.loc9_15.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.5(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.982 = impl_witness_access constants.%As.impl_witness.6b4, element0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.197] +// CHECK:STDOUT: %bound_method.loc9_15.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.As.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc9_15.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc9_15.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc9_15.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.call: init %i32 = call %bound_method.loc9_15.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc9_15.1: %i32 = value_of_initializer %Core.IntLiteral.as.As.impl.Convert.call [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc9_15.2: %i32 = converted %int_1, %.loc9_15.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A] // CHECK:STDOUT: %.loc9_23.1: %A = as_compatible %.loc9_15.2 [concrete = constants.%int_1.e78] @@ -352,28 +352,28 @@ var b: B = {.x = ()} as B; // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %struct_type.x.y.4cf: type = struct_type {.x: Core.IntLiteral, .y: Core.IntLiteral} [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %A.val: %A = struct_value (%int_1.5d2, %int_2.ef8) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -391,21 +391,21 @@ var b: B = {.x = ()} as B; // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %.loc14_34.1: %struct_type.x.y.4cf = struct_literal (%int_1, %int_2) // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A] -// CHECK:STDOUT: %impl.elem0.loc14_34.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc14_34.1: = bound_method %int_1, %impl.elem0.loc14_34.1 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc14_34.1: = specific_function %impl.elem0.loc14_34.1, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc14_34.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc14_34.1: = bound_method %int_1, %impl.elem0.loc14_34.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc14_34.1: = specific_function %impl.elem0.loc14_34.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc14_34.2: = bound_method %int_1, %specific_fn.loc14_34.1 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc14_34.1: init %i32 = call %bound_method.loc14_34.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc14_34.2: init %i32 = converted %int_1, %int.convert_checked.loc14_34.1 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc14_34.1: init %i32 = call %bound_method.loc14_34.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc14_34.2: init %i32 = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc14_34.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc14_34.3: ref %A = temporary_storage // CHECK:STDOUT: %.loc14_34.4: ref %i32 = class_element_access %.loc14_34.3, element0 // CHECK:STDOUT: %.loc14_34.5: init %i32 = initialize_from %.loc14_34.2 to %.loc14_34.4 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %impl.elem0.loc14_34.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc14_34.3: = bound_method %int_2, %impl.elem0.loc14_34.2 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc14_34.2: = specific_function %impl.elem0.loc14_34.2, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc14_34.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc14_34.3: = bound_method %int_2, %impl.elem0.loc14_34.2 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc14_34.2: = specific_function %impl.elem0.loc14_34.2, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc14_34.4: = bound_method %int_2, %specific_fn.loc14_34.2 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc14_34.2: init %i32 = call %bound_method.loc14_34.4(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc14_34.6: init %i32 = converted %int_2, %int.convert_checked.loc14_34.2 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc14_34.2: init %i32 = call %bound_method.loc14_34.4(%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc14_34.6: init %i32 = converted %int_2, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc14_34.2 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc14_34.7: ref %i32 = class_element_access %.loc14_34.3, element1 // CHECK:STDOUT: %.loc14_34.8: init %i32 = initialize_from %.loc14_34.6 to %.loc14_34.7 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc14_34.9: init %A = class_init (%.loc14_34.5, %.loc14_34.8), %.loc14_34.3 [concrete = constants.%A.val] diff --git a/toolchain/check/testdata/as/basics.carbon b/toolchain/check/testdata/as/basics.carbon index 9bef609370db..04c2b79478fb 100644 --- a/toolchain/check/testdata/as/basics.carbon +++ b/toolchain/check/testdata/as/basics.carbon @@ -209,11 +209,11 @@ let n: {.x: ()} = {.x = ()} as {.x = ()}; // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] // CHECK:STDOUT: %tuple.type.b67: type = tuple_type (%X, %X) [concrete] // CHECK:STDOUT: %pattern_type.bb7: type = pattern_type %tuple.type.b67 [concrete] -// CHECK:STDOUT: %Op.type.9e1: type = fn_type @Op.1, @Destroy.impl(%X) [concrete] -// CHECK:STDOUT: %Op.33a: %Op.type.9e1 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.9e1: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%X) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.33a: %T.as.Destroy.impl.Op.type.9e1 = struct_value () [concrete] // CHECK:STDOUT: %ptr.d17: type = ptr_type %X [concrete] -// CHECK:STDOUT: %Op.type.df3: type = fn_type @Op.1, @Destroy.impl(%tuple.type.b67) [concrete] -// CHECK:STDOUT: %Op.279: %Op.type.df3 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.df3: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%tuple.type.b67) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.279: %T.as.Destroy.impl.Op.type.df3 = struct_value () [concrete] // CHECK:STDOUT: %ptr.120: type = ptr_type %tuple.type.b67 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -249,16 +249,16 @@ let n: {.x: ()} = {.x = ()} as {.x = ()}; // CHECK:STDOUT: %tuple: %tuple.type.b67 = tuple_value (%.loc13_25.3, %.loc13_33.3) // CHECK:STDOUT: %.loc13_34.2: %tuple.type.b67 = converted %.loc13_34.1, %tuple // CHECK:STDOUT: %a: %tuple.type.b67 = bind_name a, %.loc13_34.2 -// CHECK:STDOUT: %Op.bound.loc13_33: = bound_method %.loc13_33.1, constants.%Op.33a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc13_33: = bound_method %.loc13_33.1, constants.%T.as.Destroy.impl.Op.33a // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc13_33: = bound_method %.loc13_33.1, %Op.specific_fn.1 +// CHECK:STDOUT: %bound_method.loc13_33: = bound_method %.loc13_33.1, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc13_33: %ptr.d17 = addr_of %.loc13_33.1 -// CHECK:STDOUT: %no_op.loc13_33: init %empty_tuple.type = call %bound_method.loc13_33(%addr.loc13_33) -// CHECK:STDOUT: %Op.bound.loc13_25: = bound_method %.loc13_25.1, constants.%Op.33a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc13_33: init %empty_tuple.type = call %bound_method.loc13_33(%addr.loc13_33) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc13_25: = bound_method %.loc13_25.1, constants.%T.as.Destroy.impl.Op.33a // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc13_25: = bound_method %.loc13_25.1, %Op.specific_fn.2 +// CHECK:STDOUT: %bound_method.loc13_25: = bound_method %.loc13_25.1, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc13_25: %ptr.d17 = addr_of %.loc13_25.1 -// CHECK:STDOUT: %no_op.loc13_25: init %empty_tuple.type = call %bound_method.loc13_25(%addr.loc13_25) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc13_25: init %empty_tuple.type = call %bound_method.loc13_25(%addr.loc13_25) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -290,21 +290,21 @@ let n: {.x: ()} = {.x = ()} as {.x = ()}; // CHECK:STDOUT: %.loc20_15.3: type = converted %.loc20_15.2, constants.%tuple.type.b67 [concrete = constants.%tuple.type.b67] // CHECK:STDOUT: } // CHECK:STDOUT: %b: ref %tuple.type.b67 = bind_name b, %b.var -// CHECK:STDOUT: %Op.bound.loc20_34.1: = bound_method %tuple.elem1, constants.%Op.33a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc20_34.1: = bound_method %tuple.elem1, constants.%T.as.Destroy.impl.Op.33a // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc20_34.1: = bound_method %tuple.elem1, %Op.specific_fn.1 +// CHECK:STDOUT: %bound_method.loc20_34.1: = bound_method %tuple.elem1, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc20_34.1: %ptr.d17 = addr_of %tuple.elem1 -// CHECK:STDOUT: %no_op.loc20_34.1: init %empty_tuple.type = call %bound_method.loc20_34.1(%addr.loc20_34.1) -// CHECK:STDOUT: %Op.bound.loc20_34.2: = bound_method %tuple.elem0, constants.%Op.33a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc20_34.1: init %empty_tuple.type = call %bound_method.loc20_34.1(%addr.loc20_34.1) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc20_34.2: = bound_method %tuple.elem0, constants.%T.as.Destroy.impl.Op.33a // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc20_34.2: = bound_method %tuple.elem0, %Op.specific_fn.2 +// CHECK:STDOUT: %bound_method.loc20_34.2: = bound_method %tuple.elem0, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc20_34.2: %ptr.d17 = addr_of %tuple.elem0 -// CHECK:STDOUT: %no_op.loc20_34.2: init %empty_tuple.type = call %bound_method.loc20_34.2(%addr.loc20_34.2) -// CHECK:STDOUT: %Op.bound.loc20_3: = bound_method %b.var, constants.%Op.279 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc20_34.2: init %empty_tuple.type = call %bound_method.loc20_34.2(%addr.loc20_34.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc20_3: = bound_method %b.var, constants.%T.as.Destroy.impl.Op.279 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc20_3: = bound_method %b.var, %Op.specific_fn.3 +// CHECK:STDOUT: %bound_method.loc20_3: = bound_method %b.var, %T.as.Destroy.impl.Op.specific_fn.3 // CHECK:STDOUT: %addr.loc20_3: %ptr.120 = addr_of %b.var -// CHECK:STDOUT: %no_op.loc20_3: init %empty_tuple.type = call %bound_method.loc20_3(%addr.loc20_3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc20_3: init %empty_tuple.type = call %bound_method.loc20_3(%addr.loc20_3) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -318,8 +318,8 @@ let n: {.x: ()} = {.x = ()} as {.x = ()}; // CHECK:STDOUT: %pattern_type.1c6: type = pattern_type %ptr.d17 [concrete] // CHECK:STDOUT: %Make.type: type = fn_type @Make [concrete] // CHECK:STDOUT: %Make: %Make.type = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.9e1: type = fn_type @Op.1, @Destroy.impl(%X) [concrete] -// CHECK:STDOUT: %Op.33a: %Op.type.9e1 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.9e1: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%X) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.33a: %T.as.Destroy.impl.Op.type.9e1 = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -368,16 +368,16 @@ let n: {.x: ()} = {.x = ()} as {.x = ()}; // CHECK:STDOUT: assign %x.var, %Make.call // CHECK:STDOUT: %X.ref.loc24_10: type = name_ref X, file.%X.decl [concrete = constants.%X] // CHECK:STDOUT: %x: ref %X = bind_name x, %x.var -// CHECK:STDOUT: %Op.bound.loc24_3.1: = bound_method %.loc24, constants.%Op.33a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc24_3.1: = bound_method %.loc24, constants.%T.as.Destroy.impl.Op.33a // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc24_3.1: = bound_method %.loc24, %Op.specific_fn.1 +// CHECK:STDOUT: %bound_method.loc24_3.1: = bound_method %.loc24, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc24_3.1: %ptr.d17 = addr_of %.loc24 -// CHECK:STDOUT: %no_op.loc24_3.1: init %empty_tuple.type = call %bound_method.loc24_3.1(%addr.loc24_3.1) -// CHECK:STDOUT: %Op.bound.loc24_3.2: = bound_method %x.var, constants.%Op.33a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc24_3.1: init %empty_tuple.type = call %bound_method.loc24_3.1(%addr.loc24_3.1) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc24_3.2: = bound_method %x.var, constants.%T.as.Destroy.impl.Op.33a // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc24_3.2: = bound_method %x.var, %Op.specific_fn.2 +// CHECK:STDOUT: %bound_method.loc24_3.2: = bound_method %x.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc24_3.2: %ptr.d17 = addr_of %x.var -// CHECK:STDOUT: %no_op.loc24_3.2: init %empty_tuple.type = call %bound_method.loc24_3.2(%addr.loc24_3.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc24_3.2: init %empty_tuple.type = call %bound_method.loc24_3.2(%addr.loc24_3.2) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -392,12 +392,12 @@ let n: {.x: ()} = {.x = ()} as {.x = ()}; // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %X.val: %X = struct_value (%empty_tuple) [concrete] // CHECK:STDOUT: %As.type.bdd: type = facet_type <@As, @As(%Y)> [concrete] -// CHECK:STDOUT: %Convert.type.d2d: type = fn_type @Convert.1, @As(%Y) [concrete] +// CHECK:STDOUT: %As.Convert.type.d2d: type = fn_type @As.Convert, @As(%Y) [concrete] // CHECK:STDOUT: %As.impl_witness.06e: = impl_witness file.%As.impl_witness_table.loc14 [concrete] -// CHECK:STDOUT: %Convert.type.dbe: type = fn_type @Convert.loc15 [concrete] -// CHECK:STDOUT: %Convert.9cb: %Convert.type.dbe = struct_value () [concrete] +// CHECK:STDOUT: %X.as.As.impl.Convert.type: type = fn_type @X.as.As.impl.Convert [concrete] +// CHECK:STDOUT: %X.as.As.impl.Convert: %X.as.As.impl.Convert.type = struct_value () [concrete] // CHECK:STDOUT: %As.facet.8d1: %As.type.bdd = facet_value %X, (%As.impl_witness.06e) [concrete] -// CHECK:STDOUT: %.1fc: type = fn_type_with_self_type %Convert.type.d2d, %As.facet.8d1 [concrete] +// CHECK:STDOUT: %.1fc: type = fn_type_with_self_type %As.Convert.type.d2d, %As.facet.8d1 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -426,12 +426,12 @@ let n: {.x: ()} = {.x = ()} as {.x = ()}; // CHECK:STDOUT: %.loc19_21.6: ref %X = temporary %.loc19_21.2, %.loc19_21.5 // CHECK:STDOUT: %.loc19_23.1: ref %X = converted %.loc19_21.1, %.loc19_21.6 // CHECK:STDOUT: %Y.ref: type = name_ref Y, file.%Y.decl [concrete = constants.%Y] -// CHECK:STDOUT: %impl.elem0: %.1fc = impl_witness_access constants.%As.impl_witness.06e, element0 [concrete = constants.%Convert.9cb] +// CHECK:STDOUT: %impl.elem0: %.1fc = impl_witness_access constants.%As.impl_witness.06e, element0 [concrete = constants.%X.as.As.impl.Convert] // CHECK:STDOUT: %bound_method: = bound_method %.loc19_23.1, %impl.elem0 // CHECK:STDOUT: %.loc19_29.1: ref %Y = temporary_storage // CHECK:STDOUT: %.loc19_23.2: %X = bind_value %.loc19_23.1 -// CHECK:STDOUT: %Convert.call: init %Y = call %bound_method(%.loc19_23.2) to %.loc19_29.1 -// CHECK:STDOUT: %.loc19_29.2: init %Y = converted %.loc19_23.1, %Convert.call +// CHECK:STDOUT: %X.as.As.impl.Convert.call: init %Y = call %bound_method(%.loc19_23.2) to %.loc19_29.1 +// CHECK:STDOUT: %.loc19_29.2: init %Y = converted %.loc19_23.1, %X.as.As.impl.Convert.call // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/basics/dump_sem_ir_ranges.carbon b/toolchain/check/testdata/basics/dump_sem_ir_ranges.carbon index 2a6f5dda08df..6abaaec11444 100644 --- a/toolchain/check/testdata/basics/dump_sem_ir_ranges.carbon +++ b/toolchain/check/testdata/basics/dump_sem_ir_ranges.carbon @@ -98,8 +98,8 @@ fn F(); // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %A: %A.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] -// CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.1, @Destroy.impl(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a63: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ea3: %T.as.Destroy.impl.Op.type.a63 = struct_value () [concrete] // CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] // CHECK:STDOUT: %B.type: type = fn_type @B [concrete] // CHECK:STDOUT: %B: %B.type = struct_value () [concrete] @@ -152,11 +152,11 @@ fn F(); // CHECK:STDOUT: %c.ref.loc20: ref %empty_tuple.type = name_ref c, %c // CHECK:STDOUT: %tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc20: %empty_tuple.type = converted %c.ref.loc20, %tuple [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %Op.bound: = bound_method %c.var, constants.%Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %c.var, constants.%T.as.Destroy.impl.Op.ea3 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %c.var, %Op.specific_fn +// CHECK:STDOUT: %bound_method: = bound_method %c.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.843 = addr_of %c.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %.loc20 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -164,11 +164,11 @@ fn F(); // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %A: type = class_type @A [concrete] -// CHECK:STDOUT: %G.type: type = fn_type @G [concrete] -// CHECK:STDOUT: %G: %G.type = struct_value () [concrete] +// CHECK:STDOUT: %A.G.type: type = fn_type @A.G [concrete] +// CHECK:STDOUT: %A.G: %A.G.type = struct_value () [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] -// CHECK:STDOUT: %I.type: type = fn_type @I [concrete] -// CHECK:STDOUT: %I: %I.type = struct_value () [concrete] +// CHECK:STDOUT: %C.I.type: type = fn_type @C.I [concrete] +// CHECK:STDOUT: %C.I: %C.I.type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -180,30 +180,30 @@ fn F(); // CHECK:STDOUT: // CHECK:STDOUT: class @A { // CHECK:STDOUT: -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {} {} +// CHECK:STDOUT: %A.G.decl: %A.G.type = fn_decl @A.G [concrete = constants.%A.G] {} {} // CHECK:STDOUT: // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .F = %A.F.decl +// CHECK:STDOUT: .G = %A.G.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %I.decl: %I.type = fn_decl @I [concrete = constants.%I] {} {} +// CHECK:STDOUT: %C.I.decl: %C.I.type = fn_decl @C.I [concrete = constants.%C.I] {} {} // CHECK:STDOUT: // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C -// CHECK:STDOUT: .I = %I.decl -// CHECK:STDOUT: .J = %J.decl +// CHECK:STDOUT: .I = %C.I.decl +// CHECK:STDOUT: .J = %C.J.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G(); +// CHECK:STDOUT: fn @A.G(); // CHECK:STDOUT: -// CHECK:STDOUT: fn @I(); +// CHECK:STDOUT: fn @C.I(); // CHECK:STDOUT: // CHECK:STDOUT: --- call_params.carbon // CHECK:STDOUT: @@ -214,8 +214,8 @@ fn F(); // CHECK:STDOUT: %C.type: type = fn_type @C [concrete] // CHECK:STDOUT: %C: %C.type = struct_value () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] -// CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.1, @Destroy.impl(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a63: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ea3: %T.as.Destroy.impl.Op.type.a63 = struct_value () [concrete] // CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -240,17 +240,17 @@ fn F(); // CHECK:STDOUT: %tuple.loc17: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc17_7.3: %empty_tuple.type = converted %C.call, %tuple.loc17 [concrete = constants.%empty_tuple] // CHECK:STDOUT: -// CHECK:STDOUT: %Op.bound.loc17: = bound_method %.loc17_7.1, constants.%Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc17: = bound_method %.loc17_7.1, constants.%T.as.Destroy.impl.Op.ea3 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc17: = bound_method %.loc17_7.1, %Op.specific_fn.1 +// CHECK:STDOUT: %bound_method.loc17: = bound_method %.loc17_7.1, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc17: %ptr.843 = addr_of %.loc17_7.1 -// CHECK:STDOUT: %no_op.loc17: init %empty_tuple.type = call %bound_method.loc17(%addr.loc17) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc17: init %empty_tuple.type = call %bound_method.loc17(%addr.loc17) // CHECK:STDOUT: -// CHECK:STDOUT: %Op.bound.loc13: = bound_method %.loc13_7.1, constants.%Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc13: = bound_method %.loc13_7.1, constants.%T.as.Destroy.impl.Op.ea3 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc13: = bound_method %.loc13_7.1, %Op.specific_fn.3 +// CHECK:STDOUT: %bound_method.loc13: = bound_method %.loc13_7.1, %T.as.Destroy.impl.Op.specific_fn.3 // CHECK:STDOUT: %addr.loc13: %ptr.843 = addr_of %.loc13_7.1 -// CHECK:STDOUT: %no_op.loc13: init %empty_tuple.type = call %bound_method.loc13(%addr.loc13) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc13: init %empty_tuple.type = call %bound_method.loc13(%addr.loc13) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/basics/duplicate_name_same_line.carbon b/toolchain/check/testdata/basics/duplicate_name_same_line.carbon index 36db5030aa78..21555e4ee954 100644 --- a/toolchain/check/testdata/basics/duplicate_name_same_line.carbon +++ b/toolchain/check/testdata/basics/duplicate_name_same_line.carbon @@ -25,8 +25,8 @@ fn A() { // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] -// CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.1, @Destroy.impl(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a63: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ea3: %T.as.Destroy.impl.Op.type.a63 = struct_value () [concrete] // CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -64,16 +64,16 @@ fn A() { // CHECK:STDOUT: // CHECK:STDOUT: // CHECK:STDOUT: !if.done: -// CHECK:STDOUT: %Op.bound.loc18_25: = bound_method %n.var.loc18_25, constants.%Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc18_25: = bound_method %n.var.loc18_25, constants.%T.as.Destroy.impl.Op.ea3 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc18_25: = bound_method %n.var.loc18_25, %Op.specific_fn.1 +// CHECK:STDOUT: %bound_method.loc18_25: = bound_method %n.var.loc18_25, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc18_25: %ptr.843 = addr_of %n.var.loc18_25 -// CHECK:STDOUT: %no_op.loc18_25: init %empty_tuple.type = call %bound_method.loc18_25(%addr.loc18_25) -// CHECK:STDOUT: %Op.bound.loc18_5: = bound_method %n.var.loc18_5, constants.%Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc18_25: init %empty_tuple.type = call %bound_method.loc18_25(%addr.loc18_25) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc18_5: = bound_method %n.var.loc18_5, constants.%T.as.Destroy.impl.Op.ea3 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc18_5: = bound_method %n.var.loc18_5, %Op.specific_fn.2 +// CHECK:STDOUT: %bound_method.loc18_5: = bound_method %n.var.loc18_5, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc18_5: %ptr.843 = addr_of %n.var.loc18_5 -// CHECK:STDOUT: %no_op.loc18_5: init %empty_tuple.type = call %bound_method.loc18_5(%addr.loc18_5) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc18_5: init %empty_tuple.type = call %bound_method.loc18_5(%addr.loc18_5) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/basics/parens.carbon b/toolchain/check/testdata/basics/parens.carbon index c339e431ae98..6fd3e2c65808 100644 --- a/toolchain/check/testdata/basics/parens.carbon +++ b/toolchain/check/testdata/basics/parens.carbon @@ -26,22 +26,22 @@ var b: i32 = ((2)); // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -54,8 +54,8 @@ var b: i32 = ((2)); // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -90,20 +90,20 @@ var b: i32 = ((2)); // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0.loc14: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc14_1.1: = bound_method %int_1, %impl.elem0.loc14 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc14: = specific_function %impl.elem0.loc14, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc14: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc14_1.1: = bound_method %int_1, %impl.elem0.loc14 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc14: = specific_function %impl.elem0.loc14, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc14_1.2: = bound_method %int_1, %specific_fn.loc14 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc14: init %i32 = call %bound_method.loc14_1.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc14: init %i32 = converted %int_1, %int.convert_checked.loc14 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc14: init %i32 = call %bound_method.loc14_1.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc14: init %i32 = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc14 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: assign file.%a.var, %.loc14 // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %impl.elem0.loc15: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc15_1.1: = bound_method %int_2, %impl.elem0.loc15 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc15: = specific_function %impl.elem0.loc15, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc15: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc15_1.1: = bound_method %int_2, %impl.elem0.loc15 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc15: = specific_function %impl.elem0.loc15, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc15_1.2: = bound_method %int_2, %specific_fn.loc15 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc15: init %i32 = call %bound_method.loc15_1.2(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc15: init %i32 = converted %int_2, %int.convert_checked.loc15 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc15: init %i32 = call %bound_method.loc15_1.2(%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc15: init %i32 = converted %int_2, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc15 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: assign file.%b.var, %.loc15 // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/basics/type_literals.carbon b/toolchain/check/testdata/basics/type_literals.carbon index 54f2b985004e..0eace93925ff 100644 --- a/toolchain/check/testdata/basics/type_literals.carbon +++ b/toolchain/check/testdata/basics/type_literals.carbon @@ -316,9 +316,9 @@ var x: type = 42; // CHECK:STDOUT: %test_f64.var: ref f64 = var %test_f64.var_patt [concrete] // CHECK:STDOUT: %.loc4_15.1: type = splice_block %.loc4_15.3 [concrete = f64] { // CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [concrete = constants.%int_64] -// CHECK:STDOUT: %float.make_type: init type = call constants.%Float(%int_64) [concrete = f64] -// CHECK:STDOUT: %.loc4_15.2: type = value_of_initializer %float.make_type [concrete = f64] -// CHECK:STDOUT: %.loc4_15.3: type = converted %float.make_type, %.loc4_15.2 [concrete = f64] +// CHECK:STDOUT: %Float.call: init type = call constants.%Float(%int_64) [concrete = f64] +// CHECK:STDOUT: %.loc4_15.2: type = value_of_initializer %Float.call [concrete = f64] +// CHECK:STDOUT: %.loc4_15.3: type = converted %Float.call, %.loc4_15.2 [concrete = f64] // CHECK:STDOUT: } // CHECK:STDOUT: %test_f64: ref f64 = bind_name test_f64, %test_f64.var [concrete = %test_f64.var] // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/builtins/bool/eq.carbon b/toolchain/check/testdata/builtins/bool/eq.carbon index 23e4bc766378..9121a4e40635 100644 --- a/toolchain/check/testdata/builtins/bool/eq.carbon +++ b/toolchain/check/testdata/builtins/bool/eq.carbon @@ -72,9 +72,9 @@ var d: C(false == false) = True(); // CHECK:STDOUT: %Eq.ref.loc12: %Eq.type = name_ref Eq, %Eq.decl [concrete = constants.%Eq] // CHECK:STDOUT: %true.loc12_13: bool = bool_literal true [concrete = constants.%true] // CHECK:STDOUT: %true.loc12_19: bool = bool_literal true [concrete = constants.%true] -// CHECK:STDOUT: %bool.eq.loc12: init bool = call %Eq.ref.loc12(%true.loc12_13, %true.loc12_19) [concrete = constants.%true] -// CHECK:STDOUT: %.loc12_24.2: bool = value_of_initializer %bool.eq.loc12 [concrete = constants.%true] -// CHECK:STDOUT: %.loc12_24.3: bool = converted %bool.eq.loc12, %.loc12_24.2 [concrete = constants.%true] +// CHECK:STDOUT: %Eq.call.loc12: init bool = call %Eq.ref.loc12(%true.loc12_13, %true.loc12_19) [concrete = constants.%true] +// CHECK:STDOUT: %.loc12_24.2: bool = value_of_initializer %Eq.call.loc12 [concrete = constants.%true] +// CHECK:STDOUT: %.loc12_24.3: bool = converted %Eq.call.loc12, %.loc12_24.2 [concrete = constants.%true] // CHECK:STDOUT: %C.loc12: type = class_type @C, @C(constants.%true) [concrete = constants.%C.a14] // CHECK:STDOUT: } // CHECK:STDOUT: %a: ref %C.a14 = bind_name a, %a.var [concrete = %a.var] @@ -100,19 +100,19 @@ var d: C(false == false) = True(); // CHECK:STDOUT: %True.type: type = fn_type @True [concrete] // CHECK:STDOUT: %True: %True.type = struct_value () [concrete] // CHECK:STDOUT: %EqWith.type.a38: type = facet_type <@EqWith, @EqWith(bool)> [concrete] -// CHECK:STDOUT: %Equal.type.a58: type = fn_type @Equal.1, @EqWith(bool) [concrete] +// CHECK:STDOUT: %EqWith.Equal.type.a58: type = fn_type @EqWith.Equal, @EqWith(bool) [concrete] // CHECK:STDOUT: %EqWith.impl_witness: = impl_witness imports.%EqWith.impl_witness_table [concrete] // CHECK:STDOUT: %EqWith.facet: %EqWith.type.a38 = facet_value bool, (%EqWith.impl_witness) [concrete] -// CHECK:STDOUT: %.18c: type = fn_type_with_self_type %Equal.type.a58, %EqWith.facet [concrete] -// CHECK:STDOUT: %Equal.type.f5c: type = fn_type @Equal.2 [concrete] -// CHECK:STDOUT: %Equal.4ef: %Equal.type.f5c = struct_value () [concrete] -// CHECK:STDOUT: %Equal.bound.e10: = bound_method %true, %Equal.4ef [concrete] +// CHECK:STDOUT: %.18c: type = fn_type_with_self_type %EqWith.Equal.type.a58, %EqWith.facet [concrete] +// CHECK:STDOUT: %bool.as.EqWith.impl.Equal.type: type = fn_type @bool.as.EqWith.impl.Equal [concrete] +// CHECK:STDOUT: %bool.as.EqWith.impl.Equal: %bool.as.EqWith.impl.Equal.type = struct_value () [concrete] +// CHECK:STDOUT: %bool.as.EqWith.impl.Equal.bound.e10: = bound_method %true, %bool.as.EqWith.impl.Equal [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core.import_ref.9cf: %Equal.type.f5c = import_ref Core//prelude/operators/comparison, loc36_45, loaded [concrete = constants.%Equal.4ef] +// CHECK:STDOUT: %Core.import_ref.9cf: %bool.as.EqWith.impl.Equal.type = import_ref Core//prelude/operators/comparison, loc36_45, loaded [concrete = constants.%bool.as.EqWith.impl.Equal] // CHECK:STDOUT: %Core.import_ref.f59 = import_ref Core//prelude/operators/comparison, loc37_48, unloaded -// CHECK:STDOUT: %EqWith.impl_witness_table = impl_witness_table (%Core.import_ref.9cf, %Core.import_ref.f59), @EqWith.impl.4e5 [concrete] +// CHECK:STDOUT: %EqWith.impl_witness_table = impl_witness_table (%Core.import_ref.9cf, %Core.import_ref.f59), @bool.as.EqWith.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -125,11 +125,11 @@ var d: C(false == false) = True(); // CHECK:STDOUT: %C.ref.loc10: %C.type = name_ref C, %C.decl [concrete = constants.%C.generic] // CHECK:STDOUT: %true.loc10_10: bool = bool_literal true [concrete = constants.%true] // CHECK:STDOUT: %true.loc10_18: bool = bool_literal true [concrete = constants.%true] -// CHECK:STDOUT: %impl.elem0.loc10: %.18c = impl_witness_access constants.%EqWith.impl_witness, element0 [concrete = constants.%Equal.4ef] -// CHECK:STDOUT: %bound_method.loc10: = bound_method %true.loc10_10, %impl.elem0.loc10 [concrete = constants.%Equal.bound.e10] -// CHECK:STDOUT: %bool.eq.loc10: init bool = call %bound_method.loc10(%true.loc10_10, %true.loc10_18) [concrete = constants.%true] -// CHECK:STDOUT: %.loc10_22.2: bool = value_of_initializer %bool.eq.loc10 [concrete = constants.%true] -// CHECK:STDOUT: %.loc10_22.3: bool = converted %bool.eq.loc10, %.loc10_22.2 [concrete = constants.%true] +// CHECK:STDOUT: %impl.elem0.loc10: %.18c = impl_witness_access constants.%EqWith.impl_witness, element0 [concrete = constants.%bool.as.EqWith.impl.Equal] +// CHECK:STDOUT: %bound_method.loc10: = bound_method %true.loc10_10, %impl.elem0.loc10 [concrete = constants.%bool.as.EqWith.impl.Equal.bound.e10] +// CHECK:STDOUT: %bool.as.EqWith.impl.Equal.call.loc10: init bool = call %bound_method.loc10(%true.loc10_10, %true.loc10_18) [concrete = constants.%true] +// CHECK:STDOUT: %.loc10_22.2: bool = value_of_initializer %bool.as.EqWith.impl.Equal.call.loc10 [concrete = constants.%true] +// CHECK:STDOUT: %.loc10_22.3: bool = converted %bool.as.EqWith.impl.Equal.call.loc10, %.loc10_22.2 [concrete = constants.%true] // CHECK:STDOUT: %C.loc10: type = class_type @C, @C(constants.%true) [concrete = constants.%C.a14] // CHECK:STDOUT: } // CHECK:STDOUT: %a: ref %C.a14 = bind_name a, %a.var [concrete = %a.var] diff --git a/toolchain/check/testdata/builtins/bool/make_type.carbon b/toolchain/check/testdata/builtins/bool/make_type.carbon index 28c8caaaee92..f19a10725612 100644 --- a/toolchain/check/testdata/builtins/bool/make_type.carbon +++ b/toolchain/check/testdata/builtins/bool/make_type.carbon @@ -47,9 +47,9 @@ var b: Bool() = false; // CHECK:STDOUT: %b.var: ref bool = var %b.var_patt [concrete] // CHECK:STDOUT: %.loc7_13.1: type = splice_block %.loc7_13.3 [concrete = bool] { // CHECK:STDOUT: %Bool.ref: %Bool.type = name_ref Bool, imports.%Main.Bool [concrete = constants.%Bool] -// CHECK:STDOUT: %bool.make_type: init type = call %Bool.ref() [concrete = bool] -// CHECK:STDOUT: %.loc7_13.2: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc7_13.3: type = converted %bool.make_type, %.loc7_13.2 [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call %Bool.ref() [concrete = bool] +// CHECK:STDOUT: %.loc7_13.2: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc7_13.3: type = converted %Bool.call, %.loc7_13.2 [concrete = bool] // CHECK:STDOUT: } // CHECK:STDOUT: %b: ref bool = bind_name b, %b.var [concrete = %b.var] // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/builtins/bool/neq.carbon b/toolchain/check/testdata/builtins/bool/neq.carbon index 16bb1503f93c..4efd9b6e33d1 100644 --- a/toolchain/check/testdata/builtins/bool/neq.carbon +++ b/toolchain/check/testdata/builtins/bool/neq.carbon @@ -73,9 +73,9 @@ var d: C(false != false) = False(); // CHECK:STDOUT: %Neq.ref.loc12: %Neq.type = name_ref Neq, %Neq.decl [concrete = constants.%Neq] // CHECK:STDOUT: %true.loc12_14: bool = bool_literal true [concrete = constants.%true] // CHECK:STDOUT: %true.loc12_20: bool = bool_literal true [concrete = constants.%true] -// CHECK:STDOUT: %bool.neq.loc12: init bool = call %Neq.ref.loc12(%true.loc12_14, %true.loc12_20) [concrete = constants.%false] -// CHECK:STDOUT: %.loc12_25.2: bool = value_of_initializer %bool.neq.loc12 [concrete = constants.%false] -// CHECK:STDOUT: %.loc12_25.3: bool = converted %bool.neq.loc12, %.loc12_25.2 [concrete = constants.%false] +// CHECK:STDOUT: %Neq.call.loc12: init bool = call %Neq.ref.loc12(%true.loc12_14, %true.loc12_20) [concrete = constants.%false] +// CHECK:STDOUT: %.loc12_25.2: bool = value_of_initializer %Neq.call.loc12 [concrete = constants.%false] +// CHECK:STDOUT: %.loc12_25.3: bool = converted %Neq.call.loc12, %.loc12_25.2 [concrete = constants.%false] // CHECK:STDOUT: %C.loc12: type = class_type @C, @C(constants.%false) [concrete = constants.%C.2ba] // CHECK:STDOUT: } // CHECK:STDOUT: %a: ref %C.2ba = bind_name a, %a.var [concrete = %a.var] @@ -102,19 +102,19 @@ var d: C(false != false) = False(); // CHECK:STDOUT: %False.type: type = fn_type @False [concrete] // CHECK:STDOUT: %False: %False.type = struct_value () [concrete] // CHECK:STDOUT: %EqWith.type.a38: type = facet_type <@EqWith, @EqWith(bool)> [concrete] -// CHECK:STDOUT: %NotEqual.type.f03: type = fn_type @NotEqual.1, @EqWith(bool) [concrete] +// CHECK:STDOUT: %EqWith.NotEqual.type.f03: type = fn_type @EqWith.NotEqual, @EqWith(bool) [concrete] // CHECK:STDOUT: %EqWith.impl_witness: = impl_witness imports.%EqWith.impl_witness_table [concrete] // CHECK:STDOUT: %EqWith.facet: %EqWith.type.a38 = facet_value bool, (%EqWith.impl_witness) [concrete] -// CHECK:STDOUT: %.c2f: type = fn_type_with_self_type %NotEqual.type.f03, %EqWith.facet [concrete] -// CHECK:STDOUT: %NotEqual.type.bb4: type = fn_type @NotEqual.2 [concrete] -// CHECK:STDOUT: %NotEqual.c32: %NotEqual.type.bb4 = struct_value () [concrete] -// CHECK:STDOUT: %NotEqual.bound.0d4: = bound_method %true, %NotEqual.c32 [concrete] +// CHECK:STDOUT: %.c2f: type = fn_type_with_self_type %EqWith.NotEqual.type.f03, %EqWith.facet [concrete] +// CHECK:STDOUT: %bool.as.EqWith.impl.NotEqual.type: type = fn_type @bool.as.EqWith.impl.NotEqual [concrete] +// CHECK:STDOUT: %bool.as.EqWith.impl.NotEqual: %bool.as.EqWith.impl.NotEqual.type = struct_value () [concrete] +// CHECK:STDOUT: %bool.as.EqWith.impl.NotEqual.bound.0d4: = bound_method %true, %bool.as.EqWith.impl.NotEqual [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core.import_ref.a67 = import_ref Core//prelude/operators/comparison, loc36_45, unloaded -// CHECK:STDOUT: %Core.import_ref.76f: %NotEqual.type.bb4 = import_ref Core//prelude/operators/comparison, loc37_48, loaded [concrete = constants.%NotEqual.c32] -// CHECK:STDOUT: %EqWith.impl_witness_table = impl_witness_table (%Core.import_ref.a67, %Core.import_ref.76f), @EqWith.impl.4e5 [concrete] +// CHECK:STDOUT: %Core.import_ref.76f: %bool.as.EqWith.impl.NotEqual.type = import_ref Core//prelude/operators/comparison, loc37_48, loaded [concrete = constants.%bool.as.EqWith.impl.NotEqual] +// CHECK:STDOUT: %EqWith.impl_witness_table = impl_witness_table (%Core.import_ref.a67, %Core.import_ref.76f), @bool.as.EqWith.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -127,11 +127,11 @@ var d: C(false != false) = False(); // CHECK:STDOUT: %C.ref.loc10: %C.type = name_ref C, %C.decl [concrete = constants.%C.generic] // CHECK:STDOUT: %true.loc10_10: bool = bool_literal true [concrete = constants.%true] // CHECK:STDOUT: %true.loc10_18: bool = bool_literal true [concrete = constants.%true] -// CHECK:STDOUT: %impl.elem1.loc10: %.c2f = impl_witness_access constants.%EqWith.impl_witness, element1 [concrete = constants.%NotEqual.c32] -// CHECK:STDOUT: %bound_method.loc10: = bound_method %true.loc10_10, %impl.elem1.loc10 [concrete = constants.%NotEqual.bound.0d4] -// CHECK:STDOUT: %bool.neq.loc10: init bool = call %bound_method.loc10(%true.loc10_10, %true.loc10_18) [concrete = constants.%false] -// CHECK:STDOUT: %.loc10_22.2: bool = value_of_initializer %bool.neq.loc10 [concrete = constants.%false] -// CHECK:STDOUT: %.loc10_22.3: bool = converted %bool.neq.loc10, %.loc10_22.2 [concrete = constants.%false] +// CHECK:STDOUT: %impl.elem1.loc10: %.c2f = impl_witness_access constants.%EqWith.impl_witness, element1 [concrete = constants.%bool.as.EqWith.impl.NotEqual] +// CHECK:STDOUT: %bound_method.loc10: = bound_method %true.loc10_10, %impl.elem1.loc10 [concrete = constants.%bool.as.EqWith.impl.NotEqual.bound.0d4] +// CHECK:STDOUT: %bool.as.EqWith.impl.NotEqual.call.loc10: init bool = call %bound_method.loc10(%true.loc10_10, %true.loc10_18) [concrete = constants.%false] +// CHECK:STDOUT: %.loc10_22.2: bool = value_of_initializer %bool.as.EqWith.impl.NotEqual.call.loc10 [concrete = constants.%false] +// CHECK:STDOUT: %.loc10_22.3: bool = converted %bool.as.EqWith.impl.NotEqual.call.loc10, %.loc10_22.2 [concrete = constants.%false] // CHECK:STDOUT: %C.loc10: type = class_type @C, @C(constants.%false) [concrete = constants.%C.2ba] // CHECK:STDOUT: } // CHECK:STDOUT: %a: ref %C.2ba = bind_name a, %a.var [concrete = %a.var] diff --git a/toolchain/check/testdata/builtins/float/add.carbon b/toolchain/check/testdata/builtins/float/add.carbon index 5e585edb95c1..092970fef7ee 100644 --- a/toolchain/check/testdata/builtins/float/add.carbon +++ b/toolchain/check/testdata/builtins/float/add.carbon @@ -72,9 +72,9 @@ fn RuntimeCallIsValidBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %Add.ref: %Add.type = name_ref Add, file.%Add.decl [concrete = constants.%Add] // CHECK:STDOUT: %a.ref: f64 = name_ref a, %a // CHECK:STDOUT: %b.ref: f64 = name_ref b, %b -// CHECK:STDOUT: %float.add: init f64 = call %Add.ref(%a.ref, %b.ref) -// CHECK:STDOUT: %.loc8_19.1: f64 = value_of_initializer %float.add -// CHECK:STDOUT: %.loc8_19.2: f64 = converted %float.add, %.loc8_19.1 +// CHECK:STDOUT: %Add.call: init f64 = call %Add.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %.loc8_19.1: f64 = value_of_initializer %Add.call +// CHECK:STDOUT: %.loc8_19.2: f64 = converted %Add.call, %.loc8_19.1 // CHECK:STDOUT: return %.loc8_19.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/float/div.carbon b/toolchain/check/testdata/builtins/float/div.carbon index af5dd67dbbc9..83f6b3c0fa03 100644 --- a/toolchain/check/testdata/builtins/float/div.carbon +++ b/toolchain/check/testdata/builtins/float/div.carbon @@ -81,9 +81,9 @@ fn RuntimeCallIsValidBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %Div.ref: %Div.type = name_ref Div, file.%Div.decl [concrete = constants.%Div] // CHECK:STDOUT: %a.ref: f64 = name_ref a, %a // CHECK:STDOUT: %b.ref: f64 = name_ref b, %b -// CHECK:STDOUT: %float.div: init f64 = call %Div.ref(%a.ref, %b.ref) -// CHECK:STDOUT: %.loc8_19.1: f64 = value_of_initializer %float.div -// CHECK:STDOUT: %.loc8_19.2: f64 = converted %float.div, %.loc8_19.1 +// CHECK:STDOUT: %Div.call: init f64 = call %Div.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %.loc8_19.1: f64 = value_of_initializer %Div.call +// CHECK:STDOUT: %.loc8_19.2: f64 = converted %Div.call, %.loc8_19.1 // CHECK:STDOUT: return %.loc8_19.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/float/eq.carbon b/toolchain/check/testdata/builtins/float/eq.carbon index e10994b513fb..88183db18bc7 100644 --- a/toolchain/check/testdata/builtins/float/eq.carbon +++ b/toolchain/check/testdata/builtins/float/eq.carbon @@ -53,9 +53,9 @@ fn WrongResult(a: f64, b: f64) -> f64 = "float.eq"; // CHECK:STDOUT: %Eq.ref: %Eq.type = name_ref Eq, file.%Eq.decl [concrete = constants.%Eq] // CHECK:STDOUT: %a.ref: f64 = name_ref a, %a // CHECK:STDOUT: %b.ref: f64 = name_ref b, %b -// CHECK:STDOUT: %float.eq: init bool = call %Eq.ref(%a.ref, %b.ref) -// CHECK:STDOUT: %.loc14_18.1: bool = value_of_initializer %float.eq -// CHECK:STDOUT: %.loc14_18.2: bool = converted %float.eq, %.loc14_18.1 +// CHECK:STDOUT: %Eq.call: init bool = call %Eq.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %.loc14_18.1: bool = value_of_initializer %Eq.call +// CHECK:STDOUT: %.loc14_18.2: bool = converted %Eq.call, %.loc14_18.1 // CHECK:STDOUT: return %.loc14_18.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/float/greater.carbon b/toolchain/check/testdata/builtins/float/greater.carbon index 233499ac3ff4..5f461b5228ab 100644 --- a/toolchain/check/testdata/builtins/float/greater.carbon +++ b/toolchain/check/testdata/builtins/float/greater.carbon @@ -47,9 +47,9 @@ fn RuntimeCallIsValid(a: f64, b: f64) -> bool { // CHECK:STDOUT: %Greater.ref: %Greater.type = name_ref Greater, file.%Greater.decl [concrete = constants.%Greater] // CHECK:STDOUT: %a.ref: f64 = name_ref a, %a // CHECK:STDOUT: %b.ref: f64 = name_ref b, %b -// CHECK:STDOUT: %float.greater: init bool = call %Greater.ref(%a.ref, %b.ref) -// CHECK:STDOUT: %.loc18_23.1: bool = value_of_initializer %float.greater -// CHECK:STDOUT: %.loc18_23.2: bool = converted %float.greater, %.loc18_23.1 +// CHECK:STDOUT: %Greater.call: init bool = call %Greater.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %.loc18_23.1: bool = value_of_initializer %Greater.call +// CHECK:STDOUT: %.loc18_23.2: bool = converted %Greater.call, %.loc18_23.1 // CHECK:STDOUT: return %.loc18_23.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/float/greater_eq.carbon b/toolchain/check/testdata/builtins/float/greater_eq.carbon index 31cd21ea13fd..3cf48683763e 100644 --- a/toolchain/check/testdata/builtins/float/greater_eq.carbon +++ b/toolchain/check/testdata/builtins/float/greater_eq.carbon @@ -47,9 +47,9 @@ fn RuntimeCallIsValid(a: f64, b: f64) -> bool { // CHECK:STDOUT: %GreaterEq.ref: %GreaterEq.type = name_ref GreaterEq, file.%GreaterEq.decl [concrete = constants.%GreaterEq] // CHECK:STDOUT: %a.ref: f64 = name_ref a, %a // CHECK:STDOUT: %b.ref: f64 = name_ref b, %b -// CHECK:STDOUT: %float.greater_eq: init bool = call %GreaterEq.ref(%a.ref, %b.ref) -// CHECK:STDOUT: %.loc18_25.1: bool = value_of_initializer %float.greater_eq -// CHECK:STDOUT: %.loc18_25.2: bool = converted %float.greater_eq, %.loc18_25.1 +// CHECK:STDOUT: %GreaterEq.call: init bool = call %GreaterEq.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %.loc18_25.1: bool = value_of_initializer %GreaterEq.call +// CHECK:STDOUT: %.loc18_25.2: bool = converted %GreaterEq.call, %.loc18_25.1 // CHECK:STDOUT: return %.loc18_25.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/float/less.carbon b/toolchain/check/testdata/builtins/float/less.carbon index 45e3dc12de61..2016e1b78e5e 100644 --- a/toolchain/check/testdata/builtins/float/less.carbon +++ b/toolchain/check/testdata/builtins/float/less.carbon @@ -47,9 +47,9 @@ fn RuntimeCallIsValid(a: f64, b: f64) -> bool { // CHECK:STDOUT: %Less.ref: %Less.type = name_ref Less, file.%Less.decl [concrete = constants.%Less] // CHECK:STDOUT: %a.ref: f64 = name_ref a, %a // CHECK:STDOUT: %b.ref: f64 = name_ref b, %b -// CHECK:STDOUT: %float.less: init bool = call %Less.ref(%a.ref, %b.ref) -// CHECK:STDOUT: %.loc18_20.1: bool = value_of_initializer %float.less -// CHECK:STDOUT: %.loc18_20.2: bool = converted %float.less, %.loc18_20.1 +// CHECK:STDOUT: %Less.call: init bool = call %Less.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %.loc18_20.1: bool = value_of_initializer %Less.call +// CHECK:STDOUT: %.loc18_20.2: bool = converted %Less.call, %.loc18_20.1 // CHECK:STDOUT: return %.loc18_20.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/float/less_eq.carbon b/toolchain/check/testdata/builtins/float/less_eq.carbon index 2cdae2554d66..d931ea434a06 100644 --- a/toolchain/check/testdata/builtins/float/less_eq.carbon +++ b/toolchain/check/testdata/builtins/float/less_eq.carbon @@ -47,9 +47,9 @@ fn RuntimeCallIsValid(a: f64, b: f64) -> bool { // CHECK:STDOUT: %LessEq.ref: %LessEq.type = name_ref LessEq, file.%LessEq.decl [concrete = constants.%LessEq] // CHECK:STDOUT: %a.ref: f64 = name_ref a, %a // CHECK:STDOUT: %b.ref: f64 = name_ref b, %b -// CHECK:STDOUT: %float.less_eq: init bool = call %LessEq.ref(%a.ref, %b.ref) -// CHECK:STDOUT: %.loc18_22.1: bool = value_of_initializer %float.less_eq -// CHECK:STDOUT: %.loc18_22.2: bool = converted %float.less_eq, %.loc18_22.1 +// CHECK:STDOUT: %LessEq.call: init bool = call %LessEq.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %.loc18_22.1: bool = value_of_initializer %LessEq.call +// CHECK:STDOUT: %.loc18_22.2: bool = converted %LessEq.call, %.loc18_22.1 // CHECK:STDOUT: return %.loc18_22.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/float/make_type.carbon b/toolchain/check/testdata/builtins/float/make_type.carbon index 38a8f0eee10a..f4c8aadbcd06 100644 --- a/toolchain/check/testdata/builtins/float/make_type.carbon +++ b/toolchain/check/testdata/builtins/float/make_type.carbon @@ -72,9 +72,9 @@ var dyn: Float(dyn_size); // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Float.ref: %Float.type = name_ref Float, imports.%Main.Float [concrete = constants.%Float] // CHECK:STDOUT: %dyn_size.ref: %i32 = name_ref dyn_size, %dyn_size -// CHECK:STDOUT: %float.make_type: init type = call %Float.ref(%dyn_size.ref) -// CHECK:STDOUT: %.loc10_25.1: type = value_of_initializer %float.make_type -// CHECK:STDOUT: %.loc10_25.2: type = converted %float.make_type, %.loc10_25.1 +// CHECK:STDOUT: %Float.call: init type = call %Float.ref(%dyn_size.ref) +// CHECK:STDOUT: %.loc10_25.1: type = value_of_initializer %Float.call +// CHECK:STDOUT: %.loc10_25.2: type = converted %Float.call, %.loc10_25.1 // CHECK:STDOUT: return %.loc10_25.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/float/mul.carbon b/toolchain/check/testdata/builtins/float/mul.carbon index 5459a3f2f433..0e8aff156af3 100644 --- a/toolchain/check/testdata/builtins/float/mul.carbon +++ b/toolchain/check/testdata/builtins/float/mul.carbon @@ -81,9 +81,9 @@ fn RuntimeCallIsValidBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %Mul.ref: %Mul.type = name_ref Mul, file.%Mul.decl [concrete = constants.%Mul] // CHECK:STDOUT: %a.ref: f64 = name_ref a, %a // CHECK:STDOUT: %b.ref: f64 = name_ref b, %b -// CHECK:STDOUT: %float.mul: init f64 = call %Mul.ref(%a.ref, %b.ref) -// CHECK:STDOUT: %.loc8_19.1: f64 = value_of_initializer %float.mul -// CHECK:STDOUT: %.loc8_19.2: f64 = converted %float.mul, %.loc8_19.1 +// CHECK:STDOUT: %Mul.call: init f64 = call %Mul.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %.loc8_19.1: f64 = value_of_initializer %Mul.call +// CHECK:STDOUT: %.loc8_19.2: f64 = converted %Mul.call, %.loc8_19.1 // CHECK:STDOUT: return %.loc8_19.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/float/negate.carbon b/toolchain/check/testdata/builtins/float/negate.carbon index c51fd659051a..bfe17d544089 100644 --- a/toolchain/check/testdata/builtins/float/negate.carbon +++ b/toolchain/check/testdata/builtins/float/negate.carbon @@ -80,9 +80,9 @@ fn RuntimeCallIsValidBadReturnType(a: f64) -> bool { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Negate.ref: %Negate.type = name_ref Negate, file.%Negate.decl [concrete = constants.%Negate] // CHECK:STDOUT: %a.ref: f64 = name_ref a, %a -// CHECK:STDOUT: %float.negate: init f64 = call %Negate.ref(%a.ref) -// CHECK:STDOUT: %.loc8_19.1: f64 = value_of_initializer %float.negate -// CHECK:STDOUT: %.loc8_19.2: f64 = converted %float.negate, %.loc8_19.1 +// CHECK:STDOUT: %Negate.call: init f64 = call %Negate.ref(%a.ref) +// CHECK:STDOUT: %.loc8_19.1: f64 = value_of_initializer %Negate.call +// CHECK:STDOUT: %.loc8_19.2: f64 = converted %Negate.call, %.loc8_19.1 // CHECK:STDOUT: return %.loc8_19.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/float/neq.carbon b/toolchain/check/testdata/builtins/float/neq.carbon index 849270b3054a..53c367448113 100644 --- a/toolchain/check/testdata/builtins/float/neq.carbon +++ b/toolchain/check/testdata/builtins/float/neq.carbon @@ -55,9 +55,9 @@ fn WrongResult(a: f64, b: f64) -> f64 = "float.neq"; // CHECK:STDOUT: %Neq.ref: %Neq.type = name_ref Neq, file.%Neq.decl [concrete = constants.%Neq] // CHECK:STDOUT: %a.ref: f64 = name_ref a, %a // CHECK:STDOUT: %b.ref: f64 = name_ref b, %b -// CHECK:STDOUT: %float.neq: init bool = call %Neq.ref(%a.ref, %b.ref) -// CHECK:STDOUT: %.loc16_19.1: bool = value_of_initializer %float.neq -// CHECK:STDOUT: %.loc16_19.2: bool = converted %float.neq, %.loc16_19.1 +// CHECK:STDOUT: %Neq.call: init bool = call %Neq.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %.loc16_19.1: bool = value_of_initializer %Neq.call +// CHECK:STDOUT: %.loc16_19.2: bool = converted %Neq.call, %.loc16_19.1 // CHECK:STDOUT: return %.loc16_19.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/float/sub.carbon b/toolchain/check/testdata/builtins/float/sub.carbon index a929feff3c35..b905dd422235 100644 --- a/toolchain/check/testdata/builtins/float/sub.carbon +++ b/toolchain/check/testdata/builtins/float/sub.carbon @@ -81,9 +81,9 @@ fn RuntimeCallIsValidBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %Sub.ref: %Sub.type = name_ref Sub, file.%Sub.decl [concrete = constants.%Sub] // CHECK:STDOUT: %a.ref: f64 = name_ref a, %a // CHECK:STDOUT: %b.ref: f64 = name_ref b, %b -// CHECK:STDOUT: %float.sub: init f64 = call %Sub.ref(%a.ref, %b.ref) -// CHECK:STDOUT: %.loc8_19.1: f64 = value_of_initializer %float.sub -// CHECK:STDOUT: %.loc8_19.2: f64 = converted %float.sub, %.loc8_19.1 +// CHECK:STDOUT: %Sub.call: init f64 = call %Sub.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %.loc8_19.1: f64 = value_of_initializer %Sub.call +// CHECK:STDOUT: %.loc8_19.2: f64 = converted %Sub.call, %.loc8_19.1 // CHECK:STDOUT: return %.loc8_19.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/and.carbon b/toolchain/check/testdata/builtins/int/and.carbon index 48f6c5f2f5bb..cf6317d52122 100644 --- a/toolchain/check/testdata/builtins/int/and.carbon +++ b/toolchain/check/testdata/builtins/int/and.carbon @@ -140,9 +140,9 @@ fn Test(n: Core.IntLiteral()) { // CHECK:STDOUT: %And.ref: %And.type = name_ref And, file.%And.decl [concrete = constants.%And] // CHECK:STDOUT: %a.ref: %i32 = name_ref a, %a // CHECK:STDOUT: %b.ref: %i32 = name_ref b, %b -// CHECK:STDOUT: %int.and: init %i32 = call %And.ref(%a.ref, %b.ref) -// CHECK:STDOUT: %.loc11_19.1: %i32 = value_of_initializer %int.and -// CHECK:STDOUT: %.loc11_19.2: %i32 = converted %int.and, %.loc11_19.1 +// CHECK:STDOUT: %And.call: init %i32 = call %And.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %.loc11_19.1: %i32 = value_of_initializer %And.call +// CHECK:STDOUT: %.loc11_19.2: %i32 = converted %And.call, %.loc11_19.1 // CHECK:STDOUT: return %.loc11_19.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/and_assign.carbon b/toolchain/check/testdata/builtins/int/and_assign.carbon index b3d8c7661121..d61aa306b1d9 100644 --- a/toolchain/check/testdata/builtins/int/and_assign.carbon +++ b/toolchain/check/testdata/builtins/int/and_assign.carbon @@ -73,7 +73,7 @@ fn MixedTypes(a: i32*, b: i64) = "int.and_assign"; // CHECK:STDOUT: %Builtin.ref: %Builtin.type = name_ref Builtin, file.%Builtin.decl [concrete = constants.%Builtin] // CHECK:STDOUT: %a.ref: %ptr = name_ref a, %a // CHECK:STDOUT: %b.ref: %i32 = name_ref b, %b -// CHECK:STDOUT: %int.and_assign: init %empty_tuple.type = call %Builtin.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %Builtin.call: init %empty_tuple.type = call %Builtin.ref(%a.ref, %b.ref) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/complement.carbon b/toolchain/check/testdata/builtins/int/complement.carbon index 89bbb182decb..217b3895d575 100644 --- a/toolchain/check/testdata/builtins/int/complement.carbon +++ b/toolchain/check/testdata/builtins/int/complement.carbon @@ -78,9 +78,9 @@ fn F(a: Core.IntLiteral()) -> Core.IntLiteral() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Complement.ref: %Complement.type = name_ref Complement, file.%Complement.decl [concrete = constants.%Complement] // CHECK:STDOUT: %a.ref: %i32 = name_ref a, %a -// CHECK:STDOUT: %int.complement: init %i32 = call %Complement.ref(%a.ref) -// CHECK:STDOUT: %.loc12_23.1: %i32 = value_of_initializer %int.complement -// CHECK:STDOUT: %.loc12_23.2: %i32 = converted %int.complement, %.loc12_23.1 +// CHECK:STDOUT: %Complement.call: init %i32 = call %Complement.ref(%a.ref) +// CHECK:STDOUT: %.loc12_23.1: %i32 = value_of_initializer %Complement.call +// CHECK:STDOUT: %.loc12_23.2: %i32 = converted %Complement.call, %.loc12_23.1 // CHECK:STDOUT: return %.loc12_23.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/convert.carbon b/toolchain/check/testdata/builtins/int/convert.carbon index 8c8cf43e80a9..b8906be16959 100644 --- a/toolchain/check/testdata/builtins/int/convert.carbon +++ b/toolchain/check/testdata/builtins/int/convert.carbon @@ -277,9 +277,9 @@ let convert_not_constant: i16 = IntLiteralToInt16(not_constant); // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Int32ToUint32.ref: %Int32ToUint32.type = name_ref Int32ToUint32, imports.%Main.Int32ToUint32 [concrete = constants.%Int32ToUint32] // CHECK:STDOUT: %a.ref: %i32 = name_ref a, %a -// CHECK:STDOUT: %int.convert: init %u32 = call %Int32ToUint32.ref(%a.ref) -// CHECK:STDOUT: %.loc7_26.1: %u32 = value_of_initializer %int.convert -// CHECK:STDOUT: %.loc7_26.2: %u32 = converted %int.convert, %.loc7_26.1 +// CHECK:STDOUT: %Int32ToUint32.call: init %u32 = call %Int32ToUint32.ref(%a.ref) +// CHECK:STDOUT: %.loc7_26.1: %u32 = value_of_initializer %Int32ToUint32.call +// CHECK:STDOUT: %.loc7_26.2: %u32 = converted %Int32ToUint32.call, %.loc7_26.1 // CHECK:STDOUT: return %.loc7_26.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -287,9 +287,9 @@ let convert_not_constant: i16 = IntLiteralToInt16(not_constant); // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Int32ToInt16.ref: %Int32ToInt16.type = name_ref Int32ToInt16, imports.%Main.Int32ToInt16 [concrete = constants.%Int32ToInt16] // CHECK:STDOUT: %a.ref: %i32 = name_ref a, %a -// CHECK:STDOUT: %int.convert: init %i16 = call %Int32ToInt16.ref(%a.ref) -// CHECK:STDOUT: %.loc13_25.1: %i16 = value_of_initializer %int.convert -// CHECK:STDOUT: %.loc13_25.2: %i16 = converted %int.convert, %.loc13_25.1 +// CHECK:STDOUT: %Int32ToInt16.call: init %i16 = call %Int32ToInt16.ref(%a.ref) +// CHECK:STDOUT: %.loc13_25.1: %i16 = value_of_initializer %Int32ToInt16.call +// CHECK:STDOUT: %.loc13_25.2: %i16 = converted %Int32ToInt16.call, %.loc13_25.1 // CHECK:STDOUT: return %.loc13_25.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -297,9 +297,9 @@ let convert_not_constant: i16 = IntLiteralToInt16(not_constant); // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Int32ToInt64.ref: %Int32ToInt64.type = name_ref Int32ToInt64, imports.%Main.Int32ToInt64 [concrete = constants.%Int32ToInt64] // CHECK:STDOUT: %a.ref: %i32 = name_ref a, %a -// CHECK:STDOUT: %int.convert: init %i64 = call %Int32ToInt64.ref(%a.ref) -// CHECK:STDOUT: %.loc19_25.1: %i64 = value_of_initializer %int.convert -// CHECK:STDOUT: %.loc19_25.2: %i64 = converted %int.convert, %.loc19_25.1 +// CHECK:STDOUT: %Int32ToInt64.call: init %i64 = call %Int32ToInt64.ref(%a.ref) +// CHECK:STDOUT: %.loc19_25.1: %i64 = value_of_initializer %Int32ToInt64.call +// CHECK:STDOUT: %.loc19_25.2: %i64 = converted %Int32ToInt64.call, %.loc19_25.1 // CHECK:STDOUT: return %.loc19_25.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/convert_checked.carbon b/toolchain/check/testdata/builtins/int/convert_checked.carbon index 2bb2f7fc7c4b..67acb1fc35f3 100644 --- a/toolchain/check/testdata/builtins/int/convert_checked.carbon +++ b/toolchain/check/testdata/builtins/int/convert_checked.carbon @@ -273,18 +273,18 @@ let convert_not_constant_widen: i64 = Int32ToInt64(not_constant); // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %ImplicitAs.type.9ba: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.6da: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.6da: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0b2: type = fn_type @Convert.2, @ImplicitAs.impl.c81(%To) [symbolic] -// CHECK:STDOUT: %Convert.6d7: %Convert.type.0b2 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.e34: = impl_witness imports.%ImplicitAs.impl_witness_table.e36, @ImplicitAs.impl.c81(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.ed5: type = fn_type @Convert.2, @ImplicitAs.impl.c81(%int_32) [concrete] -// CHECK:STDOUT: %Convert.16d: %Convert.type.ed5 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0b2: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.6d7: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0b2 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.e34: = impl_witness imports.%ImplicitAs.impl_witness_table.e36, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.ed5: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.16d: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.ed5 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.9ba = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.e34) [concrete] -// CHECK:STDOUT: %.d6a: type = fn_type_with_self_type %Convert.type.6da, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.16d [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.16d, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.d6a: type = fn_type_with_self_type %ImplicitAs.Convert.type.6da, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.16d [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.16d, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.47b: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %int_1.c1d: %u32 = int_value 1 [concrete] // CHECK:STDOUT: %int_16: Core.IntLiteral = int_value 16 [concrete] @@ -305,8 +305,8 @@ let convert_not_constant_widen: i64 = Int32ToInt64(not_constant); // CHECK:STDOUT: %Main.Int32ToUint32: %Int32ToUint32.type = import_ref Main//int_ops, Int32ToUint32, loaded [concrete = constants.%Int32ToUint32] // CHECK:STDOUT: %Main.Int32ToInt16: %Int32ToInt16.type = import_ref Main//int_ops, Int32ToInt16, loaded [concrete = constants.%Int32ToInt16] // CHECK:STDOUT: %Main.Int32ToInt64: %Int32ToInt64.type = import_ref Main//int_ops, Int32ToInt64, loaded [concrete = constants.%Int32ToInt64] -// CHECK:STDOUT: %Core.import_ref.a86: @ImplicitAs.impl.c81.%Convert.type (%Convert.type.0b2) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.c81.%Convert (constants.%Convert.6d7)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.e36 = impl_witness_table (%Core.import_ref.a86), @ImplicitAs.impl.c81 [concrete] +// CHECK:STDOUT: %Core.import_ref.a86: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0b2) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.6d7)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.e36 = impl_witness_table (%Core.import_ref.a86), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -317,8 +317,8 @@ let convert_not_constant_widen: i64 = Int32ToInt64(not_constant); // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %u32: type = class_type @UInt, @UInt(constants.%int_32) [concrete = constants.%u32] // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc6_42.1: %u32 = value_of_initializer @__global_init.%int.convert_checked.loc6_42 [concrete = constants.%int_1.c1d] -// CHECK:STDOUT: %.loc6_42.2: %u32 = converted @__global_init.%int.convert_checked.loc6_42, %.loc6_42.1 [concrete = constants.%int_1.c1d] +// CHECK:STDOUT: %.loc6_42.1: %u32 = value_of_initializer @__global_init.%Int32ToUint32.call [concrete = constants.%int_1.c1d] +// CHECK:STDOUT: %.loc6_42.2: %u32 = converted @__global_init.%Int32ToUint32.call, %.loc6_42.1 [concrete = constants.%int_1.c1d] // CHECK:STDOUT: %SizePreserving: %u32 = bind_name SizePreserving, %.loc6_42.2 // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %Narrowing.patt: %pattern_type.88f = binding_pattern Narrowing [concrete] @@ -327,8 +327,8 @@ let convert_not_constant_widen: i64 = Int32ToInt64(not_constant); // CHECK:STDOUT: %int_16: Core.IntLiteral = int_value 16 [concrete = constants.%int_16] // CHECK:STDOUT: %i16: type = class_type @Int, @Int(constants.%int_16) [concrete = constants.%i16] // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc7_36.1: %i16 = value_of_initializer @__global_init.%int.convert_checked.loc7_36 [concrete = constants.%int_1.c22] -// CHECK:STDOUT: %.loc7_36.2: %i16 = converted @__global_init.%int.convert_checked.loc7_36, %.loc7_36.1 [concrete = constants.%int_1.c22] +// CHECK:STDOUT: %.loc7_36.1: %i16 = value_of_initializer @__global_init.%Int32ToInt16.call [concrete = constants.%int_1.c22] +// CHECK:STDOUT: %.loc7_36.2: %i16 = converted @__global_init.%Int32ToInt16.call, %.loc7_36.1 [concrete = constants.%int_1.c22] // CHECK:STDOUT: %Narrowing: %i16 = bind_name Narrowing, %.loc7_36.2 // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %Widening.patt: %pattern_type.a10 = binding_pattern Widening [concrete] @@ -337,8 +337,8 @@ let convert_not_constant_widen: i64 = Int32ToInt64(not_constant); // CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [concrete = constants.%int_64] // CHECK:STDOUT: %i64: type = class_type @Int, @Int(constants.%int_64) [concrete = constants.%i64] // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc8_35.1: %i64 = value_of_initializer @__global_init.%int.convert_checked.loc8_35 [concrete = constants.%int_1.a95] -// CHECK:STDOUT: %.loc8_35.2: %i64 = converted @__global_init.%int.convert_checked.loc8_35, %.loc8_35.1 [concrete = constants.%int_1.a95] +// CHECK:STDOUT: %.loc8_35.1: %i64 = value_of_initializer @__global_init.%Int32ToInt64.call [concrete = constants.%int_1.a95] +// CHECK:STDOUT: %.loc8_35.2: %i64 = converted @__global_init.%Int32ToInt64.call, %.loc8_35.1 [concrete = constants.%int_1.a95] // CHECK:STDOUT: %Widening: %i64 = bind_name Widening, %.loc8_35.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -346,34 +346,34 @@ let convert_not_constant_widen: i64 = Int32ToInt64(not_constant); // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Int32ToUint32.ref: %Int32ToUint32.type = name_ref Int32ToUint32, imports.%Main.Int32ToUint32 [concrete = constants.%Int32ToUint32] // CHECK:STDOUT: %int_1.loc6: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0.loc6: %.d6a = impl_witness_access constants.%ImplicitAs.impl_witness.e34, element0 [concrete = constants.%Convert.16d] -// CHECK:STDOUT: %bound_method.loc6_41.1: = bound_method %int_1.loc6, %impl.elem0.loc6 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn.loc6: = specific_function %impl.elem0.loc6, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc6: %.d6a = impl_witness_access constants.%ImplicitAs.impl_witness.e34, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.16d] +// CHECK:STDOUT: %bound_method.loc6_41.1: = bound_method %int_1.loc6, %impl.elem0.loc6 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc6: = specific_function %impl.elem0.loc6, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc6_41.2: = bound_method %int_1.loc6, %specific_fn.loc6 [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked.loc6_41: init %i32 = call %bound_method.loc6_41.2(%int_1.loc6) [concrete = constants.%int_1.47b] -// CHECK:STDOUT: %.loc6_41.1: %i32 = value_of_initializer %int.convert_checked.loc6_41 [concrete = constants.%int_1.47b] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6: init %i32 = call %bound_method.loc6_41.2(%int_1.loc6) [concrete = constants.%int_1.47b] +// CHECK:STDOUT: %.loc6_41.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6 [concrete = constants.%int_1.47b] // CHECK:STDOUT: %.loc6_41.2: %i32 = converted %int_1.loc6, %.loc6_41.1 [concrete = constants.%int_1.47b] -// CHECK:STDOUT: %int.convert_checked.loc6_42: init %u32 = call %Int32ToUint32.ref(%.loc6_41.2) [concrete = constants.%int_1.c1d] +// CHECK:STDOUT: %Int32ToUint32.call: init %u32 = call %Int32ToUint32.ref(%.loc6_41.2) [concrete = constants.%int_1.c1d] // CHECK:STDOUT: %Int32ToInt16.ref: %Int32ToInt16.type = name_ref Int32ToInt16, imports.%Main.Int32ToInt16 [concrete = constants.%Int32ToInt16] // CHECK:STDOUT: %int_1.loc7: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0.loc7: %.d6a = impl_witness_access constants.%ImplicitAs.impl_witness.e34, element0 [concrete = constants.%Convert.16d] -// CHECK:STDOUT: %bound_method.loc7_35.1: = bound_method %int_1.loc7, %impl.elem0.loc7 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn.loc7: = specific_function %impl.elem0.loc7, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc7: %.d6a = impl_witness_access constants.%ImplicitAs.impl_witness.e34, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.16d] +// CHECK:STDOUT: %bound_method.loc7_35.1: = bound_method %int_1.loc7, %impl.elem0.loc7 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc7: = specific_function %impl.elem0.loc7, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc7_35.2: = bound_method %int_1.loc7, %specific_fn.loc7 [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked.loc7_35: init %i32 = call %bound_method.loc7_35.2(%int_1.loc7) [concrete = constants.%int_1.47b] -// CHECK:STDOUT: %.loc7_35.1: %i32 = value_of_initializer %int.convert_checked.loc7_35 [concrete = constants.%int_1.47b] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc7: init %i32 = call %bound_method.loc7_35.2(%int_1.loc7) [concrete = constants.%int_1.47b] +// CHECK:STDOUT: %.loc7_35.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc7 [concrete = constants.%int_1.47b] // CHECK:STDOUT: %.loc7_35.2: %i32 = converted %int_1.loc7, %.loc7_35.1 [concrete = constants.%int_1.47b] -// CHECK:STDOUT: %int.convert_checked.loc7_36: init %i16 = call %Int32ToInt16.ref(%.loc7_35.2) [concrete = constants.%int_1.c22] +// CHECK:STDOUT: %Int32ToInt16.call: init %i16 = call %Int32ToInt16.ref(%.loc7_35.2) [concrete = constants.%int_1.c22] // CHECK:STDOUT: %Int32ToInt64.ref: %Int32ToInt64.type = name_ref Int32ToInt64, imports.%Main.Int32ToInt64 [concrete = constants.%Int32ToInt64] // CHECK:STDOUT: %int_1.loc8: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0.loc8: %.d6a = impl_witness_access constants.%ImplicitAs.impl_witness.e34, element0 [concrete = constants.%Convert.16d] -// CHECK:STDOUT: %bound_method.loc8_34.1: = bound_method %int_1.loc8, %impl.elem0.loc8 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn.loc8: = specific_function %impl.elem0.loc8, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc8: %.d6a = impl_witness_access constants.%ImplicitAs.impl_witness.e34, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.16d] +// CHECK:STDOUT: %bound_method.loc8_34.1: = bound_method %int_1.loc8, %impl.elem0.loc8 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc8: = specific_function %impl.elem0.loc8, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc8_34.2: = bound_method %int_1.loc8, %specific_fn.loc8 [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked.loc8_34: init %i32 = call %bound_method.loc8_34.2(%int_1.loc8) [concrete = constants.%int_1.47b] -// CHECK:STDOUT: %.loc8_34.1: %i32 = value_of_initializer %int.convert_checked.loc8_34 [concrete = constants.%int_1.47b] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc8: init %i32 = call %bound_method.loc8_34.2(%int_1.loc8) [concrete = constants.%int_1.47b] +// CHECK:STDOUT: %.loc8_34.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc8 [concrete = constants.%int_1.47b] // CHECK:STDOUT: %.loc8_34.2: %i32 = converted %int_1.loc8, %.loc8_34.1 [concrete = constants.%int_1.47b] -// CHECK:STDOUT: %int.convert_checked.loc8_35: init %i64 = call %Int32ToInt64.ref(%.loc8_34.2) [concrete = constants.%int_1.a95] +// CHECK:STDOUT: %Int32ToInt64.call: init %i64 = call %Int32ToInt64.ref(%.loc8_34.2) [concrete = constants.%int_1.a95] // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/eq.carbon b/toolchain/check/testdata/builtins/int/eq.carbon index f2eaad0664f1..ece6ce85fbb0 100644 --- a/toolchain/check/testdata/builtins/int/eq.carbon +++ b/toolchain/check/testdata/builtins/int/eq.carbon @@ -124,9 +124,9 @@ fn Test(n: Core.IntLiteral()) { // CHECK:STDOUT: %Eq.ref: %Eq.type = name_ref Eq, file.%Eq.decl [concrete = constants.%Eq] // CHECK:STDOUT: %a.ref: %i32 = name_ref a, %a // CHECK:STDOUT: %b.ref: %i32 = name_ref b, %b -// CHECK:STDOUT: %int.eq: init bool = call %Eq.ref(%a.ref, %b.ref) -// CHECK:STDOUT: %.loc16_18.1: bool = value_of_initializer %int.eq -// CHECK:STDOUT: %.loc16_18.2: bool = converted %int.eq, %.loc16_18.1 +// CHECK:STDOUT: %Eq.call: init bool = call %Eq.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %.loc16_18.1: bool = value_of_initializer %Eq.call +// CHECK:STDOUT: %.loc16_18.2: bool = converted %Eq.call, %.loc16_18.1 // CHECK:STDOUT: return %.loc16_18.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/greater.carbon b/toolchain/check/testdata/builtins/int/greater.carbon index 4ce03ee543c8..5bc50695b9be 100644 --- a/toolchain/check/testdata/builtins/int/greater.carbon +++ b/toolchain/check/testdata/builtins/int/greater.carbon @@ -49,9 +49,9 @@ fn RuntimeCallIsValid(a: i32, b: i32) -> bool { // CHECK:STDOUT: %Greater.ref: %Greater.type = name_ref Greater, file.%Greater.decl [concrete = constants.%Greater] // CHECK:STDOUT: %a.ref: %i32 = name_ref a, %a // CHECK:STDOUT: %b.ref: %i32 = name_ref b, %b -// CHECK:STDOUT: %int.greater: init bool = call %Greater.ref(%a.ref, %b.ref) -// CHECK:STDOUT: %.loc18_23.1: bool = value_of_initializer %int.greater -// CHECK:STDOUT: %.loc18_23.2: bool = converted %int.greater, %.loc18_23.1 +// CHECK:STDOUT: %Greater.call: init bool = call %Greater.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %.loc18_23.1: bool = value_of_initializer %Greater.call +// CHECK:STDOUT: %.loc18_23.2: bool = converted %Greater.call, %.loc18_23.1 // CHECK:STDOUT: return %.loc18_23.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/greater_eq.carbon b/toolchain/check/testdata/builtins/int/greater_eq.carbon index 4de25f5c70c9..8c5808c6685b 100644 --- a/toolchain/check/testdata/builtins/int/greater_eq.carbon +++ b/toolchain/check/testdata/builtins/int/greater_eq.carbon @@ -87,9 +87,9 @@ fn F() { // CHECK:STDOUT: %GreaterEq.ref: %GreaterEq.type = name_ref GreaterEq, file.%GreaterEq.decl [concrete = constants.%GreaterEq] // CHECK:STDOUT: %a.ref: %i32 = name_ref a, %a // CHECK:STDOUT: %b.ref: %i32 = name_ref b, %b -// CHECK:STDOUT: %int.greater_eq: init bool = call %GreaterEq.ref(%a.ref, %b.ref) -// CHECK:STDOUT: %.loc20_25.1: bool = value_of_initializer %int.greater_eq -// CHECK:STDOUT: %.loc20_25.2: bool = converted %int.greater_eq, %.loc20_25.1 +// CHECK:STDOUT: %GreaterEq.call: init bool = call %GreaterEq.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %.loc20_25.1: bool = value_of_initializer %GreaterEq.call +// CHECK:STDOUT: %.loc20_25.2: bool = converted %GreaterEq.call, %.loc20_25.1 // CHECK:STDOUT: return %.loc20_25.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/left_shift.carbon b/toolchain/check/testdata/builtins/int/left_shift.carbon index d50957a97228..465fc322acaf 100644 --- a/toolchain/check/testdata/builtins/int/left_shift.carbon +++ b/toolchain/check/testdata/builtins/int/left_shift.carbon @@ -245,9 +245,9 @@ let bad4: Core.IntLiteral() = LeftShiftOfLit(12, an_i32); // CHECK:STDOUT: %LeftShift.ref: %LeftShift.type = name_ref LeftShift, file.%LeftShift.decl [concrete = constants.%LeftShift] // CHECK:STDOUT: %a.ref: %i32 = name_ref a, %a // CHECK:STDOUT: %b.ref: %i32 = name_ref b, %b -// CHECK:STDOUT: %int.left_shift: init %i32 = call %LeftShift.ref(%a.ref, %b.ref) -// CHECK:STDOUT: %.loc22_25.1: %i32 = value_of_initializer %int.left_shift -// CHECK:STDOUT: %.loc22_25.2: %i32 = converted %int.left_shift, %.loc22_25.1 +// CHECK:STDOUT: %LeftShift.call: init %i32 = call %LeftShift.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %.loc22_25.1: %i32 = value_of_initializer %LeftShift.call +// CHECK:STDOUT: %.loc22_25.2: %i32 = converted %LeftShift.call, %.loc22_25.1 // CHECK:STDOUT: return %.loc22_25.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -269,9 +269,9 @@ let bad4: Core.IntLiteral() = LeftShiftOfLit(12, an_i32); // CHECK:STDOUT: %LeftShift.ref: %LeftShift.type = name_ref LeftShift, file.%LeftShift.decl [concrete = constants.%LeftShift] // CHECK:STDOUT: %a.ref: %u32 = name_ref a, %a // CHECK:STDOUT: %b.ref: %i32 = name_ref b, %b -// CHECK:STDOUT: %int.left_shift: init %u32 = call %LeftShift.ref(%a.ref, %b.ref) -// CHECK:STDOUT: %.loc22_25.1: %u32 = value_of_initializer %int.left_shift -// CHECK:STDOUT: %.loc22_25.2: %u32 = converted %int.left_shift, %.loc22_25.1 +// CHECK:STDOUT: %LeftShift.call: init %u32 = call %LeftShift.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %.loc22_25.1: %u32 = value_of_initializer %LeftShift.call +// CHECK:STDOUT: %.loc22_25.2: %u32 = converted %LeftShift.call, %.loc22_25.1 // CHECK:STDOUT: return %.loc22_25.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/left_shift_assign.carbon b/toolchain/check/testdata/builtins/int/left_shift_assign.carbon index b656159a56dc..3662b4da8211 100644 --- a/toolchain/check/testdata/builtins/int/left_shift_assign.carbon +++ b/toolchain/check/testdata/builtins/int/left_shift_assign.carbon @@ -73,7 +73,7 @@ fn NotPtr(a: i32, b: i32) = "int.left_shift_assign"; // CHECK:STDOUT: %Builtin.ref: %Builtin.type = name_ref Builtin, file.%Builtin.decl [concrete = constants.%Builtin] // CHECK:STDOUT: %a.ref: %ptr = name_ref a, %a // CHECK:STDOUT: %b.ref: %i32 = name_ref b, %b -// CHECK:STDOUT: %int.left_shift_assign: init %empty_tuple.type = call %Builtin.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %Builtin.call: init %empty_tuple.type = call %Builtin.ref(%a.ref, %b.ref) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -82,7 +82,7 @@ fn NotPtr(a: i32, b: i32) = "int.left_shift_assign"; // CHECK:STDOUT: %MixedTypes.ref: %MixedTypes.type = name_ref MixedTypes, file.%MixedTypes.decl [concrete = constants.%MixedTypes] // CHECK:STDOUT: %a.ref: %ptr = name_ref a, %a // CHECK:STDOUT: %b.ref: %i64 = name_ref b, %b -// CHECK:STDOUT: %int.left_shift_assign: init %empty_tuple.type = call %MixedTypes.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %MixedTypes.call: init %empty_tuple.type = call %MixedTypes.ref(%a.ref, %b.ref) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/less.carbon b/toolchain/check/testdata/builtins/int/less.carbon index 50c3e1cb2cfe..8812f479a1a6 100644 --- a/toolchain/check/testdata/builtins/int/less.carbon +++ b/toolchain/check/testdata/builtins/int/less.carbon @@ -49,9 +49,9 @@ fn RuntimeCallIsValid(a: i32, b: i32) -> bool { // CHECK:STDOUT: %Less.ref: %Less.type = name_ref Less, file.%Less.decl [concrete = constants.%Less] // CHECK:STDOUT: %a.ref: %i32 = name_ref a, %a // CHECK:STDOUT: %b.ref: %i32 = name_ref b, %b -// CHECK:STDOUT: %int.less: init bool = call %Less.ref(%a.ref, %b.ref) -// CHECK:STDOUT: %.loc18_20.1: bool = value_of_initializer %int.less -// CHECK:STDOUT: %.loc18_20.2: bool = converted %int.less, %.loc18_20.1 +// CHECK:STDOUT: %Less.call: init bool = call %Less.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %.loc18_20.1: bool = value_of_initializer %Less.call +// CHECK:STDOUT: %.loc18_20.2: bool = converted %Less.call, %.loc18_20.1 // CHECK:STDOUT: return %.loc18_20.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/less_eq.carbon b/toolchain/check/testdata/builtins/int/less_eq.carbon index c7545f9b16d6..f8d5761b1405 100644 --- a/toolchain/check/testdata/builtins/int/less_eq.carbon +++ b/toolchain/check/testdata/builtins/int/less_eq.carbon @@ -122,9 +122,9 @@ fn Test(n: Core.IntLiteral()) { // CHECK:STDOUT: %LessEq.ref: %LessEq.type = name_ref LessEq, file.%LessEq.decl [concrete = constants.%LessEq] // CHECK:STDOUT: %a.ref: %i32 = name_ref a, %a // CHECK:STDOUT: %b.ref: %i32 = name_ref b, %b -// CHECK:STDOUT: %int.less_eq: init bool = call %LessEq.ref(%a.ref, %b.ref) -// CHECK:STDOUT: %.loc20_22.1: bool = value_of_initializer %int.less_eq -// CHECK:STDOUT: %.loc20_22.2: bool = converted %int.less_eq, %.loc20_22.1 +// CHECK:STDOUT: %LessEq.call: init bool = call %LessEq.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %.loc20_22.1: bool = value_of_initializer %LessEq.call +// CHECK:STDOUT: %.loc20_22.2: bool = converted %LessEq.call, %.loc20_22.1 // CHECK:STDOUT: return %.loc20_22.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/neq.carbon b/toolchain/check/testdata/builtins/int/neq.carbon index 7c871efae972..3688f6a91ad5 100644 --- a/toolchain/check/testdata/builtins/int/neq.carbon +++ b/toolchain/check/testdata/builtins/int/neq.carbon @@ -45,9 +45,9 @@ fn RuntimeCallIsValid(a: i32, b: i32) -> bool { // CHECK:STDOUT: %Neq.ref: %Neq.type = name_ref Neq, file.%Neq.decl [concrete = constants.%Neq] // CHECK:STDOUT: %a.ref: %i32 = name_ref a, %a // CHECK:STDOUT: %b.ref: %i32 = name_ref b, %b -// CHECK:STDOUT: %int.neq: init bool = call %Neq.ref(%a.ref, %b.ref) -// CHECK:STDOUT: %.loc14_19.1: bool = value_of_initializer %int.neq -// CHECK:STDOUT: %.loc14_19.2: bool = converted %int.neq, %.loc14_19.1 +// CHECK:STDOUT: %Neq.call: init bool = call %Neq.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %.loc14_19.1: bool = value_of_initializer %Neq.call +// CHECK:STDOUT: %.loc14_19.2: bool = converted %Neq.call, %.loc14_19.1 // CHECK:STDOUT: return %.loc14_19.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/or.carbon b/toolchain/check/testdata/builtins/int/or.carbon index e684c2d1c1e2..b6d1c76369ab 100644 --- a/toolchain/check/testdata/builtins/int/or.carbon +++ b/toolchain/check/testdata/builtins/int/or.carbon @@ -40,9 +40,9 @@ fn RuntimeCallIsValid(a: i32, b: i32) -> i32 { // CHECK:STDOUT: %Or.ref: %Or.type = name_ref Or, file.%Or.decl [concrete = constants.%Or] // CHECK:STDOUT: %a.ref: %i32 = name_ref a, %a // CHECK:STDOUT: %b.ref: %i32 = name_ref b, %b -// CHECK:STDOUT: %int.or: init %i32 = call %Or.ref(%a.ref, %b.ref) -// CHECK:STDOUT: %.loc9_18.1: %i32 = value_of_initializer %int.or -// CHECK:STDOUT: %.loc9_18.2: %i32 = converted %int.or, %.loc9_18.1 +// CHECK:STDOUT: %Or.call: init %i32 = call %Or.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %.loc9_18.1: %i32 = value_of_initializer %Or.call +// CHECK:STDOUT: %.loc9_18.2: %i32 = converted %Or.call, %.loc9_18.1 // CHECK:STDOUT: return %.loc9_18.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/or_assign.carbon b/toolchain/check/testdata/builtins/int/or_assign.carbon index 4440ae5850f9..d177050cd8c5 100644 --- a/toolchain/check/testdata/builtins/int/or_assign.carbon +++ b/toolchain/check/testdata/builtins/int/or_assign.carbon @@ -67,7 +67,7 @@ fn MixedTypes(a: i32*, b: i64) = "int.or_assign"; // CHECK:STDOUT: %Builtin.ref: %Builtin.type = name_ref Builtin, file.%Builtin.decl [concrete = constants.%Builtin] // CHECK:STDOUT: %a.ref: %ptr = name_ref a, %a // CHECK:STDOUT: %b.ref: %i32 = name_ref b, %b -// CHECK:STDOUT: %int.or_assign: init %empty_tuple.type = call %Builtin.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %Builtin.call: init %empty_tuple.type = call %Builtin.ref(%a.ref, %b.ref) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/right_shift.carbon b/toolchain/check/testdata/builtins/int/right_shift.carbon index 172af1f6e0d0..0b54d0ae452d 100644 --- a/toolchain/check/testdata/builtins/int/right_shift.carbon +++ b/toolchain/check/testdata/builtins/int/right_shift.carbon @@ -149,9 +149,9 @@ let negative_lit_zero: Core.IntLiteral() = RightShiftLit(0, -1); // CHECK:STDOUT: %RightShift.ref: %RightShift.type = name_ref RightShift, file.%RightShift.decl [concrete = constants.%RightShift] // CHECK:STDOUT: %a.ref: %i32 = name_ref a, %a // CHECK:STDOUT: %b.ref: %i32 = name_ref b, %b -// CHECK:STDOUT: %int.right_shift: init %i32 = call %RightShift.ref(%a.ref, %b.ref) -// CHECK:STDOUT: %.loc22_26.1: %i32 = value_of_initializer %int.right_shift -// CHECK:STDOUT: %.loc22_26.2: %i32 = converted %int.right_shift, %.loc22_26.1 +// CHECK:STDOUT: %RightShift.call: init %i32 = call %RightShift.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %.loc22_26.1: %i32 = value_of_initializer %RightShift.call +// CHECK:STDOUT: %.loc22_26.2: %i32 = converted %RightShift.call, %.loc22_26.1 // CHECK:STDOUT: return %.loc22_26.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -173,9 +173,9 @@ let negative_lit_zero: Core.IntLiteral() = RightShiftLit(0, -1); // CHECK:STDOUT: %RightShift.ref: %RightShift.type = name_ref RightShift, file.%RightShift.decl [concrete = constants.%RightShift] // CHECK:STDOUT: %a.ref: %u32 = name_ref a, %a // CHECK:STDOUT: %b.ref: %i32 = name_ref b, %b -// CHECK:STDOUT: %int.right_shift: init %u32 = call %RightShift.ref(%a.ref, %b.ref) -// CHECK:STDOUT: %.loc21_26.1: %u32 = value_of_initializer %int.right_shift -// CHECK:STDOUT: %.loc21_26.2: %u32 = converted %int.right_shift, %.loc21_26.1 +// CHECK:STDOUT: %RightShift.call: init %u32 = call %RightShift.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %.loc21_26.1: %u32 = value_of_initializer %RightShift.call +// CHECK:STDOUT: %.loc21_26.2: %u32 = converted %RightShift.call, %.loc21_26.1 // CHECK:STDOUT: return %.loc21_26.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/right_shift_assign.carbon b/toolchain/check/testdata/builtins/int/right_shift_assign.carbon index e1b1a1982cde..54608838adb9 100644 --- a/toolchain/check/testdata/builtins/int/right_shift_assign.carbon +++ b/toolchain/check/testdata/builtins/int/right_shift_assign.carbon @@ -73,7 +73,7 @@ fn NotPtr(a: i32, b: i32) = "int.right_shift_assign"; // CHECK:STDOUT: %Builtin.ref: %Builtin.type = name_ref Builtin, file.%Builtin.decl [concrete = constants.%Builtin] // CHECK:STDOUT: %a.ref: %ptr = name_ref a, %a // CHECK:STDOUT: %b.ref: %i32 = name_ref b, %b -// CHECK:STDOUT: %int.right_shift_assign: init %empty_tuple.type = call %Builtin.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %Builtin.call: init %empty_tuple.type = call %Builtin.ref(%a.ref, %b.ref) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -82,7 +82,7 @@ fn NotPtr(a: i32, b: i32) = "int.right_shift_assign"; // CHECK:STDOUT: %MixedTypes.ref: %MixedTypes.type = name_ref MixedTypes, file.%MixedTypes.decl [concrete = constants.%MixedTypes] // CHECK:STDOUT: %a.ref: %ptr = name_ref a, %a // CHECK:STDOUT: %b.ref: %i64 = name_ref b, %b -// CHECK:STDOUT: %int.right_shift_assign: init %empty_tuple.type = call %MixedTypes.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %MixedTypes.call: init %empty_tuple.type = call %MixedTypes.ref(%a.ref, %b.ref) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/sadd.carbon b/toolchain/check/testdata/builtins/int/sadd.carbon index 606519dcd279..a598ae20a079 100644 --- a/toolchain/check/testdata/builtins/int/sadd.carbon +++ b/toolchain/check/testdata/builtins/int/sadd.carbon @@ -178,9 +178,9 @@ let b: i32 = Add(0x7FFFFFFF, 1); // CHECK:STDOUT: %Add.ref: %Add.type = name_ref Add, file.%Add.decl [concrete = constants.%Add] // CHECK:STDOUT: %a.ref: %i32 = name_ref a, %a // CHECK:STDOUT: %b.ref: %i32 = name_ref b, %b -// CHECK:STDOUT: %int.sadd: init %i32 = call %Add.ref(%a.ref, %b.ref) -// CHECK:STDOUT: %.loc17_19.1: %i32 = value_of_initializer %int.sadd -// CHECK:STDOUT: %.loc17_19.2: %i32 = converted %int.sadd, %.loc17_19.1 +// CHECK:STDOUT: %Add.call: init %i32 = call %Add.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %.loc17_19.1: %i32 = value_of_initializer %Add.call +// CHECK:STDOUT: %.loc17_19.2: %i32 = converted %Add.call, %.loc17_19.1 // CHECK:STDOUT: return %.loc17_19.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/sdiv.carbon b/toolchain/check/testdata/builtins/int/sdiv.carbon index c27b09f7b133..07684869dea6 100644 --- a/toolchain/check/testdata/builtins/int/sdiv.carbon +++ b/toolchain/check/testdata/builtins/int/sdiv.carbon @@ -109,9 +109,9 @@ let d: Core.IntLiteral() = DivLit(0, 0); // CHECK:STDOUT: %Div.ref: %Div.type = name_ref Div, file.%Div.decl [concrete = constants.%Div] // CHECK:STDOUT: %a.ref: %i32 = name_ref a, %a // CHECK:STDOUT: %b.ref: %i32 = name_ref b, %b -// CHECK:STDOUT: %int.sdiv: init %i32 = call %Div.ref(%a.ref, %b.ref) -// CHECK:STDOUT: %.loc11_19.1: %i32 = value_of_initializer %int.sdiv -// CHECK:STDOUT: %.loc11_19.2: %i32 = converted %int.sdiv, %.loc11_19.1 +// CHECK:STDOUT: %Div.call: init %i32 = call %Div.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %.loc11_19.1: %i32 = value_of_initializer %Div.call +// CHECK:STDOUT: %.loc11_19.2: %i32 = converted %Div.call, %.loc11_19.1 // CHECK:STDOUT: return %.loc11_19.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/sdiv_assign.carbon b/toolchain/check/testdata/builtins/int/sdiv_assign.carbon index 429a4e2da626..f19c192db0b2 100644 --- a/toolchain/check/testdata/builtins/int/sdiv_assign.carbon +++ b/toolchain/check/testdata/builtins/int/sdiv_assign.carbon @@ -67,7 +67,7 @@ fn MixedTypes(a: i32*, b: i64) = "int.sdiv_assign"; // CHECK:STDOUT: %Builtin.ref: %Builtin.type = name_ref Builtin, file.%Builtin.decl [concrete = constants.%Builtin] // CHECK:STDOUT: %a.ref: %ptr = name_ref a, %a // CHECK:STDOUT: %b.ref: %i32 = name_ref b, %b -// CHECK:STDOUT: %int.sdiv_assign: init %empty_tuple.type = call %Builtin.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %Builtin.call: init %empty_tuple.type = call %Builtin.ref(%a.ref, %b.ref) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/smod.carbon b/toolchain/check/testdata/builtins/int/smod.carbon index 89fa8c0b21d4..52174a29c528 100644 --- a/toolchain/check/testdata/builtins/int/smod.carbon +++ b/toolchain/check/testdata/builtins/int/smod.carbon @@ -84,9 +84,9 @@ let b: i32 = Mod(0, 0); // CHECK:STDOUT: %Mod.ref: %Mod.type = name_ref Mod, file.%Mod.decl [concrete = constants.%Mod] // CHECK:STDOUT: %a.ref: %i32 = name_ref a, %a // CHECK:STDOUT: %b.ref: %i32 = name_ref b, %b -// CHECK:STDOUT: %int.smod: init %i32 = call %Mod.ref(%a.ref, %b.ref) -// CHECK:STDOUT: %.loc11_19.1: %i32 = value_of_initializer %int.smod -// CHECK:STDOUT: %.loc11_19.2: %i32 = converted %int.smod, %.loc11_19.1 +// CHECK:STDOUT: %Mod.call: init %i32 = call %Mod.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %.loc11_19.1: %i32 = value_of_initializer %Mod.call +// CHECK:STDOUT: %.loc11_19.2: %i32 = converted %Mod.call, %.loc11_19.1 // CHECK:STDOUT: return %.loc11_19.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/smod_assign.carbon b/toolchain/check/testdata/builtins/int/smod_assign.carbon index 49e02dbe7db7..3475dfab5a75 100644 --- a/toolchain/check/testdata/builtins/int/smod_assign.carbon +++ b/toolchain/check/testdata/builtins/int/smod_assign.carbon @@ -67,7 +67,7 @@ fn MixedTypes(a: i32*, b: i64) = "int.smod_assign"; // CHECK:STDOUT: %Builtin.ref: %Builtin.type = name_ref Builtin, file.%Builtin.decl [concrete = constants.%Builtin] // CHECK:STDOUT: %a.ref: %ptr = name_ref a, %a // CHECK:STDOUT: %b.ref: %i32 = name_ref b, %b -// CHECK:STDOUT: %int.smod_assign: init %empty_tuple.type = call %Builtin.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %Builtin.call: init %empty_tuple.type = call %Builtin.ref(%a.ref, %b.ref) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/smul.carbon b/toolchain/check/testdata/builtins/int/smul.carbon index 9f4988f25638..98196fe5f950 100644 --- a/toolchain/check/testdata/builtins/int/smul.carbon +++ b/toolchain/check/testdata/builtins/int/smul.carbon @@ -91,9 +91,9 @@ let b: i32 = Mul(0x8000, 0x10000); // CHECK:STDOUT: %Mul.ref: %Mul.type = name_ref Mul, file.%Mul.decl [concrete = constants.%Mul] // CHECK:STDOUT: %a.ref: %i32 = name_ref a, %a // CHECK:STDOUT: %b.ref: %i32 = name_ref b, %b -// CHECK:STDOUT: %int.smul: init %i32 = call %Mul.ref(%a.ref, %b.ref) -// CHECK:STDOUT: %.loc20_19.1: %i32 = value_of_initializer %int.smul -// CHECK:STDOUT: %.loc20_19.2: %i32 = converted %int.smul, %.loc20_19.1 +// CHECK:STDOUT: %Mul.call: init %i32 = call %Mul.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %.loc20_19.1: %i32 = value_of_initializer %Mul.call +// CHECK:STDOUT: %.loc20_19.2: %i32 = converted %Mul.call, %.loc20_19.1 // CHECK:STDOUT: return %.loc20_19.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/smul_assign.carbon b/toolchain/check/testdata/builtins/int/smul_assign.carbon index 37d2c66d882e..758f983c0cbd 100644 --- a/toolchain/check/testdata/builtins/int/smul_assign.carbon +++ b/toolchain/check/testdata/builtins/int/smul_assign.carbon @@ -67,7 +67,7 @@ fn MixedTypes(a: i32*, b: i64) = "int.smul_assign"; // CHECK:STDOUT: %Builtin.ref: %Builtin.type = name_ref Builtin, file.%Builtin.decl [concrete = constants.%Builtin] // CHECK:STDOUT: %a.ref: %ptr = name_ref a, %a // CHECK:STDOUT: %b.ref: %i32 = name_ref b, %b -// CHECK:STDOUT: %int.smul_assign: init %empty_tuple.type = call %Builtin.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %Builtin.call: init %empty_tuple.type = call %Builtin.ref(%a.ref, %b.ref) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/snegate.carbon b/toolchain/check/testdata/builtins/int/snegate.carbon index be35a9272f24..275226724ec5 100644 --- a/toolchain/check/testdata/builtins/int/snegate.carbon +++ b/toolchain/check/testdata/builtins/int/snegate.carbon @@ -151,9 +151,9 @@ let b: i32 = Negate(-0x8000_0000); // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Negate.ref: %Negate.type.15b = name_ref Negate, file.%Negate.decl [concrete = constants.%Negate] // CHECK:STDOUT: %a.ref: %i32 = name_ref a, %a -// CHECK:STDOUT: %int.snegate: init %i32 = call %Negate.ref(%a.ref) -// CHECK:STDOUT: %.loc13_19.1: %i32 = value_of_initializer %int.snegate -// CHECK:STDOUT: %.loc13_19.2: %i32 = converted %int.snegate, %.loc13_19.1 +// CHECK:STDOUT: %Negate.call: init %i32 = call %Negate.ref(%a.ref) +// CHECK:STDOUT: %.loc13_19.1: %i32 = value_of_initializer %Negate.call +// CHECK:STDOUT: %.loc13_19.2: %i32 = converted %Negate.call, %.loc13_19.1 // CHECK:STDOUT: return %.loc13_19.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/ssub.carbon b/toolchain/check/testdata/builtins/int/ssub.carbon index 43f9c2c3cf69..8681c9e8fc27 100644 --- a/toolchain/check/testdata/builtins/int/ssub.carbon +++ b/toolchain/check/testdata/builtins/int/ssub.carbon @@ -56,9 +56,9 @@ let c: i32 = Sub(Sub(0, 0x7FFFFFFF), 2); // CHECK:STDOUT: %Sub.ref: %Sub.type = name_ref Sub, file.%Sub.decl [concrete = constants.%Sub] // CHECK:STDOUT: %a.ref: %i32 = name_ref a, %a // CHECK:STDOUT: %b.ref: %i32 = name_ref b, %b -// CHECK:STDOUT: %int.ssub: init %i32 = call %Sub.ref(%a.ref, %b.ref) -// CHECK:STDOUT: %.loc11_19.1: %i32 = value_of_initializer %int.ssub -// CHECK:STDOUT: %.loc11_19.2: %i32 = converted %int.ssub, %.loc11_19.1 +// CHECK:STDOUT: %Sub.call: init %i32 = call %Sub.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %.loc11_19.1: %i32 = value_of_initializer %Sub.call +// CHECK:STDOUT: %.loc11_19.2: %i32 = converted %Sub.call, %.loc11_19.1 // CHECK:STDOUT: return %.loc11_19.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/ssub_assign.carbon b/toolchain/check/testdata/builtins/int/ssub_assign.carbon index 904d47988aa2..bf92f3a460cb 100644 --- a/toolchain/check/testdata/builtins/int/ssub_assign.carbon +++ b/toolchain/check/testdata/builtins/int/ssub_assign.carbon @@ -67,7 +67,7 @@ fn MixedTypes(a: i32*, b: i64) = "int.ssub_assign"; // CHECK:STDOUT: %Builtin.ref: %Builtin.type = name_ref Builtin, file.%Builtin.decl [concrete = constants.%Builtin] // CHECK:STDOUT: %a.ref: %ptr = name_ref a, %a // CHECK:STDOUT: %b.ref: %i32 = name_ref b, %b -// CHECK:STDOUT: %int.ssub_assign: init %empty_tuple.type = call %Builtin.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %Builtin.call: init %empty_tuple.type = call %Builtin.ref(%a.ref, %b.ref) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/uadd.carbon b/toolchain/check/testdata/builtins/int/uadd.carbon index 95f2365e0c60..e7d5a86f9587 100644 --- a/toolchain/check/testdata/builtins/int/uadd.carbon +++ b/toolchain/check/testdata/builtins/int/uadd.carbon @@ -127,9 +127,9 @@ let b: i32 = Add(0x7FFFFFFF, 1); // CHECK:STDOUT: %Add.ref: %Add.type = name_ref Add, file.%Add.decl [concrete = constants.%Add] // CHECK:STDOUT: %a.ref: %i32 = name_ref a, %a // CHECK:STDOUT: %b.ref: %i32 = name_ref b, %b -// CHECK:STDOUT: %int.uadd: init %i32 = call %Add.ref(%a.ref, %b.ref) -// CHECK:STDOUT: %.loc11_19.1: %i32 = value_of_initializer %int.uadd -// CHECK:STDOUT: %.loc11_19.2: %i32 = converted %int.uadd, %.loc11_19.1 +// CHECK:STDOUT: %Add.call: init %i32 = call %Add.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %.loc11_19.1: %i32 = value_of_initializer %Add.call +// CHECK:STDOUT: %.loc11_19.2: %i32 = converted %Add.call, %.loc11_19.1 // CHECK:STDOUT: return %.loc11_19.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/uadd_assign.carbon b/toolchain/check/testdata/builtins/int/uadd_assign.carbon index 964769f5c1aa..283cbd45d9ef 100644 --- a/toolchain/check/testdata/builtins/int/uadd_assign.carbon +++ b/toolchain/check/testdata/builtins/int/uadd_assign.carbon @@ -67,7 +67,7 @@ fn MixedTypes(a: i32*, b: i64) = "int.uadd_assign"; // CHECK:STDOUT: %Builtin.ref: %Builtin.type = name_ref Builtin, file.%Builtin.decl [concrete = constants.%Builtin] // CHECK:STDOUT: %a.ref: %ptr = name_ref a, %a // CHECK:STDOUT: %b.ref: %i32 = name_ref b, %b -// CHECK:STDOUT: %int.uadd_assign: init %empty_tuple.type = call %Builtin.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %Builtin.call: init %empty_tuple.type = call %Builtin.ref(%a.ref, %b.ref) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/udiv.carbon b/toolchain/check/testdata/builtins/int/udiv.carbon index 5c06c49cab24..659ee6dded0f 100644 --- a/toolchain/check/testdata/builtins/int/udiv.carbon +++ b/toolchain/check/testdata/builtins/int/udiv.carbon @@ -77,9 +77,9 @@ let b: i32 = Div(0, 0); // CHECK:STDOUT: %Div.ref: %Div.type = name_ref Div, file.%Div.decl [concrete = constants.%Div] // CHECK:STDOUT: %a.ref: %i32 = name_ref a, %a // CHECK:STDOUT: %b.ref: %i32 = name_ref b, %b -// CHECK:STDOUT: %int.udiv: init %i32 = call %Div.ref(%a.ref, %b.ref) -// CHECK:STDOUT: %.loc11_19.1: %i32 = value_of_initializer %int.udiv -// CHECK:STDOUT: %.loc11_19.2: %i32 = converted %int.udiv, %.loc11_19.1 +// CHECK:STDOUT: %Div.call: init %i32 = call %Div.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %.loc11_19.1: %i32 = value_of_initializer %Div.call +// CHECK:STDOUT: %.loc11_19.2: %i32 = converted %Div.call, %.loc11_19.1 // CHECK:STDOUT: return %.loc11_19.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/udiv_assign.carbon b/toolchain/check/testdata/builtins/int/udiv_assign.carbon index 418b99bdbc89..d66763a374af 100644 --- a/toolchain/check/testdata/builtins/int/udiv_assign.carbon +++ b/toolchain/check/testdata/builtins/int/udiv_assign.carbon @@ -67,7 +67,7 @@ fn MixedTypes(a: i32*, b: i64) = "int.udiv_assign"; // CHECK:STDOUT: %Builtin.ref: %Builtin.type = name_ref Builtin, file.%Builtin.decl [concrete = constants.%Builtin] // CHECK:STDOUT: %a.ref: %ptr = name_ref a, %a // CHECK:STDOUT: %b.ref: %i32 = name_ref b, %b -// CHECK:STDOUT: %int.udiv_assign: init %empty_tuple.type = call %Builtin.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %Builtin.call: init %empty_tuple.type = call %Builtin.ref(%a.ref, %b.ref) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/umod.carbon b/toolchain/check/testdata/builtins/int/umod.carbon index b9b5fddb026b..e8ab4600f49c 100644 --- a/toolchain/check/testdata/builtins/int/umod.carbon +++ b/toolchain/check/testdata/builtins/int/umod.carbon @@ -79,9 +79,9 @@ let b: i32 = Mod(0, 0); // CHECK:STDOUT: %Mod.ref: %Mod.type = name_ref Mod, file.%Mod.decl [concrete = constants.%Mod] // CHECK:STDOUT: %a.ref: %i32 = name_ref a, %a // CHECK:STDOUT: %b.ref: %i32 = name_ref b, %b -// CHECK:STDOUT: %int.umod: init %i32 = call %Mod.ref(%a.ref, %b.ref) -// CHECK:STDOUT: %.loc11_19.1: %i32 = value_of_initializer %int.umod -// CHECK:STDOUT: %.loc11_19.2: %i32 = converted %int.umod, %.loc11_19.1 +// CHECK:STDOUT: %Mod.call: init %i32 = call %Mod.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %.loc11_19.1: %i32 = value_of_initializer %Mod.call +// CHECK:STDOUT: %.loc11_19.2: %i32 = converted %Mod.call, %.loc11_19.1 // CHECK:STDOUT: return %.loc11_19.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/umod_assign.carbon b/toolchain/check/testdata/builtins/int/umod_assign.carbon index 8c4a2bbb9a32..260814aa06b3 100644 --- a/toolchain/check/testdata/builtins/int/umod_assign.carbon +++ b/toolchain/check/testdata/builtins/int/umod_assign.carbon @@ -67,7 +67,7 @@ fn MixedTypes(a: i32*, b: i64) = "int.umod_assign"; // CHECK:STDOUT: %Builtin.ref: %Builtin.type = name_ref Builtin, file.%Builtin.decl [concrete = constants.%Builtin] // CHECK:STDOUT: %a.ref: %ptr = name_ref a, %a // CHECK:STDOUT: %b.ref: %i32 = name_ref b, %b -// CHECK:STDOUT: %int.umod_assign: init %empty_tuple.type = call %Builtin.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %Builtin.call: init %empty_tuple.type = call %Builtin.ref(%a.ref, %b.ref) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/umul.carbon b/toolchain/check/testdata/builtins/int/umul.carbon index 560934d37a4a..02b5e5c4518f 100644 --- a/toolchain/check/testdata/builtins/int/umul.carbon +++ b/toolchain/check/testdata/builtins/int/umul.carbon @@ -51,9 +51,9 @@ let b: i32 = Mul(0x8000, 0x10000); // CHECK:STDOUT: %Mul.ref: %Mul.type = name_ref Mul, file.%Mul.decl [concrete = constants.%Mul] // CHECK:STDOUT: %a.ref: %i32 = name_ref a, %a // CHECK:STDOUT: %b.ref: %i32 = name_ref b, %b -// CHECK:STDOUT: %int.umul: init %i32 = call %Mul.ref(%a.ref, %b.ref) -// CHECK:STDOUT: %.loc11_19.1: %i32 = value_of_initializer %int.umul -// CHECK:STDOUT: %.loc11_19.2: %i32 = converted %int.umul, %.loc11_19.1 +// CHECK:STDOUT: %Mul.call: init %i32 = call %Mul.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %.loc11_19.1: %i32 = value_of_initializer %Mul.call +// CHECK:STDOUT: %.loc11_19.2: %i32 = converted %Mul.call, %.loc11_19.1 // CHECK:STDOUT: return %.loc11_19.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/umul_assign.carbon b/toolchain/check/testdata/builtins/int/umul_assign.carbon index f9da0f27996f..f1302179f546 100644 --- a/toolchain/check/testdata/builtins/int/umul_assign.carbon +++ b/toolchain/check/testdata/builtins/int/umul_assign.carbon @@ -67,7 +67,7 @@ fn MixedTypes(a: i32*, b: i64) = "int.umul_assign"; // CHECK:STDOUT: %Builtin.ref: %Builtin.type = name_ref Builtin, file.%Builtin.decl [concrete = constants.%Builtin] // CHECK:STDOUT: %a.ref: %ptr = name_ref a, %a // CHECK:STDOUT: %b.ref: %i32 = name_ref b, %b -// CHECK:STDOUT: %int.umul_assign: init %empty_tuple.type = call %Builtin.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %Builtin.call: init %empty_tuple.type = call %Builtin.ref(%a.ref, %b.ref) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/unegate.carbon b/toolchain/check/testdata/builtins/int/unegate.carbon index 29999d7d8349..662fbe63efbf 100644 --- a/toolchain/check/testdata/builtins/int/unegate.carbon +++ b/toolchain/check/testdata/builtins/int/unegate.carbon @@ -136,9 +136,9 @@ fn F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Negate.ref: %Negate.type.15b = name_ref Negate, file.%Negate.decl [concrete = constants.%Negate] // CHECK:STDOUT: %a.ref: %u32 = name_ref a, %a -// CHECK:STDOUT: %int.unegate: init %u32 = call %Negate.ref(%a.ref) -// CHECK:STDOUT: %.loc13_19.1: %u32 = value_of_initializer %int.unegate -// CHECK:STDOUT: %.loc13_19.2: %u32 = converted %int.unegate, %.loc13_19.1 +// CHECK:STDOUT: %Negate.call: init %u32 = call %Negate.ref(%a.ref) +// CHECK:STDOUT: %.loc13_19.1: %u32 = value_of_initializer %Negate.call +// CHECK:STDOUT: %.loc13_19.2: %u32 = converted %Negate.call, %.loc13_19.1 // CHECK:STDOUT: return %.loc13_19.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/usub.carbon b/toolchain/check/testdata/builtins/int/usub.carbon index 2ce9eea725de..4cedfc7df162 100644 --- a/toolchain/check/testdata/builtins/int/usub.carbon +++ b/toolchain/check/testdata/builtins/int/usub.carbon @@ -52,9 +52,9 @@ let c: i32 = Sub(Sub(0, 0x7FFFFFFF), 2); // CHECK:STDOUT: %Sub.ref: %Sub.type = name_ref Sub, file.%Sub.decl [concrete = constants.%Sub] // CHECK:STDOUT: %a.ref: %i32 = name_ref a, %a // CHECK:STDOUT: %b.ref: %i32 = name_ref b, %b -// CHECK:STDOUT: %int.usub: init %i32 = call %Sub.ref(%a.ref, %b.ref) -// CHECK:STDOUT: %.loc11_19.1: %i32 = value_of_initializer %int.usub -// CHECK:STDOUT: %.loc11_19.2: %i32 = converted %int.usub, %.loc11_19.1 +// CHECK:STDOUT: %Sub.call: init %i32 = call %Sub.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %.loc11_19.1: %i32 = value_of_initializer %Sub.call +// CHECK:STDOUT: %.loc11_19.2: %i32 = converted %Sub.call, %.loc11_19.1 // CHECK:STDOUT: return %.loc11_19.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/usub_assign.carbon b/toolchain/check/testdata/builtins/int/usub_assign.carbon index 44229b0790c6..295c0d7ca79b 100644 --- a/toolchain/check/testdata/builtins/int/usub_assign.carbon +++ b/toolchain/check/testdata/builtins/int/usub_assign.carbon @@ -67,7 +67,7 @@ fn MixedTypes(a: i32*, b: i64) = "int.usub_assign"; // CHECK:STDOUT: %Builtin.ref: %Builtin.type = name_ref Builtin, file.%Builtin.decl [concrete = constants.%Builtin] // CHECK:STDOUT: %a.ref: %ptr = name_ref a, %a // CHECK:STDOUT: %b.ref: %i32 = name_ref b, %b -// CHECK:STDOUT: %int.usub_assign: init %empty_tuple.type = call %Builtin.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %Builtin.call: init %empty_tuple.type = call %Builtin.ref(%a.ref, %b.ref) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/xor.carbon b/toolchain/check/testdata/builtins/int/xor.carbon index 2d5c460ee21f..f96598324b45 100644 --- a/toolchain/check/testdata/builtins/int/xor.carbon +++ b/toolchain/check/testdata/builtins/int/xor.carbon @@ -40,9 +40,9 @@ fn RuntimeCallIsValid(a: i32, b: i32) -> i32 { // CHECK:STDOUT: %Xor.ref: %Xor.type = name_ref Xor, file.%Xor.decl [concrete = constants.%Xor] // CHECK:STDOUT: %a.ref: %i32 = name_ref a, %a // CHECK:STDOUT: %b.ref: %i32 = name_ref b, %b -// CHECK:STDOUT: %int.xor: init %i32 = call %Xor.ref(%a.ref, %b.ref) -// CHECK:STDOUT: %.loc9_19.1: %i32 = value_of_initializer %int.xor -// CHECK:STDOUT: %.loc9_19.2: %i32 = converted %int.xor, %.loc9_19.1 +// CHECK:STDOUT: %Xor.call: init %i32 = call %Xor.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %.loc9_19.1: %i32 = value_of_initializer %Xor.call +// CHECK:STDOUT: %.loc9_19.2: %i32 = converted %Xor.call, %.loc9_19.1 // CHECK:STDOUT: return %.loc9_19.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/xor_assign.carbon b/toolchain/check/testdata/builtins/int/xor_assign.carbon index a879c3dab3af..22885a19922e 100644 --- a/toolchain/check/testdata/builtins/int/xor_assign.carbon +++ b/toolchain/check/testdata/builtins/int/xor_assign.carbon @@ -67,7 +67,7 @@ fn MixedTypes(a: i32*, b: i64) = "int.xor_assign"; // CHECK:STDOUT: %Builtin.ref: %Builtin.type = name_ref Builtin, file.%Builtin.decl [concrete = constants.%Builtin] // CHECK:STDOUT: %a.ref: %ptr = name_ref a, %a // CHECK:STDOUT: %b.ref: %i32 = name_ref b, %b -// CHECK:STDOUT: %int.xor_assign: init %empty_tuple.type = call %Builtin.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %Builtin.call: init %empty_tuple.type = call %Builtin.ref(%a.ref, %b.ref) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/no_op.carbon b/toolchain/check/testdata/builtins/no_op.carbon index f3291793fcf3..17d412238938 100644 --- a/toolchain/check/testdata/builtins/no_op.carbon +++ b/toolchain/check/testdata/builtins/no_op.carbon @@ -78,7 +78,7 @@ fn NoOp() -> {} = "no_op"; // CHECK:STDOUT: fn @F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %NoOp.ref: %NoOp.type = name_ref NoOp, file.%NoOp.decl [concrete = constants.%NoOp] -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %NoOp.ref() [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %NoOp.call: init %empty_tuple.type = call %NoOp.ref() [concrete = constants.%empty_tuple] // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -94,7 +94,7 @@ fn NoOp() -> {} = "no_op"; // CHECK:STDOUT: fn @F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %NoOp.ref: %NoOp.type = name_ref NoOp, file.%NoOp.decl [concrete = constants.%NoOp] -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %NoOp.ref() [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %NoOp.call: init %empty_tuple.type = call %NoOp.ref() [concrete = constants.%empty_tuple] // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -113,7 +113,7 @@ fn NoOp() -> {} = "no_op"; // CHECK:STDOUT: %.loc8_9.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc8_9.2: %empty_tuple.type = converted %.loc8_9.1, %empty_tuple [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %NoOp.ref(%.loc8_9.2) [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %NoOp.call: init %empty_tuple.type = call %NoOp.ref(%.loc8_9.2) [concrete = constants.%empty_tuple] // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -143,8 +143,8 @@ fn NoOp() -> {} = "no_op"; // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %NoOp.ref: %NoOp.type = name_ref NoOp, file.%NoOp.decl [concrete = constants.%NoOp] -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %NoOp.ref() [concrete = constants.%empty_tuple] -// CHECK:STDOUT: assign file.%x.var, %no_op +// CHECK:STDOUT: %NoOp.call: init %empty_tuple.type = call %NoOp.ref() [concrete = constants.%empty_tuple] +// CHECK:STDOUT: assign file.%x.var, %NoOp.call // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/print/char.carbon b/toolchain/check/testdata/builtins/print/char.carbon index b526b0b7c4be..d2416258ff1a 100644 --- a/toolchain/check/testdata/builtins/print/char.carbon +++ b/toolchain/check/testdata/builtins/print/char.carbon @@ -34,24 +34,24 @@ fn Main() { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To.c80: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To.c80) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To.c80) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet.921: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet.921 [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet.921 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %PrintChar.type.089: type = fn_type @PrintChar.1 [concrete] // CHECK:STDOUT: %PrintChar.d75: %PrintChar.type.089 = struct_value () [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -66,8 +66,8 @@ fn Main() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.PrintChar: %PrintChar.type.089 = import_ref Core//io, PrintChar, loaded [concrete = constants.%PrintChar.d75] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -75,25 +75,25 @@ fn Main() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %PrintChar.ref.loc19: %PrintChar.type.c95 = name_ref PrintChar, file.%PrintChar.decl [concrete = constants.%PrintChar.843] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0.loc19: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc19_13.1: = bound_method %int_1, %impl.elem0.loc19 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc19: = specific_function %impl.elem0.loc19, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc19: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc19_13.1: = bound_method %int_1, %impl.elem0.loc19 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc19: = specific_function %impl.elem0.loc19, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc19_13.2: = bound_method %int_1, %specific_fn.loc19 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc19: init %i32 = call %bound_method.loc19_13.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc19_13.1: %i32 = value_of_initializer %int.convert_checked.loc19 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19: init %i32 = call %bound_method.loc19_13.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc19_13.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc19_13.2: %i32 = converted %int_1, %.loc19_13.1 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %print.char.loc19: init %i32 = call %PrintChar.ref.loc19(%.loc19_13.2) +// CHECK:STDOUT: %PrintChar.call.loc19: init %i32 = call %PrintChar.ref.loc19(%.loc19_13.2) // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %PrintChar.ref.loc20: %PrintChar.type.089 = name_ref PrintChar, imports.%Core.PrintChar [concrete = constants.%PrintChar.d75] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %impl.elem0.loc20: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc20_18.1: = bound_method %int_2, %impl.elem0.loc20 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc20: = specific_function %impl.elem0.loc20, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc20: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc20_18.1: = bound_method %int_2, %impl.elem0.loc20 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc20: = specific_function %impl.elem0.loc20, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc20_18.2: = bound_method %int_2, %specific_fn.loc20 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc20: init %i32 = call %bound_method.loc20_18.2(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc20_18.1: %i32 = value_of_initializer %int.convert_checked.loc20 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc20: init %i32 = call %bound_method.loc20_18.2(%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc20_18.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc20 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc20_18.2: %i32 = converted %int_2, %.loc20_18.1 [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %print.char.loc20: init %i32 = call %PrintChar.ref.loc20(%.loc20_18.2) +// CHECK:STDOUT: %PrintChar.call.loc20: init %i32 = call %PrintChar.ref.loc20(%.loc20_18.2) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/print/int.carbon b/toolchain/check/testdata/builtins/print/int.carbon index 1d6d49d5d566..25cd70855feb 100644 --- a/toolchain/check/testdata/builtins/print/int.carbon +++ b/toolchain/check/testdata/builtins/print/int.carbon @@ -35,24 +35,24 @@ fn Main() { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To.c80: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To.c80) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To.c80) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet.921: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet.921 [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet.921 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %Print.type.6ed: type = fn_type @Print.1 [concrete] // CHECK:STDOUT: %Print.723: %Print.type.6ed = struct_value () [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -67,8 +67,8 @@ fn Main() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Print: %Print.type.6ed = import_ref Core//io, Print, loaded [concrete = constants.%Print.723] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -76,25 +76,25 @@ fn Main() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Print.ref.loc19: %Print.type.980 = name_ref Print, file.%Print.decl [concrete = constants.%Print.b7c] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0.loc19: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc19_9.1: = bound_method %int_1, %impl.elem0.loc19 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc19: = specific_function %impl.elem0.loc19, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc19: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc19_9.1: = bound_method %int_1, %impl.elem0.loc19 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc19: = specific_function %impl.elem0.loc19, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc19_9.2: = bound_method %int_1, %specific_fn.loc19 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc19: init %i32 = call %bound_method.loc19_9.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc19_9.1: %i32 = value_of_initializer %int.convert_checked.loc19 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19: init %i32 = call %bound_method.loc19_9.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc19_9.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc19_9.2: %i32 = converted %int_1, %.loc19_9.1 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %print.int.loc19: init %empty_tuple.type = call %Print.ref.loc19(%.loc19_9.2) +// CHECK:STDOUT: %Print.call.loc19: init %empty_tuple.type = call %Print.ref.loc19(%.loc19_9.2) // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %Print.ref.loc20: %Print.type.6ed = name_ref Print, imports.%Core.Print [concrete = constants.%Print.723] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %impl.elem0.loc20: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc20_14.1: = bound_method %int_2, %impl.elem0.loc20 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc20: = specific_function %impl.elem0.loc20, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc20: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc20_14.1: = bound_method %int_2, %impl.elem0.loc20 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc20: = specific_function %impl.elem0.loc20, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc20_14.2: = bound_method %int_2, %specific_fn.loc20 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc20: init %i32 = call %bound_method.loc20_14.2(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc20_14.1: %i32 = value_of_initializer %int.convert_checked.loc20 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc20: init %i32 = call %bound_method.loc20_14.2(%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc20_14.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc20 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc20_14.2: %i32 = converted %int_2, %.loc20_14.1 [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %print.int.loc20: init %empty_tuple.type = call %Print.ref.loc20(%.loc20_14.2) +// CHECK:STDOUT: %Print.call.loc20: init %empty_tuple.type = call %Print.ref.loc20(%.loc20_14.2) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/read/char.carbon b/toolchain/check/testdata/builtins/read/char.carbon index cf42d44d6ac5..69d547096457 100644 --- a/toolchain/check/testdata/builtins/read/char.carbon +++ b/toolchain/check/testdata/builtins/read/char.carbon @@ -55,26 +55,26 @@ fn Main() { // CHECK:STDOUT: %n.patt: %pattern_type.7ce = binding_pattern n [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %ReadChar.ref.loc8: %ReadChar.type.fa8 = name_ref ReadChar, file.%ReadChar.decl [concrete = constants.%ReadChar.7f4] -// CHECK:STDOUT: %read.char.loc8: init %i32 = call %ReadChar.ref.loc8() +// CHECK:STDOUT: %ReadChar.call.loc8: init %i32 = call %ReadChar.ref.loc8() // CHECK:STDOUT: %.loc8_10: type = splice_block %i32.loc8 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc8: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc8: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc8_25.1: %i32 = value_of_initializer %read.char.loc8 -// CHECK:STDOUT: %.loc8_25.2: %i32 = converted %read.char.loc8, %.loc8_25.1 +// CHECK:STDOUT: %.loc8_25.1: %i32 = value_of_initializer %ReadChar.call.loc8 +// CHECK:STDOUT: %.loc8_25.2: %i32 = converted %ReadChar.call.loc8, %.loc8_25.1 // CHECK:STDOUT: %n: %i32 = bind_name n, %.loc8_25.2 // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %m.patt: %pattern_type.7ce = binding_pattern m [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %ReadChar.ref.loc9: %ReadChar.type.9f3 = name_ref ReadChar, imports.%Core.ReadChar [concrete = constants.%ReadChar.01f] -// CHECK:STDOUT: %read.char.loc9: init %i32 = call %ReadChar.ref.loc9() +// CHECK:STDOUT: %ReadChar.call.loc9: init %i32 = call %ReadChar.ref.loc9() // CHECK:STDOUT: %.loc9_10: type = splice_block %i32.loc9 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc9: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc9: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc9_30.1: %i32 = value_of_initializer %read.char.loc9 -// CHECK:STDOUT: %.loc9_30.2: %i32 = converted %read.char.loc9, %.loc9_30.1 +// CHECK:STDOUT: %.loc9_30.1: %i32 = value_of_initializer %ReadChar.call.loc9 +// CHECK:STDOUT: %.loc9_30.2: %i32 = converted %ReadChar.call.loc9, %.loc9_30.1 // CHECK:STDOUT: %m: %i32 = bind_name m, %.loc9_30.2 // CHECK:STDOUT: // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/choice/basic.carbon b/toolchain/check/testdata/choice/basic.carbon index 7033c3efe388..152ec3c54700 100644 --- a/toolchain/check/testdata/choice/basic.carbon +++ b/toolchain/check/testdata/choice/basic.carbon @@ -144,40 +144,40 @@ let never: Never = {}; // CHECK:STDOUT: %complete_type.de2: = complete_type_witness %struct_type.discriminant [concrete] // CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %ImplicitAs.type.54b: type = facet_type <@ImplicitAs, @ImplicitAs(%u2)> [concrete] -// CHECK:STDOUT: %Convert.type.f0e: type = fn_type @Convert.2, @ImplicitAs(%u2) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.f0e: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%u2) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.30e: type = fn_type @Convert.1, @ImplicitAs.impl.86e(%To) [symbolic] -// CHECK:STDOUT: %Convert.d1a: %Convert.type.30e = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.801: = impl_witness imports.%ImplicitAs.impl_witness_table.bb8, @ImplicitAs.impl.86e(%int_2.ecc) [concrete] -// CHECK:STDOUT: %Convert.type.70b: type = fn_type @Convert.1, @ImplicitAs.impl.86e(%int_2.ecc) [concrete] -// CHECK:STDOUT: %Convert.474: %Convert.type.70b = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.30e: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.d1a: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.30e = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.801: = impl_witness imports.%ImplicitAs.impl_witness_table.bb8, @Core.IntLiteral.as.ImplicitAs.impl(%int_2.ecc) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.70b: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_2.ecc) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.474: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.70b = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.54b = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.801) [concrete] -// CHECK:STDOUT: %.3e0: type = fn_type_with_self_type %Convert.type.f0e, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.5bb: = bound_method %int_0.5c6, %Convert.474 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.474, @Convert.1(%int_2.ecc) [concrete] -// CHECK:STDOUT: %bound_method.d36: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.3e0: type = fn_type_with_self_type %ImplicitAs.Convert.type.f0e, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.5bb: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.474 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.474, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_2.ecc) [concrete] +// CHECK:STDOUT: %bound_method.d36: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.9fd: %u2 = int_value 0 [concrete] // CHECK:STDOUT: %Ordering.val.a29: %Ordering = struct_value (%int_0.9fd) [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] -// CHECK:STDOUT: %Convert.bound.0dd: = bound_method %int_1.5b8, %Convert.474 [concrete] -// CHECK:STDOUT: %bound_method.6bf: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.0dd: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.474 [concrete] +// CHECK:STDOUT: %bound_method.6bf: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.b2c: %u2 = int_value 1 [concrete] // CHECK:STDOUT: %Ordering.val.927: %Ordering = struct_value (%int_1.b2c) [concrete] -// CHECK:STDOUT: %Convert.bound.122: = bound_method %int_2.ecc, %Convert.474 [concrete] -// CHECK:STDOUT: %bound_method.f7d: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.122: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.474 [concrete] +// CHECK:STDOUT: %bound_method.f7d: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.788: %u2 = int_value 2 [concrete] // CHECK:STDOUT: %Ordering.val.968: %Ordering = struct_value (%int_2.788) [concrete] // CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [concrete] -// CHECK:STDOUT: %Convert.bound.a5c: = bound_method %int_3.1ba, %Convert.474 [concrete] -// CHECK:STDOUT: %bound_method.c7e: = bound_method %int_3.1ba, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.a5c: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.474 [concrete] +// CHECK:STDOUT: %bound_method.c7e: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_3.975: %u2 = int_value 3 [concrete] // CHECK:STDOUT: %Ordering.val.8a7: %Ordering = struct_value (%int_3.975) [concrete] // CHECK:STDOUT: %pattern_type.308: type = pattern_type %Ordering [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core.import_ref.c3d: @ImplicitAs.impl.86e.%Convert.type (%Convert.type.30e) = import_ref Core//prelude/parts/uint, loc16_40, loaded [symbolic = @ImplicitAs.impl.86e.%Convert (constants.%Convert.d1a)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.bb8 = impl_witness_table (%Core.import_ref.c3d), @ImplicitAs.impl.86e [concrete] +// CHECK:STDOUT: %Core.import_ref.c3d: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.30e) = import_ref Core//prelude/parts/uint, loc16_40, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.d1a)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.bb8 = impl_witness_table (%Core.import_ref.c3d), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -209,12 +209,12 @@ let never: Never = {}; // CHECK:STDOUT: %u2: type = class_type @UInt, @UInt(constants.%int_2.ecc) [concrete = constants.%u2] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.discriminant [concrete = constants.%complete_type.de2] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %impl.elem0.loc5: %.3e0 = impl_witness_access constants.%ImplicitAs.impl_witness.801, element0 [concrete = constants.%Convert.474] -// CHECK:STDOUT: %bound_method.loc5_7.1: = bound_method %int_0, %impl.elem0.loc5 [concrete = constants.%Convert.bound.5bb] -// CHECK:STDOUT: %specific_fn.loc5: = specific_function %impl.elem0.loc5, @Convert.1(constants.%int_2.ecc) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc5: %.3e0 = impl_witness_access constants.%ImplicitAs.impl_witness.801, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.474] +// CHECK:STDOUT: %bound_method.loc5_7.1: = bound_method %int_0, %impl.elem0.loc5 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.5bb] +// CHECK:STDOUT: %specific_fn.loc5: = specific_function %impl.elem0.loc5, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_2.ecc) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc5_7.2: = bound_method %int_0, %specific_fn.loc5 [concrete = constants.%bound_method.d36] -// CHECK:STDOUT: %int.convert_checked.loc5: init %u2 = call %bound_method.loc5_7.2(%int_0) [concrete = constants.%int_0.9fd] -// CHECK:STDOUT: %.loc5_7.1: %u2 = value_of_initializer %int.convert_checked.loc5 [concrete = constants.%int_0.9fd] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc5: init %u2 = call %bound_method.loc5_7.2(%int_0) [concrete = constants.%int_0.9fd] +// CHECK:STDOUT: %.loc5_7.1: %u2 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc5 [concrete = constants.%int_0.9fd] // CHECK:STDOUT: %.loc5_7.2: %u2 = converted %int_0, %.loc5_7.1 [concrete = constants.%int_0.9fd] // CHECK:STDOUT: %.loc5_7.3: %struct_type.discriminant = struct_literal (%.loc5_7.2) // CHECK:STDOUT: %.loc5_7.4: ref %Ordering = temporary_storage @@ -226,12 +226,12 @@ let never: Never = {}; // CHECK:STDOUT: %.loc5_7.10: %Ordering = bind_value %.loc5_7.9 // CHECK:STDOUT: %Less: %Ordering = bind_name Less, %.loc5_7.10 // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0.loc6: %.3e0 = impl_witness_access constants.%ImplicitAs.impl_witness.801, element0 [concrete = constants.%Convert.474] -// CHECK:STDOUT: %bound_method.loc6_13.1: = bound_method %int_1, %impl.elem0.loc6 [concrete = constants.%Convert.bound.0dd] -// CHECK:STDOUT: %specific_fn.loc6: = specific_function %impl.elem0.loc6, @Convert.1(constants.%int_2.ecc) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc6: %.3e0 = impl_witness_access constants.%ImplicitAs.impl_witness.801, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.474] +// CHECK:STDOUT: %bound_method.loc6_13.1: = bound_method %int_1, %impl.elem0.loc6 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.0dd] +// CHECK:STDOUT: %specific_fn.loc6: = specific_function %impl.elem0.loc6, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_2.ecc) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc6_13.2: = bound_method %int_1, %specific_fn.loc6 [concrete = constants.%bound_method.6bf] -// CHECK:STDOUT: %int.convert_checked.loc6: init %u2 = call %bound_method.loc6_13.2(%int_1) [concrete = constants.%int_1.b2c] -// CHECK:STDOUT: %.loc6_13.1: %u2 = value_of_initializer %int.convert_checked.loc6 [concrete = constants.%int_1.b2c] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6: init %u2 = call %bound_method.loc6_13.2(%int_1) [concrete = constants.%int_1.b2c] +// CHECK:STDOUT: %.loc6_13.1: %u2 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6 [concrete = constants.%int_1.b2c] // CHECK:STDOUT: %.loc6_13.2: %u2 = converted %int_1, %.loc6_13.1 [concrete = constants.%int_1.b2c] // CHECK:STDOUT: %.loc6_13.3: %struct_type.discriminant = struct_literal (%.loc6_13.2) // CHECK:STDOUT: %.loc6_13.4: ref %Ordering = temporary_storage @@ -243,12 +243,12 @@ let never: Never = {}; // CHECK:STDOUT: %.loc6_13.10: %Ordering = bind_value %.loc6_13.9 // CHECK:STDOUT: %Equivalent: %Ordering = bind_name Equivalent, %.loc6_13.10 // CHECK:STDOUT: %int_2.loc7: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %impl.elem0.loc7: %.3e0 = impl_witness_access constants.%ImplicitAs.impl_witness.801, element0 [concrete = constants.%Convert.474] -// CHECK:STDOUT: %bound_method.loc7_10.1: = bound_method %int_2.loc7, %impl.elem0.loc7 [concrete = constants.%Convert.bound.122] -// CHECK:STDOUT: %specific_fn.loc7: = specific_function %impl.elem0.loc7, @Convert.1(constants.%int_2.ecc) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc7: %.3e0 = impl_witness_access constants.%ImplicitAs.impl_witness.801, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.474] +// CHECK:STDOUT: %bound_method.loc7_10.1: = bound_method %int_2.loc7, %impl.elem0.loc7 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.122] +// CHECK:STDOUT: %specific_fn.loc7: = specific_function %impl.elem0.loc7, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_2.ecc) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc7_10.2: = bound_method %int_2.loc7, %specific_fn.loc7 [concrete = constants.%bound_method.f7d] -// CHECK:STDOUT: %int.convert_checked.loc7: init %u2 = call %bound_method.loc7_10.2(%int_2.loc7) [concrete = constants.%int_2.788] -// CHECK:STDOUT: %.loc7_10.1: %u2 = value_of_initializer %int.convert_checked.loc7 [concrete = constants.%int_2.788] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc7: init %u2 = call %bound_method.loc7_10.2(%int_2.loc7) [concrete = constants.%int_2.788] +// CHECK:STDOUT: %.loc7_10.1: %u2 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc7 [concrete = constants.%int_2.788] // CHECK:STDOUT: %.loc7_10.2: %u2 = converted %int_2.loc7, %.loc7_10.1 [concrete = constants.%int_2.788] // CHECK:STDOUT: %.loc7_10.3: %struct_type.discriminant = struct_literal (%.loc7_10.2) // CHECK:STDOUT: %.loc7_10.4: ref %Ordering = temporary_storage @@ -260,12 +260,12 @@ let never: Never = {}; // CHECK:STDOUT: %.loc7_10.10: %Ordering = bind_value %.loc7_10.9 // CHECK:STDOUT: %Greater: %Ordering = bind_name Greater, %.loc7_10.10 // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] -// CHECK:STDOUT: %impl.elem0.loc9: %.3e0 = impl_witness_access constants.%ImplicitAs.impl_witness.801, element0 [concrete = constants.%Convert.474] -// CHECK:STDOUT: %bound_method.loc9_1.1: = bound_method %int_3, %impl.elem0.loc9 [concrete = constants.%Convert.bound.a5c] -// CHECK:STDOUT: %specific_fn.loc9: = specific_function %impl.elem0.loc9, @Convert.1(constants.%int_2.ecc) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc9: %.3e0 = impl_witness_access constants.%ImplicitAs.impl_witness.801, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.474] +// CHECK:STDOUT: %bound_method.loc9_1.1: = bound_method %int_3, %impl.elem0.loc9 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.a5c] +// CHECK:STDOUT: %specific_fn.loc9: = specific_function %impl.elem0.loc9, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_2.ecc) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc9_1.2: = bound_method %int_3, %specific_fn.loc9 [concrete = constants.%bound_method.c7e] -// CHECK:STDOUT: %int.convert_checked.loc9: init %u2 = call %bound_method.loc9_1.2(%int_3) [concrete = constants.%int_3.975] -// CHECK:STDOUT: %.loc9_1.1: %u2 = value_of_initializer %int.convert_checked.loc9 [concrete = constants.%int_3.975] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9: init %u2 = call %bound_method.loc9_1.2(%int_3) [concrete = constants.%int_3.975] +// CHECK:STDOUT: %.loc9_1.1: %u2 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9 [concrete = constants.%int_3.975] // CHECK:STDOUT: %.loc9_1.2: %u2 = converted %int_3, %.loc9_1.1 [concrete = constants.%int_3.975] // CHECK:STDOUT: %.loc9_1.3: %struct_type.discriminant = struct_literal (%.loc9_1.2) // CHECK:STDOUT: %.loc9_1.4: ref %Ordering = temporary_storage diff --git a/toolchain/check/testdata/class/access_modifers.carbon b/toolchain/check/testdata/class/access_modifers.carbon index 300701ed91f2..4a0a9094f0a1 100644 --- a/toolchain/check/testdata/class/access_modifers.carbon +++ b/toolchain/check/testdata/class/access_modifers.carbon @@ -165,39 +165,39 @@ class A { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.4e6: = bound_method %int_5.64b, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.a25: = bound_method %int_5.64b, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.4e6: = bound_method %int_5.64b, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.a25: = bound_method %int_5.64b, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_5.0f6: %i32 = int_value 5 [concrete] -// CHECK:STDOUT: %SomeInternalFunction.type: type = fn_type @SomeInternalFunction [concrete] -// CHECK:STDOUT: %SomeInternalFunction: %SomeInternalFunction.type = struct_value () [concrete] +// CHECK:STDOUT: %Circle.SomeInternalFunction.type: type = fn_type @Circle.SomeInternalFunction [concrete] +// CHECK:STDOUT: %Circle.SomeInternalFunction: %Circle.SomeInternalFunction.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.ce2: type = pattern_type %Circle [concrete] -// CHECK:STDOUT: %Make.type: type = fn_type @Make [concrete] -// CHECK:STDOUT: %Make: %Make.type = struct_value () [concrete] +// CHECK:STDOUT: %Circle.Make.type: type = fn_type @Circle.Make [concrete] +// CHECK:STDOUT: %Circle.Make: %Circle.Make.type = struct_value () [concrete] // CHECK:STDOUT: %struct_type.radius.251: type = struct_type {.radius: %i32} [concrete] // CHECK:STDOUT: %complete_type.5a5: = complete_type_witness %struct_type.radius.251 [concrete] // CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [concrete] -// CHECK:STDOUT: %Convert.bound.d04: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b6e: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b6e: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: %struct_type.radius.f47: type = struct_type {.radius: Core.IntLiteral} [concrete] // CHECK:STDOUT: %Circle.val: %Circle = struct_value (%int_5.0f6) [concrete] // CHECK:STDOUT: %Run.type: type = fn_type @Run [concrete] // CHECK:STDOUT: %Run: %Run.type = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.6cf: type = fn_type @Op.2, @Destroy.impl(%Circle) [concrete] -// CHECK:STDOUT: %Op.e38: %Op.type.6cf = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.6cf: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%Circle) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.e38: %T.as.Destroy.impl.Op.type.6cf = struct_value () [concrete] // CHECK:STDOUT: %ptr.54d: type = ptr_type %Circle [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.e38, @Op.2(%Circle) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.e38, @T.as.Destroy.impl.Op(%Circle) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -210,8 +210,8 @@ class A { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -238,15 +238,15 @@ class A { // CHECK:STDOUT: %int_32.loc6: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc6: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc6_45.1: = bound_method %int_5, %impl.elem0 [concrete = constants.%Convert.bound.4e6] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc6_45.1: = bound_method %int_5, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.4e6] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc6_45.2: = bound_method %int_5, %specific_fn [concrete = constants.%bound_method.a25] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc6_45.2(%int_5) [concrete = constants.%int_5.0f6] -// CHECK:STDOUT: %.loc6_45.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_5.0f6] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc6_45.2(%int_5) [concrete = constants.%int_5.0f6] +// CHECK:STDOUT: %.loc6_45.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_5.0f6] // CHECK:STDOUT: %.loc6_45.2: %i32 = converted %int_5, %.loc6_45.1 [concrete = constants.%int_5.0f6] // CHECK:STDOUT: %SOME_INTERNAL_CONSTANT: %i32 = bind_name SOME_INTERNAL_CONSTANT, %.loc6_45.2 -// CHECK:STDOUT: %SomeInternalFunction.decl: %SomeInternalFunction.type = fn_decl @SomeInternalFunction [concrete = constants.%SomeInternalFunction] { +// CHECK:STDOUT: %Circle.SomeInternalFunction.decl: %Circle.SomeInternalFunction.type = fn_decl @Circle.SomeInternalFunction [concrete = constants.%Circle.SomeInternalFunction] { // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -255,7 +255,7 @@ class A { // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %Make.decl: %Make.type = fn_decl @Make [concrete = constants.%Make] { +// CHECK:STDOUT: %Circle.Make.decl: %Circle.Make.type = fn_decl @Circle.Make [concrete = constants.%Circle.Make] { // CHECK:STDOUT: %return.patt: %pattern_type.ce2 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.ce2 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -271,33 +271,33 @@ class A { // CHECK:STDOUT: .Self = constants.%Circle // CHECK:STDOUT: .radius [private] = %.loc5 // CHECK:STDOUT: .SOME_INTERNAL_CONSTANT [private] = %SOME_INTERNAL_CONSTANT -// CHECK:STDOUT: .SomeInternalFunction [private] = %SomeInternalFunction.decl -// CHECK:STDOUT: .Make = %Make.decl +// CHECK:STDOUT: .SomeInternalFunction [private] = %Circle.SomeInternalFunction.decl +// CHECK:STDOUT: .Make = %Circle.Make.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @SomeInternalFunction() -> %i32 { +// CHECK:STDOUT: fn @Circle.SomeInternalFunction() -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc9_13.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Convert.bound.d04] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc9_13.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc9_13.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method.b6e] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc9_13.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc9_13.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc9_13.2(%int_0) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc9_13.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc9_13.2: %i32 = converted %int_0, %.loc9_13.1 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: return %.loc9_13.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Make() -> %return.param: %Circle { +// CHECK:STDOUT: fn @Circle.Make() -> %return.param: %Circle { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [concrete = constants.%int_5.64b] // CHECK:STDOUT: %.loc13_24.1: %struct_type.radius.f47 = struct_literal (%int_5) -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc13_24.1: = bound_method %int_5, %impl.elem0 [concrete = constants.%Convert.bound.4e6] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc13_24.1: = bound_method %int_5, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.4e6] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc13_24.2: = bound_method %int_5, %specific_fn [concrete = constants.%bound_method.a25] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc13_24.2(%int_5) [concrete = constants.%int_5.0f6] -// CHECK:STDOUT: %.loc13_24.2: init %i32 = converted %int_5, %int.convert_checked [concrete = constants.%int_5.0f6] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc13_24.2(%int_5) [concrete = constants.%int_5.0f6] +// CHECK:STDOUT: %.loc13_24.2: init %i32 = converted %int_5, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_5.0f6] // CHECK:STDOUT: %.loc13_24.3: ref %i32 = class_element_access %return, element0 // CHECK:STDOUT: %.loc13_24.4: init %i32 = initialize_from %.loc13_24.2 to %.loc13_24.3 [concrete = constants.%int_5.0f6] // CHECK:STDOUT: %.loc13_24.5: init %Circle = class_init (%.loc13_24.4), %return [concrete = constants.%Circle.val] @@ -311,11 +311,11 @@ class A { // CHECK:STDOUT: %circle.patt: %pattern_type.ce2 = binding_pattern circle [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %Circle.ref.loc18_24: type = name_ref Circle, file.%Circle.decl [concrete = constants.%Circle] -// CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, @Circle.%Make.decl [concrete = constants.%Make] +// CHECK:STDOUT: %Make.ref: %Circle.Make.type = name_ref Make, @Circle.%Circle.Make.decl [concrete = constants.%Circle.Make] // CHECK:STDOUT: %.loc18_36.1: ref %Circle = temporary_storage -// CHECK:STDOUT: %Make.call: init %Circle = call %Make.ref() to %.loc18_36.1 +// CHECK:STDOUT: %Circle.Make.call: init %Circle = call %Make.ref() to %.loc18_36.1 // CHECK:STDOUT: %Circle.ref.loc18_15: type = name_ref Circle, file.%Circle.decl [concrete = constants.%Circle] -// CHECK:STDOUT: %.loc18_36.2: ref %Circle = temporary %.loc18_36.1, %Make.call +// CHECK:STDOUT: %.loc18_36.2: ref %Circle = temporary %.loc18_36.1, %Circle.Make.call // CHECK:STDOUT: %.loc18_36.3: %Circle = bind_value %.loc18_36.2 // CHECK:STDOUT: %circle: %Circle = bind_name circle, %.loc18_36.3 // CHECK:STDOUT: name_binding_decl { @@ -336,11 +336,11 @@ class A { // CHECK:STDOUT: %SOME_INTERNAL_CONSTANT.ref: = name_ref SOME_INTERNAL_CONSTANT, [concrete = ] // CHECK:STDOUT: %circle.ref.loc51: %Circle = name_ref circle, %circle // CHECK:STDOUT: %SomeInternalFunction.ref: = name_ref SomeInternalFunction, [concrete = ] -// CHECK:STDOUT: %Op.bound: = bound_method %.loc18_36.1, constants.%Op.e38 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.e38, @Op.2(constants.%Circle) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc18_36.1, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc18_36.1, constants.%T.as.Destroy.impl.Op.e38 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.e38, @T.as.Destroy.impl.Op(constants.%Circle) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %.loc18_36.1, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.54d = addr_of %.loc18_36.1 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -419,30 +419,30 @@ class A { // CHECK:STDOUT: %Circle.elem: type = unbound_element_type %Circle, %i32 [concrete] // CHECK:STDOUT: %pattern_type.ce2: type = pattern_type %Circle [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %GetRadius.type: type = fn_type @GetRadius [concrete] -// CHECK:STDOUT: %GetRadius: %GetRadius.type = struct_value () [concrete] -// CHECK:STDOUT: %SomeInternalFunction.type: type = fn_type @SomeInternalFunction [concrete] -// CHECK:STDOUT: %SomeInternalFunction: %SomeInternalFunction.type = struct_value () [concrete] -// CHECK:STDOUT: %Compute.type: type = fn_type @Compute [concrete] -// CHECK:STDOUT: %Compute: %Compute.type = struct_value () [concrete] +// CHECK:STDOUT: %Circle.GetRadius.type: type = fn_type @Circle.GetRadius [concrete] +// CHECK:STDOUT: %Circle.GetRadius: %Circle.GetRadius.type = struct_value () [concrete] +// CHECK:STDOUT: %Circle.SomeInternalFunction.type: type = fn_type @Circle.SomeInternalFunction [concrete] +// CHECK:STDOUT: %Circle.SomeInternalFunction: %Circle.SomeInternalFunction.type = struct_value () [concrete] +// CHECK:STDOUT: %Circle.Compute.type: type = fn_type @Circle.Compute [concrete] +// CHECK:STDOUT: %Circle.Compute: %Circle.Compute.type = struct_value () [concrete] // CHECK:STDOUT: %struct_type.radius: type = struct_type {.radius: %i32} [concrete] // CHECK:STDOUT: %complete_type.5a5: = complete_type_witness %struct_type.radius [concrete] // CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -455,8 +455,8 @@ class A { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -472,7 +472,7 @@ class A { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %.loc5: %Circle.elem = field_decl radius, element0 [concrete] -// CHECK:STDOUT: %GetRadius.decl: %GetRadius.type = fn_decl @GetRadius [concrete = constants.%GetRadius] { +// CHECK:STDOUT: %Circle.GetRadius.decl: %Circle.GetRadius.type = fn_decl @Circle.GetRadius [concrete = constants.%Circle.GetRadius] { // CHECK:STDOUT: %self.patt: %pattern_type.ce2 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.ce2 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] @@ -486,7 +486,7 @@ class A { // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param1 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %SomeInternalFunction.decl: %SomeInternalFunction.type = fn_decl @SomeInternalFunction [concrete = constants.%SomeInternalFunction] { +// CHECK:STDOUT: %Circle.SomeInternalFunction.decl: %Circle.SomeInternalFunction.type = fn_decl @Circle.SomeInternalFunction [concrete = constants.%Circle.SomeInternalFunction] { // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -495,7 +495,7 @@ class A { // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %Compute.decl: %Compute.type = fn_decl @Compute [concrete = constants.%Compute] { +// CHECK:STDOUT: %Circle.Compute.decl: %Circle.Compute.type = fn_decl @Circle.Compute [concrete = constants.%Circle.Compute] { // CHECK:STDOUT: %self.patt: %pattern_type.ce2 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.ce2 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] @@ -516,12 +516,12 @@ class A { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Circle // CHECK:STDOUT: .radius [private] = %.loc5 -// CHECK:STDOUT: .GetRadius = %GetRadius.decl -// CHECK:STDOUT: .SomeInternalFunction [private] = %SomeInternalFunction.decl -// CHECK:STDOUT: .Compute = %Compute.decl +// CHECK:STDOUT: .GetRadius = %Circle.GetRadius.decl +// CHECK:STDOUT: .SomeInternalFunction [private] = %Circle.SomeInternalFunction.decl +// CHECK:STDOUT: .Compute = %Circle.Compute.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @GetRadius(%self.param: %Circle) -> %i32 { +// CHECK:STDOUT: fn @Circle.GetRadius(%self.param: %Circle) -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: %Circle = name_ref self, %self // CHECK:STDOUT: %radius.ref: %Circle.elem = name_ref radius, @Circle.%.loc5 [concrete = @Circle.%.loc5] @@ -530,26 +530,26 @@ class A { // CHECK:STDOUT: return %.loc8_16.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @SomeInternalFunction() -> %i32 { +// CHECK:STDOUT: fn @Circle.SomeInternalFunction() -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc12_13.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc12_13.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc12_13.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc12_13.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc12_13.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc12_13.2(%int_0) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc12_13.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc12_13.2: %i32 = converted %int_0, %.loc12_13.1 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: return %.loc12_13.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Compute(%self.param: %Circle) -> %i32 { +// CHECK:STDOUT: fn @Circle.Compute(%self.param: %Circle) -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: %Circle = name_ref self, %self -// CHECK:STDOUT: %SomeInternalFunction.ref: %SomeInternalFunction.type = name_ref SomeInternalFunction, @Circle.%SomeInternalFunction.decl [concrete = constants.%SomeInternalFunction] -// CHECK:STDOUT: %SomeInternalFunction.call: init %i32 = call %SomeInternalFunction.ref() -// CHECK:STDOUT: %.loc16_39.1: %i32 = value_of_initializer %SomeInternalFunction.call -// CHECK:STDOUT: %.loc16_39.2: %i32 = converted %SomeInternalFunction.call, %.loc16_39.1 +// CHECK:STDOUT: %SomeInternalFunction.ref: %Circle.SomeInternalFunction.type = name_ref SomeInternalFunction, @Circle.%Circle.SomeInternalFunction.decl [concrete = constants.%Circle.SomeInternalFunction] +// CHECK:STDOUT: %Circle.SomeInternalFunction.call: init %i32 = call %SomeInternalFunction.ref() +// CHECK:STDOUT: %.loc16_39.1: %i32 = value_of_initializer %Circle.SomeInternalFunction.call +// CHECK:STDOUT: %.loc16_39.2: %i32 = converted %Circle.SomeInternalFunction.call, %.loc16_39.1 // CHECK:STDOUT: return %.loc16_39.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -566,18 +566,18 @@ class A { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_5.64b, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_5.64b, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_5.64b, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_5.64b, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_5.0f6: %i32 = int_value 5 [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] @@ -592,8 +592,8 @@ class A { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -623,12 +623,12 @@ class A { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc5_16.1: = bound_method %int_5, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc5_16.1: = bound_method %int_5, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc5_16.2: = bound_method %int_5, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc5_16.2(%int_5) [concrete = constants.%int_5.0f6] -// CHECK:STDOUT: %.loc5_16.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_5.0f6] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc5_16.2(%int_5) [concrete = constants.%int_5.0f6] +// CHECK:STDOUT: %.loc5_16.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_5.0f6] // CHECK:STDOUT: %.loc5_16.2: %i32 = converted %int_5, %.loc5_16.1 [concrete = constants.%int_5.0f6] // CHECK:STDOUT: %x: %i32 = bind_name x, %.loc5_16.2 // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] @@ -660,18 +660,18 @@ class A { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_5.64b, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_5.64b, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_5.64b, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_5.64b, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_5.0f6: %i32 = int_value 5 [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] @@ -686,8 +686,8 @@ class A { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -726,12 +726,12 @@ class A { // CHECK:STDOUT: %int_32.loc5: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc5: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl.elem0.loc5: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc5_26.1: = bound_method %int_5.loc5, %impl.elem0.loc5 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn.loc5: = specific_function %impl.elem0.loc5, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc5: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc5_26.1: = bound_method %int_5.loc5, %impl.elem0.loc5 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc5: = specific_function %impl.elem0.loc5, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc5_26.2: = bound_method %int_5.loc5, %specific_fn.loc5 [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked.loc5: init %i32 = call %bound_method.loc5_26.2(%int_5.loc5) [concrete = constants.%int_5.0f6] -// CHECK:STDOUT: %.loc5_26.1: %i32 = value_of_initializer %int.convert_checked.loc5 [concrete = constants.%int_5.0f6] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc5: init %i32 = call %bound_method.loc5_26.2(%int_5.loc5) [concrete = constants.%int_5.0f6] +// CHECK:STDOUT: %.loc5_26.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc5 [concrete = constants.%int_5.0f6] // CHECK:STDOUT: %.loc5_26.2: %i32 = converted %int_5.loc5, %.loc5_26.1 [concrete = constants.%int_5.0f6] // CHECK:STDOUT: %x: %i32 = bind_name x, %.loc5_26.2 // CHECK:STDOUT: name_binding_decl { @@ -742,12 +742,12 @@ class A { // CHECK:STDOUT: %int_32.loc6: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc6: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl.elem0.loc6: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc6_24.1: = bound_method %int_5.loc6, %impl.elem0.loc6 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn.loc6: = specific_function %impl.elem0.loc6, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc6: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc6_24.1: = bound_method %int_5.loc6, %impl.elem0.loc6 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc6: = specific_function %impl.elem0.loc6, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc6_24.2: = bound_method %int_5.loc6, %specific_fn.loc6 [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked.loc6: init %i32 = call %bound_method.loc6_24.2(%int_5.loc6) [concrete = constants.%int_5.0f6] -// CHECK:STDOUT: %.loc6_24.1: %i32 = value_of_initializer %int.convert_checked.loc6 [concrete = constants.%int_5.0f6] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6: init %i32 = call %bound_method.loc6_24.2(%int_5.loc6) [concrete = constants.%int_5.0f6] +// CHECK:STDOUT: %.loc6_24.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6 [concrete = constants.%int_5.0f6] // CHECK:STDOUT: %.loc6_24.2: %i32 = converted %int_5.loc6, %.loc6_24.1 [concrete = constants.%int_5.0f6] // CHECK:STDOUT: %y: %i32 = bind_name y, %.loc6_24.2 // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] @@ -773,11 +773,11 @@ class A { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %A: type = class_type @A [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] +// CHECK:STDOUT: %A.F.type: type = fn_type @A.F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %G.type: type = fn_type @G [concrete] -// CHECK:STDOUT: %G: %G.type = struct_value () [concrete] +// CHECK:STDOUT: %A.F: %A.F.type = struct_value () [concrete] +// CHECK:STDOUT: %A.G.type: type = fn_type @A.G [concrete] +// CHECK:STDOUT: %A.G: %A.G.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: } @@ -799,28 +799,28 @@ class A { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A { -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {} {} +// CHECK:STDOUT: %A.F.decl: %A.F.type = fn_decl @A.F [concrete = constants.%A.F] {} {} +// CHECK:STDOUT: %A.G.decl: %A.G.type = fn_decl @A.G [concrete = constants.%A.G] {} {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A -// CHECK:STDOUT: .F [private] = %F.decl -// CHECK:STDOUT: .G [private] = %G.decl +// CHECK:STDOUT: .F [private] = %A.F.decl +// CHECK:STDOUT: .G [private] = %A.G.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F() { +// CHECK:STDOUT: fn @A.F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G() { +// CHECK:STDOUT: fn @A.G() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%A [concrete = constants.%A] -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, @A.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.ref() +// CHECK:STDOUT: %F.ref: %A.F.type = name_ref F, @A.%A.F.decl [concrete = constants.%A.F] +// CHECK:STDOUT: %A.F.call: init %empty_tuple.type = call %F.ref() // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/adapter/adapt.carbon b/toolchain/check/testdata/class/adapter/adapt.carbon index 29ab9afe8a33..9692edcc0997 100644 --- a/toolchain/check/testdata/class/adapter/adapt.carbon +++ b/toolchain/check/testdata/class/adapter/adapt.carbon @@ -151,14 +151,14 @@ interface I { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %Adapted: type = class_type @Adapted [concrete] -// CHECK:STDOUT: %F.type.967: type = fn_type @F.loc5 [concrete] -// CHECK:STDOUT: %F.9eb: %F.type.967 = struct_value () [concrete] +// CHECK:STDOUT: %Adapted.F.type: type = fn_type @Adapted.F [concrete] +// CHECK:STDOUT: %Adapted.F: %Adapted.F.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %AdaptNotExtend: type = class_type @AdaptNotExtend [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %AdaptNotExtend [concrete] -// CHECK:STDOUT: %F.type.b25: type = fn_type @F.loc12 [concrete] -// CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [concrete] +// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] +// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -178,7 +178,7 @@ interface I { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Adapted.decl: type = class_decl @Adapted [concrete = constants.%Adapted] {} {} // CHECK:STDOUT: %AdaptNotExtend.decl: type = class_decl @AdaptNotExtend [concrete = constants.%AdaptNotExtend] {} {} -// CHECK:STDOUT: %F.decl: %F.type.b25 = fn_decl @F.loc12 [concrete = constants.%F.c41] { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { // CHECK:STDOUT: %a.patt: %pattern_type = binding_pattern a [concrete] // CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern %a.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -189,14 +189,14 @@ interface I { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Adapted { -// CHECK:STDOUT: %F.decl: %F.type.967 = fn_decl @F.loc5 [concrete = constants.%F.9eb] {} {} +// CHECK:STDOUT: %Adapted.F.decl: %Adapted.F.type = fn_decl @Adapted.F [concrete = constants.%Adapted.F] {} {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Adapted -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %Adapted.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @AdaptNotExtend { @@ -211,9 +211,9 @@ interface I { // CHECK:STDOUT: .F = // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc5(); +// CHECK:STDOUT: fn @Adapted.F(); // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc12(%a.param: %AdaptNotExtend) { +// CHECK:STDOUT: fn @F(%a.param: %AdaptNotExtend) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %AdaptNotExtend = name_ref a, %a // CHECK:STDOUT: %F.ref: = name_ref F, [concrete = ] diff --git a/toolchain/check/testdata/class/adapter/adapt_copy.carbon b/toolchain/check/testdata/class/adapter/adapt_copy.carbon index 9243e4e9614b..b629ee458cae 100644 --- a/toolchain/check/testdata/class/adapter/adapt_copy.carbon +++ b/toolchain/check/testdata/class/adapter/adapt_copy.carbon @@ -139,10 +139,10 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.b65: type = fn_type @Op.1, @Destroy.impl(%AdaptCopyable) [concrete] -// CHECK:STDOUT: %Op.f60: %Op.type.b65 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.b65: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%AdaptCopyable) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.f60: %T.as.Destroy.impl.Op.type.b65 = struct_value () [concrete] // CHECK:STDOUT: %ptr.4c1: type = ptr_type %AdaptCopyable [concrete] -// CHECK:STDOUT: %Op.specific_fn.e4c: = specific_function %Op.f60, @Op.1(%AdaptCopyable) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.e4c: = specific_function %T.as.Destroy.impl.Op.f60, @T.as.Destroy.impl.Op(%AdaptCopyable) [concrete] // CHECK:STDOUT: %UInt.type: type = generic_class_type @UInt [concrete] // CHECK:STDOUT: %UInt.generic: %UInt.type = struct_value () [concrete] // CHECK:STDOUT: %u32: type = class_type @UInt, @UInt(%int_32) [concrete] @@ -152,9 +152,9 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %InTuple.type: type = fn_type @InTuple [concrete] // CHECK:STDOUT: %InTuple: %InTuple.type = struct_value () [concrete] // CHECK:STDOUT: %ptr.c30: type = ptr_type %tuple.type.2a3 [concrete] -// CHECK:STDOUT: %Op.type.f33: type = fn_type @Op.1, @Destroy.impl(%tuple.type.2a3) [concrete] -// CHECK:STDOUT: %Op.f7d: %Op.type.f33 = struct_value () [concrete] -// CHECK:STDOUT: %Op.specific_fn.2af: = specific_function %Op.f7d, @Op.1(%tuple.type.2a3) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.f33: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%tuple.type.2a3) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.f7d: %T.as.Destroy.impl.Op.type.f33 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2af: = specific_function %T.as.Destroy.impl.Op.f7d, @T.as.Destroy.impl.Op(%tuple.type.2a3) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -241,11 +241,11 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %d: ref %AdaptCopyable = bind_name d, %d.var // CHECK:STDOUT: %d.ref: ref %AdaptCopyable = name_ref d, %d // CHECK:STDOUT: %.loc12: %AdaptCopyable = bind_value %d.ref -// CHECK:STDOUT: %Op.bound: = bound_method %d.var, constants.%Op.f60 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.f60, @Op.1(constants.%AdaptCopyable) [concrete = constants.%Op.specific_fn.e4c] -// CHECK:STDOUT: %bound_method: = bound_method %d.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %d.var, constants.%T.as.Destroy.impl.Op.f60 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.f60, @T.as.Destroy.impl.Op(constants.%AdaptCopyable) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.e4c] +// CHECK:STDOUT: %bound_method: = bound_method %d.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.4c1 = addr_of %d.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %.loc12 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -285,11 +285,11 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %.loc17_10.4: init %u32 = initialize_from %.loc17_10.3 to %tuple.elem1.loc17_10.2 // CHECK:STDOUT: %.loc17_10.5: init %tuple.type.2a3 = tuple_init (%.loc17_10.2, %.loc17_10.4) to %return // CHECK:STDOUT: %.loc17_11: init %tuple.type.2a3 = converted %d.ref, %.loc17_10.5 -// CHECK:STDOUT: %Op.bound: = bound_method %d.var, constants.%Op.f7d -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.f7d, @Op.1(constants.%tuple.type.2a3) [concrete = constants.%Op.specific_fn.2af] -// CHECK:STDOUT: %bound_method: = bound_method %d.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %d.var, constants.%T.as.Destroy.impl.Op.f7d +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.f7d, @T.as.Destroy.impl.Op(constants.%tuple.type.2a3) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.2af] +// CHECK:STDOUT: %bound_method: = bound_method %d.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.c30 = addr_of %d.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %.loc17_11 to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -309,10 +309,10 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.0f1: type = fn_type @Op.1, @Destroy.impl(%AdaptTuple) [concrete] -// CHECK:STDOUT: %Op.621: %Op.type.0f1 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.0f1: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%AdaptTuple) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.621: %T.as.Destroy.impl.Op.type.0f1 = struct_value () [concrete] // CHECK:STDOUT: %ptr.ca3: type = ptr_type %AdaptTuple [concrete] -// CHECK:STDOUT: %Op.specific_fn.283: = specific_function %Op.621, @Op.1(%AdaptTuple) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.283: = specific_function %T.as.Destroy.impl.Op.621, @T.as.Destroy.impl.Op(%AdaptTuple) [concrete] // CHECK:STDOUT: %UInt.type: type = generic_class_type @UInt [concrete] // CHECK:STDOUT: %UInt.generic: %UInt.type = struct_value () [concrete] // CHECK:STDOUT: %u32: type = class_type @UInt, @UInt(%int_32) [concrete] @@ -320,10 +320,10 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %pattern_type.c9e: type = pattern_type %tuple.type.f69 [concrete] // CHECK:STDOUT: %InTuple.type: type = fn_type @InTuple [concrete] // CHECK:STDOUT: %InTuple: %InTuple.type = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.390: type = fn_type @Op.1, @Destroy.impl(%tuple.type.f69) [concrete] -// CHECK:STDOUT: %Op.d9f: %Op.type.390 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.390: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%tuple.type.f69) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.d9f: %T.as.Destroy.impl.Op.type.390 = struct_value () [concrete] // CHECK:STDOUT: %ptr.ed5: type = ptr_type %tuple.type.f69 [concrete] -// CHECK:STDOUT: %Op.specific_fn.20d: = specific_function %Op.d9f, @Op.1(%tuple.type.f69) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.20d: = specific_function %T.as.Destroy.impl.Op.d9f, @T.as.Destroy.impl.Op(%tuple.type.f69) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -437,11 +437,11 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %.loc10_11.7: init %tuple.type.d07 = tuple_init (%.loc10_11.4, %.loc10_11.6) to %.loc10_11.3 // CHECK:STDOUT: %.loc10_11.8: init %AdaptTuple = as_compatible %.loc10_11.7 // CHECK:STDOUT: %.loc10_11.9: init %AdaptTuple = converted %d.ref, %.loc10_11.8 -// CHECK:STDOUT: %Op.bound: = bound_method %d.var, constants.%Op.621 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.621, @Op.1(constants.%AdaptTuple) [concrete = constants.%Op.specific_fn.283] -// CHECK:STDOUT: %bound_method: = bound_method %d.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %d.var, constants.%T.as.Destroy.impl.Op.621 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.621, @T.as.Destroy.impl.Op(constants.%AdaptTuple) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.283] +// CHECK:STDOUT: %bound_method: = bound_method %d.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.ca3 = addr_of %d.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %.loc10_11.9 to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -502,11 +502,11 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %.loc15_10.11: init %u32 = initialize_from %.loc15_10.10 to %tuple.elem1.loc15_10.4 // CHECK:STDOUT: %.loc15_10.12: init %tuple.type.f69 = tuple_init (%.loc15_10.9, %.loc15_10.11) to %return // CHECK:STDOUT: %.loc15_11: init %tuple.type.f69 = converted %d.ref, %.loc15_10.12 -// CHECK:STDOUT: %Op.bound: = bound_method %d.var, constants.%Op.d9f -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.d9f, @Op.1(constants.%tuple.type.f69) [concrete = constants.%Op.specific_fn.20d] -// CHECK:STDOUT: %bound_method: = bound_method %d.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %d.var, constants.%T.as.Destroy.impl.Op.d9f +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.d9f, @T.as.Destroy.impl.Op(constants.%tuple.type.f69) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.20d] +// CHECK:STDOUT: %bound_method: = bound_method %d.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.ed5 = addr_of %d.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %.loc15_11 to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -522,10 +522,10 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.b79: type = fn_type @Op.1, @Destroy.impl(%AdaptNoncopyable) [concrete] -// CHECK:STDOUT: %Op.77f: %Op.type.b79 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.b79: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%AdaptNoncopyable) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.77f: %T.as.Destroy.impl.Op.type.b79 = struct_value () [concrete] // CHECK:STDOUT: %ptr.ed9: type = ptr_type %AdaptNoncopyable [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.77f, @Op.1(%AdaptNoncopyable) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.77f, @T.as.Destroy.impl.Op(%AdaptNoncopyable) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -595,11 +595,11 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %b: ref %AdaptNoncopyable = bind_name b, %b.var // CHECK:STDOUT: %b.ref: ref %AdaptNoncopyable = name_ref b, %b // CHECK:STDOUT: %.loc22: %AdaptNoncopyable = bind_value %b.ref -// CHECK:STDOUT: %Op.bound: = bound_method %b.var, constants.%Op.77f -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.77f, @Op.1(constants.%AdaptNoncopyable) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %b.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %b.var, constants.%T.as.Destroy.impl.Op.77f +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.77f, @T.as.Destroy.impl.Op(constants.%AdaptNoncopyable) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %b.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.ed9 = addr_of %b.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -622,10 +622,10 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %H.type: type = fn_type @H [concrete] // CHECK:STDOUT: %H: %H.type = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.b45: type = fn_type @Op.1, @Destroy.impl(%AdaptNoncopyableIndirect) [concrete] -// CHECK:STDOUT: %Op.003: %Op.type.b45 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.b45: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%AdaptNoncopyableIndirect) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.003: %T.as.Destroy.impl.Op.type.b45 = struct_value () [concrete] // CHECK:STDOUT: %ptr.921: type = ptr_type %AdaptNoncopyableIndirect [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.003, @Op.1(%AdaptNoncopyableIndirect) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.003, @T.as.Destroy.impl.Op(%AdaptNoncopyableIndirect) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -716,11 +716,11 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %.loc28_11.4: init %i32 = initialize_from %.loc28_11.2 to %tuple.elem0.loc28_11.2 // CHECK:STDOUT: %tuple.elem1.loc28: ref %Noncopyable = tuple_access %.loc28_11.1, element1 // CHECK:STDOUT: %.loc28_11.5: %Noncopyable = bind_value %tuple.elem1.loc28 -// CHECK:STDOUT: %Op.bound: = bound_method %b.var, constants.%Op.003 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.003, @Op.1(constants.%AdaptNoncopyableIndirect) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %b.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %b.var, constants.%T.as.Destroy.impl.Op.003 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.003, @T.as.Destroy.impl.Op(constants.%AdaptNoncopyableIndirect) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %b.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.921 = addr_of %b.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -739,10 +739,10 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %I.type: type = fn_type @I [concrete] // CHECK:STDOUT: %I: %I.type = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.38c: type = fn_type @Op.1, @Destroy.impl(%AdaptStruct) [concrete] -// CHECK:STDOUT: %Op.d16: %Op.type.38c = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.38c: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%AdaptStruct) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.d16: %T.as.Destroy.impl.Op.type.38c = struct_value () [concrete] // CHECK:STDOUT: %ptr.e10: type = ptr_type %AdaptStruct [concrete] -// CHECK:STDOUT: %Op.specific_fn.ad6: = specific_function %Op.d16, @Op.1(%AdaptStruct) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.ad6: = specific_function %T.as.Destroy.impl.Op.d16, @T.as.Destroy.impl.Op(%AdaptStruct) [concrete] // CHECK:STDOUT: %UInt.type: type = generic_class_type @UInt [concrete] // CHECK:STDOUT: %UInt.generic: %UInt.type = struct_value () [concrete] // CHECK:STDOUT: %u32: type = class_type @UInt, @UInt(%int_32) [concrete] @@ -751,10 +751,10 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %pattern_type.31d: type = pattern_type %tuple.type.80b [concrete] // CHECK:STDOUT: %InTuple.type: type = fn_type @InTuple [concrete] // CHECK:STDOUT: %InTuple: %InTuple.type = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.628: type = fn_type @Op.1, @Destroy.impl(%tuple.type.80b) [concrete] -// CHECK:STDOUT: %Op.8ff: %Op.type.628 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.628: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%tuple.type.80b) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.8ff: %T.as.Destroy.impl.Op.type.628 = struct_value () [concrete] // CHECK:STDOUT: %ptr.b09: type = ptr_type %tuple.type.80b [concrete] -// CHECK:STDOUT: %Op.specific_fn.301: = specific_function %Op.8ff, @Op.1(%tuple.type.80b) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.301: = specific_function %T.as.Destroy.impl.Op.8ff, @T.as.Destroy.impl.Op(%tuple.type.80b) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -867,11 +867,11 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %.loc10_11.11: init %struct_type.e.f = struct_init (%.loc10_11.6, %.loc10_11.10) to %.loc10_11.4 // CHECK:STDOUT: %.loc10_11.12: init %AdaptStruct = as_compatible %.loc10_11.11 // CHECK:STDOUT: %.loc10_11.13: init %AdaptStruct = converted %h.ref, %.loc10_11.12 -// CHECK:STDOUT: %Op.bound: = bound_method %h.var, constants.%Op.d16 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.d16, @Op.1(constants.%AdaptStruct) [concrete = constants.%Op.specific_fn.ad6] -// CHECK:STDOUT: %bound_method: = bound_method %h.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %h.var, constants.%T.as.Destroy.impl.Op.d16 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.d16, @T.as.Destroy.impl.Op(constants.%AdaptStruct) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.ad6] +// CHECK:STDOUT: %bound_method: = bound_method %h.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.e10 = addr_of %h.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %.loc10_11.13 to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -932,11 +932,11 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %.loc15_10.15: init %u32 = initialize_from %.loc15_10.14 to %tuple.elem1.loc15_10.2 // CHECK:STDOUT: %.loc15_10.16: init %tuple.type.80b = tuple_init (%.loc15_10.13, %.loc15_10.15) to %return // CHECK:STDOUT: %.loc15_11: init %tuple.type.80b = converted %d.ref, %.loc15_10.16 -// CHECK:STDOUT: %Op.bound: = bound_method %d.var, constants.%Op.8ff -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.8ff, @Op.1(constants.%tuple.type.80b) [concrete = constants.%Op.specific_fn.301] -// CHECK:STDOUT: %bound_method: = bound_method %d.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %d.var, constants.%T.as.Destroy.impl.Op.8ff +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.8ff, @T.as.Destroy.impl.Op(constants.%tuple.type.80b) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.301] +// CHECK:STDOUT: %bound_method: = bound_method %d.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.b09 = addr_of %d.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %.loc15_11 to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/adapter/extend_adapt.carbon b/toolchain/check/testdata/class/adapter/extend_adapt.carbon index 14a95bfc57ee..34610bdfcdf9 100644 --- a/toolchain/check/testdata/class/adapter/extend_adapt.carbon +++ b/toolchain/check/testdata/class/adapter/extend_adapt.carbon @@ -153,11 +153,11 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %SomeClass.elem: type = unbound_element_type %SomeClass, %i32 [concrete] -// CHECK:STDOUT: %StaticMemberFunction.type: type = fn_type @StaticMemberFunction [concrete] -// CHECK:STDOUT: %StaticMemberFunction: %StaticMemberFunction.type = struct_value () [concrete] +// CHECK:STDOUT: %SomeClass.StaticMemberFunction.type: type = fn_type @SomeClass.StaticMemberFunction [concrete] +// CHECK:STDOUT: %SomeClass.StaticMemberFunction: %SomeClass.StaticMemberFunction.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.080: type = pattern_type %SomeClassAdapter [concrete] -// CHECK:STDOUT: %AdapterMethod.type: type = fn_type @AdapterMethod [concrete] -// CHECK:STDOUT: %AdapterMethod: %AdapterMethod.type = struct_value () [concrete] +// CHECK:STDOUT: %SomeClass.AdapterMethod.type: type = fn_type @SomeClass.AdapterMethod [concrete] +// CHECK:STDOUT: %SomeClass.AdapterMethod: %SomeClass.AdapterMethod.type = struct_value () [concrete] // CHECK:STDOUT: %struct_type.a.b: type = struct_type {.a: %i32, .b: %i32} [concrete] // CHECK:STDOUT: %complete_type.705: = complete_type_witness %struct_type.a.b [concrete] // CHECK:STDOUT: %TestStaticMemberFunction.type: type = fn_type @TestStaticMemberFunction [concrete] @@ -226,8 +226,8 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: %int_32.loc8: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc8: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %.loc8: %SomeClass.elem = field_decl b, element1 [concrete] -// CHECK:STDOUT: %StaticMemberFunction.decl: %StaticMemberFunction.type = fn_decl @StaticMemberFunction [concrete = constants.%StaticMemberFunction] {} {} -// CHECK:STDOUT: %AdapterMethod.decl: %AdapterMethod.type = fn_decl @AdapterMethod [concrete = constants.%AdapterMethod] { +// CHECK:STDOUT: %SomeClass.StaticMemberFunction.decl: %SomeClass.StaticMemberFunction.type = fn_decl @SomeClass.StaticMemberFunction [concrete = constants.%SomeClass.StaticMemberFunction] {} {} +// CHECK:STDOUT: %SomeClass.AdapterMethod.decl: %SomeClass.AdapterMethod.type = fn_decl @SomeClass.AdapterMethod [concrete = constants.%SomeClass.AdapterMethod] { // CHECK:STDOUT: %self.patt: %pattern_type.080 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.080 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -243,29 +243,29 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: .Self = constants.%SomeClass // CHECK:STDOUT: .a = %.loc7 // CHECK:STDOUT: .b = %.loc8 -// CHECK:STDOUT: .StaticMemberFunction = %StaticMemberFunction.decl +// CHECK:STDOUT: .StaticMemberFunction = %SomeClass.StaticMemberFunction.decl // CHECK:STDOUT: .SomeClassAdapter = -// CHECK:STDOUT: .AdapterMethod = %AdapterMethod.decl +// CHECK:STDOUT: .AdapterMethod = %SomeClass.AdapterMethod.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @StaticMemberFunction(); +// CHECK:STDOUT: fn @SomeClass.StaticMemberFunction(); // CHECK:STDOUT: -// CHECK:STDOUT: fn @AdapterMethod(%self.param: %SomeClassAdapter); +// CHECK:STDOUT: fn @SomeClass.AdapterMethod(%self.param: %SomeClassAdapter); // CHECK:STDOUT: // CHECK:STDOUT: fn @TestStaticMemberFunction(%a.param: %SomeClassAdapter) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %SomeClassAdapter = name_ref a, %a -// CHECK:STDOUT: %StaticMemberFunction.ref: %StaticMemberFunction.type = name_ref StaticMemberFunction, @SomeClass.%StaticMemberFunction.decl [concrete = constants.%StaticMemberFunction] -// CHECK:STDOUT: %StaticMemberFunction.call: init %empty_tuple.type = call %StaticMemberFunction.ref() +// CHECK:STDOUT: %StaticMemberFunction.ref: %SomeClass.StaticMemberFunction.type = name_ref StaticMemberFunction, @SomeClass.%SomeClass.StaticMemberFunction.decl [concrete = constants.%SomeClass.StaticMemberFunction] +// CHECK:STDOUT: %SomeClass.StaticMemberFunction.call: init %empty_tuple.type = call %StaticMemberFunction.ref() // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @TestAdapterMethod(%a.param: %SomeClassAdapter) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %SomeClassAdapter = name_ref a, %a -// CHECK:STDOUT: %AdapterMethod.ref: %AdapterMethod.type = name_ref AdapterMethod, @SomeClass.%AdapterMethod.decl [concrete = constants.%AdapterMethod] -// CHECK:STDOUT: %AdapterMethod.bound: = bound_method %a.ref, %AdapterMethod.ref -// CHECK:STDOUT: %AdapterMethod.call: init %empty_tuple.type = call %AdapterMethod.bound(%a.ref) +// CHECK:STDOUT: %AdapterMethod.ref: %SomeClass.AdapterMethod.type = name_ref AdapterMethod, @SomeClass.%SomeClass.AdapterMethod.decl [concrete = constants.%SomeClass.AdapterMethod] +// CHECK:STDOUT: %SomeClass.AdapterMethod.bound: = bound_method %a.ref, %AdapterMethod.ref +// CHECK:STDOUT: %SomeClass.AdapterMethod.call: init %empty_tuple.type = call %SomeClass.AdapterMethod.bound(%a.ref) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -274,15 +274,15 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: constants { // CHECK:STDOUT: %SomeClass: type = class_type @SomeClass [concrete] // CHECK:STDOUT: %pattern_type.3eb: type = pattern_type %SomeClass [concrete] -// CHECK:STDOUT: %F.type.633: type = fn_type @F.loc5 [concrete] +// CHECK:STDOUT: %SomeClass.F.type: type = fn_type @SomeClass.F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F.e19: %F.type.633 = struct_value () [concrete] +// CHECK:STDOUT: %SomeClass.F: %SomeClass.F.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %SomeClassAdapter: type = class_type @SomeClassAdapter [concrete] // CHECK:STDOUT: %pattern_type.080: type = pattern_type %SomeClassAdapter [concrete] -// CHECK:STDOUT: %F.type.b25: type = fn_type @F.loc12 [concrete] -// CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [concrete] +// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] +// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: } @@ -306,7 +306,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %SomeClass.decl: type = class_decl @SomeClass [concrete = constants.%SomeClass] {} {} // CHECK:STDOUT: %SomeClassAdapter.decl: type = class_decl @SomeClassAdapter [concrete = constants.%SomeClassAdapter] {} {} -// CHECK:STDOUT: %F.decl: %F.type.b25 = fn_decl @F.loc12 [concrete = constants.%F.c41] { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { // CHECK:STDOUT: %a.patt: %pattern_type.080 = binding_pattern a [concrete] // CHECK:STDOUT: %a.param_patt: %pattern_type.080 = value_param_pattern %a.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -317,7 +317,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @SomeClass { -// CHECK:STDOUT: %F.decl: %F.type.633 = fn_decl @F.loc5 [concrete = constants.%F.e19] { +// CHECK:STDOUT: %SomeClass.F.decl: %SomeClass.F.type = fn_decl @SomeClass.F [concrete = constants.%SomeClass.F] { // CHECK:STDOUT: %self.patt: %pattern_type.3eb = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.3eb = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -331,7 +331,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%SomeClass -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %SomeClass.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @SomeClassAdapter { @@ -347,15 +347,15 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: extend %SomeClass.ref // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc5(%self.param: %SomeClass); +// CHECK:STDOUT: fn @SomeClass.F(%self.param: %SomeClass); // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc12(%a.param: %SomeClassAdapter) { +// CHECK:STDOUT: fn @F(%a.param: %SomeClassAdapter) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %SomeClassAdapter = name_ref a, %a -// CHECK:STDOUT: %F.ref: %F.type.633 = name_ref F, @SomeClass.%F.decl [concrete = constants.%F.e19] -// CHECK:STDOUT: %F.bound: = bound_method %a.ref, %F.ref +// CHECK:STDOUT: %F.ref: %SomeClass.F.type = name_ref F, @SomeClass.%SomeClass.F.decl [concrete = constants.%SomeClass.F] +// CHECK:STDOUT: %SomeClass.F.bound: = bound_method %a.ref, %F.ref // CHECK:STDOUT: %.loc23: %SomeClass = converted %a.ref, [concrete = ] -// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.bound() +// CHECK:STDOUT: %SomeClass.F.call: init %empty_tuple.type = call %SomeClass.F.bound() // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -652,9 +652,9 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: %.loc4_31.1: type = splice_block %.loc4_31.3 [concrete = Core.IntLiteral] { // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, imports.%Core.IntLiteral [concrete = constants.%IntLiteral] -// CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc4_31.2: type = value_of_initializer %int_literal.make_type [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc4_31.3: type = converted %int_literal.make_type, %.loc4_31.2 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %IntLiteral.call: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc4_31.2: type = value_of_initializer %IntLiteral.call [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc4_31.3: type = converted %IntLiteral.call, %.loc4_31.2 [concrete = Core.IntLiteral] // CHECK:STDOUT: } // CHECK:STDOUT: %N: Core.IntLiteral = bind_name N, %N.param // CHECK:STDOUT: %return.param: ref type = out_param call_param1 @@ -680,9 +680,9 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: class @IntAdapter { // CHECK:STDOUT: %MakeInt.ref: %MakeInt.type = name_ref MakeInt, file.%MakeInt.decl [concrete = constants.%MakeInt] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %int.make_type_signed: init type = call %MakeInt.ref(%int_32) [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc7_27.1: type = value_of_initializer %int.make_type_signed [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc7_27.2: type = converted %int.make_type_signed, %.loc7_27.1 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %MakeInt.call: init type = call %MakeInt.ref(%int_32) [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc7_27.1: type = value_of_initializer %MakeInt.call [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc7_27.2: type = converted %MakeInt.call, %.loc7_27.1 [concrete = constants.%i32.builtin] // CHECK:STDOUT: adapt_decl %.loc7_27.2 [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%i32.builtin [concrete = constants.%complete_type.f8a] // CHECK:STDOUT: complete_type_witness = %complete_type diff --git a/toolchain/check/testdata/class/adapter/init_adapt.carbon b/toolchain/check/testdata/class/adapter/init_adapt.carbon index 2feb803e73f3..162599fe9a96 100644 --- a/toolchain/check/testdata/class/adapter/init_adapt.carbon +++ b/toolchain/check/testdata/class/adapter/init_adapt.carbon @@ -115,21 +115,21 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %C.val: %C = struct_value (%int_1.5d2, %int_2.ef8) [concrete] // CHECK:STDOUT: %pattern_type.a1a: type = pattern_type %AdaptC [concrete] @@ -148,8 +148,8 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -172,21 +172,21 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: %a.patt: %pattern_type.c48 = binding_pattern a [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %C.ref.loc13: type = name_ref C, %C.decl [concrete = constants.%C] -// CHECK:STDOUT: %impl.elem0.loc13_27.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc13_27.1: = bound_method @__global_init.%int_1, %impl.elem0.loc13_27.1 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc13_27.1: = specific_function %impl.elem0.loc13_27.1, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc13_27.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc13_27.1: = bound_method @__global_init.%int_1, %impl.elem0.loc13_27.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc13_27.1: = specific_function %impl.elem0.loc13_27.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc13_27.2: = bound_method @__global_init.%int_1, %specific_fn.loc13_27.1 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc13_27.1: init %i32 = call %bound_method.loc13_27.2(@__global_init.%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc13_27.1: init %i32 = converted @__global_init.%int_1, %int.convert_checked.loc13_27.1 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc13_27.1: init %i32 = call %bound_method.loc13_27.2(@__global_init.%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc13_27.1: init %i32 = converted @__global_init.%int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc13_27.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc13_27.2: ref %C = temporary_storage // CHECK:STDOUT: %.loc13_27.3: ref %i32 = class_element_access %.loc13_27.2, element0 // CHECK:STDOUT: %.loc13_27.4: init %i32 = initialize_from %.loc13_27.1 to %.loc13_27.3 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %impl.elem0.loc13_27.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc13_27.3: = bound_method @__global_init.%int_2, %impl.elem0.loc13_27.2 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc13_27.2: = specific_function %impl.elem0.loc13_27.2, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc13_27.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc13_27.3: = bound_method @__global_init.%int_2, %impl.elem0.loc13_27.2 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc13_27.2: = specific_function %impl.elem0.loc13_27.2, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc13_27.4: = bound_method @__global_init.%int_2, %specific_fn.loc13_27.2 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc13_27.2: init %i32 = call %bound_method.loc13_27.4(@__global_init.%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc13_27.5: init %i32 = converted @__global_init.%int_2, %int.convert_checked.loc13_27.2 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc13_27.2: init %i32 = call %bound_method.loc13_27.4(@__global_init.%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc13_27.5: init %i32 = converted @__global_init.%int_2, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc13_27.2 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc13_27.6: ref %i32 = class_element_access %.loc13_27.2, element1 // CHECK:STDOUT: %.loc13_27.7: init %i32 = initialize_from %.loc13_27.5 to %.loc13_27.6 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc13_27.8: init %C = class_init (%.loc13_27.4, %.loc13_27.7), %.loc13_27.2 [concrete = constants.%C.val] @@ -317,21 +317,21 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %C.val: %C = struct_value (%int_1.5d2, %int_2.ef8) [concrete] // CHECK:STDOUT: %pattern_type.a1a: type = pattern_type %AdaptC [concrete] @@ -350,8 +350,8 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -374,21 +374,21 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: %a.patt: %pattern_type.c48 = binding_pattern a [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %C.ref.loc13: type = name_ref C, %C.decl [concrete = constants.%C] -// CHECK:STDOUT: %impl.elem0.loc13_27.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc13_27.1: = bound_method @__global_init.%int_1, %impl.elem0.loc13_27.1 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc13_27.1: = specific_function %impl.elem0.loc13_27.1, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc13_27.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc13_27.1: = bound_method @__global_init.%int_1, %impl.elem0.loc13_27.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc13_27.1: = specific_function %impl.elem0.loc13_27.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc13_27.2: = bound_method @__global_init.%int_1, %specific_fn.loc13_27.1 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc13_27.1: init %i32 = call %bound_method.loc13_27.2(@__global_init.%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc13_27.1: init %i32 = converted @__global_init.%int_1, %int.convert_checked.loc13_27.1 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc13_27.1: init %i32 = call %bound_method.loc13_27.2(@__global_init.%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc13_27.1: init %i32 = converted @__global_init.%int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc13_27.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc13_27.2: ref %C = temporary_storage // CHECK:STDOUT: %.loc13_27.3: ref %i32 = class_element_access %.loc13_27.2, element0 // CHECK:STDOUT: %.loc13_27.4: init %i32 = initialize_from %.loc13_27.1 to %.loc13_27.3 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %impl.elem0.loc13_27.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc13_27.3: = bound_method @__global_init.%int_2, %impl.elem0.loc13_27.2 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc13_27.2: = specific_function %impl.elem0.loc13_27.2, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc13_27.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc13_27.3: = bound_method @__global_init.%int_2, %impl.elem0.loc13_27.2 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc13_27.2: = specific_function %impl.elem0.loc13_27.2, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc13_27.4: = bound_method @__global_init.%int_2, %specific_fn.loc13_27.2 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc13_27.2: init %i32 = call %bound_method.loc13_27.4(@__global_init.%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc13_27.5: init %i32 = converted @__global_init.%int_2, %int.convert_checked.loc13_27.2 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc13_27.2: init %i32 = call %bound_method.loc13_27.4(@__global_init.%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc13_27.5: init %i32 = converted @__global_init.%int_2, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc13_27.2 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc13_27.6: ref %i32 = class_element_access %.loc13_27.2, element1 // CHECK:STDOUT: %.loc13_27.7: init %i32 = initialize_from %.loc13_27.5 to %.loc13_27.6 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc13_27.8: init %C = class_init (%.loc13_27.4, %.loc13_27.7), %.loc13_27.2 [concrete = constants.%C.val] diff --git a/toolchain/check/testdata/class/base.carbon b/toolchain/check/testdata/class/base.carbon index ab7abf27d60b..0c6bbf375625 100644 --- a/toolchain/check/testdata/class/base.carbon +++ b/toolchain/check/testdata/class/base.carbon @@ -75,22 +75,22 @@ class Derived { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.ac3: = bound_method %int_4.0c1, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.1da: = bound_method %int_4.0c1, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ac3: = bound_method %int_4.0c1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.1da: = bound_method %int_4.0c1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_4.940: %i32 = int_value 4 [concrete] // CHECK:STDOUT: %Base.val: %Base = struct_value (%int_4.940) [concrete] -// CHECK:STDOUT: %Convert.bound.208: = bound_method %int_7.29f, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.3bd: = bound_method %int_7.29f, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.208: = bound_method %int_7.29f, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.3bd: = bound_method %int_7.29f, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_7.0b1: %i32 = int_value 7 [concrete] // CHECK:STDOUT: %Derived.val: %Derived = struct_value (%Base.val, %int_7.0b1) [concrete] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] @@ -109,8 +109,8 @@ class Derived { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -189,23 +189,23 @@ class Derived { // CHECK:STDOUT: %.loc14_26.1: %struct_type.b.a15 = struct_literal (%int_4) // CHECK:STDOUT: %int_7: Core.IntLiteral = int_value 7 [concrete = constants.%int_7.29f] // CHECK:STDOUT: %.loc14_35.1: %struct_type.base.d.a20 = struct_literal (%.loc14_26.1, %int_7) -// CHECK:STDOUT: %impl.elem0.loc14_26: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc14_26.1: = bound_method %int_4, %impl.elem0.loc14_26 [concrete = constants.%Convert.bound.ac3] -// CHECK:STDOUT: %specific_fn.loc14_26: = specific_function %impl.elem0.loc14_26, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc14_26: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc14_26.1: = bound_method %int_4, %impl.elem0.loc14_26 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ac3] +// CHECK:STDOUT: %specific_fn.loc14_26: = specific_function %impl.elem0.loc14_26, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc14_26.2: = bound_method %int_4, %specific_fn.loc14_26 [concrete = constants.%bound_method.1da] -// CHECK:STDOUT: %int.convert_checked.loc14_26: init %i32 = call %bound_method.loc14_26.2(%int_4) [concrete = constants.%int_4.940] -// CHECK:STDOUT: %.loc14_26.2: init %i32 = converted %int_4, %int.convert_checked.loc14_26 [concrete = constants.%int_4.940] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc14_26: init %i32 = call %bound_method.loc14_26.2(%int_4) [concrete = constants.%int_4.940] +// CHECK:STDOUT: %.loc14_26.2: init %i32 = converted %int_4, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc14_26 [concrete = constants.%int_4.940] // CHECK:STDOUT: %.loc14_35.2: ref %Base = class_element_access %return, element0 // CHECK:STDOUT: %.loc14_26.3: ref %i32 = class_element_access %.loc14_35.2, element0 // CHECK:STDOUT: %.loc14_26.4: init %i32 = initialize_from %.loc14_26.2 to %.loc14_26.3 [concrete = constants.%int_4.940] // CHECK:STDOUT: %.loc14_26.5: init %Base = class_init (%.loc14_26.4), %.loc14_35.2 [concrete = constants.%Base.val] // CHECK:STDOUT: %.loc14_35.3: init %Base = converted %.loc14_26.1, %.loc14_26.5 [concrete = constants.%Base.val] -// CHECK:STDOUT: %impl.elem0.loc14_35: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc14_35.1: = bound_method %int_7, %impl.elem0.loc14_35 [concrete = constants.%Convert.bound.208] -// CHECK:STDOUT: %specific_fn.loc14_35: = specific_function %impl.elem0.loc14_35, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc14_35: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc14_35.1: = bound_method %int_7, %impl.elem0.loc14_35 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.208] +// CHECK:STDOUT: %specific_fn.loc14_35: = specific_function %impl.elem0.loc14_35, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc14_35.2: = bound_method %int_7, %specific_fn.loc14_35 [concrete = constants.%bound_method.3bd] -// CHECK:STDOUT: %int.convert_checked.loc14_35: init %i32 = call %bound_method.loc14_35.2(%int_7) [concrete = constants.%int_7.0b1] -// CHECK:STDOUT: %.loc14_35.4: init %i32 = converted %int_7, %int.convert_checked.loc14_35 [concrete = constants.%int_7.0b1] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc14_35: init %i32 = call %bound_method.loc14_35.2(%int_7) [concrete = constants.%int_7.0b1] +// CHECK:STDOUT: %.loc14_35.4: init %i32 = converted %int_7, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc14_35 [concrete = constants.%int_7.0b1] // CHECK:STDOUT: %.loc14_35.5: ref %i32 = class_element_access %return, element1 // CHECK:STDOUT: %.loc14_35.6: init %i32 = initialize_from %.loc14_35.4 to %.loc14_35.5 [concrete = constants.%int_7.0b1] // CHECK:STDOUT: %.loc14_35.7: init %Derived = class_init (%.loc14_35.3, %.loc14_35.6), %return [concrete = constants.%Derived.val] diff --git a/toolchain/check/testdata/class/base_function_unqualified.carbon b/toolchain/check/testdata/class/base_function_unqualified.carbon index 6aba856c54f4..1ff4009a38c1 100644 --- a/toolchain/check/testdata/class/base_function_unqualified.carbon +++ b/toolchain/check/testdata/class/base_function_unqualified.carbon @@ -31,17 +31,17 @@ fn Derived.H() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %Base: type = class_type @Base [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] +// CHECK:STDOUT: %Base.F.type: type = fn_type @Base.F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %Base.F: %Base.F.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %Derived: type = class_type @Derived [concrete] // CHECK:STDOUT: %Derived.elem: type = unbound_element_type %Derived, %Base [concrete] -// CHECK:STDOUT: %G.type: type = fn_type @G [concrete] -// CHECK:STDOUT: %G: %G.type = struct_value () [concrete] -// CHECK:STDOUT: %H.type: type = fn_type @H [concrete] -// CHECK:STDOUT: %H: %H.type = struct_value () [concrete] +// CHECK:STDOUT: %Derived.G.type: type = fn_type @Derived.G [concrete] +// CHECK:STDOUT: %Derived.G: %Derived.G.type = struct_value () [concrete] +// CHECK:STDOUT: %Derived.H.type: type = fn_type @Derived.H [concrete] +// CHECK:STDOUT: %Derived.H: %Derived.H.type = struct_value () [concrete] // CHECK:STDOUT: %struct_type.base: type = struct_type {.base: %Base} [concrete] // CHECK:STDOUT: %complete_type.15c: = complete_type_witness %struct_type.base [concrete] // CHECK:STDOUT: } @@ -62,25 +62,25 @@ fn Derived.H() { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Base.decl: type = class_decl @Base [concrete = constants.%Base] {} {} // CHECK:STDOUT: %Derived.decl: type = class_decl @Derived [concrete = constants.%Derived] {} {} -// CHECK:STDOUT: %H.decl: %H.type = fn_decl @H [concrete = constants.%H] {} {} +// CHECK:STDOUT: %Derived.H.decl: %Derived.H.type = fn_decl @Derived.H [concrete = constants.%Derived.H] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Base { -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} +// CHECK:STDOUT: %Base.F.decl: %Base.F.type = fn_decl @Base.F [concrete = constants.%Base.F] {} {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %Base.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { // CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [concrete = constants.%Base] // CHECK:STDOUT: %.loc20: %Derived.elem = base_decl %Base.ref, element0 [concrete] -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {} {} -// CHECK:STDOUT: %H.decl: %H.type = fn_decl @H [concrete = constants.%H] {} {} +// CHECK:STDOUT: %Derived.G.decl: %Derived.G.type = fn_decl @Derived.G [concrete = constants.%Derived.G] {} {} +// CHECK:STDOUT: %Derived.H.decl: %Derived.H.type = fn_decl @Derived.H [concrete = constants.%Derived.H] {} {} // CHECK:STDOUT: %struct_type.base: type = struct_type {.base: %Base} [concrete = constants.%struct_type.base] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [concrete = constants.%complete_type.15c] // CHECK:STDOUT: complete_type_witness = %complete_type @@ -89,25 +89,25 @@ fn Derived.H() { // CHECK:STDOUT: .Self = constants.%Derived // CHECK:STDOUT: .Base = // CHECK:STDOUT: .base = %.loc20 -// CHECK:STDOUT: .G = %G.decl -// CHECK:STDOUT: .H = %H.decl +// CHECK:STDOUT: .G = %Derived.G.decl +// CHECK:STDOUT: .H = %Derived.H.decl // CHECK:STDOUT: .F = // CHECK:STDOUT: extend %Base.ref // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F(); +// CHECK:STDOUT: fn @Base.F(); // CHECK:STDOUT: -// CHECK:STDOUT: fn @G() { +// CHECK:STDOUT: fn @Derived.G() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, @Base.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.ref() +// CHECK:STDOUT: %F.ref: %Base.F.type = name_ref F, @Base.%Base.F.decl [concrete = constants.%Base.F] +// CHECK:STDOUT: %Base.F.call: init %empty_tuple.type = call %F.ref() // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @H() { +// CHECK:STDOUT: fn @Derived.H() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, @Base.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.ref() +// CHECK:STDOUT: %F.ref: %Base.F.type = name_ref F, @Base.%Base.F.decl [concrete = constants.%Base.F] +// CHECK:STDOUT: %Base.F.call: init %empty_tuple.type = call %F.ref() // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/base_method.carbon b/toolchain/check/testdata/class/base_method.carbon index d10d4e8f9c32..fa6b30061691 100644 --- a/toolchain/check/testdata/class/base_method.carbon +++ b/toolchain/check/testdata/class/base_method.carbon @@ -43,26 +43,26 @@ fn Call(p: Derived*) { // CHECK:STDOUT: %ptr.11f: type = ptr_type %Base [concrete] // CHECK:STDOUT: %pattern_type.1b9: type = pattern_type %ptr.11f [concrete] // CHECK:STDOUT: %pattern_type.f6d: type = pattern_type auto [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %Base.F.type: type = fn_type @Base.F [concrete] +// CHECK:STDOUT: %Base.F: %Base.F.type = struct_value () [concrete] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %i32} [concrete] // CHECK:STDOUT: %complete_type.fd7: = complete_type_witness %struct_type.a [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %Derived: type = class_type @Derived [concrete] // CHECK:STDOUT: %Derived.elem: type = unbound_element_type %Derived, %Base [concrete] @@ -83,8 +83,8 @@ fn Call(p: Derived*) { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -96,7 +96,7 @@ fn Call(p: Derived*) { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Base.decl: type = class_decl @Base [concrete = constants.%Base] {} {} -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { +// CHECK:STDOUT: %Base.F.decl: %Base.F.type = fn_decl @Base.F [concrete = constants.%Base.F] { // CHECK:STDOUT: %self.patt: %pattern_type.1b9 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.1b9 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %.loc21_11: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] @@ -126,7 +126,7 @@ fn Call(p: Derived*) { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %.loc16: %Base.elem = field_decl a, element0 [concrete] -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { +// CHECK:STDOUT: %Base.F.decl: %Base.F.type = fn_decl @Base.F [concrete = constants.%Base.F] { // CHECK:STDOUT: %self.patt: %pattern_type.1b9 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.1b9 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %.loc21_11: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] @@ -145,7 +145,7 @@ fn Call(p: Derived*) { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base // CHECK:STDOUT: .a = %.loc16 -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %Base.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { @@ -163,19 +163,19 @@ fn Call(p: Derived*) { // CHECK:STDOUT: extend %Base.ref // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F(%self.param.loc21: %ptr.11f) { +// CHECK:STDOUT: fn @Base.F(%self.param.loc21: %ptr.11f) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: %ptr.11f = name_ref self, %self.loc21 // CHECK:STDOUT: %.loc22_4: ref %Base = deref %self.ref // CHECK:STDOUT: %a.ref: %Base.elem = name_ref a, @Base.%.loc16 [concrete = @Base.%.loc16] // CHECK:STDOUT: %.loc22_10: ref %i32 = class_element_access %.loc22_4, element0 // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc22_13.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc22_13.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc22_13.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc22_13.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc22_13: init %i32 = converted %int_1, %int.convert_checked [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc22_13.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc22_13: init %i32 = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_1.5d2] // CHECK:STDOUT: assign %.loc22_10, %.loc22_13 // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -184,14 +184,14 @@ fn Call(p: Derived*) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %p.ref: %ptr.404 = name_ref p, %p // CHECK:STDOUT: %.loc30_4.1: ref %Derived = deref %p.ref -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, @Base.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %F.bound: = bound_method %.loc30_4.1, %F.ref +// CHECK:STDOUT: %F.ref: %Base.F.type = name_ref F, @Base.%Base.F.decl [concrete = constants.%Base.F] +// CHECK:STDOUT: %Base.F.bound: = bound_method %.loc30_4.1, %F.ref // CHECK:STDOUT: %addr.loc30_4.1: %ptr.404 = addr_of %.loc30_4.1 // CHECK:STDOUT: %.loc30_4.2: ref %Derived = deref %addr.loc30_4.1 // CHECK:STDOUT: %.loc30_4.3: ref %Base = class_element_access %.loc30_4.2, element0 // CHECK:STDOUT: %addr.loc30_4.2: %ptr.11f = addr_of %.loc30_4.3 // CHECK:STDOUT: %.loc30_4.4: %ptr.11f = converted %addr.loc30_4.1, %addr.loc30_4.2 -// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.bound(%.loc30_4.4) +// CHECK:STDOUT: %Base.F.call: init %empty_tuple.type = call %Base.F.bound(%.loc30_4.4) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/base_method_qualified.carbon b/toolchain/check/testdata/class/base_method_qualified.carbon index a937cbadfd17..e888027ca784 100644 --- a/toolchain/check/testdata/class/base_method_qualified.carbon +++ b/toolchain/check/testdata/class/base_method_qualified.carbon @@ -53,18 +53,18 @@ fn PassDerivedToBaseIndirect(p: Derived*) -> i32 { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %F.type.7c6: type = fn_type @F.loc18 [concrete] -// CHECK:STDOUT: %F.d17: %F.type.7c6 = struct_value () [concrete] +// CHECK:STDOUT: %Base.F.type: type = fn_type @Base.F [concrete] +// CHECK:STDOUT: %Base.F: %Base.F.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.fb9: type = pattern_type %Derived [concrete] -// CHECK:STDOUT: %G.type.6ee: type = fn_type @G.loc19 [concrete] -// CHECK:STDOUT: %G.663: %G.type.6ee = struct_value () [concrete] +// CHECK:STDOUT: %Base.G.type: type = fn_type @Base.G [concrete] +// CHECK:STDOUT: %Base.G: %Base.G.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %Derived.elem: type = unbound_element_type %Derived, %Base [concrete] -// CHECK:STDOUT: %F.type.5da: type = fn_type @F.loc25 [concrete] -// CHECK:STDOUT: %F.fa3: %F.type.5da = struct_value () [concrete] -// CHECK:STDOUT: %G.type.04c: type = fn_type @G.loc26 [concrete] -// CHECK:STDOUT: %G.07e: %G.type.04c = struct_value () [concrete] +// CHECK:STDOUT: %Derived.F.type: type = fn_type @Derived.F [concrete] +// CHECK:STDOUT: %Derived.F: %Derived.F.type = struct_value () [concrete] +// CHECK:STDOUT: %Derived.G.type: type = fn_type @Derived.G [concrete] +// CHECK:STDOUT: %Derived.G: %Derived.G.type = struct_value () [concrete] // CHECK:STDOUT: %struct_type.base.b1e: type = struct_type {.base: %Base} [concrete] // CHECK:STDOUT: %complete_type.15c: = complete_type_witness %struct_type.base.b1e [concrete] // CHECK:STDOUT: %Call.type: type = fn_type @Call [concrete] @@ -169,7 +169,7 @@ fn PassDerivedToBaseIndirect(p: Derived*) -> i32 { // CHECK:STDOUT: class @Derived { // CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [concrete = constants.%Base] // CHECK:STDOUT: %.loc23: %Derived.elem = base_decl %Base.ref, element0 [concrete] -// CHECK:STDOUT: %F.decl: %F.type.5da = fn_decl @F.loc25 [concrete = constants.%F.fa3] { +// CHECK:STDOUT: %Derived.F.decl: %Derived.F.type = fn_decl @Derived.F [concrete = constants.%Derived.F] { // CHECK:STDOUT: %self.patt: %pattern_type.fb9 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.fb9 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -177,7 +177,7 @@ fn PassDerivedToBaseIndirect(p: Derived*) -> i32 { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Derived [concrete = constants.%Derived] // CHECK:STDOUT: %self: %Derived = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: %G.type.04c = fn_decl @G.loc26 [concrete = constants.%G.07e] { +// CHECK:STDOUT: %Derived.G.decl: %Derived.G.type = fn_decl @Derived.G [concrete = constants.%Derived.G] { // CHECK:STDOUT: %self.patt: %pattern_type.fb9 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.fb9 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -193,13 +193,13 @@ fn PassDerivedToBaseIndirect(p: Derived*) -> i32 { // CHECK:STDOUT: .Self = constants.%Derived // CHECK:STDOUT: .Base = // CHECK:STDOUT: .base = %.loc23 -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .F = %Derived.F.decl +// CHECK:STDOUT: .G = %Derived.G.decl // CHECK:STDOUT: extend %Base.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Base { -// CHECK:STDOUT: %F.decl: %F.type.7c6 = fn_decl @F.loc18 [concrete = constants.%F.d17] { +// CHECK:STDOUT: %Base.F.decl: %Base.F.type = fn_decl @Base.F [concrete = constants.%Base.F] { // CHECK:STDOUT: %self.patt: %pattern_type.bcc = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.bcc = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] @@ -213,7 +213,7 @@ fn PassDerivedToBaseIndirect(p: Derived*) -> i32 { // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param1 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: %G.type.6ee = fn_decl @G.loc19 [concrete = constants.%G.663] { +// CHECK:STDOUT: %Base.G.decl: %Base.G.type = fn_decl @Base.G [concrete = constants.%Base.G] { // CHECK:STDOUT: %self.patt: %pattern_type.fb9 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.fb9 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] @@ -233,31 +233,31 @@ fn PassDerivedToBaseIndirect(p: Derived*) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %Base.F.decl // CHECK:STDOUT: .Derived = -// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .G = %Base.G.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc18(%self.param: %Base) -> %i32; +// CHECK:STDOUT: fn @Base.F(%self.param: %Base) -> %i32; // CHECK:STDOUT: -// CHECK:STDOUT: fn @G.loc19(%self.param: %Derived) -> %i32; +// CHECK:STDOUT: fn @Base.G(%self.param: %Derived) -> %i32; // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc25(%self.param: %Derived); +// CHECK:STDOUT: fn @Derived.F(%self.param: %Derived); // CHECK:STDOUT: -// CHECK:STDOUT: fn @G.loc26(%self.param: %Derived); +// CHECK:STDOUT: fn @Derived.G(%self.param: %Derived); // CHECK:STDOUT: // CHECK:STDOUT: fn @Call(%a.param: %Derived) -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %Derived = name_ref a, %a // CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [concrete = constants.%Base] -// CHECK:STDOUT: %F.ref: %F.type.7c6 = name_ref F, @Base.%F.decl [concrete = constants.%F.d17] -// CHECK:STDOUT: %F.bound: = bound_method %a.ref, %F.ref +// CHECK:STDOUT: %F.ref: %Base.F.type = name_ref F, @Base.%Base.F.decl [concrete = constants.%Base.F] +// CHECK:STDOUT: %Base.F.bound: = bound_method %a.ref, %F.ref // CHECK:STDOUT: %.loc30_10.1: ref %Base = class_element_access %a.ref, element0 // CHECK:STDOUT: %.loc30_10.2: ref %Base = converted %a.ref, %.loc30_10.1 // CHECK:STDOUT: %.loc30_10.3: %Base = bind_value %.loc30_10.2 -// CHECK:STDOUT: %F.call: init %i32 = call %F.bound(%.loc30_10.3) -// CHECK:STDOUT: %.loc30_22.1: %i32 = value_of_initializer %F.call -// CHECK:STDOUT: %.loc30_22.2: %i32 = converted %F.call, %.loc30_22.1 +// CHECK:STDOUT: %Base.F.call: init %i32 = call %Base.F.bound(%.loc30_10.3) +// CHECK:STDOUT: %.loc30_22.1: %i32 = value_of_initializer %Base.F.call +// CHECK:STDOUT: %.loc30_22.2: %i32 = converted %Base.F.call, %.loc30_22.1 // CHECK:STDOUT: return %.loc30_22.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -265,15 +265,15 @@ fn PassDerivedToBaseIndirect(p: Derived*) -> i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %p.ref: %ptr.404 = name_ref p, %p // CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [concrete = constants.%Base] -// CHECK:STDOUT: %F.ref: %F.type.7c6 = name_ref F, @Base.%F.decl [concrete = constants.%F.d17] +// CHECK:STDOUT: %F.ref: %Base.F.type = name_ref F, @Base.%Base.F.decl [concrete = constants.%Base.F] // CHECK:STDOUT: %.loc34_11.1: ref %Derived = deref %p.ref -// CHECK:STDOUT: %F.bound: = bound_method %.loc34_11.1, %F.ref +// CHECK:STDOUT: %Base.F.bound: = bound_method %.loc34_11.1, %F.ref // CHECK:STDOUT: %.loc34_11.2: ref %Base = class_element_access %.loc34_11.1, element0 // CHECK:STDOUT: %.loc34_11.3: ref %Base = converted %.loc34_11.1, %.loc34_11.2 // CHECK:STDOUT: %.loc34_11.4: %Base = bind_value %.loc34_11.3 -// CHECK:STDOUT: %F.call: init %i32 = call %F.bound(%.loc34_11.4) -// CHECK:STDOUT: %.loc34_23.1: %i32 = value_of_initializer %F.call -// CHECK:STDOUT: %.loc34_23.2: %i32 = converted %F.call, %.loc34_23.1 +// CHECK:STDOUT: %Base.F.call: init %i32 = call %Base.F.bound(%.loc34_11.4) +// CHECK:STDOUT: %.loc34_23.1: %i32 = value_of_initializer %Base.F.call +// CHECK:STDOUT: %.loc34_23.2: %i32 = converted %Base.F.call, %.loc34_23.1 // CHECK:STDOUT: return %.loc34_23.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -281,11 +281,11 @@ fn PassDerivedToBaseIndirect(p: Derived*) -> i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %Derived = name_ref a, %a // CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [concrete = constants.%Base] -// CHECK:STDOUT: %G.ref: %G.type.6ee = name_ref G, @Base.%G.decl [concrete = constants.%G.663] -// CHECK:STDOUT: %G.bound: = bound_method %a.ref, %G.ref -// CHECK:STDOUT: %G.call: init %i32 = call %G.bound(%a.ref) -// CHECK:STDOUT: %.loc38_22.1: %i32 = value_of_initializer %G.call -// CHECK:STDOUT: %.loc38_22.2: %i32 = converted %G.call, %.loc38_22.1 +// CHECK:STDOUT: %G.ref: %Base.G.type = name_ref G, @Base.%Base.G.decl [concrete = constants.%Base.G] +// CHECK:STDOUT: %Base.G.bound: = bound_method %a.ref, %G.ref +// CHECK:STDOUT: %Base.G.call: init %i32 = call %Base.G.bound(%a.ref) +// CHECK:STDOUT: %.loc38_22.1: %i32 = value_of_initializer %Base.G.call +// CHECK:STDOUT: %.loc38_22.2: %i32 = converted %Base.G.call, %.loc38_22.1 // CHECK:STDOUT: return %.loc38_22.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -293,13 +293,13 @@ fn PassDerivedToBaseIndirect(p: Derived*) -> i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %p.ref: %ptr.404 = name_ref p, %p // CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [concrete = constants.%Base] -// CHECK:STDOUT: %G.ref: %G.type.6ee = name_ref G, @Base.%G.decl [concrete = constants.%G.663] +// CHECK:STDOUT: %G.ref: %Base.G.type = name_ref G, @Base.%Base.G.decl [concrete = constants.%Base.G] // CHECK:STDOUT: %.loc42_11.1: ref %Derived = deref %p.ref -// CHECK:STDOUT: %G.bound: = bound_method %.loc42_11.1, %G.ref +// CHECK:STDOUT: %Base.G.bound: = bound_method %.loc42_11.1, %G.ref // CHECK:STDOUT: %.loc42_11.2: %Derived = bind_value %.loc42_11.1 -// CHECK:STDOUT: %G.call: init %i32 = call %G.bound(%.loc42_11.2) -// CHECK:STDOUT: %.loc42_23.1: %i32 = value_of_initializer %G.call -// CHECK:STDOUT: %.loc42_23.2: %i32 = converted %G.call, %.loc42_23.1 +// CHECK:STDOUT: %Base.G.call: init %i32 = call %Base.G.bound(%.loc42_11.2) +// CHECK:STDOUT: %.loc42_23.1: %i32 = value_of_initializer %Base.G.call +// CHECK:STDOUT: %.loc42_23.2: %i32 = converted %Base.G.call, %.loc42_23.1 // CHECK:STDOUT: return %.loc42_23.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/base_method_shadow.carbon b/toolchain/check/testdata/class/base_method_shadow.carbon index 369728573f2e..5b9242e451ca 100644 --- a/toolchain/check/testdata/class/base_method_shadow.carbon +++ b/toolchain/check/testdata/class/base_method_shadow.carbon @@ -44,25 +44,25 @@ fn Call(a: A*, b: B*, c: C*, d: D*) { // CHECK:STDOUT: %ptr.6db: type = ptr_type %A [concrete] // CHECK:STDOUT: %pattern_type.5f8: type = pattern_type %ptr.6db [concrete] // CHECK:STDOUT: %pattern_type.f6d: type = pattern_type auto [concrete] -// CHECK:STDOUT: %F.type.649: type = fn_type @F.loc16 [concrete] +// CHECK:STDOUT: %A.F.type: type = fn_type @A.F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F.485: %F.type.649 = struct_value () [concrete] +// CHECK:STDOUT: %A.F: %A.F.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %B: type = class_type @B [concrete] // CHECK:STDOUT: %B.elem: type = unbound_element_type %B, %A [concrete] // CHECK:STDOUT: %ptr.e79: type = ptr_type %B [concrete] // CHECK:STDOUT: %pattern_type.960: type = pattern_type %ptr.e79 [concrete] -// CHECK:STDOUT: %F.type.8c6: type = fn_type @F.loc21 [concrete] -// CHECK:STDOUT: %F.92a: %F.type.8c6 = struct_value () [concrete] +// CHECK:STDOUT: %B.F.type: type = fn_type @B.F [concrete] +// CHECK:STDOUT: %B.F: %B.F.type = struct_value () [concrete] // CHECK:STDOUT: %struct_type.base.953: type = struct_type {.base: %A} [concrete] // CHECK:STDOUT: %complete_type.020: = complete_type_witness %struct_type.base.953 [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %B [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] // CHECK:STDOUT: %pattern_type.44a: type = pattern_type %ptr.019 [concrete] -// CHECK:STDOUT: %F.type.c29: type = fn_type @F.loc26 [concrete] -// CHECK:STDOUT: %F.437: %F.type.c29 = struct_value () [concrete] +// CHECK:STDOUT: %C.F.type: type = fn_type @C.F [concrete] +// CHECK:STDOUT: %C.F: %C.F.type = struct_value () [concrete] // CHECK:STDOUT: %struct_type.base.0ff: type = struct_type {.base: %B} [concrete] // CHECK:STDOUT: %complete_type.98e: = complete_type_witness %struct_type.base.0ff [concrete] // CHECK:STDOUT: %D: type = class_type @D [concrete] @@ -132,7 +132,7 @@ fn Call(a: A*, b: B*, c: C*, d: D*) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A { -// CHECK:STDOUT: %F.decl: %F.type.649 = fn_decl @F.loc16 [concrete = constants.%F.485] { +// CHECK:STDOUT: %A.F.decl: %A.F.type = fn_decl @A.F [concrete = constants.%A.F] { // CHECK:STDOUT: %self.patt: %pattern_type.5f8 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.5f8 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %.loc16_8: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] @@ -150,13 +150,13 @@ fn Call(a: A*, b: B*, c: C*, d: D*) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %A.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A] // CHECK:STDOUT: %.loc20: %B.elem = base_decl %A.ref, element0 [concrete] -// CHECK:STDOUT: %F.decl: %F.type.8c6 = fn_decl @F.loc21 [concrete = constants.%F.92a] { +// CHECK:STDOUT: %B.F.decl: %B.F.type = fn_decl @B.F [concrete = constants.%B.F] { // CHECK:STDOUT: %self.patt: %pattern_type.960 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.960 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %.loc21_8: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] @@ -176,14 +176,14 @@ fn Call(a: A*, b: B*, c: C*, d: D*) { // CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: .A = // CHECK:STDOUT: .base = %.loc20 -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %B.F.decl // CHECK:STDOUT: extend %A.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B] // CHECK:STDOUT: %.loc25: %C.elem = base_decl %B.ref, element0 [concrete] -// CHECK:STDOUT: %F.decl: %F.type.c29 = fn_decl @F.loc26 [concrete = constants.%F.437] { +// CHECK:STDOUT: %C.F.decl: %C.F.type = fn_decl @C.F [concrete = constants.%C.F] { // CHECK:STDOUT: %self.patt: %pattern_type.44a = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.44a = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %.loc26_8: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] @@ -203,7 +203,7 @@ fn Call(a: A*, b: B*, c: C*, d: D*) { // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .B = // CHECK:STDOUT: .base = %.loc25 -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %C.F.decl // CHECK:STDOUT: extend %B.ref // CHECK:STDOUT: } // CHECK:STDOUT: @@ -222,42 +222,42 @@ fn Call(a: A*, b: B*, c: C*, d: D*) { // CHECK:STDOUT: extend %B.ref // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc16(%self.param: %ptr.6db); +// CHECK:STDOUT: fn @A.F(%self.param: %ptr.6db); // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc21(%self.param: %ptr.e79); +// CHECK:STDOUT: fn @B.F(%self.param: %ptr.e79); // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc26(%self.param: %ptr.019); +// CHECK:STDOUT: fn @C.F(%self.param: %ptr.019); // CHECK:STDOUT: // CHECK:STDOUT: fn @Call(%a.param: %ptr.6db, %b.param: %ptr.e79, %c.param: %ptr.019, %d.param: %ptr.19c) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %ptr.6db = name_ref a, %a // CHECK:STDOUT: %.loc34: ref %A = deref %a.ref -// CHECK:STDOUT: %F.ref.loc34: %F.type.649 = name_ref F, @A.%F.decl [concrete = constants.%F.485] -// CHECK:STDOUT: %F.bound.loc34: = bound_method %.loc34, %F.ref.loc34 +// CHECK:STDOUT: %F.ref.loc34: %A.F.type = name_ref F, @A.%A.F.decl [concrete = constants.%A.F] +// CHECK:STDOUT: %A.F.bound: = bound_method %.loc34, %F.ref.loc34 // CHECK:STDOUT: %addr.loc34: %ptr.6db = addr_of %.loc34 -// CHECK:STDOUT: %F.call.loc34: init %empty_tuple.type = call %F.bound.loc34(%addr.loc34) +// CHECK:STDOUT: %A.F.call: init %empty_tuple.type = call %A.F.bound(%addr.loc34) // CHECK:STDOUT: %b.ref: %ptr.e79 = name_ref b, %b // CHECK:STDOUT: %.loc35: ref %B = deref %b.ref -// CHECK:STDOUT: %F.ref.loc35: %F.type.8c6 = name_ref F, @B.%F.decl [concrete = constants.%F.92a] -// CHECK:STDOUT: %F.bound.loc35: = bound_method %.loc35, %F.ref.loc35 +// CHECK:STDOUT: %F.ref.loc35: %B.F.type = name_ref F, @B.%B.F.decl [concrete = constants.%B.F] +// CHECK:STDOUT: %B.F.bound.loc35: = bound_method %.loc35, %F.ref.loc35 // CHECK:STDOUT: %addr.loc35: %ptr.e79 = addr_of %.loc35 -// CHECK:STDOUT: %F.call.loc35: init %empty_tuple.type = call %F.bound.loc35(%addr.loc35) +// CHECK:STDOUT: %B.F.call.loc35: init %empty_tuple.type = call %B.F.bound.loc35(%addr.loc35) // CHECK:STDOUT: %c.ref: %ptr.019 = name_ref c, %c // CHECK:STDOUT: %.loc36: ref %C = deref %c.ref -// CHECK:STDOUT: %F.ref.loc36: %F.type.c29 = name_ref F, @C.%F.decl [concrete = constants.%F.437] -// CHECK:STDOUT: %F.bound.loc36: = bound_method %.loc36, %F.ref.loc36 +// CHECK:STDOUT: %F.ref.loc36: %C.F.type = name_ref F, @C.%C.F.decl [concrete = constants.%C.F] +// CHECK:STDOUT: %C.F.bound: = bound_method %.loc36, %F.ref.loc36 // CHECK:STDOUT: %addr.loc36: %ptr.019 = addr_of %.loc36 -// CHECK:STDOUT: %F.call.loc36: init %empty_tuple.type = call %F.bound.loc36(%addr.loc36) +// CHECK:STDOUT: %C.F.call: init %empty_tuple.type = call %C.F.bound(%addr.loc36) // CHECK:STDOUT: %d.ref: %ptr.19c = name_ref d, %d // CHECK:STDOUT: %.loc37_4.1: ref %D = deref %d.ref -// CHECK:STDOUT: %F.ref.loc37: %F.type.8c6 = name_ref F, @B.%F.decl [concrete = constants.%F.92a] -// CHECK:STDOUT: %F.bound.loc37: = bound_method %.loc37_4.1, %F.ref.loc37 +// CHECK:STDOUT: %F.ref.loc37: %B.F.type = name_ref F, @B.%B.F.decl [concrete = constants.%B.F] +// CHECK:STDOUT: %B.F.bound.loc37: = bound_method %.loc37_4.1, %F.ref.loc37 // CHECK:STDOUT: %addr.loc37_4.1: %ptr.19c = addr_of %.loc37_4.1 // CHECK:STDOUT: %.loc37_4.2: ref %D = deref %addr.loc37_4.1 // CHECK:STDOUT: %.loc37_4.3: ref %B = class_element_access %.loc37_4.2, element0 // CHECK:STDOUT: %addr.loc37_4.2: %ptr.e79 = addr_of %.loc37_4.3 // CHECK:STDOUT: %.loc37_4.4: %ptr.e79 = converted %addr.loc37_4.1, %addr.loc37_4.2 -// CHECK:STDOUT: %F.call.loc37: init %empty_tuple.type = call %F.bound.loc37(%.loc37_4.4) +// CHECK:STDOUT: %B.F.call.loc37: init %empty_tuple.type = call %B.F.bound.loc37(%.loc37_4.4) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/basic.carbon b/toolchain/check/testdata/class/basic.carbon index 4b572eb66c2a..5034ec9c1cf2 100644 --- a/toolchain/check/testdata/class/basic.carbon +++ b/toolchain/check/testdata/class/basic.carbon @@ -39,10 +39,10 @@ fn Run() -> i32 { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %G.type: type = fn_type @G [concrete] -// CHECK:STDOUT: %G: %G.type = struct_value () [concrete] +// CHECK:STDOUT: %Class.F.type: type = fn_type @Class.F [concrete] +// CHECK:STDOUT: %Class.F: %Class.F.type = struct_value () [concrete] +// CHECK:STDOUT: %Class.G.type: type = fn_type @Class.G [concrete] +// CHECK:STDOUT: %Class.G: %Class.G.type = struct_value () [concrete] // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %i32 [concrete] // CHECK:STDOUT: %struct_type.k: type = struct_type {.k: %i32} [concrete] // CHECK:STDOUT: %complete_type.954: = complete_type_witness %struct_type.k [concrete] @@ -52,18 +52,18 @@ fn Run() -> i32 { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_4.0c1, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_4.0c1, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_4.0c1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_4.0c1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_4.940: %i32 = int_value 4 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -76,8 +76,8 @@ fn Run() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -88,7 +88,7 @@ fn Run() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Class.decl: type = class_decl @Class [concrete = constants.%Class] {} {} -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { +// CHECK:STDOUT: %Class.G.decl: %Class.G.type = fn_decl @Class.G [concrete = constants.%Class.G] { // CHECK:STDOUT: %n.patt: %pattern_type.7ce = binding_pattern n [concrete] // CHECK:STDOUT: %n.param_patt: %pattern_type.7ce = value_param_pattern %n.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] @@ -119,7 +119,7 @@ fn Run() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { +// CHECK:STDOUT: %Class.F.decl: %Class.F.type = fn_decl @Class.F [concrete = constants.%Class.F] { // CHECK:STDOUT: %n.patt: %pattern_type.7ce = binding_pattern n [concrete] // CHECK:STDOUT: %n.param_patt: %pattern_type.7ce = value_param_pattern %n.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] @@ -136,7 +136,7 @@ fn Run() -> i32 { // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param1 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { +// CHECK:STDOUT: %Class.G.decl: %Class.G.type = fn_decl @Class.G [concrete = constants.%Class.G] { // CHECK:STDOUT: %n.patt: %pattern_type.7ce = binding_pattern n [concrete] // CHECK:STDOUT: %n.param_patt: %pattern_type.7ce = value_param_pattern %n.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] @@ -162,18 +162,18 @@ fn Run() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .F = %Class.F.decl +// CHECK:STDOUT: .G = %Class.G.decl // CHECK:STDOUT: .k = %.loc22 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F(%n.param: %i32) -> %i32 { +// CHECK:STDOUT: fn @Class.F(%n.param: %i32) -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %n.ref: %i32 = name_ref n, %n // CHECK:STDOUT: return %n.ref // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G(%n.param.loc25: %i32) -> %i32 { +// CHECK:STDOUT: fn @Class.G(%n.param.loc25: %i32) -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %n.ref: %i32 = name_ref n, %n.loc25 // CHECK:STDOUT: return %n.ref @@ -182,18 +182,18 @@ fn Run() -> i32 { // CHECK:STDOUT: fn @Run() -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, @Class.%F.decl [concrete = constants.%F] +// CHECK:STDOUT: %F.ref: %Class.F.type = name_ref F, @Class.%Class.F.decl [concrete = constants.%Class.F] // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete = constants.%int_4.0c1] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc30_18.1: = bound_method %int_4, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc30_18.1: = bound_method %int_4, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc30_18.2: = bound_method %int_4, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc30_18.2(%int_4) [concrete = constants.%int_4.940] -// CHECK:STDOUT: %.loc30_18.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_4.940] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc30_18.2(%int_4) [concrete = constants.%int_4.940] +// CHECK:STDOUT: %.loc30_18.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_4.940] // CHECK:STDOUT: %.loc30_18.2: %i32 = converted %int_4, %.loc30_18.1 [concrete = constants.%int_4.940] -// CHECK:STDOUT: %F.call: init %i32 = call %F.ref(%.loc30_18.2) -// CHECK:STDOUT: %.loc30_20.1: %i32 = value_of_initializer %F.call -// CHECK:STDOUT: %.loc30_20.2: %i32 = converted %F.call, %.loc30_20.1 +// CHECK:STDOUT: %Class.F.call: init %i32 = call %F.ref(%.loc30_18.2) +// CHECK:STDOUT: %.loc30_20.1: %i32 = value_of_initializer %Class.F.call +// CHECK:STDOUT: %.loc30_20.2: %i32 = converted %Class.F.call, %.loc30_20.1 // CHECK:STDOUT: return %.loc30_20.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/complete_in_member_fn.carbon b/toolchain/check/testdata/class/complete_in_member_fn.carbon index 51eec364d559..e3506ab4d932 100644 --- a/toolchain/check/testdata/class/complete_in_member_fn.carbon +++ b/toolchain/check/testdata/class/complete_in_member_fn.carbon @@ -28,8 +28,8 @@ class C { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %C.F.type: type = fn_type @C.F [concrete] +// CHECK:STDOUT: %C.F: %C.F.type = struct_value () [concrete] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %i32 [concrete] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %i32} [concrete] // CHECK:STDOUT: %complete_type.fd7: = complete_type_witness %struct_type.a [concrete] @@ -54,7 +54,7 @@ class C { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { +// CHECK:STDOUT: %C.F.decl: %C.F.type = fn_decl @C.F [concrete = constants.%C.F] { // CHECK:STDOUT: %c.patt: %pattern_type.c48 = binding_pattern c [concrete] // CHECK:STDOUT: %c.param_patt: %pattern_type.c48 = value_param_pattern %c.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] @@ -78,11 +78,11 @@ class C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .C = -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %C.F.decl // CHECK:STDOUT: .a = %.loc18 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F(%c.param: %C) -> %i32 { +// CHECK:STDOUT: fn @C.F(%c.param: %C) -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %c.ref: %C = name_ref c, %c // CHECK:STDOUT: %a.ref: %C.elem = name_ref a, @C.%.loc18 [concrete = @C.%.loc18] diff --git a/toolchain/check/testdata/class/derived_to_base.carbon b/toolchain/check/testdata/class/derived_to_base.carbon index 414682561f8d..7a19dc25dd12 100644 --- a/toolchain/check/testdata/class/derived_to_base.carbon +++ b/toolchain/check/testdata/class/derived_to_base.carbon @@ -93,32 +93,32 @@ fn ConvertInit() { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %A.val: %A = struct_value (%int_1.5d2) [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %B.val: %B = struct_value (%A.val, %int_2.ef8) [concrete] -// CHECK:STDOUT: %Convert.bound.b30: = bound_method %int_3.1ba, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.047: = bound_method %int_3.1ba, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.b30: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.047: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_3.822: %i32 = int_value 3 [concrete] // CHECK:STDOUT: %C.val: %C = struct_value (%B.val, %int_3.822) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.153: type = fn_type @Op.1, @Destroy.impl(%C) [concrete] -// CHECK:STDOUT: %Op.5d7: %Op.type.153 = struct_value () [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.5d7, @Op.1(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.153: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.5d7: %T.as.Destroy.impl.Op.type.153 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(%C) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -131,8 +131,8 @@ fn ConvertInit() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -351,12 +351,12 @@ fn ConvertInit() { // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] // CHECK:STDOUT: %.loc42_57.1: %struct_type.base.c.136 = struct_literal (%.loc42_48.1, %int_3) // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] -// CHECK:STDOUT: %impl.elem0.loc42_39: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc42_39.1: = bound_method %int_1, %impl.elem0.loc42_39 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc42_39: = specific_function %impl.elem0.loc42_39, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc42_39: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc42_39.1: = bound_method %int_1, %impl.elem0.loc42_39 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc42_39: = specific_function %impl.elem0.loc42_39, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc42_39.2: = bound_method %int_1, %specific_fn.loc42_39 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc42_39: init %i32 = call %bound_method.loc42_39.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc42_39.2: init %i32 = converted %int_1, %int.convert_checked.loc42_39 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc42_39: init %i32 = call %bound_method.loc42_39.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc42_39.2: init %i32 = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc42_39 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc42_57.2: ref %C = temporary_storage // CHECK:STDOUT: %.loc42_57.3: ref %B = class_element_access %.loc42_57.2, element0 // CHECK:STDOUT: %.loc42_48.2: ref %A = class_element_access %.loc42_57.3, element0 @@ -364,22 +364,22 @@ fn ConvertInit() { // CHECK:STDOUT: %.loc42_39.4: init %i32 = initialize_from %.loc42_39.2 to %.loc42_39.3 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc42_39.5: init %A = class_init (%.loc42_39.4), %.loc42_48.2 [concrete = constants.%A.val] // CHECK:STDOUT: %.loc42_48.3: init %A = converted %.loc42_39.1, %.loc42_39.5 [concrete = constants.%A.val] -// CHECK:STDOUT: %impl.elem0.loc42_48: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc42_48.1: = bound_method %int_2, %impl.elem0.loc42_48 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc42_48: = specific_function %impl.elem0.loc42_48, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc42_48: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc42_48.1: = bound_method %int_2, %impl.elem0.loc42_48 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc42_48: = specific_function %impl.elem0.loc42_48, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc42_48.2: = bound_method %int_2, %specific_fn.loc42_48 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc42_48: init %i32 = call %bound_method.loc42_48.2(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc42_48.4: init %i32 = converted %int_2, %int.convert_checked.loc42_48 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc42_48: init %i32 = call %bound_method.loc42_48.2(%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc42_48.4: init %i32 = converted %int_2, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc42_48 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc42_48.5: ref %i32 = class_element_access %.loc42_57.3, element1 // CHECK:STDOUT: %.loc42_48.6: init %i32 = initialize_from %.loc42_48.4 to %.loc42_48.5 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc42_48.7: init %B = class_init (%.loc42_48.3, %.loc42_48.6), %.loc42_57.3 [concrete = constants.%B.val] // CHECK:STDOUT: %.loc42_57.4: init %B = converted %.loc42_48.1, %.loc42_48.7 [concrete = constants.%B.val] -// CHECK:STDOUT: %impl.elem0.loc42_57: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc42_57.1: = bound_method %int_3, %impl.elem0.loc42_57 [concrete = constants.%Convert.bound.b30] -// CHECK:STDOUT: %specific_fn.loc42_57: = specific_function %impl.elem0.loc42_57, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc42_57: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc42_57.1: = bound_method %int_3, %impl.elem0.loc42_57 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.b30] +// CHECK:STDOUT: %specific_fn.loc42_57: = specific_function %impl.elem0.loc42_57, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc42_57.2: = bound_method %int_3, %specific_fn.loc42_57 [concrete = constants.%bound_method.047] -// CHECK:STDOUT: %int.convert_checked.loc42_57: init %i32 = call %bound_method.loc42_57.2(%int_3) [concrete = constants.%int_3.822] -// CHECK:STDOUT: %.loc42_57.5: init %i32 = converted %int_3, %int.convert_checked.loc42_57 [concrete = constants.%int_3.822] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc42_57: init %i32 = call %bound_method.loc42_57.2(%int_3) [concrete = constants.%int_3.822] +// CHECK:STDOUT: %.loc42_57.5: init %i32 = converted %int_3, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc42_57 [concrete = constants.%int_3.822] // CHECK:STDOUT: %.loc42_57.6: ref %i32 = class_element_access %.loc42_57.2, element1 // CHECK:STDOUT: %.loc42_57.7: init %i32 = initialize_from %.loc42_57.5 to %.loc42_57.6 [concrete = constants.%int_3.822] // CHECK:STDOUT: %.loc42_57.8: init %C = class_init (%.loc42_57.4, %.loc42_57.7), %.loc42_57.2 [concrete = constants.%C.val] @@ -391,11 +391,11 @@ fn ConvertInit() { // CHECK:STDOUT: %.loc42_59.4: ref %A = converted %.loc42_59.1, %.loc42_59.3 // CHECK:STDOUT: %.loc42_59.5: %A = bind_value %.loc42_59.4 // CHECK:STDOUT: %a: %A = bind_name a, %.loc42_59.5 -// CHECK:STDOUT: %Op.bound: = bound_method %.loc42_57.2, constants.%Op.5d7 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.5d7, @Op.1(constants.%C) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc42_57.3: = bound_method %.loc42_57.2, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc42_57.2, constants.%T.as.Destroy.impl.Op.5d7 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(constants.%C) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc42_57.3: = bound_method %.loc42_57.2, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc42_57.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc42_57.3(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc42_57.3(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/destroy_calls.carbon b/toolchain/check/testdata/class/destroy_calls.carbon index 03caab4b91c5..b75332f74a0e 100644 --- a/toolchain/check/testdata/class/destroy_calls.carbon +++ b/toolchain/check/testdata/class/destroy_calls.carbon @@ -110,29 +110,29 @@ fn G() { F({}); } // CHECK:STDOUT: constants { // CHECK:STDOUT: %NoAddr: type = class_type @NoAddr [concrete] // CHECK:STDOUT: %pattern_type.88f: type = pattern_type %NoAddr [concrete] -// CHECK:STDOUT: %Make.type.bc9: type = fn_type @Make.loc5 [concrete] +// CHECK:STDOUT: %NoAddr.Make.type: type = fn_type @NoAddr.Make [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %Make.1be: %Make.type.bc9 = struct_value () [concrete] -// CHECK:STDOUT: %destroy.type.bc5: type = fn_type @destroy.loc6 [concrete] -// CHECK:STDOUT: %destroy.60f: %destroy.type.bc5 = struct_value () [concrete] +// CHECK:STDOUT: %NoAddr.Make: %NoAddr.Make.type = struct_value () [concrete] +// CHECK:STDOUT: %NoAddr.destroy.type: type = fn_type @NoAddr.destroy [concrete] +// CHECK:STDOUT: %NoAddr.destroy: %NoAddr.destroy.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %ExplicitReturn: type = class_type @ExplicitReturn [concrete] // CHECK:STDOUT: %pattern_type.611: type = pattern_type %ExplicitReturn [concrete] -// CHECK:STDOUT: %Make.type.378: type = fn_type @Make.loc10 [concrete] -// CHECK:STDOUT: %Make.960: %Make.type.378 = struct_value () [concrete] +// CHECK:STDOUT: %ExplicitReturn.Make.type: type = fn_type @ExplicitReturn.Make [concrete] +// CHECK:STDOUT: %ExplicitReturn.Make: %ExplicitReturn.Make.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] -// CHECK:STDOUT: %destroy.type.dfa: type = fn_type @destroy.loc11 [concrete] -// CHECK:STDOUT: %destroy.539: %destroy.type.dfa = struct_value () [concrete] +// CHECK:STDOUT: %ExplicitReturn.destroy.type: type = fn_type @ExplicitReturn.destroy [concrete] +// CHECK:STDOUT: %ExplicitReturn.destroy: %ExplicitReturn.destroy.type = struct_value () [concrete] // CHECK:STDOUT: %WithAddr: type = class_type @WithAddr [concrete] // CHECK:STDOUT: %pattern_type.f93: type = pattern_type %WithAddr [concrete] -// CHECK:STDOUT: %Make.type.e14: type = fn_type @Make.loc15 [concrete] -// CHECK:STDOUT: %Make.b0a: %Make.type.e14 = struct_value () [concrete] +// CHECK:STDOUT: %WithAddr.Make.type: type = fn_type @WithAddr.Make [concrete] +// CHECK:STDOUT: %WithAddr.Make: %WithAddr.Make.type = struct_value () [concrete] // CHECK:STDOUT: %ptr: type = ptr_type %WithAddr [concrete] // CHECK:STDOUT: %pattern_type.4a0: type = pattern_type %ptr [concrete] // CHECK:STDOUT: %pattern_type.f6d: type = pattern_type auto [concrete] -// CHECK:STDOUT: %destroy.type.02f: type = fn_type @destroy.loc16 [concrete] -// CHECK:STDOUT: %destroy.8d0: %destroy.type.02f = struct_value () [concrete] +// CHECK:STDOUT: %WithAddr.destroy.type: type = fn_type @WithAddr.destroy [concrete] +// CHECK:STDOUT: %WithAddr.destroy: %WithAddr.destroy.type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -156,7 +156,7 @@ fn G() { F({}); } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NoAddr { -// CHECK:STDOUT: %Make.decl: %Make.type.bc9 = fn_decl @Make.loc5 [concrete = constants.%Make.1be] { +// CHECK:STDOUT: %NoAddr.Make.decl: %NoAddr.Make.type = fn_decl @NoAddr.Make [concrete = constants.%NoAddr.Make] { // CHECK:STDOUT: %return.patt: %pattern_type.88f = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.88f = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -164,7 +164,7 @@ fn G() { F({}); } // CHECK:STDOUT: %return.param: ref %NoAddr = out_param call_param0 // CHECK:STDOUT: %return: ref %NoAddr = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %destroy.decl: %destroy.type.bc5 = fn_decl @destroy.loc6 [concrete = constants.%destroy.60f] { +// CHECK:STDOUT: %NoAddr.destroy.decl: %NoAddr.destroy.type = fn_decl @NoAddr.destroy [concrete = constants.%NoAddr.destroy] { // CHECK:STDOUT: %self.patt: %pattern_type.88f = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.88f = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -179,12 +179,12 @@ fn G() { F({}); } // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%NoAddr // CHECK:STDOUT: .NoAddr = -// CHECK:STDOUT: .Make = %Make.decl -// CHECK:STDOUT: .destroy = %destroy.decl +// CHECK:STDOUT: .Make = %NoAddr.Make.decl +// CHECK:STDOUT: .destroy = %NoAddr.destroy.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @ExplicitReturn { -// CHECK:STDOUT: %Make.decl: %Make.type.378 = fn_decl @Make.loc10 [concrete = constants.%Make.960] { +// CHECK:STDOUT: %ExplicitReturn.Make.decl: %ExplicitReturn.Make.type = fn_decl @ExplicitReturn.Make [concrete = constants.%ExplicitReturn.Make] { // CHECK:STDOUT: %return.patt: %pattern_type.611 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.611 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -192,7 +192,7 @@ fn G() { F({}); } // CHECK:STDOUT: %return.param: ref %ExplicitReturn = out_param call_param0 // CHECK:STDOUT: %return: ref %ExplicitReturn = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %destroy.decl: %destroy.type.dfa = fn_decl @destroy.loc11 [concrete = constants.%destroy.539] { +// CHECK:STDOUT: %ExplicitReturn.destroy.decl: %ExplicitReturn.destroy.type = fn_decl @ExplicitReturn.destroy [concrete = constants.%ExplicitReturn.destroy] { // CHECK:STDOUT: %self.patt: %pattern_type.611 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.611 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.cb1 = return_slot_pattern [concrete] @@ -213,12 +213,12 @@ fn G() { F({}); } // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%ExplicitReturn // CHECK:STDOUT: .ExplicitReturn = -// CHECK:STDOUT: .Make = %Make.decl -// CHECK:STDOUT: .destroy = %destroy.decl +// CHECK:STDOUT: .Make = %ExplicitReturn.Make.decl +// CHECK:STDOUT: .destroy = %ExplicitReturn.destroy.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @WithAddr { -// CHECK:STDOUT: %Make.decl: %Make.type.e14 = fn_decl @Make.loc15 [concrete = constants.%Make.b0a] { +// CHECK:STDOUT: %WithAddr.Make.decl: %WithAddr.Make.type = fn_decl @WithAddr.Make [concrete = constants.%WithAddr.Make] { // CHECK:STDOUT: %return.patt: %pattern_type.f93 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.f93 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -226,7 +226,7 @@ fn G() { F({}); } // CHECK:STDOUT: %return.param: ref %WithAddr = out_param call_param0 // CHECK:STDOUT: %return: ref %WithAddr = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %destroy.decl: %destroy.type.02f = fn_decl @destroy.loc16 [concrete = constants.%destroy.8d0] { +// CHECK:STDOUT: %WithAddr.destroy.decl: %WithAddr.destroy.type = fn_decl @WithAddr.destroy [concrete = constants.%WithAddr.destroy] { // CHECK:STDOUT: %self.patt: %pattern_type.4a0 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.4a0 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %.loc16_14: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] @@ -245,21 +245,21 @@ fn G() { F({}); } // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%WithAddr // CHECK:STDOUT: .WithAddr = -// CHECK:STDOUT: .Make = %Make.decl -// CHECK:STDOUT: .destroy = %destroy.decl +// CHECK:STDOUT: .Make = %WithAddr.Make.decl +// CHECK:STDOUT: .destroy = %WithAddr.destroy.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Make.loc5() -> %NoAddr; +// CHECK:STDOUT: fn @NoAddr.Make() -> %NoAddr; // CHECK:STDOUT: -// CHECK:STDOUT: fn @destroy.loc6(%self.param: %NoAddr); +// CHECK:STDOUT: fn @NoAddr.destroy(%self.param: %NoAddr); // CHECK:STDOUT: -// CHECK:STDOUT: fn @Make.loc10() -> %ExplicitReturn; +// CHECK:STDOUT: fn @ExplicitReturn.Make() -> %ExplicitReturn; // CHECK:STDOUT: -// CHECK:STDOUT: fn @destroy.loc11(%self.param: %ExplicitReturn) -> %empty_tuple.type; +// CHECK:STDOUT: fn @ExplicitReturn.destroy(%self.param: %ExplicitReturn) -> %empty_tuple.type; // CHECK:STDOUT: -// CHECK:STDOUT: fn @Make.loc15() -> %WithAddr; +// CHECK:STDOUT: fn @WithAddr.Make() -> %WithAddr; // CHECK:STDOUT: -// CHECK:STDOUT: fn @destroy.loc16(%self.param: %ptr); +// CHECK:STDOUT: fn @WithAddr.destroy(%self.param: %ptr); // CHECK:STDOUT: // CHECK:STDOUT: --- implicit_return.carbon // CHECK:STDOUT: @@ -276,18 +276,18 @@ fn G() { F({}); } // CHECK:STDOUT: %WithAddr: type = class_type @WithAddr [concrete] // CHECK:STDOUT: %pattern_type.f93: type = pattern_type %WithAddr [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.8f4: type = fn_type @Op.1, @Destroy.impl(%WithAddr) [concrete] -// CHECK:STDOUT: %Op.bec: %Op.type.8f4 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.8f4: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%WithAddr) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bec: %T.as.Destroy.impl.Op.type.8f4 = struct_value () [concrete] // CHECK:STDOUT: %ptr.b4e: type = ptr_type %WithAddr [concrete] -// CHECK:STDOUT: %Op.specific_fn.b42: = specific_function %Op.bec, @Op.1(%WithAddr) [concrete] -// CHECK:STDOUT: %Op.type.641: type = fn_type @Op.1, @Destroy.impl(%ExplicitReturn) [concrete] -// CHECK:STDOUT: %Op.8e6: %Op.type.641 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.b42: = specific_function %T.as.Destroy.impl.Op.bec, @T.as.Destroy.impl.Op(%WithAddr) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.641: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%ExplicitReturn) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.8e6: %T.as.Destroy.impl.Op.type.641 = struct_value () [concrete] // CHECK:STDOUT: %ptr.b0a: type = ptr_type %ExplicitReturn [concrete] -// CHECK:STDOUT: %Op.specific_fn.523: = specific_function %Op.8e6, @Op.1(%ExplicitReturn) [concrete] -// CHECK:STDOUT: %Op.type.73f: type = fn_type @Op.1, @Destroy.impl(%NoAddr) [concrete] -// CHECK:STDOUT: %Op.d78: %Op.type.73f = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.523: = specific_function %T.as.Destroy.impl.Op.8e6, @T.as.Destroy.impl.Op(%ExplicitReturn) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.73f: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%NoAddr) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.d78: %T.as.Destroy.impl.Op.type.73f = struct_value () [concrete] // CHECK:STDOUT: %ptr.4b8: type = ptr_type %NoAddr [concrete] -// CHECK:STDOUT: %Op.specific_fn.8fe: = specific_function %Op.d78, @Op.1(%NoAddr) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.8fe: = specific_function %T.as.Destroy.impl.Op.d78, @T.as.Destroy.impl.Op(%NoAddr) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -377,21 +377,21 @@ fn G() { F({}); } // CHECK:STDOUT: %with_addr.var: ref %WithAddr = var %with_addr.var_patt // CHECK:STDOUT: %WithAddr.ref: type = name_ref WithAddr, imports.%Main.WithAddr [concrete = constants.%WithAddr] // CHECK:STDOUT: %with_addr: ref %WithAddr = bind_name with_addr, %with_addr.var -// CHECK:STDOUT: %Op.bound.loc8: = bound_method %with_addr.var, constants.%Op.bec -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.bec, @Op.1(constants.%WithAddr) [concrete = constants.%Op.specific_fn.b42] -// CHECK:STDOUT: %bound_method.loc8: = bound_method %with_addr.var, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8: = bound_method %with_addr.var, constants.%T.as.Destroy.impl.Op.bec +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.bec, @T.as.Destroy.impl.Op(constants.%WithAddr) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.b42] +// CHECK:STDOUT: %bound_method.loc8: = bound_method %with_addr.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc8: %ptr.b4e = addr_of %with_addr.var -// CHECK:STDOUT: %no_op.loc8: init %empty_tuple.type = call %bound_method.loc8(%addr.loc8) -// CHECK:STDOUT: %Op.bound.loc7: = bound_method %explicit_return.var, constants.%Op.8e6 -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.8e6, @Op.1(constants.%ExplicitReturn) [concrete = constants.%Op.specific_fn.523] -// CHECK:STDOUT: %bound_method.loc7: = bound_method %explicit_return.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8: init %empty_tuple.type = call %bound_method.loc8(%addr.loc8) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc7: = bound_method %explicit_return.var, constants.%T.as.Destroy.impl.Op.8e6 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.8e6, @T.as.Destroy.impl.Op(constants.%ExplicitReturn) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.523] +// CHECK:STDOUT: %bound_method.loc7: = bound_method %explicit_return.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc7: %ptr.b0a = addr_of %explicit_return.var -// CHECK:STDOUT: %no_op.loc7: init %empty_tuple.type = call %bound_method.loc7(%addr.loc7) -// CHECK:STDOUT: %Op.bound.loc6: = bound_method %no_addr.var, constants.%Op.d78 -// CHECK:STDOUT: %Op.specific_fn.3: = specific_function constants.%Op.d78, @Op.1(constants.%NoAddr) [concrete = constants.%Op.specific_fn.8fe] -// CHECK:STDOUT: %bound_method.loc6: = bound_method %no_addr.var, %Op.specific_fn.3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc7: init %empty_tuple.type = call %bound_method.loc7(%addr.loc7) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc6: = bound_method %no_addr.var, constants.%T.as.Destroy.impl.Op.d78 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.3: = specific_function constants.%T.as.Destroy.impl.Op.d78, @T.as.Destroy.impl.Op(constants.%NoAddr) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.8fe] +// CHECK:STDOUT: %bound_method.loc6: = bound_method %no_addr.var, %T.as.Destroy.impl.Op.specific_fn.3 // CHECK:STDOUT: %addr.loc6: %ptr.4b8 = addr_of %no_addr.var -// CHECK:STDOUT: %no_op.loc6: init %empty_tuple.type = call %bound_method.loc6(%addr.loc6) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc6: init %empty_tuple.type = call %bound_method.loc6(%addr.loc6) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -411,18 +411,18 @@ fn G() { F({}); } // CHECK:STDOUT: %pattern_type.f93: type = pattern_type %WithAddr [concrete] // CHECK:STDOUT: %true: bool = bool_literal true [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.73f: type = fn_type @Op.1, @Destroy.impl(%NoAddr) [concrete] -// CHECK:STDOUT: %Op.d78: %Op.type.73f = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.73f: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%NoAddr) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.d78: %T.as.Destroy.impl.Op.type.73f = struct_value () [concrete] // CHECK:STDOUT: %ptr.4b8: type = ptr_type %NoAddr [concrete] -// CHECK:STDOUT: %Op.specific_fn.8fe: = specific_function %Op.d78, @Op.1(%NoAddr) [concrete] -// CHECK:STDOUT: %Op.type.8f4: type = fn_type @Op.1, @Destroy.impl(%WithAddr) [concrete] -// CHECK:STDOUT: %Op.bec: %Op.type.8f4 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.8fe: = specific_function %T.as.Destroy.impl.Op.d78, @T.as.Destroy.impl.Op(%NoAddr) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.8f4: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%WithAddr) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bec: %T.as.Destroy.impl.Op.type.8f4 = struct_value () [concrete] // CHECK:STDOUT: %ptr.b4e: type = ptr_type %WithAddr [concrete] -// CHECK:STDOUT: %Op.specific_fn.b42: = specific_function %Op.bec, @Op.1(%WithAddr) [concrete] -// CHECK:STDOUT: %Op.type.641: type = fn_type @Op.1, @Destroy.impl(%ExplicitReturn) [concrete] -// CHECK:STDOUT: %Op.8e6: %Op.type.641 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.b42: = specific_function %T.as.Destroy.impl.Op.bec, @T.as.Destroy.impl.Op(%WithAddr) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.641: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%ExplicitReturn) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.8e6: %T.as.Destroy.impl.Op.type.641 = struct_value () [concrete] // CHECK:STDOUT: %ptr.b0a: type = ptr_type %ExplicitReturn [concrete] -// CHECK:STDOUT: %Op.specific_fn.523: = specific_function %Op.8e6, @Op.1(%ExplicitReturn) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.523: = specific_function %T.as.Destroy.impl.Op.8e6, @T.as.Destroy.impl.Op(%ExplicitReturn) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -526,26 +526,26 @@ fn G() { F({}); } // CHECK:STDOUT: br !if.else // CHECK:STDOUT: // CHECK:STDOUT: !if.else: -// CHECK:STDOUT: %Op.bound.loc10: = bound_method %in_scope.var, constants.%Op.d78 -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.d78, @Op.1(constants.%NoAddr) [concrete = constants.%Op.specific_fn.8fe] -// CHECK:STDOUT: %bound_method.loc10: = bound_method %in_scope.var, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10: = bound_method %in_scope.var, constants.%T.as.Destroy.impl.Op.d78 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.d78, @T.as.Destroy.impl.Op(constants.%NoAddr) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.8fe] +// CHECK:STDOUT: %bound_method.loc10: = bound_method %in_scope.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc10: %ptr.4b8 = addr_of %in_scope.var -// CHECK:STDOUT: %no_op.loc10: init %empty_tuple.type = call %bound_method.loc10(%addr.loc10) -// CHECK:STDOUT: %Op.bound.loc8: = bound_method %with_addr.var, constants.%Op.bec -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.bec, @Op.1(constants.%WithAddr) [concrete = constants.%Op.specific_fn.b42] -// CHECK:STDOUT: %bound_method.loc8: = bound_method %with_addr.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10: init %empty_tuple.type = call %bound_method.loc10(%addr.loc10) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8: = bound_method %with_addr.var, constants.%T.as.Destroy.impl.Op.bec +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.bec, @T.as.Destroy.impl.Op(constants.%WithAddr) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.b42] +// CHECK:STDOUT: %bound_method.loc8: = bound_method %with_addr.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc8: %ptr.b4e = addr_of %with_addr.var -// CHECK:STDOUT: %no_op.loc8: init %empty_tuple.type = call %bound_method.loc8(%addr.loc8) -// CHECK:STDOUT: %Op.bound.loc7: = bound_method %explicit_return.var, constants.%Op.8e6 -// CHECK:STDOUT: %Op.specific_fn.3: = specific_function constants.%Op.8e6, @Op.1(constants.%ExplicitReturn) [concrete = constants.%Op.specific_fn.523] -// CHECK:STDOUT: %bound_method.loc7: = bound_method %explicit_return.var, %Op.specific_fn.3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8: init %empty_tuple.type = call %bound_method.loc8(%addr.loc8) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc7: = bound_method %explicit_return.var, constants.%T.as.Destroy.impl.Op.8e6 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.3: = specific_function constants.%T.as.Destroy.impl.Op.8e6, @T.as.Destroy.impl.Op(constants.%ExplicitReturn) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.523] +// CHECK:STDOUT: %bound_method.loc7: = bound_method %explicit_return.var, %T.as.Destroy.impl.Op.specific_fn.3 // CHECK:STDOUT: %addr.loc7: %ptr.b0a = addr_of %explicit_return.var -// CHECK:STDOUT: %no_op.loc7: init %empty_tuple.type = call %bound_method.loc7(%addr.loc7) -// CHECK:STDOUT: %Op.bound.loc6: = bound_method %no_addr.var, constants.%Op.d78 -// CHECK:STDOUT: %Op.specific_fn.4: = specific_function constants.%Op.d78, @Op.1(constants.%NoAddr) [concrete = constants.%Op.specific_fn.8fe] -// CHECK:STDOUT: %bound_method.loc6: = bound_method %no_addr.var, %Op.specific_fn.4 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc7: init %empty_tuple.type = call %bound_method.loc7(%addr.loc7) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc6: = bound_method %no_addr.var, constants.%T.as.Destroy.impl.Op.d78 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.4: = specific_function constants.%T.as.Destroy.impl.Op.d78, @T.as.Destroy.impl.Op(constants.%NoAddr) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.8fe] +// CHECK:STDOUT: %bound_method.loc6: = bound_method %no_addr.var, %T.as.Destroy.impl.Op.specific_fn.4 // CHECK:STDOUT: %addr.loc6: %ptr.4b8 = addr_of %no_addr.var -// CHECK:STDOUT: %no_op.loc6: init %empty_tuple.type = call %bound_method.loc6(%addr.loc6) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc6: init %empty_tuple.type = call %bound_method.loc6(%addr.loc6) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -558,27 +558,27 @@ fn G() { F({}); } // CHECK:STDOUT: %NoAddr: type = class_type @NoAddr [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] -// CHECK:STDOUT: %Make.type.bc9: type = fn_type @Make.1 [concrete] -// CHECK:STDOUT: %Make.1be: %Make.type.bc9 = struct_value () [concrete] +// CHECK:STDOUT: %NoAddr.Make.type: type = fn_type @NoAddr.Make [concrete] +// CHECK:STDOUT: %NoAddr.Make: %NoAddr.Make.type = struct_value () [concrete] // CHECK:STDOUT: %ExplicitReturn: type = class_type @ExplicitReturn [concrete] -// CHECK:STDOUT: %Make.type.378: type = fn_type @Make.2 [concrete] -// CHECK:STDOUT: %Make.960: %Make.type.378 = struct_value () [concrete] +// CHECK:STDOUT: %ExplicitReturn.Make.type: type = fn_type @ExplicitReturn.Make [concrete] +// CHECK:STDOUT: %ExplicitReturn.Make: %ExplicitReturn.Make.type = struct_value () [concrete] // CHECK:STDOUT: %WithAddr: type = class_type @WithAddr [concrete] -// CHECK:STDOUT: %Make.type.e14: type = fn_type @Make.3 [concrete] -// CHECK:STDOUT: %Make.b0a: %Make.type.e14 = struct_value () [concrete] +// CHECK:STDOUT: %WithAddr.Make.type: type = fn_type @WithAddr.Make [concrete] +// CHECK:STDOUT: %WithAddr.Make: %WithAddr.Make.type = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.8f4: type = fn_type @Op.1, @Destroy.impl(%WithAddr) [concrete] -// CHECK:STDOUT: %Op.bec: %Op.type.8f4 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.8f4: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%WithAddr) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bec: %T.as.Destroy.impl.Op.type.8f4 = struct_value () [concrete] // CHECK:STDOUT: %ptr.b4e: type = ptr_type %WithAddr [concrete] -// CHECK:STDOUT: %Op.specific_fn.b42: = specific_function %Op.bec, @Op.1(%WithAddr) [concrete] -// CHECK:STDOUT: %Op.type.641: type = fn_type @Op.1, @Destroy.impl(%ExplicitReturn) [concrete] -// CHECK:STDOUT: %Op.8e6: %Op.type.641 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.b42: = specific_function %T.as.Destroy.impl.Op.bec, @T.as.Destroy.impl.Op(%WithAddr) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.641: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%ExplicitReturn) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.8e6: %T.as.Destroy.impl.Op.type.641 = struct_value () [concrete] // CHECK:STDOUT: %ptr.b0a: type = ptr_type %ExplicitReturn [concrete] -// CHECK:STDOUT: %Op.specific_fn.523: = specific_function %Op.8e6, @Op.1(%ExplicitReturn) [concrete] -// CHECK:STDOUT: %Op.type.73f: type = fn_type @Op.1, @Destroy.impl(%NoAddr) [concrete] -// CHECK:STDOUT: %Op.d78: %Op.type.73f = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.523: = specific_function %T.as.Destroy.impl.Op.8e6, @T.as.Destroy.impl.Op(%ExplicitReturn) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.73f: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%NoAddr) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.d78: %T.as.Destroy.impl.Op.type.73f = struct_value () [concrete] // CHECK:STDOUT: %ptr.4b8: type = ptr_type %NoAddr [concrete] -// CHECK:STDOUT: %Op.specific_fn.8fe: = specific_function %Op.d78, @Op.1(%NoAddr) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.8fe: = specific_function %T.as.Destroy.impl.Op.d78, @T.as.Destroy.impl.Op(%NoAddr) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -592,15 +592,15 @@ fn G() { F({}); } // CHECK:STDOUT: } // CHECK:STDOUT: %Main.import_ref.8f24d3.1: = import_ref Main//types, loc7_1, loaded [concrete = constants.%complete_type.357] // CHECK:STDOUT: %Main.import_ref.f42 = import_ref Main//types, inst18 [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.784: %Make.type.bc9 = import_ref Main//types, loc5_22, loaded [concrete = constants.%Make.1be] +// CHECK:STDOUT: %Main.import_ref.784: %NoAddr.Make.type = import_ref Main//types, loc5_22, loaded [concrete = constants.%NoAddr.Make] // CHECK:STDOUT: %Main.import_ref.1ed = import_ref Main//types, loc6_27, unloaded // CHECK:STDOUT: %Main.import_ref.8f24d3.2: = import_ref Main//types, loc12_1, loaded [concrete = constants.%complete_type.357] // CHECK:STDOUT: %Main.import_ref.ee7 = import_ref Main//types, inst42 [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.8e0: %Make.type.378 = import_ref Main//types, loc10_30, loaded [concrete = constants.%Make.960] +// CHECK:STDOUT: %Main.import_ref.8e0: %ExplicitReturn.Make.type = import_ref Main//types, loc10_30, loaded [concrete = constants.%ExplicitReturn.Make] // CHECK:STDOUT: %Main.import_ref.f79 = import_ref Main//types, loc11_33, unloaded // CHECK:STDOUT: %Main.import_ref.8f24d3.3: = import_ref Main//types, loc17_1, loaded [concrete = constants.%complete_type.357] // CHECK:STDOUT: %Main.import_ref.95d = import_ref Main//types, inst70 [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.974: %Make.type.e14 = import_ref Main//types, loc15_24, loaded [concrete = constants.%Make.b0a] +// CHECK:STDOUT: %Main.import_ref.974: %WithAddr.Make.type = import_ref Main//types, loc15_24, loaded [concrete = constants.%WithAddr.Make] // CHECK:STDOUT: %Main.import_ref.675 = import_ref Main//types, loc16_33, unloaded // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } @@ -648,70 +648,70 @@ fn G() { F({}); } // CHECK:STDOUT: fn @F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %NoAddr.ref: type = name_ref NoAddr, imports.%Main.NoAddr [concrete = constants.%NoAddr] -// CHECK:STDOUT: %Make.ref.loc8: %Make.type.bc9 = name_ref Make, imports.%Main.import_ref.784 [concrete = constants.%Make.1be] +// CHECK:STDOUT: %Make.ref.loc8: %NoAddr.Make.type = name_ref Make, imports.%Main.import_ref.784 [concrete = constants.%NoAddr.Make] // CHECK:STDOUT: %.loc8_15.1: ref %NoAddr = temporary_storage -// CHECK:STDOUT: %Make.call.loc8: init %NoAddr = call %Make.ref.loc8() to %.loc8_15.1 -// CHECK:STDOUT: %.loc8_15.2: ref %NoAddr = temporary %.loc8_15.1, %Make.call.loc8 +// CHECK:STDOUT: %NoAddr.Make.call: init %NoAddr = call %Make.ref.loc8() to %.loc8_15.1 +// CHECK:STDOUT: %.loc8_15.2: ref %NoAddr = temporary %.loc8_15.1, %NoAddr.Make.call // CHECK:STDOUT: %ExplicitReturn.ref: type = name_ref ExplicitReturn, imports.%Main.ExplicitReturn [concrete = constants.%ExplicitReturn] -// CHECK:STDOUT: %Make.ref.loc9: %Make.type.378 = name_ref Make, imports.%Main.import_ref.8e0 [concrete = constants.%Make.960] +// CHECK:STDOUT: %Make.ref.loc9: %ExplicitReturn.Make.type = name_ref Make, imports.%Main.import_ref.8e0 [concrete = constants.%ExplicitReturn.Make] // CHECK:STDOUT: %.loc9_23.1: ref %ExplicitReturn = temporary_storage -// CHECK:STDOUT: %Make.call.loc9: init %ExplicitReturn = call %Make.ref.loc9() to %.loc9_23.1 -// CHECK:STDOUT: %.loc9_23.2: ref %ExplicitReturn = temporary %.loc9_23.1, %Make.call.loc9 +// CHECK:STDOUT: %ExplicitReturn.Make.call: init %ExplicitReturn = call %Make.ref.loc9() to %.loc9_23.1 +// CHECK:STDOUT: %.loc9_23.2: ref %ExplicitReturn = temporary %.loc9_23.1, %ExplicitReturn.Make.call // CHECK:STDOUT: %WithAddr.ref: type = name_ref WithAddr, imports.%Main.WithAddr [concrete = constants.%WithAddr] -// CHECK:STDOUT: %Make.ref.loc10: %Make.type.e14 = name_ref Make, imports.%Main.import_ref.974 [concrete = constants.%Make.b0a] +// CHECK:STDOUT: %Make.ref.loc10: %WithAddr.Make.type = name_ref Make, imports.%Main.import_ref.974 [concrete = constants.%WithAddr.Make] // CHECK:STDOUT: %.loc10_17.1: ref %WithAddr = temporary_storage -// CHECK:STDOUT: %Make.call.loc10: init %WithAddr = call %Make.ref.loc10() to %.loc10_17.1 -// CHECK:STDOUT: %.loc10_17.2: ref %WithAddr = temporary %.loc10_17.1, %Make.call.loc10 -// CHECK:STDOUT: %Op.bound.loc10: = bound_method %.loc10_17.1, constants.%Op.bec -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.bec, @Op.1(constants.%WithAddr) [concrete = constants.%Op.specific_fn.b42] -// CHECK:STDOUT: %bound_method.loc10: = bound_method %.loc10_17.1, %Op.specific_fn.1 +// CHECK:STDOUT: %WithAddr.Make.call: init %WithAddr = call %Make.ref.loc10() to %.loc10_17.1 +// CHECK:STDOUT: %.loc10_17.2: ref %WithAddr = temporary %.loc10_17.1, %WithAddr.Make.call +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10: = bound_method %.loc10_17.1, constants.%T.as.Destroy.impl.Op.bec +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.bec, @T.as.Destroy.impl.Op(constants.%WithAddr) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.b42] +// CHECK:STDOUT: %bound_method.loc10: = bound_method %.loc10_17.1, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc10: %ptr.b4e = addr_of %.loc10_17.1 -// CHECK:STDOUT: %no_op.loc10: init %empty_tuple.type = call %bound_method.loc10(%addr.loc10) -// CHECK:STDOUT: %Op.bound.loc9: = bound_method %.loc9_23.1, constants.%Op.8e6 -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.8e6, @Op.1(constants.%ExplicitReturn) [concrete = constants.%Op.specific_fn.523] -// CHECK:STDOUT: %bound_method.loc9: = bound_method %.loc9_23.1, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10: init %empty_tuple.type = call %bound_method.loc10(%addr.loc10) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc9: = bound_method %.loc9_23.1, constants.%T.as.Destroy.impl.Op.8e6 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.8e6, @T.as.Destroy.impl.Op(constants.%ExplicitReturn) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.523] +// CHECK:STDOUT: %bound_method.loc9: = bound_method %.loc9_23.1, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc9: %ptr.b0a = addr_of %.loc9_23.1 -// CHECK:STDOUT: %no_op.loc9: init %empty_tuple.type = call %bound_method.loc9(%addr.loc9) -// CHECK:STDOUT: %Op.bound.loc8: = bound_method %.loc8_15.1, constants.%Op.d78 -// CHECK:STDOUT: %Op.specific_fn.3: = specific_function constants.%Op.d78, @Op.1(constants.%NoAddr) [concrete = constants.%Op.specific_fn.8fe] -// CHECK:STDOUT: %bound_method.loc8: = bound_method %.loc8_15.1, %Op.specific_fn.3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc9: init %empty_tuple.type = call %bound_method.loc9(%addr.loc9) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8: = bound_method %.loc8_15.1, constants.%T.as.Destroy.impl.Op.d78 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.3: = specific_function constants.%T.as.Destroy.impl.Op.d78, @T.as.Destroy.impl.Op(constants.%NoAddr) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.8fe] +// CHECK:STDOUT: %bound_method.loc8: = bound_method %.loc8_15.1, %T.as.Destroy.impl.Op.specific_fn.3 // CHECK:STDOUT: %addr.loc8: %ptr.4b8 = addr_of %.loc8_15.1 -// CHECK:STDOUT: %no_op.loc8: init %empty_tuple.type = call %bound_method.loc8(%addr.loc8) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8: init %empty_tuple.type = call %bound_method.loc8(%addr.loc8) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Make.1 [from "types.carbon"]; +// CHECK:STDOUT: fn @NoAddr.Make [from "types.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: fn @Make.2 [from "types.carbon"]; +// CHECK:STDOUT: fn @ExplicitReturn.Make [from "types.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: fn @Make.3 [from "types.carbon"]; +// CHECK:STDOUT: fn @WithAddr.Make [from "types.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: --- fail_recovery.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %NoSelf: type = class_type @NoSelf [concrete] -// CHECK:STDOUT: %destroy.type.d69: type = fn_type @destroy.loc9 [concrete] +// CHECK:STDOUT: %NoSelf.destroy.type: type = fn_type @NoSelf.destroy [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %destroy.ab7: %destroy.type.d69 = struct_value () [concrete] +// CHECK:STDOUT: %NoSelf.destroy: %NoSelf.destroy.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %Args: type = class_type @Args [concrete] // CHECK:STDOUT: %pattern_type.a81: type = pattern_type %Args [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] -// CHECK:STDOUT: %destroy.type.ba0: type = fn_type @destroy.loc17 [concrete] -// CHECK:STDOUT: %destroy.723: %destroy.type.ba0 = struct_value () [concrete] +// CHECK:STDOUT: %Args.destroy.type: type = fn_type @Args.destroy [concrete] +// CHECK:STDOUT: %Args.destroy: %Args.destroy.type = struct_value () [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.9f4: type = pattern_type %NoSelf [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.59d: type = fn_type @Op.1, @Destroy.impl(%Args) [concrete] -// CHECK:STDOUT: %Op.a71: %Op.type.59d = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.59d: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%Args) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.a71: %T.as.Destroy.impl.Op.type.59d = struct_value () [concrete] // CHECK:STDOUT: %ptr.7b2: type = ptr_type %Args [concrete] -// CHECK:STDOUT: %Op.specific_fn.242: = specific_function %Op.a71, @Op.1(%Args) [concrete] -// CHECK:STDOUT: %Op.type.f20: type = fn_type @Op.1, @Destroy.impl(%NoSelf) [concrete] -// CHECK:STDOUT: %Op.2e0: %Op.type.f20 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.242: = specific_function %T.as.Destroy.impl.Op.a71, @T.as.Destroy.impl.Op(%Args) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.f20: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%NoSelf) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.2e0: %T.as.Destroy.impl.Op.type.f20 = struct_value () [concrete] // CHECK:STDOUT: %ptr.5ab: type = ptr_type %NoSelf [concrete] -// CHECK:STDOUT: %Op.specific_fn.a58: = specific_function %Op.2e0, @Op.1(%NoSelf) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.a58: = specific_function %T.as.Destroy.impl.Op.2e0, @T.as.Destroy.impl.Op(%NoSelf) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -737,18 +737,18 @@ fn G() { F({}); } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NoSelf { -// CHECK:STDOUT: %destroy.decl: %destroy.type.d69 = fn_decl @destroy.loc9 [concrete = constants.%destroy.ab7] {} {} +// CHECK:STDOUT: %NoSelf.destroy.decl: %NoSelf.destroy.type = fn_decl @NoSelf.destroy [concrete = constants.%NoSelf.destroy] {} {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%NoSelf -// CHECK:STDOUT: .destroy = %destroy.decl +// CHECK:STDOUT: .destroy = %NoSelf.destroy.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Args { -// CHECK:STDOUT: %destroy.decl: %destroy.type.ba0 = fn_decl @destroy.loc17 [concrete = constants.%destroy.723] { +// CHECK:STDOUT: %Args.destroy.decl: %Args.destroy.type = fn_decl @Args.destroy [concrete = constants.%Args.destroy] { // CHECK:STDOUT: %self.patt: %pattern_type.a81 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.a81 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %x.patt: %pattern_type.cb1 = binding_pattern x [concrete] @@ -770,12 +770,12 @@ fn G() { F({}); } // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Args -// CHECK:STDOUT: .destroy = %destroy.decl +// CHECK:STDOUT: .destroy = %Args.destroy.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @destroy.loc9(); +// CHECK:STDOUT: fn @NoSelf.destroy(); // CHECK:STDOUT: -// CHECK:STDOUT: fn @destroy.loc17(%self.param: %Args, %x.param: %empty_tuple.type); +// CHECK:STDOUT: fn @Args.destroy(%self.param: %Args, %x.param: %empty_tuple.type); // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { // CHECK:STDOUT: !entry: @@ -793,16 +793,16 @@ fn G() { F({}); } // CHECK:STDOUT: %b.var: ref %Args = var %b.var_patt // CHECK:STDOUT: %Args.ref: type = name_ref Args, file.%Args.decl [concrete = constants.%Args] // CHECK:STDOUT: %b: ref %Args = bind_name b, %b.var -// CHECK:STDOUT: %Op.bound.loc22: = bound_method %b.var, constants.%Op.a71 -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.a71, @Op.1(constants.%Args) [concrete = constants.%Op.specific_fn.242] -// CHECK:STDOUT: %bound_method.loc22: = bound_method %b.var, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc22: = bound_method %b.var, constants.%T.as.Destroy.impl.Op.a71 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.a71, @T.as.Destroy.impl.Op(constants.%Args) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.242] +// CHECK:STDOUT: %bound_method.loc22: = bound_method %b.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc22: %ptr.7b2 = addr_of %b.var -// CHECK:STDOUT: %no_op.loc22: init %empty_tuple.type = call %bound_method.loc22(%addr.loc22) -// CHECK:STDOUT: %Op.bound.loc21: = bound_method %a.var, constants.%Op.2e0 -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.2e0, @Op.1(constants.%NoSelf) [concrete = constants.%Op.specific_fn.a58] -// CHECK:STDOUT: %bound_method.loc21: = bound_method %a.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc22: init %empty_tuple.type = call %bound_method.loc22(%addr.loc22) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc21: = bound_method %a.var, constants.%T.as.Destroy.impl.Op.2e0 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.2e0, @T.as.Destroy.impl.Op(constants.%NoSelf) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.a58] +// CHECK:STDOUT: %bound_method.loc21: = bound_method %a.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc21: %ptr.5ab = addr_of %a.var -// CHECK:STDOUT: %no_op.loc21: init %empty_tuple.type = call %bound_method.loc21(%addr.loc21) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc21: init %empty_tuple.type = call %bound_method.loc21(%addr.loc21) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -822,30 +822,30 @@ fn G() { F({}); } // CHECK:STDOUT: %require_complete.389: = require_complete_type %C.f2e [template] // CHECK:STDOUT: %pattern_type.e5e: type = pattern_type %C.f2e [template] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.bae: type = fn_type @Op.1 [concrete] +// CHECK:STDOUT: %Destroy.Op.type: type = fn_type @Destroy.Op [concrete] // CHECK:STDOUT: %T.8b3d5d.2: type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %Op.type.bc9: type = fn_type @Op.2, @Destroy.impl(%T.8b3d5d.2) [symbolic] -// CHECK:STDOUT: %Op.46f: %Op.type.bc9 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.bc9: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%T.8b3d5d.2) [symbolic] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.46f: %T.as.Destroy.impl.Op.type.bc9 = struct_value () [symbolic] // CHECK:STDOUT: %ptr.7d2: type = ptr_type %C.f2e [template] // CHECK:STDOUT: %require_complete.448: = require_complete_type %ptr.7d2 [template] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %C.f2e, @Destroy [template] // CHECK:STDOUT: %Destroy.facet.d66: %Destroy.type = facet_value %C.f2e, (%Destroy.lookup_impl_witness) [template] -// CHECK:STDOUT: %.eb5: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.d66 [template] +// CHECK:STDOUT: %.eb5: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.d66 [template] // CHECK:STDOUT: %impl.elem0: %.eb5 = impl_witness_access %Destroy.lookup_impl_witness, element0 [template] -// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Op.1(%Destroy.facet.d66) [template] +// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Destroy.Op(%Destroy.facet.d66) [template] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %F.specific_fn: = specific_function %F, @F(%empty_struct_type) [concrete] // CHECK:STDOUT: %C.7a7: type = class_type @C, @C(%empty_struct_type) [concrete] // CHECK:STDOUT: %pattern_type.99a: type = pattern_type %C.7a7 [concrete] -// CHECK:STDOUT: %Destroy.impl_witness.a3f: = impl_witness imports.%Destroy.impl_witness_table, @Destroy.impl(%C.7a7) [concrete] -// CHECK:STDOUT: %Op.type.add: type = fn_type @Op.2, @Destroy.impl(%C.7a7) [concrete] -// CHECK:STDOUT: %Op.b1c: %Op.type.add = struct_value () [concrete] +// CHECK:STDOUT: %Destroy.impl_witness.a3f: = impl_witness imports.%Destroy.impl_witness_table, @T.as.Destroy.impl(%C.7a7) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.add: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C.7a7) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.b1c: %T.as.Destroy.impl.Op.type.add = struct_value () [concrete] // CHECK:STDOUT: %ptr.308: type = ptr_type %C.7a7 [concrete] // CHECK:STDOUT: %complete_type.903: = complete_type_witness %ptr.308 [concrete] // CHECK:STDOUT: %Destroy.facet.f20: %Destroy.type = facet_value %C.7a7, (%Destroy.impl_witness.a3f) [concrete] -// CHECK:STDOUT: %.2d6: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.f20 [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.b1c, @Op.2(%C.7a7) [concrete] +// CHECK:STDOUT: %.2d6: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.f20 [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.b1c, @T.as.Destroy.impl.Op(%C.7a7) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -855,8 +855,8 @@ fn G() { F({}); } // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @Destroy.impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @Destroy.impl.%Op (constants.%Op.46f)] -// CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @Destroy.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.0b9: @T.as.Destroy.impl.%T.as.Destroy.impl.Op.type (%T.as.Destroy.impl.Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @T.as.Destroy.impl.%T.as.Destroy.impl.Op (constants.%T.as.Destroy.impl.Op.46f)] +// CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @T.as.Destroy.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -904,9 +904,9 @@ fn G() { F({}); } // CHECK:STDOUT: %pattern_type: type = pattern_type %C.loc6_13.2 [template = %pattern_type (constants.%pattern_type.e5e)] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %C.loc6_13.2, @Destroy [template = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness)] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %C.loc6_13.2, (%Destroy.lookup_impl_witness) [template = %Destroy.facet (constants.%Destroy.facet.d66)] -// CHECK:STDOUT: %.loc6_3.2: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [template = %.loc6_3.2 (constants.%.eb5)] +// CHECK:STDOUT: %.loc6_3.2: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet [template = %.loc6_3.2 (constants.%.eb5)] // CHECK:STDOUT: %impl.elem0.loc6_3.2: @F.%.loc6_3.2 (%.eb5) = impl_witness_access %Destroy.lookup_impl_witness, element0 [template = %impl.elem0.loc6_3.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %specific_impl_fn.loc6_3.2: = specific_impl_function %impl.elem0.loc6_3.2, @Op.1(%Destroy.facet) [template = %specific_impl_fn.loc6_3.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc6_3.2: = specific_impl_function %impl.elem0.loc6_3.2, @Destroy.Op(%Destroy.facet) [template = %specific_impl_fn.loc6_3.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %ptr: type = ptr_type %C.loc6_13.2 [template = %ptr (constants.%ptr.7d2)] // CHECK:STDOUT: %require_complete.loc6_3: = require_complete_type %ptr [template = %require_complete.loc6_3 (constants.%require_complete.448)] // CHECK:STDOUT: @@ -925,7 +925,7 @@ fn G() { F({}); } // CHECK:STDOUT: %v: ref @F.%C.loc6_13.2 (%C.f2e) = bind_name v, %v.var // CHECK:STDOUT: %impl.elem0.loc6_3.1: @F.%.loc6_3.2 (%.eb5) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [template = %impl.elem0.loc6_3.2 (constants.%impl.elem0)] // CHECK:STDOUT: %bound_method.loc6_3.1: = bound_method %v.var, %impl.elem0.loc6_3.1 -// CHECK:STDOUT: %specific_impl_fn.loc6_3.1: = specific_impl_function %impl.elem0.loc6_3.1, @Op.1(constants.%Destroy.facet.d66) [template = %specific_impl_fn.loc6_3.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc6_3.1: = specific_impl_function %impl.elem0.loc6_3.1, @Destroy.Op(constants.%Destroy.facet.d66) [template = %specific_impl_fn.loc6_3.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %bound_method.loc6_3.2: = bound_method %v.var, %specific_impl_fn.loc6_3.1 // CHECK:STDOUT: %addr: @F.%ptr (%ptr.7d2) = addr_of %v.var // CHECK:STDOUT: %.loc6_3.1: init %empty_tuple.type = call %bound_method.loc6_3.2(%addr) @@ -963,8 +963,8 @@ fn G() { F({}); } // CHECK:STDOUT: %Destroy.lookup_impl_witness => constants.%Destroy.impl_witness.a3f // CHECK:STDOUT: %Destroy.facet => constants.%Destroy.facet.f20 // CHECK:STDOUT: %.loc6_3.2 => constants.%.2d6 -// CHECK:STDOUT: %impl.elem0.loc6_3.2 => constants.%Op.b1c -// CHECK:STDOUT: %specific_impl_fn.loc6_3.2 => constants.%Op.specific_fn +// CHECK:STDOUT: %impl.elem0.loc6_3.2 => constants.%T.as.Destroy.impl.Op.b1c +// CHECK:STDOUT: %specific_impl_fn.loc6_3.2 => constants.%T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %ptr => constants.%ptr.308 // CHECK:STDOUT: %require_complete.loc6_3 => constants.%complete_type.903 // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/fail_addr_self.carbon b/toolchain/check/testdata/class/fail_addr_self.carbon index ee38f32923de..6a3bd853b80d 100644 --- a/toolchain/check/testdata/class/fail_addr_self.carbon +++ b/toolchain/check/testdata/class/fail_addr_self.carbon @@ -46,20 +46,20 @@ fn F(c: Class, p: Class*) { // CHECK:STDOUT: %ptr.e71: type = ptr_type %Class [concrete] // CHECK:STDOUT: %pattern_type.796: type = pattern_type %ptr.e71 [concrete] // CHECK:STDOUT: %pattern_type.f6d: type = pattern_type auto [concrete] -// CHECK:STDOUT: %F.type.f1b: type = fn_type @F.loc16 [concrete] +// CHECK:STDOUT: %Class.F.type: type = fn_type @Class.F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F.1f2: %F.type.f1b = struct_value () [concrete] +// CHECK:STDOUT: %Class.F: %Class.F.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.761: type = pattern_type %Class [concrete] -// CHECK:STDOUT: %G.type: type = fn_type @G [concrete] -// CHECK:STDOUT: %G: %G.type = struct_value () [concrete] +// CHECK:STDOUT: %Class.G.type: type = fn_type @Class.G [concrete] +// CHECK:STDOUT: %Class.G: %Class.G.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] -// CHECK:STDOUT: %F.type.b25: type = fn_type @F.loc24 [concrete] -// CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [concrete] +// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] +// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.7de: type = fn_type @Op.1, @Destroy.impl(%Class) [concrete] -// CHECK:STDOUT: %Op.d64: %Op.type.7de = struct_value () [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.d64, @Op.1(%Class) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.7de: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%Class) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.d64: %T.as.Destroy.impl.Op.type.7de = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.d64, @T.as.Destroy.impl.Op(%Class) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -79,7 +79,7 @@ fn F(c: Class, p: Class*) { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Class.decl: type = class_decl @Class [concrete = constants.%Class] {} {} -// CHECK:STDOUT: %F.decl: %F.type.b25 = fn_decl @F.loc24 [concrete = constants.%F.c41] { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { // CHECK:STDOUT: %c.patt: %pattern_type.761 = binding_pattern c [concrete] // CHECK:STDOUT: %c.param_patt: %pattern_type.761 = value_param_pattern %c.patt, call_param0 [concrete] // CHECK:STDOUT: %p.patt: %pattern_type.796 = binding_pattern p [concrete] @@ -98,7 +98,7 @@ fn F(c: Class, p: Class*) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %F.decl: %F.type.f1b = fn_decl @F.loc16 [concrete = constants.%F.1f2] { +// CHECK:STDOUT: %Class.F.decl: %Class.F.type = fn_decl @Class.F [concrete = constants.%Class.F] { // CHECK:STDOUT: %self.patt: %pattern_type.796 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.796 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %.loc16_8: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] @@ -110,7 +110,7 @@ fn F(c: Class, p: Class*) { // CHECK:STDOUT: } // CHECK:STDOUT: %self: %ptr.e71 = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { +// CHECK:STDOUT: %Class.G.decl: %Class.G.type = fn_decl @Class.G [concrete = constants.%Class.G] { // CHECK:STDOUT: %self.patt: %pattern_type.761 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.761 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -125,43 +125,43 @@ fn F(c: Class, p: Class*) { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class // CHECK:STDOUT: .Class = -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .F = %Class.F.decl +// CHECK:STDOUT: .G = %Class.G.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc16(%self.param: %ptr.e71); +// CHECK:STDOUT: fn @Class.F(%self.param: %ptr.e71); // CHECK:STDOUT: -// CHECK:STDOUT: fn @G(%self.param: %Class); +// CHECK:STDOUT: fn @Class.G(%self.param: %Class); // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc24(%c.param: %Class, %p.param: %ptr.e71) { +// CHECK:STDOUT: fn @F(%c.param: %Class, %p.param: %ptr.e71) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %c.ref.loc32: %Class = name_ref c, %c -// CHECK:STDOUT: %F.ref.loc32: %F.type.f1b = name_ref F, @Class.%F.decl [concrete = constants.%F.1f2] -// CHECK:STDOUT: %F.bound.loc32: = bound_method %c.ref.loc32, %F.ref.loc32 +// CHECK:STDOUT: %F.ref.loc32: %Class.F.type = name_ref F, @Class.%Class.F.decl [concrete = constants.%Class.F] +// CHECK:STDOUT: %Class.F.bound.loc32: = bound_method %c.ref.loc32, %F.ref.loc32 // CHECK:STDOUT: %.loc32: ref %Class = temporary_storage // CHECK:STDOUT: %addr.loc32_3.1: %ptr.e71 = addr_of %.loc32 -// CHECK:STDOUT: %F.call.loc32: init %empty_tuple.type = call %F.bound.loc32(%addr.loc32_3.1) +// CHECK:STDOUT: %Class.F.call.loc32: init %empty_tuple.type = call %Class.F.bound.loc32(%addr.loc32_3.1) // CHECK:STDOUT: %c.ref.loc34: %Class = name_ref c, %c -// CHECK:STDOUT: %G.ref.loc34: %G.type = name_ref G, @Class.%G.decl [concrete = constants.%G] -// CHECK:STDOUT: %G.bound.loc34: = bound_method %c.ref.loc34, %G.ref.loc34 -// CHECK:STDOUT: %G.call.loc34: init %empty_tuple.type = call %G.bound.loc34(%c.ref.loc34) +// CHECK:STDOUT: %G.ref.loc34: %Class.G.type = name_ref G, @Class.%Class.G.decl [concrete = constants.%Class.G] +// CHECK:STDOUT: %Class.G.bound.loc34: = bound_method %c.ref.loc34, %G.ref.loc34 +// CHECK:STDOUT: %Class.G.call.loc34: init %empty_tuple.type = call %Class.G.bound.loc34(%c.ref.loc34) // CHECK:STDOUT: %p.ref.loc37: %ptr.e71 = name_ref p, %p // CHECK:STDOUT: %.loc37: ref %Class = deref %p.ref.loc37 -// CHECK:STDOUT: %F.ref.loc37: %F.type.f1b = name_ref F, @Class.%F.decl [concrete = constants.%F.1f2] -// CHECK:STDOUT: %F.bound.loc37: = bound_method %.loc37, %F.ref.loc37 +// CHECK:STDOUT: %F.ref.loc37: %Class.F.type = name_ref F, @Class.%Class.F.decl [concrete = constants.%Class.F] +// CHECK:STDOUT: %Class.F.bound.loc37: = bound_method %.loc37, %F.ref.loc37 // CHECK:STDOUT: %addr.loc37: %ptr.e71 = addr_of %.loc37 -// CHECK:STDOUT: %F.call.loc37: init %empty_tuple.type = call %F.bound.loc37(%addr.loc37) +// CHECK:STDOUT: %Class.F.call.loc37: init %empty_tuple.type = call %Class.F.bound.loc37(%addr.loc37) // CHECK:STDOUT: %p.ref.loc39: %ptr.e71 = name_ref p, %p // CHECK:STDOUT: %.loc39_4.1: ref %Class = deref %p.ref.loc39 -// CHECK:STDOUT: %G.ref.loc39: %G.type = name_ref G, @Class.%G.decl [concrete = constants.%G] -// CHECK:STDOUT: %G.bound.loc39: = bound_method %.loc39_4.1, %G.ref.loc39 +// CHECK:STDOUT: %G.ref.loc39: %Class.G.type = name_ref G, @Class.%Class.G.decl [concrete = constants.%Class.G] +// CHECK:STDOUT: %Class.G.bound.loc39: = bound_method %.loc39_4.1, %G.ref.loc39 // CHECK:STDOUT: %.loc39_4.2: %Class = bind_value %.loc39_4.1 -// CHECK:STDOUT: %G.call.loc39: init %empty_tuple.type = call %G.bound.loc39(%.loc39_4.2) -// CHECK:STDOUT: %Op.bound: = bound_method %.loc32, constants.%Op.d64 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.d64, @Op.1(constants.%Class) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc32, %Op.specific_fn +// CHECK:STDOUT: %Class.G.call.loc39: init %empty_tuple.type = call %Class.G.bound.loc39(%.loc39_4.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc32, constants.%T.as.Destroy.impl.Op.d64 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.d64, @T.as.Destroy.impl.Op(constants.%Class) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %.loc32, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr.loc32_3.2: %ptr.e71 = addr_of %.loc32 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr.loc32_3.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc32_3.2) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/field_access.carbon b/toolchain/check/testdata/class/field_access.carbon index 933394a6140b..c09e471de85b 100644 --- a/toolchain/check/testdata/class/field_access.carbon +++ b/toolchain/check/testdata/class/field_access.carbon @@ -44,33 +44,33 @@ fn Run() { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.1, @Destroy.impl(%i32) [concrete] -// CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a17: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.e6a: %T.as.Destroy.impl.Op.type.a17 = struct_value () [concrete] // CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] -// CHECK:STDOUT: %Op.specific_fn.014: = specific_function %Op.e6a, @Op.1(%i32) [concrete] -// CHECK:STDOUT: %Op.type.7de: type = fn_type @Op.1, @Destroy.impl(%Class) [concrete] -// CHECK:STDOUT: %Op.d64: %Op.type.7de = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.014: = specific_function %T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.7de: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%Class) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.d64: %T.as.Destroy.impl.Op.type.7de = struct_value () [concrete] // CHECK:STDOUT: %ptr.e71: type = ptr_type %Class [concrete] -// CHECK:STDOUT: %Op.specific_fn.618: = specific_function %Op.d64, @Op.1(%Class) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.618: = specific_function %T.as.Destroy.impl.Op.d64, @T.as.Destroy.impl.Op(%Class) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -83,8 +83,8 @@ fn Run() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -129,23 +129,23 @@ fn Run() { // CHECK:STDOUT: %j.ref.loc22: %Class.elem = name_ref j, @Class.%.loc16 [concrete = @Class.%.loc16] // CHECK:STDOUT: %.loc22_4: ref %i32 = class_element_access %c.ref.loc22, element0 // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0.loc22: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc22_7.1: = bound_method %int_1, %impl.elem0.loc22 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc22: = specific_function %impl.elem0.loc22, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc22: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc22_7.1: = bound_method %int_1, %impl.elem0.loc22 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc22: = specific_function %impl.elem0.loc22, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc22_7.2: = bound_method %int_1, %specific_fn.loc22 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc22: init %i32 = call %bound_method.loc22_7.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc22_7: init %i32 = converted %int_1, %int.convert_checked.loc22 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22: init %i32 = call %bound_method.loc22_7.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc22_7: init %i32 = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: assign %.loc22_4, %.loc22_7 // CHECK:STDOUT: %c.ref.loc23: ref %Class = name_ref c, %c // CHECK:STDOUT: %k.ref.loc23: %Class.elem = name_ref k, @Class.%.loc17 [concrete = @Class.%.loc17] // CHECK:STDOUT: %.loc23_4: ref %i32 = class_element_access %c.ref.loc23, element1 // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %impl.elem0.loc23: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc23_7.1: = bound_method %int_2, %impl.elem0.loc23 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc23: = specific_function %impl.elem0.loc23, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc23: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc23_7.1: = bound_method %int_2, %impl.elem0.loc23 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc23: = specific_function %impl.elem0.loc23, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc23_7.2: = bound_method %int_2, %specific_fn.loc23 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc23: init %i32 = call %bound_method.loc23_7.2(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc23_7: init %i32 = converted %int_2, %int.convert_checked.loc23 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc23: init %i32 = call %bound_method.loc23_7.2(%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc23_7: init %i32 = converted %int_2, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc23 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: assign %.loc23_4, %.loc23_7 // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %cj.patt: %pattern_type.7ce = binding_pattern cj [concrete] @@ -177,21 +177,21 @@ fn Run() { // CHECK:STDOUT: %i32.loc25: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %ck: ref %i32 = bind_name ck, %ck.var -// CHECK:STDOUT: %Op.bound.loc25: = bound_method %ck.var, constants.%Op.e6a -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.e6a, @Op.1(constants.%i32) [concrete = constants.%Op.specific_fn.014] -// CHECK:STDOUT: %bound_method.loc25: = bound_method %ck.var, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc25: = bound_method %ck.var, constants.%T.as.Destroy.impl.Op.e6a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.014] +// CHECK:STDOUT: %bound_method.loc25: = bound_method %ck.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc25: %ptr.235 = addr_of %ck.var -// CHECK:STDOUT: %no_op.loc25: init %empty_tuple.type = call %bound_method.loc25(%addr.loc25) -// CHECK:STDOUT: %Op.bound.loc24: = bound_method %cj.var, constants.%Op.e6a -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.e6a, @Op.1(constants.%i32) [concrete = constants.%Op.specific_fn.014] -// CHECK:STDOUT: %bound_method.loc24: = bound_method %cj.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc25: init %empty_tuple.type = call %bound_method.loc25(%addr.loc25) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc24: = bound_method %cj.var, constants.%T.as.Destroy.impl.Op.e6a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.014] +// CHECK:STDOUT: %bound_method.loc24: = bound_method %cj.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc24: %ptr.235 = addr_of %cj.var -// CHECK:STDOUT: %no_op.loc24: init %empty_tuple.type = call %bound_method.loc24(%addr.loc24) -// CHECK:STDOUT: %Op.bound.loc21: = bound_method %c.var, constants.%Op.d64 -// CHECK:STDOUT: %Op.specific_fn.3: = specific_function constants.%Op.d64, @Op.1(constants.%Class) [concrete = constants.%Op.specific_fn.618] -// CHECK:STDOUT: %bound_method.loc21: = bound_method %c.var, %Op.specific_fn.3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc24: init %empty_tuple.type = call %bound_method.loc24(%addr.loc24) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc21: = bound_method %c.var, constants.%T.as.Destroy.impl.Op.d64 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.3: = specific_function constants.%T.as.Destroy.impl.Op.d64, @T.as.Destroy.impl.Op(constants.%Class) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.618] +// CHECK:STDOUT: %bound_method.loc21: = bound_method %c.var, %T.as.Destroy.impl.Op.specific_fn.3 // CHECK:STDOUT: %addr.loc21: %ptr.e71 = addr_of %c.var -// CHECK:STDOUT: %no_op.loc21: init %empty_tuple.type = call %bound_method.loc21(%addr.loc21) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc21: init %empty_tuple.type = call %bound_method.loc21(%addr.loc21) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/field_access_in_value.carbon b/toolchain/check/testdata/class/field_access_in_value.carbon index 6b1defaa6279..1713fcafe223 100644 --- a/toolchain/check/testdata/class/field_access_in_value.carbon +++ b/toolchain/check/testdata/class/field_access_in_value.carbon @@ -45,33 +45,33 @@ fn Test() { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.1, @Destroy.impl(%i32) [concrete] -// CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a17: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.e6a: %T.as.Destroy.impl.Op.type.a17 = struct_value () [concrete] // CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] -// CHECK:STDOUT: %Op.specific_fn.014: = specific_function %Op.e6a, @Op.1(%i32) [concrete] -// CHECK:STDOUT: %Op.type.7de: type = fn_type @Op.1, @Destroy.impl(%Class) [concrete] -// CHECK:STDOUT: %Op.d64: %Op.type.7de = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.014: = specific_function %T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.7de: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%Class) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.d64: %T.as.Destroy.impl.Op.type.7de = struct_value () [concrete] // CHECK:STDOUT: %ptr.e71: type = ptr_type %Class [concrete] -// CHECK:STDOUT: %Op.specific_fn.618: = specific_function %Op.d64, @Op.1(%Class) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.618: = specific_function %T.as.Destroy.impl.Op.d64, @T.as.Destroy.impl.Op(%Class) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -84,8 +84,8 @@ fn Test() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -130,23 +130,23 @@ fn Test() { // CHECK:STDOUT: %j.ref.loc22: %Class.elem = name_ref j, @Class.%.loc16 [concrete = @Class.%.loc16] // CHECK:STDOUT: %.loc22_5: ref %i32 = class_element_access %cv.ref.loc22, element0 // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0.loc22: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc22_8.1: = bound_method %int_1, %impl.elem0.loc22 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc22: = specific_function %impl.elem0.loc22, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc22: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc22_8.1: = bound_method %int_1, %impl.elem0.loc22 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc22: = specific_function %impl.elem0.loc22, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc22_8.2: = bound_method %int_1, %specific_fn.loc22 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc22: init %i32 = call %bound_method.loc22_8.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc22_8: init %i32 = converted %int_1, %int.convert_checked.loc22 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22: init %i32 = call %bound_method.loc22_8.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc22_8: init %i32 = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: assign %.loc22_5, %.loc22_8 // CHECK:STDOUT: %cv.ref.loc23: ref %Class = name_ref cv, %cv // CHECK:STDOUT: %k.ref.loc23: %Class.elem = name_ref k, @Class.%.loc17 [concrete = @Class.%.loc17] // CHECK:STDOUT: %.loc23_5: ref %i32 = class_element_access %cv.ref.loc23, element1 // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %impl.elem0.loc23: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc23_8.1: = bound_method %int_2, %impl.elem0.loc23 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc23: = specific_function %impl.elem0.loc23, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc23: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc23_8.1: = bound_method %int_2, %impl.elem0.loc23 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc23: = specific_function %impl.elem0.loc23, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc23_8.2: = bound_method %int_2, %specific_fn.loc23 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc23: init %i32 = call %bound_method.loc23_8.2(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc23_8: init %i32 = converted %int_2, %int.convert_checked.loc23 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc23: init %i32 = call %bound_method.loc23_8.2(%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc23_8: init %i32 = converted %int_2, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc23 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: assign %.loc23_5, %.loc23_8 // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %c.patt: %pattern_type.761 = binding_pattern c [concrete] @@ -185,21 +185,21 @@ fn Test() { // CHECK:STDOUT: %i32.loc26: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %ck: ref %i32 = bind_name ck, %ck.var -// CHECK:STDOUT: %Op.bound.loc26: = bound_method %ck.var, constants.%Op.e6a -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.e6a, @Op.1(constants.%i32) [concrete = constants.%Op.specific_fn.014] -// CHECK:STDOUT: %bound_method.loc26: = bound_method %ck.var, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc26: = bound_method %ck.var, constants.%T.as.Destroy.impl.Op.e6a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.014] +// CHECK:STDOUT: %bound_method.loc26: = bound_method %ck.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc26: %ptr.235 = addr_of %ck.var -// CHECK:STDOUT: %no_op.loc26: init %empty_tuple.type = call %bound_method.loc26(%addr.loc26) -// CHECK:STDOUT: %Op.bound.loc25: = bound_method %cj.var, constants.%Op.e6a -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.e6a, @Op.1(constants.%i32) [concrete = constants.%Op.specific_fn.014] -// CHECK:STDOUT: %bound_method.loc25: = bound_method %cj.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc26: init %empty_tuple.type = call %bound_method.loc26(%addr.loc26) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc25: = bound_method %cj.var, constants.%T.as.Destroy.impl.Op.e6a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.014] +// CHECK:STDOUT: %bound_method.loc25: = bound_method %cj.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc25: %ptr.235 = addr_of %cj.var -// CHECK:STDOUT: %no_op.loc25: init %empty_tuple.type = call %bound_method.loc25(%addr.loc25) -// CHECK:STDOUT: %Op.bound.loc21: = bound_method %cv.var, constants.%Op.d64 -// CHECK:STDOUT: %Op.specific_fn.3: = specific_function constants.%Op.d64, @Op.1(constants.%Class) [concrete = constants.%Op.specific_fn.618] -// CHECK:STDOUT: %bound_method.loc21: = bound_method %cv.var, %Op.specific_fn.3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc25: init %empty_tuple.type = call %bound_method.loc25(%addr.loc25) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc21: = bound_method %cv.var, constants.%T.as.Destroy.impl.Op.d64 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.3: = specific_function constants.%T.as.Destroy.impl.Op.d64, @T.as.Destroy.impl.Op(constants.%Class) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.618] +// CHECK:STDOUT: %bound_method.loc21: = bound_method %cv.var, %T.as.Destroy.impl.Op.specific_fn.3 // CHECK:STDOUT: %addr.loc21: %ptr.e71 = addr_of %cv.var -// CHECK:STDOUT: %no_op.loc21: init %empty_tuple.type = call %bound_method.loc21(%addr.loc21) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc21: init %empty_tuple.type = call %bound_method.loc21(%addr.loc21) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/base_is_generic.carbon b/toolchain/check/testdata/class/generic/base_is_generic.carbon index 33ac727aa026..3fcead1a4db1 100644 --- a/toolchain/check/testdata/class/generic/base_is_generic.carbon +++ b/toolchain/check/testdata/class/generic/base_is_generic.carbon @@ -405,8 +405,8 @@ fn H() { // CHECK:STDOUT: %C.f2e: type = class_type @C, @C(%T) [symbolic] // CHECK:STDOUT: %require_complete: = require_complete_type %T [symbolic] // CHECK:STDOUT: %X: type = class_type @X [concrete] -// CHECK:STDOUT: %G.type: type = fn_type @G [concrete] -// CHECK:STDOUT: %G: %G.type = struct_value () [concrete] +// CHECK:STDOUT: %X.G.type: type = fn_type @X.G [concrete] +// CHECK:STDOUT: %X.G: %X.G.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] @@ -461,17 +461,17 @@ fn H() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @X { -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {} {} +// CHECK:STDOUT: %X.G.decl: %X.G.type = fn_decl @X.G [concrete = constants.%X.G] {} {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%X -// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .G = %X.G.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G() { +// CHECK:STDOUT: fn @X.G() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -505,19 +505,19 @@ fn H() { // CHECK:STDOUT: %X.generic: %X.type = struct_value () [concrete] // CHECK:STDOUT: %X.75b6d8.1: type = class_type @X, @X(%U) [symbolic] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %U [symbolic] -// CHECK:STDOUT: %G.type.56f312.1: type = fn_type @G, @X(%U) [symbolic] -// CHECK:STDOUT: %G.b504c4.1: %G.type.56f312.1 = struct_value () [symbolic] +// CHECK:STDOUT: %X.G.type.56f312.1: type = fn_type @X.G, @X(%U) [symbolic] +// CHECK:STDOUT: %X.G.b504c4.1: %X.G.type.56f312.1 = 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: %require_complete.4ae: = require_complete_type %U [symbolic] -// CHECK:STDOUT: %G.specific_fn.169: = specific_function %G.b504c4.1, @G(%U) [symbolic] +// CHECK:STDOUT: %X.G.specific_fn.169: = specific_function %X.G.b504c4.1, @X.G(%U) [symbolic] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %C.type: type = generic_class_type @C [concrete] // CHECK:STDOUT: %C.generic: %C.type = struct_value () [concrete] // CHECK:STDOUT: %C.f2e: type = class_type @C, @C(%T) [symbolic] // CHECK:STDOUT: %X.75b6d8.2: type = class_type @X, @X(%T) [symbolic] -// CHECK:STDOUT: %G.type.56f312.2: type = fn_type @G, @X(%T) [symbolic] -// CHECK:STDOUT: %G.b504c4.2: %G.type.56f312.2 = struct_value () [symbolic] +// CHECK:STDOUT: %X.G.type.56f312.2: type = fn_type @X.G, @X(%T) [symbolic] +// CHECK:STDOUT: %X.G.b504c4.2: %X.G.type.56f312.2 = struct_value () [symbolic] // CHECK:STDOUT: %require_complete.441: = require_complete_type %X.75b6d8.2 [symbolic] // CHECK:STDOUT: %C.elem.3f4: type = unbound_element_type %C.f2e, %X.75b6d8.2 [symbolic] // CHECK:STDOUT: %struct_type.base.f5f: type = struct_type {.base: %X.75b6d8.2} [symbolic] @@ -533,12 +533,12 @@ fn H() { // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %C.98a: type = class_type @C, @C(%i32) [concrete] // CHECK:STDOUT: %X.448: type = class_type @X, @X(%i32) [concrete] -// CHECK:STDOUT: %G.type.862: type = fn_type @G, @X(%i32) [concrete] -// CHECK:STDOUT: %G.d5e: %G.type.862 = struct_value () [concrete] +// CHECK:STDOUT: %X.G.type.862: type = fn_type @X.G, @X(%i32) [concrete] +// CHECK:STDOUT: %X.G.d5e: %X.G.type.862 = struct_value () [concrete] // CHECK:STDOUT: %C.elem.494: type = unbound_element_type %C.98a, %X.448 [concrete] // CHECK:STDOUT: %struct_type.base.d41: type = struct_type {.base: %X.448} [concrete] // CHECK:STDOUT: %complete_type.146: = complete_type_witness %struct_type.base.d41 [concrete] -// CHECK:STDOUT: %G.specific_fn.7a3: = specific_function %G.d5e, @G(%i32) [concrete] +// CHECK:STDOUT: %X.G.specific_fn.7a3: = specific_function %X.G.d5e, @X.G(%i32) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -575,17 +575,17 @@ fn H() { // CHECK:STDOUT: %U.loc4_14.1: type = bind_symbolic_name U, 0 [symbolic = %U.loc4_14.1 (constants.%U)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %G.type: type = fn_type @G, @X(%U.loc4_14.1) [symbolic = %G.type (constants.%G.type.56f312.1)] -// CHECK:STDOUT: %G: @X.%G.type (%G.type.56f312.1) = struct_value () [symbolic = %G (constants.%G.b504c4.1)] +// CHECK:STDOUT: %X.G.type: type = fn_type @X.G, @X(%U.loc4_14.1) [symbolic = %X.G.type (constants.%X.G.type.56f312.1)] +// CHECK:STDOUT: %X.G: @X.%X.G.type (%X.G.type.56f312.1) = struct_value () [symbolic = %X.G (constants.%X.G.b504c4.1)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %G.decl: @X.%G.type (%G.type.56f312.1) = fn_decl @G [symbolic = @X.%G (constants.%G.b504c4.1)] { -// CHECK:STDOUT: %return.patt: @G.%pattern_type (%pattern_type.7dc) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @G.%pattern_type (%pattern_type.7dc) = out_param_pattern %return.patt, call_param0 [concrete] +// CHECK:STDOUT: %X.G.decl: @X.%X.G.type (%X.G.type.56f312.1) = fn_decl @X.G [symbolic = @X.%X.G (constants.%X.G.b504c4.1)] { +// CHECK:STDOUT: %return.patt: @X.G.%pattern_type (%pattern_type.7dc) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @X.G.%pattern_type (%pattern_type.7dc) = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %U.ref: type = name_ref U, @X.%U.loc4_14.2 [symbolic = %U (constants.%U)] -// CHECK:STDOUT: %return.param: ref @G.%U (%U) = out_param call_param0 -// CHECK:STDOUT: %return: ref @G.%U (%U) = return_slot %return.param +// CHECK:STDOUT: %return.param: ref @X.G.%U (%U) = out_param call_param0 +// CHECK:STDOUT: %return: ref @X.G.%U (%U) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] @@ -594,7 +594,7 @@ fn H() { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%X.75b6d8.1 // CHECK:STDOUT: .U = -// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .G = %X.G.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -628,24 +628,24 @@ fn H() { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @G(@X.%U.loc4_14.2: type) { +// CHECK:STDOUT: generic fn @X.G(@X.%U.loc4_14.2: type) { // CHECK:STDOUT: %U: type = bind_symbolic_name U, 0 [symbolic = %U (constants.%U)] // CHECK:STDOUT: %pattern_type: type = pattern_type %U [symbolic = %pattern_type (constants.%pattern_type.7dc)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %U [symbolic = %require_complete (constants.%require_complete.4ae)] -// CHECK:STDOUT: %G.type: type = fn_type @G, @X(%U) [symbolic = %G.type (constants.%G.type.56f312.1)] -// CHECK:STDOUT: %G: @G.%G.type (%G.type.56f312.1) = struct_value () [symbolic = %G (constants.%G.b504c4.1)] -// CHECK:STDOUT: %G.specific_fn.loc5_24.2: = specific_function %G, @G(%U) [symbolic = %G.specific_fn.loc5_24.2 (constants.%G.specific_fn.169)] +// CHECK:STDOUT: %X.G.type: type = fn_type @X.G, @X(%U) [symbolic = %X.G.type (constants.%X.G.type.56f312.1)] +// CHECK:STDOUT: %X.G: @X.G.%X.G.type (%X.G.type.56f312.1) = struct_value () [symbolic = %X.G (constants.%X.G.b504c4.1)] +// CHECK:STDOUT: %X.G.specific_fn.loc5_24.2: = specific_function %X.G, @X.G(%U) [symbolic = %X.G.specific_fn.loc5_24.2 (constants.%X.G.specific_fn.169)] // CHECK:STDOUT: -// CHECK:STDOUT: fn() -> @G.%U (%U) { +// CHECK:STDOUT: fn() -> @X.G.%U (%U) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc5_24: @G.%G.type (%G.type.56f312.1) = specific_constant @X.%G.decl, @X(constants.%U) [symbolic = %G (constants.%G.b504c4.1)] -// CHECK:STDOUT: %G.ref: @G.%G.type (%G.type.56f312.1) = name_ref G, %.loc5_24 [symbolic = %G (constants.%G.b504c4.1)] -// CHECK:STDOUT: %G.specific_fn.loc5_24.1: = specific_function %G.ref, @G(constants.%U) [symbolic = %G.specific_fn.loc5_24.2 (constants.%G.specific_fn.169)] -// CHECK:STDOUT: %G.call: init @G.%U (%U) = call %G.specific_fn.loc5_24.1() -// CHECK:STDOUT: %.loc5_27.1: @G.%U (%U) = value_of_initializer %G.call -// CHECK:STDOUT: %.loc5_27.2: @G.%U (%U) = converted %G.call, %.loc5_27.1 +// CHECK:STDOUT: %.loc5_24: @X.G.%X.G.type (%X.G.type.56f312.1) = specific_constant @X.%X.G.decl, @X(constants.%U) [symbolic = %X.G (constants.%X.G.b504c4.1)] +// CHECK:STDOUT: %G.ref: @X.G.%X.G.type (%X.G.type.56f312.1) = name_ref G, %.loc5_24 [symbolic = %X.G (constants.%X.G.b504c4.1)] +// CHECK:STDOUT: %X.G.specific_fn.loc5_24.1: = specific_function %G.ref, @X.G(constants.%U) [symbolic = %X.G.specific_fn.loc5_24.2 (constants.%X.G.specific_fn.169)] +// CHECK:STDOUT: %X.G.call: init @X.G.%U (%U) = call %X.G.specific_fn.loc5_24.1() +// CHECK:STDOUT: %.loc5_27.1: @X.G.%U (%U) = value_of_initializer %X.G.call +// CHECK:STDOUT: %.loc5_27.2: @X.G.%U (%U) = converted %X.G.call, %.loc5_27.1 // CHECK:STDOUT: return %.loc5_27.2 // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -659,16 +659,16 @@ fn H() { // CHECK:STDOUT: %int_32.loc13_18: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc13_18: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%i32) [concrete = constants.%C.98a] -// CHECK:STDOUT: %.loc13_22: %G.type.862 = specific_constant @X.%G.decl, @X(constants.%i32) [concrete = constants.%G.d5e] -// CHECK:STDOUT: %G.ref: %G.type.862 = name_ref G, %.loc13_22 [concrete = constants.%G.d5e] -// CHECK:STDOUT: %G.specific_fn: = specific_function %G.ref, @G(constants.%i32) [concrete = constants.%G.specific_fn.7a3] -// CHECK:STDOUT: %G.call: init %i32 = call %G.specific_fn() +// CHECK:STDOUT: %.loc13_22: %X.G.type.862 = specific_constant @X.%X.G.decl, @X(constants.%i32) [concrete = constants.%X.G.d5e] +// CHECK:STDOUT: %G.ref: %X.G.type.862 = name_ref G, %.loc13_22 [concrete = constants.%X.G.d5e] +// CHECK:STDOUT: %X.G.specific_fn: = specific_function %G.ref, @X.G(constants.%i32) [concrete = constants.%X.G.specific_fn.7a3] +// CHECK:STDOUT: %X.G.call: init %i32 = call %X.G.specific_fn() // CHECK:STDOUT: %.loc13_10: type = splice_block %i32.loc13_10 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc13_10: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc13_10: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc13_25.1: %i32 = value_of_initializer %G.call -// CHECK:STDOUT: %.loc13_25.2: %i32 = converted %G.call, %.loc13_25.1 +// CHECK:STDOUT: %.loc13_25.1: %i32 = value_of_initializer %X.G.call +// CHECK:STDOUT: %.loc13_25.2: %i32 = converted %X.G.call, %.loc13_25.1 // CHECK:STDOUT: %i: %i32 = bind_name i, %.loc13_25.2 // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -677,19 +677,19 @@ fn H() { // CHECK:STDOUT: %U.loc4_14.1 => constants.%U // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %G.type => constants.%G.type.56f312.1 -// CHECK:STDOUT: %G => constants.%G.b504c4.1 +// CHECK:STDOUT: %X.G.type => constants.%X.G.type.56f312.1 +// CHECK:STDOUT: %X.G => constants.%X.G.b504c4.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @G(constants.%U) { +// CHECK:STDOUT: specific @X.G(constants.%U) { // CHECK:STDOUT: %U => constants.%U // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7dc // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete => constants.%require_complete.4ae -// CHECK:STDOUT: %G.type => constants.%G.type.56f312.1 -// CHECK:STDOUT: %G => constants.%G.b504c4.1 -// CHECK:STDOUT: %G.specific_fn.loc5_24.2 => constants.%G.specific_fn.169 +// CHECK:STDOUT: %X.G.type => constants.%X.G.type.56f312.1 +// CHECK:STDOUT: %X.G => constants.%X.G.b504c4.1 +// CHECK:STDOUT: %X.G.specific_fn.loc5_24.2 => constants.%X.G.specific_fn.169 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @C(constants.%T) { @@ -700,8 +700,8 @@ fn H() { // CHECK:STDOUT: %U.loc4_14.1 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %G.type => constants.%G.type.56f312.2 -// CHECK:STDOUT: %G => constants.%G.b504c4.2 +// CHECK:STDOUT: %X.G.type => constants.%X.G.type.56f312.2 +// CHECK:STDOUT: %X.G => constants.%X.G.b504c4.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @C(constants.%i32) { @@ -720,19 +720,19 @@ fn H() { // CHECK:STDOUT: %U.loc4_14.1 => constants.%i32 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %G.type => constants.%G.type.862 -// CHECK:STDOUT: %G => constants.%G.d5e +// CHECK:STDOUT: %X.G.type => constants.%X.G.type.862 +// CHECK:STDOUT: %X.G => constants.%X.G.d5e // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @G(constants.%i32) { +// CHECK:STDOUT: specific @X.G(constants.%i32) { // CHECK:STDOUT: %U => constants.%i32 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7ce // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete => constants.%complete_type.f8a -// CHECK:STDOUT: %G.type => constants.%G.type.862 -// CHECK:STDOUT: %G => constants.%G.d5e -// CHECK:STDOUT: %G.specific_fn.loc5_24.2 => constants.%G.specific_fn.7a3 +// CHECK:STDOUT: %X.G.type => constants.%X.G.type.862 +// CHECK:STDOUT: %X.G => constants.%X.G.d5e +// CHECK:STDOUT: %X.G.specific_fn.loc5_24.2 => constants.%X.G.specific_fn.7a3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- import_extend_generic_symbolic_base.carbon @@ -758,22 +758,22 @@ fn H() { // CHECK:STDOUT: %C.elem.3f4: type = unbound_element_type %C.f2e, %X.75b6d8.2 [symbolic] // CHECK:STDOUT: %struct_type.base.f5f: type = struct_type {.base: %X.75b6d8.2} [symbolic] // CHECK:STDOUT: %complete_type.768: = complete_type_witness %struct_type.base.f5f [symbolic] -// CHECK:STDOUT: %G.type.56f312.1: type = fn_type @G, @X(%U) [symbolic] -// CHECK:STDOUT: %G.b504c4.1: %G.type.56f312.1 = struct_value () [symbolic] +// CHECK:STDOUT: %X.G.type.56f312.1: type = fn_type @X.G, @X(%U) [symbolic] +// CHECK:STDOUT: %X.G.b504c4.1: %X.G.type.56f312.1 = struct_value () [symbolic] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %U [symbolic] // CHECK:STDOUT: %require_complete.441: = require_complete_type %X.75b6d8.2 [symbolic] // CHECK:STDOUT: %require_complete.4ae: = require_complete_type %U [symbolic] -// CHECK:STDOUT: %G.specific_fn.169: = specific_function %G.b504c4.1, @G(%U) [symbolic] -// CHECK:STDOUT: %G.type.56f312.2: type = fn_type @G, @X(%T) [symbolic] -// CHECK:STDOUT: %G.b504c4.2: %G.type.56f312.2 = struct_value () [symbolic] +// CHECK:STDOUT: %X.G.specific_fn.169: = specific_function %X.G.b504c4.1, @X.G(%U) [symbolic] +// CHECK:STDOUT: %X.G.type.56f312.2: type = fn_type @X.G, @X(%T) [symbolic] +// CHECK:STDOUT: %X.G.b504c4.2: %X.G.type.56f312.2 = struct_value () [symbolic] // CHECK:STDOUT: %C.98a: type = class_type @C, @C(%i32) [concrete] // CHECK:STDOUT: %X.448: type = class_type @X, @X(%i32) [concrete] -// CHECK:STDOUT: %G.type.862: type = fn_type @G, @X(%i32) [concrete] -// CHECK:STDOUT: %G.d5e: %G.type.862 = struct_value () [concrete] +// CHECK:STDOUT: %X.G.type.862: type = fn_type @X.G, @X(%i32) [concrete] +// CHECK:STDOUT: %X.G.d5e: %X.G.type.862 = struct_value () [concrete] // CHECK:STDOUT: %C.elem.494: type = unbound_element_type %C.98a, %X.448 [concrete] // CHECK:STDOUT: %struct_type.base.d41: type = struct_type {.base: %X.448} [concrete] // CHECK:STDOUT: %complete_type.146: = complete_type_witness %struct_type.base.d41 [concrete] -// CHECK:STDOUT: %G.specific_fn.7a3: = specific_function %G.d5e, @G(%i32) [concrete] +// CHECK:STDOUT: %X.G.specific_fn.7a3: = specific_function %X.G.d5e, @X.G(%i32) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -789,7 +789,7 @@ fn H() { // CHECK:STDOUT: %Main.import_ref.5ab3ec.1: type = import_ref Main//extend_generic_symbolic_base, loc4_14, loaded [symbolic = @X.%U (constants.%U)] // CHECK:STDOUT: %Main.import_ref.8f2: = import_ref Main//extend_generic_symbolic_base, loc6_1, loaded [concrete = constants.%complete_type.357] // CHECK:STDOUT: %Main.import_ref.e8e = import_ref Main//extend_generic_symbolic_base, inst26 [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.b8a: @X.%G.type (%G.type.56f312.1) = import_ref Main//extend_generic_symbolic_base, loc5_15, loaded [symbolic = @X.%G (constants.%G.b504c4.1)] +// CHECK:STDOUT: %Main.import_ref.b8a: @X.%X.G.type (%X.G.type.56f312.1) = import_ref Main//extend_generic_symbolic_base, loc5_15, loaded [symbolic = @X.%X.G (constants.%X.G.b504c4.1)] // CHECK:STDOUT: %Main.import_ref.5ab3ec.2: type = import_ref Main//extend_generic_symbolic_base, loc8_9, loaded [symbolic = @C.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.93f: = import_ref Main//extend_generic_symbolic_base, loc10_1, loaded [symbolic = @C.%complete_type (constants.%complete_type.768)] // CHECK:STDOUT: %Main.import_ref.4c0 = import_ref Main//extend_generic_symbolic_base, inst66 [no loc], unloaded @@ -837,8 +837,8 @@ fn H() { // CHECK:STDOUT: %U: type = bind_symbolic_name U, 0 [symbolic = %U (constants.%U)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %G.type: type = fn_type @G, @X(%U) [symbolic = %G.type (constants.%G.type.56f312.1)] -// CHECK:STDOUT: %G: @X.%G.type (%G.type.56f312.1) = struct_value () [symbolic = %G (constants.%G.b504c4.1)] +// CHECK:STDOUT: %X.G.type: type = fn_type @X.G, @X(%U) [symbolic = %X.G.type (constants.%X.G.type.56f312.1)] +// CHECK:STDOUT: %X.G: @X.%X.G.type (%X.G.type.56f312.1) = struct_value () [symbolic = %X.G (constants.%X.G.b504c4.1)] // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: complete_type_witness = imports.%Main.import_ref.8f2 @@ -858,29 +858,29 @@ fn H() { // CHECK:STDOUT: %int_32.loc7_18: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc7_18: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%i32) [concrete = constants.%C.98a] -// CHECK:STDOUT: %.loc7_22: %G.type.862 = specific_constant imports.%Main.import_ref.b8a, @X(constants.%i32) [concrete = constants.%G.d5e] -// CHECK:STDOUT: %G.ref: %G.type.862 = name_ref G, %.loc7_22 [concrete = constants.%G.d5e] -// CHECK:STDOUT: %G.specific_fn: = specific_function %G.ref, @G(constants.%i32) [concrete = constants.%G.specific_fn.7a3] -// CHECK:STDOUT: %G.call: init %i32 = call %G.specific_fn() +// CHECK:STDOUT: %.loc7_22: %X.G.type.862 = specific_constant imports.%Main.import_ref.b8a, @X(constants.%i32) [concrete = constants.%X.G.d5e] +// CHECK:STDOUT: %G.ref: %X.G.type.862 = name_ref G, %.loc7_22 [concrete = constants.%X.G.d5e] +// CHECK:STDOUT: %X.G.specific_fn: = specific_function %G.ref, @X.G(constants.%i32) [concrete = constants.%X.G.specific_fn.7a3] +// CHECK:STDOUT: %X.G.call: init %i32 = call %X.G.specific_fn() // CHECK:STDOUT: %.loc7_10: type = splice_block %i32.loc7_10 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc7_10: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc7_10: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc7_25.1: %i32 = value_of_initializer %G.call -// CHECK:STDOUT: %.loc7_25.2: %i32 = converted %G.call, %.loc7_25.1 +// CHECK:STDOUT: %.loc7_25.1: %i32 = value_of_initializer %X.G.call +// CHECK:STDOUT: %.loc7_25.2: %i32 = converted %X.G.call, %.loc7_25.1 // CHECK:STDOUT: %j: %i32 = bind_name j, %.loc7_25.2 // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @G(imports.%Main.import_ref.5ab3ec.3: type) [from "extend_generic_symbolic_base.carbon"] { +// CHECK:STDOUT: generic fn @X.G(imports.%Main.import_ref.5ab3ec.3: type) [from "extend_generic_symbolic_base.carbon"] { // CHECK:STDOUT: %U: type = bind_symbolic_name U, 0 [symbolic = %U (constants.%U)] // CHECK:STDOUT: %pattern_type: type = pattern_type %U [symbolic = %pattern_type (constants.%pattern_type.7dc)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %U [symbolic = %require_complete (constants.%require_complete.4ae)] -// CHECK:STDOUT: %G.type: type = fn_type @G, @X(%U) [symbolic = %G.type (constants.%G.type.56f312.1)] -// CHECK:STDOUT: %G: @G.%G.type (%G.type.56f312.1) = struct_value () [symbolic = %G (constants.%G.b504c4.1)] -// CHECK:STDOUT: %G.specific_fn: = specific_function %G, @G(%U) [symbolic = %G.specific_fn (constants.%G.specific_fn.169)] +// CHECK:STDOUT: %X.G.type: type = fn_type @X.G, @X(%U) [symbolic = %X.G.type (constants.%X.G.type.56f312.1)] +// CHECK:STDOUT: %X.G: @X.G.%X.G.type (%X.G.type.56f312.1) = struct_value () [symbolic = %X.G (constants.%X.G.b504c4.1)] +// CHECK:STDOUT: %X.G.specific_fn: = specific_function %X.G, @X.G(%U) [symbolic = %X.G.specific_fn (constants.%X.G.specific_fn.169)] // CHECK:STDOUT: // CHECK:STDOUT: fn; // CHECK:STDOUT: } @@ -889,31 +889,31 @@ fn H() { // CHECK:STDOUT: %U => constants.%U // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %G.type => constants.%G.type.56f312.1 -// CHECK:STDOUT: %G => constants.%G.b504c4.1 +// CHECK:STDOUT: %X.G.type => constants.%X.G.type.56f312.1 +// CHECK:STDOUT: %X.G => constants.%X.G.b504c4.1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @X(constants.%T) { // CHECK:STDOUT: %U => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %G.type => constants.%G.type.56f312.2 -// CHECK:STDOUT: %G => constants.%G.b504c4.2 +// CHECK:STDOUT: %X.G.type => constants.%X.G.type.56f312.2 +// CHECK:STDOUT: %X.G => constants.%X.G.b504c4.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @C(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @G(constants.%U) { +// CHECK:STDOUT: specific @X.G(constants.%U) { // CHECK:STDOUT: %U => constants.%U // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7dc // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete => constants.%require_complete.4ae -// CHECK:STDOUT: %G.type => constants.%G.type.56f312.1 -// CHECK:STDOUT: %G => constants.%G.b504c4.1 -// CHECK:STDOUT: %G.specific_fn => constants.%G.specific_fn.169 +// CHECK:STDOUT: %X.G.type => constants.%X.G.type.56f312.1 +// CHECK:STDOUT: %X.G => constants.%X.G.b504c4.1 +// CHECK:STDOUT: %X.G.specific_fn => constants.%X.G.specific_fn.169 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @C(constants.%i32) { @@ -932,18 +932,18 @@ fn H() { // CHECK:STDOUT: %U => constants.%i32 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %G.type => constants.%G.type.862 -// CHECK:STDOUT: %G => constants.%G.d5e +// CHECK:STDOUT: %X.G.type => constants.%X.G.type.862 +// CHECK:STDOUT: %X.G => constants.%X.G.d5e // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @G(constants.%i32) { +// CHECK:STDOUT: specific @X.G(constants.%i32) { // CHECK:STDOUT: %U => constants.%i32 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7ce // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete => constants.%complete_type.f8a -// CHECK:STDOUT: %G.type => constants.%G.type.862 -// CHECK:STDOUT: %G => constants.%G.d5e -// CHECK:STDOUT: %G.specific_fn => constants.%G.specific_fn.7a3 +// CHECK:STDOUT: %X.G.type => constants.%X.G.type.862 +// CHECK:STDOUT: %X.G => constants.%X.G.d5e +// CHECK:STDOUT: %X.G.specific_fn => constants.%X.G.specific_fn.7a3 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/basic.carbon b/toolchain/check/testdata/class/generic/basic.carbon index 2134d3e645e1..7f4fe274cb22 100644 --- a/toolchain/check/testdata/class/generic/basic.carbon +++ b/toolchain/check/testdata/class/generic/basic.carbon @@ -40,12 +40,12 @@ class Declaration(T:! type); // CHECK:STDOUT: %pattern_type.f6d: type = pattern_type auto [concrete] // CHECK:STDOUT: %ptr.79f: type = ptr_type %T [symbolic] // CHECK:STDOUT: %pattern_type.afe: type = pattern_type %ptr.79f [symbolic] -// CHECK:STDOUT: %GetAddr.type: type = fn_type @GetAddr, @Class(%T) [symbolic] -// CHECK:STDOUT: %GetAddr: %GetAddr.type = struct_value () [symbolic] +// CHECK:STDOUT: %Class.GetAddr.type: type = fn_type @Class.GetAddr, @Class(%T) [symbolic] +// CHECK:STDOUT: %Class.GetAddr: %Class.GetAddr.type = struct_value () [symbolic] // CHECK:STDOUT: %pattern_type.3c1: type = pattern_type %Class [symbolic] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %T [symbolic] -// CHECK:STDOUT: %GetValue.type: type = fn_type @GetValue, @Class(%T) [symbolic] -// CHECK:STDOUT: %GetValue: %GetValue.type = struct_value () [symbolic] +// CHECK:STDOUT: %Class.GetValue.type: type = fn_type @Class.GetValue, @Class(%T) [symbolic] +// CHECK:STDOUT: %Class.GetValue: %Class.GetValue.type = struct_value () [symbolic] // CHECK:STDOUT: %require_complete.4ae: = require_complete_type %T [symbolic] // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T [symbolic] // CHECK:STDOUT: %struct_type.k: type = struct_type {.k: %T} [symbolic] @@ -87,10 +87,10 @@ class Declaration(T:! type); // CHECK:STDOUT: %T.loc15_13.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc15_13.1 (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %GetAddr.type: type = fn_type @GetAddr, @Class(%T.loc15_13.1) [symbolic = %GetAddr.type (constants.%GetAddr.type)] -// CHECK:STDOUT: %GetAddr: @Class.%GetAddr.type (%GetAddr.type) = struct_value () [symbolic = %GetAddr (constants.%GetAddr)] -// CHECK:STDOUT: %GetValue.type: type = fn_type @GetValue, @Class(%T.loc15_13.1) [symbolic = %GetValue.type (constants.%GetValue.type)] -// CHECK:STDOUT: %GetValue: @Class.%GetValue.type (%GetValue.type) = struct_value () [symbolic = %GetValue (constants.%GetValue)] +// CHECK:STDOUT: %Class.GetAddr.type: type = fn_type @Class.GetAddr, @Class(%T.loc15_13.1) [symbolic = %Class.GetAddr.type (constants.%Class.GetAddr.type)] +// CHECK:STDOUT: %Class.GetAddr: @Class.%Class.GetAddr.type (%Class.GetAddr.type) = struct_value () [symbolic = %Class.GetAddr (constants.%Class.GetAddr)] +// CHECK:STDOUT: %Class.GetValue.type: type = fn_type @Class.GetValue, @Class(%T.loc15_13.1) [symbolic = %Class.GetValue.type (constants.%Class.GetValue.type)] +// CHECK:STDOUT: %Class.GetValue: @Class.%Class.GetValue.type (%Class.GetValue.type) = struct_value () [symbolic = %Class.GetValue (constants.%Class.GetValue)] // CHECK:STDOUT: %require_complete: = require_complete_type %T.loc15_13.1 [symbolic = %require_complete (constants.%require_complete.4ae)] // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T.loc15_13.1) [symbolic = %Class (constants.%Class)] // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T.loc15_13.1 [symbolic = %Class.elem (constants.%Class.elem)] @@ -98,40 +98,40 @@ class Declaration(T:! type); // CHECK:STDOUT: %complete_type.loc26_1.2: = complete_type_witness %struct_type.k.loc26_1.2 [symbolic = %complete_type.loc26_1.2 (constants.%complete_type)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %GetAddr.decl: @Class.%GetAddr.type (%GetAddr.type) = fn_decl @GetAddr [symbolic = @Class.%GetAddr (constants.%GetAddr)] { -// CHECK:STDOUT: %self.patt: @GetAddr.%pattern_type.loc16_19 (%pattern_type.9e0) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @GetAddr.%pattern_type.loc16_19 (%pattern_type.9e0) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %Class.GetAddr.decl: @Class.%Class.GetAddr.type (%Class.GetAddr.type) = fn_decl @Class.GetAddr [symbolic = @Class.%Class.GetAddr (constants.%Class.GetAddr)] { +// CHECK:STDOUT: %self.patt: @Class.GetAddr.%pattern_type.loc16_19 (%pattern_type.9e0) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @Class.GetAddr.%pattern_type.loc16_19 (%pattern_type.9e0) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %.loc16_14: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] -// CHECK:STDOUT: %return.patt: @GetAddr.%pattern_type.loc16_34 (%pattern_type.afe) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @GetAddr.%pattern_type.loc16_34 (%pattern_type.afe) = out_param_pattern %return.patt, call_param1 [concrete] +// CHECK:STDOUT: %return.patt: @Class.GetAddr.%pattern_type.loc16_34 (%pattern_type.afe) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @Class.GetAddr.%pattern_type.loc16_34 (%pattern_type.afe) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, @Class.%T.loc15_13.2 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %ptr.loc16_38.1: type = ptr_type %T.ref [symbolic = %ptr.loc16_38.2 (constants.%ptr.79f)] -// CHECK:STDOUT: %self.param: @GetAddr.%ptr.loc16_29.2 (%ptr.955) = value_param call_param0 -// CHECK:STDOUT: %.loc16_29: type = splice_block %ptr.loc16_29.1 [symbolic = %ptr.loc16_29.2 (constants.%ptr.955)] { +// CHECK:STDOUT: %ptr.loc16_38.2: type = ptr_type %T.ref [symbolic = %ptr.loc16_38.1 (constants.%ptr.79f)] +// CHECK:STDOUT: %self.param: @Class.GetAddr.%ptr.loc16_29.1 (%ptr.955) = value_param call_param0 +// CHECK:STDOUT: %.loc16_29: type = splice_block %ptr.loc16_29.2 [symbolic = %ptr.loc16_29.1 (constants.%ptr.955)] { // CHECK:STDOUT: %.loc16_25: type = specific_constant constants.%Class, @Class(constants.%T) [symbolic = %Class (constants.%Class)] // CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc16_25 [symbolic = %Class (constants.%Class)] -// CHECK:STDOUT: %ptr.loc16_29.1: type = ptr_type %Self.ref [symbolic = %ptr.loc16_29.2 (constants.%ptr.955)] +// CHECK:STDOUT: %ptr.loc16_29.2: type = ptr_type %Self.ref [symbolic = %ptr.loc16_29.1 (constants.%ptr.955)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @GetAddr.%ptr.loc16_29.2 (%ptr.955) = bind_name self, %self.param -// CHECK:STDOUT: %return.param: ref @GetAddr.%ptr.loc16_38.2 (%ptr.79f) = out_param call_param1 -// CHECK:STDOUT: %return: ref @GetAddr.%ptr.loc16_38.2 (%ptr.79f) = return_slot %return.param +// CHECK:STDOUT: %self: @Class.GetAddr.%ptr.loc16_29.1 (%ptr.955) = bind_name self, %self.param +// CHECK:STDOUT: %return.param: ref @Class.GetAddr.%ptr.loc16_38.1 (%ptr.79f) = out_param call_param1 +// CHECK:STDOUT: %return: ref @Class.GetAddr.%ptr.loc16_38.1 (%ptr.79f) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %GetValue.decl: @Class.%GetValue.type (%GetValue.type) = fn_decl @GetValue [symbolic = @Class.%GetValue (constants.%GetValue)] { -// CHECK:STDOUT: %self.patt: @GetValue.%pattern_type.loc21_15 (%pattern_type.3c1) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @GetValue.%pattern_type.loc21_15 (%pattern_type.3c1) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: @GetValue.%pattern_type.loc21_29 (%pattern_type.7dc) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @GetValue.%pattern_type.loc21_29 (%pattern_type.7dc) = out_param_pattern %return.patt, call_param1 [concrete] +// CHECK:STDOUT: %Class.GetValue.decl: @Class.%Class.GetValue.type (%Class.GetValue.type) = fn_decl @Class.GetValue [symbolic = @Class.%Class.GetValue (constants.%Class.GetValue)] { +// CHECK:STDOUT: %self.patt: @Class.GetValue.%pattern_type.loc21_15 (%pattern_type.3c1) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @Class.GetValue.%pattern_type.loc21_15 (%pattern_type.3c1) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %return.patt: @Class.GetValue.%pattern_type.loc21_29 (%pattern_type.7dc) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @Class.GetValue.%pattern_type.loc21_29 (%pattern_type.7dc) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, @Class.%T.loc15_13.2 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %self.param: @GetValue.%Class (%Class) = value_param call_param0 +// CHECK:STDOUT: %self.param: @Class.GetValue.%Class (%Class) = value_param call_param0 // CHECK:STDOUT: %.loc21_21.1: type = splice_block %Self.ref [symbolic = %Class (constants.%Class)] { // CHECK:STDOUT: %.loc21_21.2: type = specific_constant constants.%Class, @Class(constants.%T) [symbolic = %Class (constants.%Class)] // CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc21_21.2 [symbolic = %Class (constants.%Class)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @GetValue.%Class (%Class) = bind_name self, %self.param -// CHECK:STDOUT: %return.param: ref @GetValue.%T (%T) = out_param call_param1 -// CHECK:STDOUT: %return: ref @GetValue.%T (%T) = return_slot %return.param +// CHECK:STDOUT: %self: @Class.GetValue.%Class (%Class) = bind_name self, %self.param +// CHECK:STDOUT: %return.param: ref @Class.GetValue.%T (%T) = out_param call_param1 +// CHECK:STDOUT: %return: ref @Class.GetValue.%T (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc15_13.2 [symbolic = %T.loc15_13.1 (constants.%T)] // CHECK:STDOUT: %.loc25: @Class.%Class.elem (%Class.elem) = field_decl k, element0 [concrete] @@ -142,8 +142,8 @@ class Declaration(T:! type); // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class // CHECK:STDOUT: .T = -// CHECK:STDOUT: .GetAddr = %GetAddr.decl -// CHECK:STDOUT: .GetValue = %GetValue.decl +// CHECK:STDOUT: .GetAddr = %Class.GetAddr.decl +// CHECK:STDOUT: .GetValue = %Class.GetValue.decl // CHECK:STDOUT: .k = %.loc25 // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -154,32 +154,32 @@ class Declaration(T:! type); // CHECK:STDOUT: class; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @GetAddr(@Class.%T.loc15_13.2: type) { +// CHECK:STDOUT: generic fn @Class.GetAddr(@Class.%T.loc15_13.2: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T) [symbolic = %Class (constants.%Class)] -// CHECK:STDOUT: %ptr.loc16_29.2: type = ptr_type %Class [symbolic = %ptr.loc16_29.2 (constants.%ptr.955)] -// CHECK:STDOUT: %pattern_type.loc16_19: type = pattern_type %ptr.loc16_29.2 [symbolic = %pattern_type.loc16_19 (constants.%pattern_type.9e0)] -// CHECK:STDOUT: %ptr.loc16_38.2: type = ptr_type %T [symbolic = %ptr.loc16_38.2 (constants.%ptr.79f)] -// CHECK:STDOUT: %pattern_type.loc16_34: type = pattern_type %ptr.loc16_38.2 [symbolic = %pattern_type.loc16_34 (constants.%pattern_type.afe)] +// CHECK:STDOUT: %ptr.loc16_29.1: type = ptr_type %Class [symbolic = %ptr.loc16_29.1 (constants.%ptr.955)] +// CHECK:STDOUT: %pattern_type.loc16_19: type = pattern_type %ptr.loc16_29.1 [symbolic = %pattern_type.loc16_19 (constants.%pattern_type.9e0)] +// CHECK:STDOUT: %ptr.loc16_38.1: type = ptr_type %T [symbolic = %ptr.loc16_38.1 (constants.%ptr.79f)] +// CHECK:STDOUT: %pattern_type.loc16_34: type = pattern_type %ptr.loc16_38.1 [symbolic = %pattern_type.loc16_34 (constants.%pattern_type.afe)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc16_34: = require_complete_type %ptr.loc16_38.2 [symbolic = %require_complete.loc16_34 (constants.%require_complete.6e5)] -// CHECK:STDOUT: %require_complete.loc16_23: = require_complete_type %ptr.loc16_29.2 [symbolic = %require_complete.loc16_23 (constants.%require_complete.2ae)] +// CHECK:STDOUT: %require_complete.loc16_34: = require_complete_type %ptr.loc16_38.1 [symbolic = %require_complete.loc16_34 (constants.%require_complete.6e5)] +// CHECK:STDOUT: %require_complete.loc16_23: = require_complete_type %ptr.loc16_29.1 [symbolic = %require_complete.loc16_23 (constants.%require_complete.2ae)] // CHECK:STDOUT: %require_complete.loc17: = require_complete_type %Class [symbolic = %require_complete.loc17 (constants.%require_complete.4f8)] // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T [symbolic = %Class.elem (constants.%Class.elem)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @GetAddr.%ptr.loc16_29.2 (%ptr.955)) -> @GetAddr.%ptr.loc16_38.2 (%ptr.79f) { +// CHECK:STDOUT: fn(%self.param: @Class.GetAddr.%ptr.loc16_29.1 (%ptr.955)) -> @Class.GetAddr.%ptr.loc16_38.1 (%ptr.79f) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %self.ref: @GetAddr.%ptr.loc16_29.2 (%ptr.955) = name_ref self, %self -// CHECK:STDOUT: %.loc17_17.1: ref @GetAddr.%Class (%Class) = deref %self.ref -// CHECK:STDOUT: %k.ref: @GetAddr.%Class.elem (%Class.elem) = name_ref k, @Class.%.loc25 [concrete = @Class.%.loc25] -// CHECK:STDOUT: %.loc17_17.2: ref @GetAddr.%T (%T) = class_element_access %.loc17_17.1, element0 -// CHECK:STDOUT: %addr: @GetAddr.%ptr.loc16_38.2 (%ptr.79f) = addr_of %.loc17_17.2 +// CHECK:STDOUT: %self.ref: @Class.GetAddr.%ptr.loc16_29.1 (%ptr.955) = name_ref self, %self +// CHECK:STDOUT: %.loc17_17.1: ref @Class.GetAddr.%Class (%Class) = deref %self.ref +// CHECK:STDOUT: %k.ref: @Class.GetAddr.%Class.elem (%Class.elem) = name_ref k, @Class.%.loc25 [concrete = @Class.%.loc25] +// CHECK:STDOUT: %.loc17_17.2: ref @Class.GetAddr.%T (%T) = class_element_access %.loc17_17.1, element0 +// CHECK:STDOUT: %addr: @Class.GetAddr.%ptr.loc16_38.1 (%ptr.79f) = addr_of %.loc17_17.2 // CHECK:STDOUT: return %addr // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @GetValue(@Class.%T.loc15_13.2: type) { +// CHECK:STDOUT: generic fn @Class.GetValue(@Class.%T.loc15_13.2: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T) [symbolic = %Class (constants.%Class)] // CHECK:STDOUT: %pattern_type.loc21_15: type = pattern_type %Class [symbolic = %pattern_type.loc21_15 (constants.%pattern_type.3c1)] @@ -190,12 +190,12 @@ class Declaration(T:! type); // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T [symbolic = %Class.elem (constants.%Class.elem)] // CHECK:STDOUT: %require_complete.loc22: = require_complete_type %T [symbolic = %require_complete.loc22 (constants.%require_complete.4ae)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @GetValue.%Class (%Class)) -> @GetValue.%T (%T) { +// CHECK:STDOUT: fn(%self.param: @Class.GetValue.%Class (%Class)) -> @Class.GetValue.%T (%T) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %self.ref: @GetValue.%Class (%Class) = name_ref self, %self -// CHECK:STDOUT: %k.ref: @GetValue.%Class.elem (%Class.elem) = name_ref k, @Class.%.loc25 [concrete = @Class.%.loc25] -// CHECK:STDOUT: %.loc22_16.1: ref @GetValue.%T (%T) = class_element_access %self.ref, element0 -// CHECK:STDOUT: %.loc22_16.2: @GetValue.%T (%T) = bind_value %.loc22_16.1 +// CHECK:STDOUT: %self.ref: @Class.GetValue.%Class (%Class) = name_ref self, %self +// CHECK:STDOUT: %k.ref: @Class.GetValue.%Class.elem (%Class.elem) = name_ref k, @Class.%.loc25 [concrete = @Class.%.loc25] +// CHECK:STDOUT: %.loc22_16.1: ref @Class.GetValue.%T (%T) = class_element_access %self.ref, element0 +// CHECK:STDOUT: %.loc22_16.2: @Class.GetValue.%T (%T) = bind_value %.loc22_16.1 // CHECK:STDOUT: return %.loc22_16.2 // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -204,10 +204,10 @@ class Declaration(T:! type); // CHECK:STDOUT: %T.loc15_13.1 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %GetAddr.type => constants.%GetAddr.type -// CHECK:STDOUT: %GetAddr => constants.%GetAddr -// CHECK:STDOUT: %GetValue.type => constants.%GetValue.type -// CHECK:STDOUT: %GetValue => constants.%GetValue +// CHECK:STDOUT: %Class.GetAddr.type => constants.%Class.GetAddr.type +// CHECK:STDOUT: %Class.GetAddr => constants.%Class.GetAddr +// CHECK:STDOUT: %Class.GetValue.type => constants.%Class.GetValue.type +// CHECK:STDOUT: %Class.GetValue => constants.%Class.GetValue // CHECK:STDOUT: %require_complete => constants.%require_complete.4ae // CHECK:STDOUT: %Class => constants.%Class // CHECK:STDOUT: %Class.elem => constants.%Class.elem @@ -215,16 +215,16 @@ class Declaration(T:! type); // CHECK:STDOUT: %complete_type.loc26_1.2 => constants.%complete_type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @GetAddr(constants.%T) { +// CHECK:STDOUT: specific @Class.GetAddr(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %Class => constants.%Class -// CHECK:STDOUT: %ptr.loc16_29.2 => constants.%ptr.955 +// CHECK:STDOUT: %ptr.loc16_29.1 => constants.%ptr.955 // CHECK:STDOUT: %pattern_type.loc16_19 => constants.%pattern_type.9e0 -// CHECK:STDOUT: %ptr.loc16_38.2 => constants.%ptr.79f +// CHECK:STDOUT: %ptr.loc16_38.1 => constants.%ptr.79f // CHECK:STDOUT: %pattern_type.loc16_34 => constants.%pattern_type.afe // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @GetValue(constants.%T) { +// CHECK:STDOUT: specific @Class.GetValue(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %Class => constants.%Class // CHECK:STDOUT: %pattern_type.loc21_15 => constants.%pattern_type.3c1 diff --git a/toolchain/check/testdata/class/generic/call.carbon b/toolchain/check/testdata/class/generic/call.carbon index 56f7375d0cba..499e4d39e2cc 100644 --- a/toolchain/check/testdata/class/generic/call.carbon +++ b/toolchain/check/testdata/class/generic/call.carbon @@ -112,24 +112,24 @@ class Outer(T:! type) { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.4e6: = bound_method %int_5.64b, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.a25: = bound_method %int_5.64b, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.4e6: = bound_method %int_5.64b, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.a25: = bound_method %int_5.64b, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_5.0f6: %i32 = int_value 5 [concrete] // CHECK:STDOUT: %Class.f29: type = class_type @Class, @Class(%ptr.235, %int_5.0f6) [concrete] // CHECK:STDOUT: %pattern_type.d51: type = pattern_type %Class.f29 [concrete] // CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [concrete] -// CHECK:STDOUT: %Convert.bound.d04: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b6e: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b6e: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: %Class.dd4: type = class_type @Class, @Class(%empty_tuple.type, %int_0.6a9) [concrete] // CHECK:STDOUT: %pattern_type.c73: type = pattern_type %Class.dd4 [concrete] @@ -144,8 +144,8 @@ class Outer(T:! type) { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -178,12 +178,12 @@ class Outer(T:! type) { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %ptr: type = ptr_type %i32 [concrete = constants.%ptr.235] // CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [concrete = constants.%int_5.64b] -// CHECK:STDOUT: %impl.elem0.loc6: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc6_21.1: = bound_method %int_5, %impl.elem0.loc6 [concrete = constants.%Convert.bound.4e6] -// CHECK:STDOUT: %specific_fn.loc6: = specific_function %impl.elem0.loc6, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc6: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc6_21.1: = bound_method %int_5, %impl.elem0.loc6 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.4e6] +// CHECK:STDOUT: %specific_fn.loc6: = specific_function %impl.elem0.loc6, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc6_21.2: = bound_method %int_5, %specific_fn.loc6 [concrete = constants.%bound_method.a25] -// CHECK:STDOUT: %int.convert_checked.loc6: init %i32 = call %bound_method.loc6_21.2(%int_5) [concrete = constants.%int_5.0f6] -// CHECK:STDOUT: %.loc6_21.2: %i32 = value_of_initializer %int.convert_checked.loc6 [concrete = constants.%int_5.0f6] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6: init %i32 = call %bound_method.loc6_21.2(%int_5) [concrete = constants.%int_5.0f6] +// CHECK:STDOUT: %.loc6_21.2: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6 [concrete = constants.%int_5.0f6] // CHECK:STDOUT: %.loc6_21.3: %i32 = converted %int_5, %.loc6_21.2 [concrete = constants.%int_5.0f6] // CHECK:STDOUT: %Class.loc6: type = class_type @Class, @Class(constants.%ptr.235, constants.%int_5.0f6) [concrete = constants.%Class.f29] // CHECK:STDOUT: } @@ -198,12 +198,12 @@ class Outer(T:! type) { // CHECK:STDOUT: %.loc9_15: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] // CHECK:STDOUT: %.loc9_19.2: type = converted %.loc9_15, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %impl.elem0.loc9: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc9_19.1: = bound_method %int_0, %impl.elem0.loc9 [concrete = constants.%Convert.bound.d04] -// CHECK:STDOUT: %specific_fn.loc9: = specific_function %impl.elem0.loc9, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc9: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc9_19.1: = bound_method %int_0, %impl.elem0.loc9 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04] +// CHECK:STDOUT: %specific_fn.loc9: = specific_function %impl.elem0.loc9, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc9_19.2: = bound_method %int_0, %specific_fn.loc9 [concrete = constants.%bound_method.b6e] -// CHECK:STDOUT: %int.convert_checked.loc9: init %i32 = call %bound_method.loc9_19.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc9_19.3: %i32 = value_of_initializer %int.convert_checked.loc9 [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9: init %i32 = call %bound_method.loc9_19.2(%int_0) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc9_19.3: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc9_19.4: %i32 = converted %int_0, %.loc9_19.3 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %Class.loc9: type = class_type @Class, @Class(constants.%empty_tuple.type, constants.%int_0.6a9) [concrete = constants.%Class.dd4] // CHECK:STDOUT: } @@ -512,19 +512,19 @@ class Outer(T:! type) { // CHECK:STDOUT: %Inner.generic.137: %Inner.type.eae = struct_value () [symbolic] // CHECK:STDOUT: %Inner.c71: type = class_type @Inner, @Inner(%T, %U) [symbolic] // CHECK:STDOUT: %pattern_type.e86: type = pattern_type %Outer.9d6 [symbolic] -// CHECK:STDOUT: %A.type.8d7: type = fn_type @A, @Inner(%T, %U) [symbolic] -// CHECK:STDOUT: %A.d0e: %A.type.8d7 = struct_value () [symbolic] +// CHECK:STDOUT: %Inner.A.type.8d7: type = fn_type @Inner.A, @Inner(%T, %U) [symbolic] +// CHECK:STDOUT: %Inner.A.d0e: %Inner.A.type.8d7 = struct_value () [symbolic] // CHECK:STDOUT: %Outer.99f: type = class_type @Outer, @Outer(%U) [symbolic] // CHECK:STDOUT: %pattern_type.089: type = pattern_type %Outer.99f [symbolic] -// CHECK:STDOUT: %B.type.880: type = fn_type @B, @Inner(%T, %U) [symbolic] -// CHECK:STDOUT: %B.c7b: %B.type.880 = struct_value () [symbolic] +// CHECK:STDOUT: %Inner.B.type.880: type = fn_type @Inner.B, @Inner(%T, %U) [symbolic] +// CHECK:STDOUT: %Inner.B.c7b: %Inner.B.type.880 = struct_value () [symbolic] // CHECK:STDOUT: %Inner.13a: type = class_type @Inner, @Inner(%T, %T) [symbolic] // CHECK:STDOUT: %pattern_type.a60: type = pattern_type %Inner.13a [symbolic] -// CHECK:STDOUT: %C.type.714: type = fn_type @C, @Inner(%T, %U) [symbolic] -// CHECK:STDOUT: %C.e62: %C.type.714 = struct_value () [symbolic] +// CHECK:STDOUT: %Inner.C.type.714: type = fn_type @Inner.C, @Inner(%T, %U) [symbolic] +// CHECK:STDOUT: %Inner.C.e62: %Inner.C.type.714 = struct_value () [symbolic] // CHECK:STDOUT: %pattern_type.372: type = pattern_type %Inner.c71 [symbolic] -// CHECK:STDOUT: %D.type.102: type = fn_type @D, @Inner(%T, %U) [symbolic] -// CHECK:STDOUT: %D.d85: %D.type.102 = struct_value () [symbolic] +// CHECK:STDOUT: %Inner.D.type.102: type = fn_type @Inner.D, @Inner(%T, %U) [symbolic] +// CHECK:STDOUT: %Inner.D.d85: %Inner.D.type.102 = struct_value () [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %require_complete.127: = require_complete_type %Outer.9d6 [symbolic] @@ -533,14 +533,14 @@ class Outer(T:! type) { // CHECK:STDOUT: %Inner.generic.e3b: %Inner.type.a71 = struct_value () [symbolic] // CHECK:STDOUT: %require_complete.964: = require_complete_type %Outer.99f [symbolic] // CHECK:STDOUT: %Outer.val.a2f: %Outer.99f = struct_value () [symbolic] -// CHECK:STDOUT: %A.type.5c8: type = fn_type @A, @Inner(%T, %T) [symbolic] -// CHECK:STDOUT: %A.7e2: %A.type.5c8 = struct_value () [symbolic] -// CHECK:STDOUT: %B.type.ec0: type = fn_type @B, @Inner(%T, %T) [symbolic] -// CHECK:STDOUT: %B.051: %B.type.ec0 = struct_value () [symbolic] -// CHECK:STDOUT: %C.type.1cf: type = fn_type @C, @Inner(%T, %T) [symbolic] -// CHECK:STDOUT: %C.cf5: %C.type.1cf = struct_value () [symbolic] -// CHECK:STDOUT: %D.type.7bc: type = fn_type @D, @Inner(%T, %T) [symbolic] -// CHECK:STDOUT: %D.aa3: %D.type.7bc = struct_value () [symbolic] +// CHECK:STDOUT: %Inner.A.type.5c8: type = fn_type @Inner.A, @Inner(%T, %T) [symbolic] +// CHECK:STDOUT: %Inner.A.7e2: %Inner.A.type.5c8 = struct_value () [symbolic] +// CHECK:STDOUT: %Inner.B.type.ec0: type = fn_type @Inner.B, @Inner(%T, %T) [symbolic] +// CHECK:STDOUT: %Inner.B.051: %Inner.B.type.ec0 = struct_value () [symbolic] +// CHECK:STDOUT: %Inner.C.type.1cf: type = fn_type @Inner.C, @Inner(%T, %T) [symbolic] +// CHECK:STDOUT: %Inner.C.cf5: %Inner.C.type.1cf = struct_value () [symbolic] +// CHECK:STDOUT: %Inner.D.type.7bc: type = fn_type @Inner.D, @Inner(%T, %T) [symbolic] +// CHECK:STDOUT: %Inner.D.aa3: %Inner.D.type.7bc = struct_value () [symbolic] // CHECK:STDOUT: %require_complete.7b1: = require_complete_type %Inner.13a [symbolic] // CHECK:STDOUT: %Inner.val.69d: %Inner.13a = struct_value () [symbolic] // CHECK:STDOUT: %require_complete.e7e: = require_complete_type %Inner.c71 [symbolic] @@ -578,7 +578,7 @@ class Outer(T:! type) { // CHECK:STDOUT: %Inner.decl: @Outer.%Inner.type (%Inner.type.eae) = class_decl @Inner [symbolic = @Outer.%Inner.generic (constants.%Inner.generic.137)] { // CHECK:STDOUT: %U.patt: %pattern_type.98f = symbolic_binding_pattern U, 1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %U.loc3_15.1: type = bind_symbolic_name U, 1 [symbolic = %U.loc3_15.2 (constants.%U)] +// CHECK:STDOUT: %U.loc3_15.2: type = bind_symbolic_name U, 1 [symbolic = %U.loc3_15.1 (constants.%U)] // CHECK:STDOUT: } // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] @@ -592,62 +592,62 @@ class Outer(T:! type) { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic class @Inner(@Outer.%T.loc2_13.2: type, %U.loc3_15.1: type) { -// CHECK:STDOUT: %U.loc3_15.2: type = bind_symbolic_name U, 1 [symbolic = %U.loc3_15.2 (constants.%U)] +// CHECK:STDOUT: generic class @Inner(@Outer.%T.loc2_13.2: type, %U.loc3_15.2: type) { +// CHECK:STDOUT: %U.loc3_15.1: type = bind_symbolic_name U, 1 [symbolic = %U.loc3_15.1 (constants.%U)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %A.type: type = fn_type @A, @Inner(%T, %U.loc3_15.2) [symbolic = %A.type (constants.%A.type.8d7)] -// CHECK:STDOUT: %A: @Inner.%A.type (%A.type.8d7) = struct_value () [symbolic = %A (constants.%A.d0e)] -// CHECK:STDOUT: %B.type: type = fn_type @B, @Inner(%T, %U.loc3_15.2) [symbolic = %B.type (constants.%B.type.880)] -// CHECK:STDOUT: %B: @Inner.%B.type (%B.type.880) = struct_value () [symbolic = %B (constants.%B.c7b)] -// CHECK:STDOUT: %C.type: type = fn_type @C, @Inner(%T, %U.loc3_15.2) [symbolic = %C.type (constants.%C.type.714)] -// CHECK:STDOUT: %C: @Inner.%C.type (%C.type.714) = struct_value () [symbolic = %C (constants.%C.e62)] -// CHECK:STDOUT: %D.type: type = fn_type @D, @Inner(%T, %U.loc3_15.2) [symbolic = %D.type (constants.%D.type.102)] -// CHECK:STDOUT: %D: @Inner.%D.type (%D.type.102) = struct_value () [symbolic = %D (constants.%D.d85)] +// CHECK:STDOUT: %Inner.A.type: type = fn_type @Inner.A, @Inner(%T, %U.loc3_15.1) [symbolic = %Inner.A.type (constants.%Inner.A.type.8d7)] +// CHECK:STDOUT: %Inner.A: @Inner.%Inner.A.type (%Inner.A.type.8d7) = struct_value () [symbolic = %Inner.A (constants.%Inner.A.d0e)] +// CHECK:STDOUT: %Inner.B.type: type = fn_type @Inner.B, @Inner(%T, %U.loc3_15.1) [symbolic = %Inner.B.type (constants.%Inner.B.type.880)] +// CHECK:STDOUT: %Inner.B: @Inner.%Inner.B.type (%Inner.B.type.880) = struct_value () [symbolic = %Inner.B (constants.%Inner.B.c7b)] +// CHECK:STDOUT: %Inner.C.type: type = fn_type @Inner.C, @Inner(%T, %U.loc3_15.1) [symbolic = %Inner.C.type (constants.%Inner.C.type.714)] +// CHECK:STDOUT: %Inner.C: @Inner.%Inner.C.type (%Inner.C.type.714) = struct_value () [symbolic = %Inner.C (constants.%Inner.C.e62)] +// CHECK:STDOUT: %Inner.D.type: type = fn_type @Inner.D, @Inner(%T, %U.loc3_15.1) [symbolic = %Inner.D.type (constants.%Inner.D.type.102)] +// CHECK:STDOUT: %Inner.D: @Inner.%Inner.D.type (%Inner.D.type.102) = struct_value () [symbolic = %Inner.D (constants.%Inner.D.d85)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %A.decl: @Inner.%A.type (%A.type.8d7) = fn_decl @A [symbolic = @Inner.%A (constants.%A.d0e)] { -// CHECK:STDOUT: %return.patt: @A.%pattern_type (%pattern_type.e86) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @A.%pattern_type (%pattern_type.e86) = out_param_pattern %return.patt, call_param0 [concrete] +// CHECK:STDOUT: %Inner.A.decl: @Inner.%Inner.A.type (%Inner.A.type.8d7) = fn_decl @Inner.A [symbolic = @Inner.%Inner.A (constants.%Inner.A.d0e)] { +// CHECK:STDOUT: %return.patt: @Inner.A.%pattern_type (%pattern_type.e86) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @Inner.A.%pattern_type (%pattern_type.e86) = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Outer.ref: %Outer.type = name_ref Outer, file.%Outer.decl [concrete = constants.%Outer.generic] // CHECK:STDOUT: %T.ref: type = name_ref T, @Outer.%T.loc2_13.2 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %Outer.loc4_22.1: type = class_type @Outer, @Outer(constants.%T) [symbolic = %Outer.loc4_22.2 (constants.%Outer.9d6)] -// CHECK:STDOUT: %return.param: ref @A.%Outer.loc4_22.2 (%Outer.9d6) = out_param call_param0 -// CHECK:STDOUT: %return: ref @A.%Outer.loc4_22.2 (%Outer.9d6) = return_slot %return.param +// CHECK:STDOUT: %Outer.loc4_22.2: type = class_type @Outer, @Outer(constants.%T) [symbolic = %Outer.loc4_22.1 (constants.%Outer.9d6)] +// CHECK:STDOUT: %return.param: ref @Inner.A.%Outer.loc4_22.1 (%Outer.9d6) = out_param call_param0 +// CHECK:STDOUT: %return: ref @Inner.A.%Outer.loc4_22.1 (%Outer.9d6) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %B.decl: @Inner.%B.type (%B.type.880) = fn_decl @B [symbolic = @Inner.%B (constants.%B.c7b)] { -// CHECK:STDOUT: %return.patt: @B.%pattern_type (%pattern_type.089) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @B.%pattern_type (%pattern_type.089) = out_param_pattern %return.patt, call_param0 [concrete] +// CHECK:STDOUT: %Inner.B.decl: @Inner.%Inner.B.type (%Inner.B.type.880) = fn_decl @Inner.B [symbolic = @Inner.%Inner.B (constants.%Inner.B.c7b)] { +// CHECK:STDOUT: %return.patt: @Inner.B.%pattern_type (%pattern_type.089) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @Inner.B.%pattern_type (%pattern_type.089) = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Outer.ref: %Outer.type = name_ref Outer, file.%Outer.decl [concrete = constants.%Outer.generic] -// CHECK:STDOUT: %U.ref: type = name_ref U, @Inner.%U.loc3_15.1 [symbolic = %U (constants.%U)] -// CHECK:STDOUT: %Outer.loc7_22.1: type = class_type @Outer, @Outer(constants.%U) [symbolic = %Outer.loc7_22.2 (constants.%Outer.99f)] -// CHECK:STDOUT: %return.param: ref @B.%Outer.loc7_22.2 (%Outer.99f) = out_param call_param0 -// CHECK:STDOUT: %return: ref @B.%Outer.loc7_22.2 (%Outer.99f) = return_slot %return.param +// CHECK:STDOUT: %U.ref: type = name_ref U, @Inner.%U.loc3_15.2 [symbolic = %U (constants.%U)] +// CHECK:STDOUT: %Outer.loc7_22.2: type = class_type @Outer, @Outer(constants.%U) [symbolic = %Outer.loc7_22.1 (constants.%Outer.99f)] +// CHECK:STDOUT: %return.param: ref @Inner.B.%Outer.loc7_22.1 (%Outer.99f) = out_param call_param0 +// CHECK:STDOUT: %return: ref @Inner.B.%Outer.loc7_22.1 (%Outer.99f) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %C.decl: @Inner.%C.type (%C.type.714) = fn_decl @C [symbolic = @Inner.%C (constants.%C.e62)] { -// CHECK:STDOUT: %return.patt: @C.%pattern_type (%pattern_type.a60) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @C.%pattern_type (%pattern_type.a60) = out_param_pattern %return.patt, call_param0 [concrete] +// CHECK:STDOUT: %Inner.C.decl: @Inner.%Inner.C.type (%Inner.C.type.714) = fn_decl @Inner.C [symbolic = @Inner.%Inner.C (constants.%Inner.C.e62)] { +// CHECK:STDOUT: %return.patt: @Inner.C.%pattern_type (%pattern_type.a60) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @Inner.C.%pattern_type (%pattern_type.a60) = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc10: @C.%Inner.type (%Inner.type.eae) = specific_constant @Outer.%Inner.decl, @Outer(constants.%T) [symbolic = %Inner.generic (constants.%Inner.generic.137)] -// CHECK:STDOUT: %Inner.ref: @C.%Inner.type (%Inner.type.eae) = name_ref Inner, %.loc10 [symbolic = %Inner.generic (constants.%Inner.generic.137)] +// CHECK:STDOUT: %.loc10: @Inner.C.%Inner.type (%Inner.type.eae) = specific_constant @Outer.%Inner.decl, @Outer(constants.%T) [symbolic = %Inner.generic (constants.%Inner.generic.137)] +// CHECK:STDOUT: %Inner.ref: @Inner.C.%Inner.type (%Inner.type.eae) = name_ref Inner, %.loc10 [symbolic = %Inner.generic (constants.%Inner.generic.137)] // CHECK:STDOUT: %T.ref: type = name_ref T, @Outer.%T.loc2_13.2 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %Inner.loc10_22.1: type = class_type @Inner, @Inner(constants.%T, constants.%T) [symbolic = %Inner.loc10_22.2 (constants.%Inner.13a)] -// CHECK:STDOUT: %return.param: ref @C.%Inner.loc10_22.2 (%Inner.13a) = out_param call_param0 -// CHECK:STDOUT: %return: ref @C.%Inner.loc10_22.2 (%Inner.13a) = return_slot %return.param +// CHECK:STDOUT: %Inner.loc10_22.2: type = class_type @Inner, @Inner(constants.%T, constants.%T) [symbolic = %Inner.loc10_22.1 (constants.%Inner.13a)] +// CHECK:STDOUT: %return.param: ref @Inner.C.%Inner.loc10_22.1 (%Inner.13a) = out_param call_param0 +// CHECK:STDOUT: %return: ref @Inner.C.%Inner.loc10_22.1 (%Inner.13a) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %D.decl: @Inner.%D.type (%D.type.102) = fn_decl @D [symbolic = @Inner.%D (constants.%D.d85)] { -// CHECK:STDOUT: %return.patt: @D.%pattern_type (%pattern_type.372) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @D.%pattern_type (%pattern_type.372) = out_param_pattern %return.patt, call_param0 [concrete] +// CHECK:STDOUT: %Inner.D.decl: @Inner.%Inner.D.type (%Inner.D.type.102) = fn_decl @Inner.D [symbolic = @Inner.%Inner.D (constants.%Inner.D.d85)] { +// CHECK:STDOUT: %return.patt: @Inner.D.%pattern_type (%pattern_type.372) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @Inner.D.%pattern_type (%pattern_type.372) = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc13: @D.%Inner.type (%Inner.type.eae) = specific_constant @Outer.%Inner.decl, @Outer(constants.%T) [symbolic = %Inner.generic (constants.%Inner.generic.137)] -// CHECK:STDOUT: %Inner.ref: @D.%Inner.type (%Inner.type.eae) = name_ref Inner, %.loc13 [symbolic = %Inner.generic (constants.%Inner.generic.137)] -// CHECK:STDOUT: %U.ref: type = name_ref U, @Inner.%U.loc3_15.1 [symbolic = %U (constants.%U)] -// CHECK:STDOUT: %Inner.loc13_22.1: type = class_type @Inner, @Inner(constants.%T, constants.%U) [symbolic = %Inner.loc13_22.2 (constants.%Inner.c71)] -// CHECK:STDOUT: %return.param: ref @D.%Inner.loc13_22.2 (%Inner.c71) = out_param call_param0 -// CHECK:STDOUT: %return: ref @D.%Inner.loc13_22.2 (%Inner.c71) = return_slot %return.param +// CHECK:STDOUT: %.loc13: @Inner.D.%Inner.type (%Inner.type.eae) = specific_constant @Outer.%Inner.decl, @Outer(constants.%T) [symbolic = %Inner.generic (constants.%Inner.generic.137)] +// CHECK:STDOUT: %Inner.ref: @Inner.D.%Inner.type (%Inner.type.eae) = name_ref Inner, %.loc13 [symbolic = %Inner.generic (constants.%Inner.generic.137)] +// CHECK:STDOUT: %U.ref: type = name_ref U, @Inner.%U.loc3_15.2 [symbolic = %U (constants.%U)] +// CHECK:STDOUT: %Inner.loc13_22.2: type = class_type @Inner, @Inner(constants.%T, constants.%U) [symbolic = %Inner.loc13_22.1 (constants.%Inner.c71)] +// CHECK:STDOUT: %return.param: ref @Inner.D.%Inner.loc13_22.1 (%Inner.c71) = out_param call_param0 +// CHECK:STDOUT: %return: ref @Inner.D.%Inner.loc13_22.1 (%Inner.c71) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] @@ -657,88 +657,88 @@ class Outer(T:! type) { // CHECK:STDOUT: .Self = constants.%Inner.c71 // CHECK:STDOUT: .Outer = // CHECK:STDOUT: .T = -// CHECK:STDOUT: .A = %A.decl +// CHECK:STDOUT: .A = %Inner.A.decl // CHECK:STDOUT: .U = -// CHECK:STDOUT: .B = %B.decl +// CHECK:STDOUT: .B = %Inner.B.decl // CHECK:STDOUT: .Inner = -// CHECK:STDOUT: .C = %C.decl -// CHECK:STDOUT: .D = %D.decl +// CHECK:STDOUT: .C = %Inner.C.decl +// CHECK:STDOUT: .D = %Inner.D.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @A(@Outer.%T.loc2_13.2: type, @Inner.%U.loc3_15.1: type) { +// CHECK:STDOUT: generic fn @Inner.A(@Outer.%T.loc2_13.2: type, @Inner.%U.loc3_15.2: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %Outer.loc4_22.2: type = class_type @Outer, @Outer(%T) [symbolic = %Outer.loc4_22.2 (constants.%Outer.9d6)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Outer.loc4_22.2 [symbolic = %pattern_type (constants.%pattern_type.e86)] +// CHECK:STDOUT: %Outer.loc4_22.1: type = class_type @Outer, @Outer(%T) [symbolic = %Outer.loc4_22.1 (constants.%Outer.9d6)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Outer.loc4_22.1 [symbolic = %pattern_type (constants.%pattern_type.e86)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type %Outer.loc4_22.2 [symbolic = %require_complete (constants.%require_complete.127)] -// CHECK:STDOUT: %Outer.val: @A.%Outer.loc4_22.2 (%Outer.9d6) = struct_value () [symbolic = %Outer.val (constants.%Outer.val.234)] +// CHECK:STDOUT: %require_complete: = require_complete_type %Outer.loc4_22.1 [symbolic = %require_complete (constants.%require_complete.127)] +// CHECK:STDOUT: %Outer.val: @Inner.A.%Outer.loc4_22.1 (%Outer.9d6) = struct_value () [symbolic = %Outer.val (constants.%Outer.val.234)] // CHECK:STDOUT: -// CHECK:STDOUT: fn() -> %return.param: @A.%Outer.loc4_22.2 (%Outer.9d6) { +// CHECK:STDOUT: fn() -> %return.param: @Inner.A.%Outer.loc4_22.1 (%Outer.9d6) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %.loc5_15.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc5_15.2: init @A.%Outer.loc4_22.2 (%Outer.9d6) = class_init (), %return [symbolic = %Outer.val (constants.%Outer.val.234)] -// CHECK:STDOUT: %.loc5_16: init @A.%Outer.loc4_22.2 (%Outer.9d6) = converted %.loc5_15.1, %.loc5_15.2 [symbolic = %Outer.val (constants.%Outer.val.234)] +// CHECK:STDOUT: %.loc5_15.2: init @Inner.A.%Outer.loc4_22.1 (%Outer.9d6) = class_init (), %return [symbolic = %Outer.val (constants.%Outer.val.234)] +// CHECK:STDOUT: %.loc5_16: init @Inner.A.%Outer.loc4_22.1 (%Outer.9d6) = converted %.loc5_15.1, %.loc5_15.2 [symbolic = %Outer.val (constants.%Outer.val.234)] // CHECK:STDOUT: return %.loc5_16 to %return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @B(@Outer.%T.loc2_13.2: type, @Inner.%U.loc3_15.1: type) { +// CHECK:STDOUT: generic fn @Inner.B(@Outer.%T.loc2_13.2: type, @Inner.%U.loc3_15.2: type) { // CHECK:STDOUT: %U: type = bind_symbolic_name U, 1 [symbolic = %U (constants.%U)] -// CHECK:STDOUT: %Outer.loc7_22.2: type = class_type @Outer, @Outer(%U) [symbolic = %Outer.loc7_22.2 (constants.%Outer.99f)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Outer.loc7_22.2 [symbolic = %pattern_type (constants.%pattern_type.089)] +// CHECK:STDOUT: %Outer.loc7_22.1: type = class_type @Outer, @Outer(%U) [symbolic = %Outer.loc7_22.1 (constants.%Outer.99f)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Outer.loc7_22.1 [symbolic = %pattern_type (constants.%pattern_type.089)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type %Outer.loc7_22.2 [symbolic = %require_complete (constants.%require_complete.964)] -// CHECK:STDOUT: %Outer.val: @B.%Outer.loc7_22.2 (%Outer.99f) = struct_value () [symbolic = %Outer.val (constants.%Outer.val.a2f)] +// CHECK:STDOUT: %require_complete: = require_complete_type %Outer.loc7_22.1 [symbolic = %require_complete (constants.%require_complete.964)] +// CHECK:STDOUT: %Outer.val: @Inner.B.%Outer.loc7_22.1 (%Outer.99f) = struct_value () [symbolic = %Outer.val (constants.%Outer.val.a2f)] // CHECK:STDOUT: -// CHECK:STDOUT: fn() -> %return.param: @B.%Outer.loc7_22.2 (%Outer.99f) { +// CHECK:STDOUT: fn() -> %return.param: @Inner.B.%Outer.loc7_22.1 (%Outer.99f) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %.loc8_15.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc8_15.2: init @B.%Outer.loc7_22.2 (%Outer.99f) = class_init (), %return [symbolic = %Outer.val (constants.%Outer.val.a2f)] -// CHECK:STDOUT: %.loc8_16: init @B.%Outer.loc7_22.2 (%Outer.99f) = converted %.loc8_15.1, %.loc8_15.2 [symbolic = %Outer.val (constants.%Outer.val.a2f)] +// CHECK:STDOUT: %.loc8_15.2: init @Inner.B.%Outer.loc7_22.1 (%Outer.99f) = class_init (), %return [symbolic = %Outer.val (constants.%Outer.val.a2f)] +// CHECK:STDOUT: %.loc8_16: init @Inner.B.%Outer.loc7_22.1 (%Outer.99f) = converted %.loc8_15.1, %.loc8_15.2 [symbolic = %Outer.val (constants.%Outer.val.a2f)] // CHECK:STDOUT: return %.loc8_16 to %return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @C(@Outer.%T.loc2_13.2: type, @Inner.%U.loc3_15.1: type) { +// CHECK:STDOUT: generic fn @Inner.C(@Outer.%T.loc2_13.2: type, @Inner.%U.loc3_15.2: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Inner.type: type = generic_class_type @Inner, @Outer(%T) [symbolic = %Inner.type (constants.%Inner.type.eae)] -// CHECK:STDOUT: %Inner.generic: @C.%Inner.type (%Inner.type.eae) = struct_value () [symbolic = %Inner.generic (constants.%Inner.generic.137)] -// CHECK:STDOUT: %Inner.loc10_22.2: type = class_type @Inner, @Inner(%T, %T) [symbolic = %Inner.loc10_22.2 (constants.%Inner.13a)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Inner.loc10_22.2 [symbolic = %pattern_type (constants.%pattern_type.a60)] +// CHECK:STDOUT: %Inner.generic: @Inner.C.%Inner.type (%Inner.type.eae) = struct_value () [symbolic = %Inner.generic (constants.%Inner.generic.137)] +// CHECK:STDOUT: %Inner.loc10_22.1: type = class_type @Inner, @Inner(%T, %T) [symbolic = %Inner.loc10_22.1 (constants.%Inner.13a)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Inner.loc10_22.1 [symbolic = %pattern_type (constants.%pattern_type.a60)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type %Inner.loc10_22.2 [symbolic = %require_complete (constants.%require_complete.7b1)] -// CHECK:STDOUT: %Inner.val: @C.%Inner.loc10_22.2 (%Inner.13a) = struct_value () [symbolic = %Inner.val (constants.%Inner.val.69d)] +// CHECK:STDOUT: %require_complete: = require_complete_type %Inner.loc10_22.1 [symbolic = %require_complete (constants.%require_complete.7b1)] +// CHECK:STDOUT: %Inner.val: @Inner.C.%Inner.loc10_22.1 (%Inner.13a) = struct_value () [symbolic = %Inner.val (constants.%Inner.val.69d)] // CHECK:STDOUT: -// CHECK:STDOUT: fn() -> %return.param: @C.%Inner.loc10_22.2 (%Inner.13a) { +// CHECK:STDOUT: fn() -> %return.param: @Inner.C.%Inner.loc10_22.1 (%Inner.13a) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %.loc11_15.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc11_15.2: init @C.%Inner.loc10_22.2 (%Inner.13a) = class_init (), %return [symbolic = %Inner.val (constants.%Inner.val.69d)] -// CHECK:STDOUT: %.loc11_16: init @C.%Inner.loc10_22.2 (%Inner.13a) = converted %.loc11_15.1, %.loc11_15.2 [symbolic = %Inner.val (constants.%Inner.val.69d)] +// CHECK:STDOUT: %.loc11_15.2: init @Inner.C.%Inner.loc10_22.1 (%Inner.13a) = class_init (), %return [symbolic = %Inner.val (constants.%Inner.val.69d)] +// CHECK:STDOUT: %.loc11_16: init @Inner.C.%Inner.loc10_22.1 (%Inner.13a) = converted %.loc11_15.1, %.loc11_15.2 [symbolic = %Inner.val (constants.%Inner.val.69d)] // CHECK:STDOUT: return %.loc11_16 to %return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @D(@Outer.%T.loc2_13.2: type, @Inner.%U.loc3_15.1: type) { +// CHECK:STDOUT: generic fn @Inner.D(@Outer.%T.loc2_13.2: type, @Inner.%U.loc3_15.2: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Inner.type: type = generic_class_type @Inner, @Outer(%T) [symbolic = %Inner.type (constants.%Inner.type.eae)] -// CHECK:STDOUT: %Inner.generic: @D.%Inner.type (%Inner.type.eae) = struct_value () [symbolic = %Inner.generic (constants.%Inner.generic.137)] +// CHECK:STDOUT: %Inner.generic: @Inner.D.%Inner.type (%Inner.type.eae) = struct_value () [symbolic = %Inner.generic (constants.%Inner.generic.137)] // CHECK:STDOUT: %U: type = bind_symbolic_name U, 1 [symbolic = %U (constants.%U)] -// CHECK:STDOUT: %Inner.loc13_22.2: type = class_type @Inner, @Inner(%T, %U) [symbolic = %Inner.loc13_22.2 (constants.%Inner.c71)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Inner.loc13_22.2 [symbolic = %pattern_type (constants.%pattern_type.372)] +// CHECK:STDOUT: %Inner.loc13_22.1: type = class_type @Inner, @Inner(%T, %U) [symbolic = %Inner.loc13_22.1 (constants.%Inner.c71)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Inner.loc13_22.1 [symbolic = %pattern_type (constants.%pattern_type.372)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type %Inner.loc13_22.2 [symbolic = %require_complete (constants.%require_complete.e7e)] -// CHECK:STDOUT: %Inner.val: @D.%Inner.loc13_22.2 (%Inner.c71) = struct_value () [symbolic = %Inner.val (constants.%Inner.val.dfa)] +// CHECK:STDOUT: %require_complete: = require_complete_type %Inner.loc13_22.1 [symbolic = %require_complete (constants.%require_complete.e7e)] +// CHECK:STDOUT: %Inner.val: @Inner.D.%Inner.loc13_22.1 (%Inner.c71) = struct_value () [symbolic = %Inner.val (constants.%Inner.val.dfa)] // CHECK:STDOUT: -// CHECK:STDOUT: fn() -> %return.param: @D.%Inner.loc13_22.2 (%Inner.c71) { +// CHECK:STDOUT: fn() -> %return.param: @Inner.D.%Inner.loc13_22.1 (%Inner.c71) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %.loc14_15.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc14_15.2: init @D.%Inner.loc13_22.2 (%Inner.c71) = class_init (), %return [symbolic = %Inner.val (constants.%Inner.val.dfa)] -// CHECK:STDOUT: %.loc14_16: init @D.%Inner.loc13_22.2 (%Inner.c71) = converted %.loc14_15.1, %.loc14_15.2 [symbolic = %Inner.val (constants.%Inner.val.dfa)] +// CHECK:STDOUT: %.loc14_15.2: init @Inner.D.%Inner.loc13_22.1 (%Inner.c71) = class_init (), %return [symbolic = %Inner.val (constants.%Inner.val.dfa)] +// CHECK:STDOUT: %.loc14_16: init @Inner.D.%Inner.loc13_22.1 (%Inner.c71) = converted %.loc14_15.1, %.loc14_15.2 [symbolic = %Inner.val (constants.%Inner.val.dfa)] // CHECK:STDOUT: return %.loc14_16 to %return // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -752,23 +752,23 @@ class Outer(T:! type) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Inner(constants.%T, constants.%U) { -// CHECK:STDOUT: %U.loc3_15.2 => constants.%U +// CHECK:STDOUT: %U.loc3_15.1 => constants.%U // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %T => constants.%T -// CHECK:STDOUT: %A.type => constants.%A.type.8d7 -// CHECK:STDOUT: %A => constants.%A.d0e -// CHECK:STDOUT: %B.type => constants.%B.type.880 -// CHECK:STDOUT: %B => constants.%B.c7b -// CHECK:STDOUT: %C.type => constants.%C.type.714 -// CHECK:STDOUT: %C => constants.%C.e62 -// CHECK:STDOUT: %D.type => constants.%D.type.102 -// CHECK:STDOUT: %D => constants.%D.d85 +// CHECK:STDOUT: %Inner.A.type => constants.%Inner.A.type.8d7 +// CHECK:STDOUT: %Inner.A => constants.%Inner.A.d0e +// CHECK:STDOUT: %Inner.B.type => constants.%Inner.B.type.880 +// CHECK:STDOUT: %Inner.B => constants.%Inner.B.c7b +// CHECK:STDOUT: %Inner.C.type => constants.%Inner.C.type.714 +// CHECK:STDOUT: %Inner.C => constants.%Inner.C.e62 +// CHECK:STDOUT: %Inner.D.type => constants.%Inner.D.type.102 +// CHECK:STDOUT: %Inner.D => constants.%Inner.D.d85 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @A(constants.%T, constants.%U) { +// CHECK:STDOUT: specific @Inner.A(constants.%T, constants.%U) { // CHECK:STDOUT: %T => constants.%T -// CHECK:STDOUT: %Outer.loc4_22.2 => constants.%Outer.9d6 +// CHECK:STDOUT: %Outer.loc4_22.1 => constants.%Outer.9d6 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.e86 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -780,41 +780,41 @@ class Outer(T:! type) { // CHECK:STDOUT: %Inner.generic => constants.%Inner.generic.e3b // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @B(constants.%T, constants.%U) { +// CHECK:STDOUT: specific @Inner.B(constants.%T, constants.%U) { // CHECK:STDOUT: %U => constants.%U -// CHECK:STDOUT: %Outer.loc7_22.2 => constants.%Outer.99f +// CHECK:STDOUT: %Outer.loc7_22.1 => constants.%Outer.99f // CHECK:STDOUT: %pattern_type => constants.%pattern_type.089 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Inner(constants.%T, constants.%T) { -// CHECK:STDOUT: %U.loc3_15.2 => constants.%T +// CHECK:STDOUT: %U.loc3_15.1 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %T => constants.%T -// CHECK:STDOUT: %A.type => constants.%A.type.5c8 -// CHECK:STDOUT: %A => constants.%A.7e2 -// CHECK:STDOUT: %B.type => constants.%B.type.ec0 -// CHECK:STDOUT: %B => constants.%B.051 -// CHECK:STDOUT: %C.type => constants.%C.type.1cf -// CHECK:STDOUT: %C => constants.%C.cf5 -// CHECK:STDOUT: %D.type => constants.%D.type.7bc -// CHECK:STDOUT: %D => constants.%D.aa3 +// CHECK:STDOUT: %Inner.A.type => constants.%Inner.A.type.5c8 +// CHECK:STDOUT: %Inner.A => constants.%Inner.A.7e2 +// CHECK:STDOUT: %Inner.B.type => constants.%Inner.B.type.ec0 +// CHECK:STDOUT: %Inner.B => constants.%Inner.B.051 +// CHECK:STDOUT: %Inner.C.type => constants.%Inner.C.type.1cf +// CHECK:STDOUT: %Inner.C => constants.%Inner.C.cf5 +// CHECK:STDOUT: %Inner.D.type => constants.%Inner.D.type.7bc +// CHECK:STDOUT: %Inner.D => constants.%Inner.D.aa3 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @C(constants.%T, constants.%U) { +// CHECK:STDOUT: specific @Inner.C(constants.%T, constants.%U) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %Inner.type => constants.%Inner.type.eae // CHECK:STDOUT: %Inner.generic => constants.%Inner.generic.137 -// CHECK:STDOUT: %Inner.loc10_22.2 => constants.%Inner.13a +// CHECK:STDOUT: %Inner.loc10_22.1 => constants.%Inner.13a // CHECK:STDOUT: %pattern_type => constants.%pattern_type.a60 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @D(constants.%T, constants.%U) { +// CHECK:STDOUT: specific @Inner.D(constants.%T, constants.%U) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %Inner.type => constants.%Inner.type.eae // CHECK:STDOUT: %Inner.generic => constants.%Inner.generic.137 // CHECK:STDOUT: %U => constants.%U -// CHECK:STDOUT: %Inner.loc13_22.2 => constants.%Inner.c71 +// CHECK:STDOUT: %Inner.loc13_22.1 => constants.%Inner.c71 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.372 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/complete_in_conversion.carbon b/toolchain/check/testdata/class/generic/complete_in_conversion.carbon index 5a08d3245ed3..ffd9dbfa0d67 100644 --- a/toolchain/check/testdata/class/generic/complete_in_conversion.carbon +++ b/toolchain/check/testdata/class/generic/complete_in_conversion.carbon @@ -60,38 +60,38 @@ fn F(a: A(0)*) { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.2fd: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [concrete] -// CHECK:STDOUT: %Convert.type.71e: type = fn_type @Convert.2, @ImplicitAs(Core.IntLiteral) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.71e: type = fn_type @ImplicitAs.Convert, @ImplicitAs(Core.IntLiteral) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.3, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] // CHECK:STDOUT: %From: Core.IntLiteral = bind_symbolic_name From, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.708: type = fn_type @Convert.1, @ImplicitAs.impl.971(%From) [symbolic] -// CHECK:STDOUT: %Convert.c68: %Convert.type.708 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.a11: = impl_witness imports.%ImplicitAs.impl_witness_table.1d9, @ImplicitAs.impl.971(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.4ad: type = fn_type @Convert.1, @ImplicitAs.impl.971(%int_32) [concrete] -// CHECK:STDOUT: %Convert.960: %Convert.type.4ad = struct_value () [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.type.708: type = fn_type @Int.as.ImplicitAs.impl.Convert, @Int.as.ImplicitAs.impl(%From) [symbolic] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.c68: %Int.as.ImplicitAs.impl.Convert.type.708 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.a11: = impl_witness imports.%ImplicitAs.impl_witness_table.1d9, @Int.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.type.4ad: type = fn_type @Int.as.ImplicitAs.impl.Convert, @Int.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.960: %Int.as.ImplicitAs.impl.Convert.type.4ad = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet.f49: %ImplicitAs.type.2fd = facet_value %i32, (%ImplicitAs.impl_witness.a11) [concrete] -// CHECK:STDOUT: %.0ea: type = fn_type_with_self_type %Convert.type.71e, %ImplicitAs.facet.f49 [concrete] -// CHECK:STDOUT: %Convert.bound.588: = bound_method %N.51e, %Convert.960 [symbolic] -// CHECK:STDOUT: %Convert.specific_fn.8a8: = specific_function %Convert.960, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.f9c: = bound_method %N.51e, %Convert.specific_fn.8a8 [symbolic] -// CHECK:STDOUT: %int.convert_checked: init Core.IntLiteral = call %bound_method.f9c(%N.51e) [symbolic] -// CHECK:STDOUT: %iN.builtin.8fe: type = int_type signed, %int.convert_checked [symbolic] +// CHECK:STDOUT: %.0ea: type = fn_type_with_self_type %ImplicitAs.Convert.type.71e, %ImplicitAs.facet.f49 [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.bound.588: = bound_method %N.51e, %Int.as.ImplicitAs.impl.Convert.960 [symbolic] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Int.as.ImplicitAs.impl.Convert.960, @Int.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.f9c: = bound_method %N.51e, %Int.as.ImplicitAs.impl.Convert.specific_fn [symbolic] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call: init Core.IntLiteral = call %bound_method.f9c(%N.51e) [symbolic] +// CHECK:STDOUT: %iN.builtin.8fe: type = int_type signed, %Int.as.ImplicitAs.impl.Convert.call [symbolic] // CHECK:STDOUT: %require_complete.e34: = require_complete_type %iN.builtin.8fe [symbolic] // CHECK:STDOUT: %A.elem.07f: type = unbound_element_type %A.dd3, %iN.builtin.8fe [symbolic] // CHECK:STDOUT: %struct_type.base.n: type = struct_type {.base: %B, .n: %iN.builtin.8fe} [symbolic] // CHECK:STDOUT: %complete_type.beb: = complete_type_witness %struct_type.base.n [symbolic] // CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.3, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet.921: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet.921 [concrete] -// CHECK:STDOUT: %Convert.bound.d04: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn.b6f: = specific_function %Convert.956, @Convert.3(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.b6e: = bound_method %int_0.5c6, %Convert.specific_fn.b6f [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet.921 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.b6e: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: %A.6fc: type = class_type @A, @A(%int_0.6a9) [concrete] // CHECK:STDOUT: %ptr.b65: type = ptr_type %A.6fc [concrete] @@ -101,8 +101,8 @@ fn F(a: A(0)*) { // CHECK:STDOUT: %ptr.e79: type = ptr_type %B [concrete] // CHECK:STDOUT: %pattern_type.960: type = pattern_type %ptr.e79 [concrete] // CHECK:STDOUT: %A.elem.d81: type = unbound_element_type %A.6fc, %B [concrete] -// CHECK:STDOUT: %Convert.bound.0fd: = bound_method %int_0.6a9, %Convert.960 [concrete] -// CHECK:STDOUT: %bound_method.4b5: = bound_method %int_0.6a9, %Convert.specific_fn.8a8 [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.bound.0fd: = bound_method %int_0.6a9, %Int.as.ImplicitAs.impl.Convert.960 [concrete] +// CHECK:STDOUT: %bound_method.4b5: = bound_method %int_0.6a9, %Int.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -116,10 +116,10 @@ fn F(a: A(0)*) { // CHECK:STDOUT: %Core.IntLiteral: %IntLiteral.type = import_ref Core//prelude/parts/int_literal, IntLiteral, loaded [concrete = constants.%IntLiteral] // CHECK:STDOUT: %Core.Int: %Int.type.878 = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] -// CHECK:STDOUT: %Core.import_ref.85c: @ImplicitAs.impl.971.%Convert.type (%Convert.type.708) = import_ref Core//prelude/parts/int, loc20_44, loaded [symbolic = @ImplicitAs.impl.971.%Convert (constants.%Convert.c68)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.1d9 = impl_witness_table (%Core.import_ref.85c), @ImplicitAs.impl.971 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.85c: @Int.as.ImplicitAs.impl.%Int.as.ImplicitAs.impl.Convert.type (%Int.as.ImplicitAs.impl.Convert.type.708) = import_ref Core//prelude/parts/int, loc20_44, loaded [symbolic = @Int.as.ImplicitAs.impl.%Int.as.ImplicitAs.impl.Convert (constants.%Int.as.ImplicitAs.impl.Convert.c68)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.1d9 = impl_witness_table (%Core.import_ref.85c), @Int.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -141,9 +141,9 @@ fn F(a: A(0)*) { // CHECK:STDOUT: %.loc2_27.1: type = splice_block %.loc2_27.3 [concrete = Core.IntLiteral] { // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, imports.%Core.IntLiteral [concrete = constants.%IntLiteral] -// CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc2_27.2: type = value_of_initializer %int_literal.make_type [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc2_27.3: type = converted %int_literal.make_type, %.loc2_27.2 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %IntLiteral.call: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc2_27.2: type = value_of_initializer %IntLiteral.call [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc2_27.3: type = converted %IntLiteral.call, %.loc2_27.2 [concrete = Core.IntLiteral] // CHECK:STDOUT: } // CHECK:STDOUT: %N: Core.IntLiteral = bind_name N, %N.param // CHECK:STDOUT: %return.param: ref type = out_param call_param1 @@ -167,12 +167,12 @@ fn F(a: A(0)*) { // CHECK:STDOUT: %.loc15_13: type = splice_block %ptr.loc15 [concrete = constants.%ptr.b65] { // CHECK:STDOUT: %A.ref: %A.type = name_ref A, file.%A.decl [concrete = constants.%A.generic] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc15_12.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Convert.bound.d04] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn.b6f] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc15_12.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc15_12.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method.b6e] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc15_12.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc15_12.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc15_12.2(%int_0) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc15_12.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc15_12.2: %i32 = converted %int_0, %.loc15_12.1 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %A: type = class_type @A, @A(constants.%int_0.6a9) [concrete = constants.%A.6fc] // CHECK:STDOUT: %ptr.loc15: type = ptr_type %A [concrete = constants.%ptr.b65] @@ -198,10 +198,10 @@ fn F(a: A(0)*) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %A: type = class_type @A, @A(%N.loc6_9.1) [symbolic = %A (constants.%A.dd3)] // CHECK:STDOUT: %A.elem.loc7: type = unbound_element_type %A, constants.%B [symbolic = %A.elem.loc7 (constants.%A.elem.500)] -// CHECK:STDOUT: %Convert.bound: = bound_method %N.loc6_9.1, constants.%Convert.960 [symbolic = %Convert.bound (constants.%Convert.bound.588)] -// CHECK:STDOUT: %bound_method.loc12_14.3: = bound_method %N.loc6_9.1, constants.%Convert.specific_fn.8a8 [symbolic = %bound_method.loc12_14.3 (constants.%bound_method.f9c)] -// CHECK:STDOUT: %int.convert_checked.loc12_14.2: init Core.IntLiteral = call %bound_method.loc12_14.3(%N.loc6_9.1) [symbolic = %int.convert_checked.loc12_14.2 (constants.%int.convert_checked)] -// CHECK:STDOUT: %iN.builtin: type = int_type signed, %int.convert_checked.loc12_14.2 [symbolic = %iN.builtin (constants.%iN.builtin.8fe)] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.bound: = bound_method %N.loc6_9.1, constants.%Int.as.ImplicitAs.impl.Convert.960 [symbolic = %Int.as.ImplicitAs.impl.Convert.bound (constants.%Int.as.ImplicitAs.impl.Convert.bound.588)] +// CHECK:STDOUT: %bound_method.loc12_14.3: = bound_method %N.loc6_9.1, constants.%Int.as.ImplicitAs.impl.Convert.specific_fn [symbolic = %bound_method.loc12_14.3 (constants.%bound_method.f9c)] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call.loc12_14.2: init Core.IntLiteral = call %bound_method.loc12_14.3(%N.loc6_9.1) [symbolic = %Int.as.ImplicitAs.impl.Convert.call.loc12_14.2 (constants.%Int.as.ImplicitAs.impl.Convert.call)] +// CHECK:STDOUT: %iN.builtin: type = int_type signed, %Int.as.ImplicitAs.impl.Convert.call.loc12_14.2 [symbolic = %iN.builtin (constants.%iN.builtin.8fe)] // CHECK:STDOUT: %require_complete: = require_complete_type %iN.builtin [symbolic = %require_complete (constants.%require_complete.e34)] // CHECK:STDOUT: %A.elem.loc12: type = unbound_element_type %A, %iN.builtin [symbolic = %A.elem.loc12 (constants.%A.elem.07f)] // CHECK:STDOUT: %struct_type.base.n.loc13_1.2: type = struct_type {.base: %B, .n: @A.%iN.builtin (%iN.builtin.8fe)} [symbolic = %struct_type.base.n.loc13_1.2 (constants.%struct_type.base.n)] @@ -212,16 +212,16 @@ fn F(a: A(0)*) { // CHECK:STDOUT: %.loc7: @A.%A.elem.loc7 (%A.elem.500) = base_decl %B.ref, element0 [concrete] // CHECK:STDOUT: %Int.ref: %Int.type.913 = name_ref Int, file.%Int.decl [concrete = constants.%Int.779] // CHECK:STDOUT: %N.ref: %i32 = name_ref N, %N.loc6_9.2 [symbolic = %N.loc6_9.1 (constants.%N.51e)] -// CHECK:STDOUT: %impl.elem0: %.0ea = impl_witness_access constants.%ImplicitAs.impl_witness.a11, element0 [concrete = constants.%Convert.960] -// CHECK:STDOUT: %bound_method.loc12_14.1: = bound_method %N.ref, %impl.elem0 [symbolic = %Convert.bound (constants.%Convert.bound.588)] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn.8a8] +// CHECK:STDOUT: %impl.elem0: %.0ea = impl_witness_access constants.%ImplicitAs.impl_witness.a11, element0 [concrete = constants.%Int.as.ImplicitAs.impl.Convert.960] +// CHECK:STDOUT: %bound_method.loc12_14.1: = bound_method %N.ref, %impl.elem0 [symbolic = %Int.as.ImplicitAs.impl.Convert.bound (constants.%Int.as.ImplicitAs.impl.Convert.bound.588)] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Int.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Int.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc12_14.2: = bound_method %N.ref, %specific_fn [symbolic = %bound_method.loc12_14.3 (constants.%bound_method.f9c)] -// CHECK:STDOUT: %int.convert_checked.loc12_14.1: init Core.IntLiteral = call %bound_method.loc12_14.2(%N.ref) [symbolic = %int.convert_checked.loc12_14.2 (constants.%int.convert_checked)] -// CHECK:STDOUT: %.loc12_14.1: Core.IntLiteral = value_of_initializer %int.convert_checked.loc12_14.1 [symbolic = %int.convert_checked.loc12_14.2 (constants.%int.convert_checked)] -// CHECK:STDOUT: %.loc12_14.2: Core.IntLiteral = converted %N.ref, %.loc12_14.1 [symbolic = %int.convert_checked.loc12_14.2 (constants.%int.convert_checked)] -// CHECK:STDOUT: %int.make_type_signed: init type = call %Int.ref(%.loc12_14.2) [symbolic = %iN.builtin (constants.%iN.builtin.8fe)] -// CHECK:STDOUT: %.loc12_15.1: type = value_of_initializer %int.make_type_signed [symbolic = %iN.builtin (constants.%iN.builtin.8fe)] -// CHECK:STDOUT: %.loc12_15.2: type = converted %int.make_type_signed, %.loc12_15.1 [symbolic = %iN.builtin (constants.%iN.builtin.8fe)] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call.loc12_14.1: init Core.IntLiteral = call %bound_method.loc12_14.2(%N.ref) [symbolic = %Int.as.ImplicitAs.impl.Convert.call.loc12_14.2 (constants.%Int.as.ImplicitAs.impl.Convert.call)] +// CHECK:STDOUT: %.loc12_14.1: Core.IntLiteral = value_of_initializer %Int.as.ImplicitAs.impl.Convert.call.loc12_14.1 [symbolic = %Int.as.ImplicitAs.impl.Convert.call.loc12_14.2 (constants.%Int.as.ImplicitAs.impl.Convert.call)] +// CHECK:STDOUT: %.loc12_14.2: Core.IntLiteral = converted %N.ref, %.loc12_14.1 [symbolic = %Int.as.ImplicitAs.impl.Convert.call.loc12_14.2 (constants.%Int.as.ImplicitAs.impl.Convert.call)] +// CHECK:STDOUT: %Int.call: init type = call %Int.ref(%.loc12_14.2) [symbolic = %iN.builtin (constants.%iN.builtin.8fe)] +// CHECK:STDOUT: %.loc12_15.1: type = value_of_initializer %Int.call [symbolic = %iN.builtin (constants.%iN.builtin.8fe)] +// CHECK:STDOUT: %.loc12_15.2: type = converted %Int.call, %.loc12_15.1 [symbolic = %iN.builtin (constants.%iN.builtin.8fe)] // CHECK:STDOUT: %.loc12_8: @A.%A.elem.loc12 (%A.elem.07f) = field_decl n, element1 [concrete] // CHECK:STDOUT: %struct_type.base.n.loc13_1.1: type = struct_type {.base: %B, .n: %iN.builtin.8fe} [symbolic = %struct_type.base.n.loc13_1.2 (constants.%struct_type.base.n)] // CHECK:STDOUT: %complete_type.loc13_1.1: = complete_type_witness %struct_type.base.n.loc13_1.1 [symbolic = %complete_type.loc13_1.2 (constants.%complete_type.beb)] @@ -268,9 +268,9 @@ fn F(a: A(0)*) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %A => constants.%A.6fc // CHECK:STDOUT: %A.elem.loc7 => constants.%A.elem.d81 -// CHECK:STDOUT: %Convert.bound => constants.%Convert.bound.0fd +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.bound => constants.%Int.as.ImplicitAs.impl.Convert.bound.0fd // CHECK:STDOUT: %bound_method.loc12_14.3 => constants.%bound_method.4b5 -// CHECK:STDOUT: %int.convert_checked.loc12_14.2 => constants.%int_0.5c6 +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call.loc12_14.2 => constants.%int_0.5c6 // CHECK:STDOUT: %iN.builtin => // CHECK:STDOUT: %require_complete => // CHECK:STDOUT: %A.elem.loc12 => diff --git a/toolchain/check/testdata/class/generic/import.carbon b/toolchain/check/testdata/class/generic/import.carbon index 7bfd2b7846ad..7386ddc32059 100644 --- a/toolchain/check/testdata/class/generic/import.carbon +++ b/toolchain/check/testdata/class/generic/import.carbon @@ -105,31 +105,31 @@ class Class(U:! type) { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %CompleteClass.elem: type = unbound_element_type %CompleteClass.f97, %i32 [symbolic] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %F.type.14f: type = fn_type @F.loc8, @CompleteClass(%T) [symbolic] -// CHECK:STDOUT: %F.874: %F.type.14f = struct_value () [symbolic] +// CHECK:STDOUT: %CompleteClass.F.type: type = fn_type @CompleteClass.F, @CompleteClass(%T) [symbolic] +// CHECK:STDOUT: %CompleteClass.F: %CompleteClass.F.type = struct_value () [symbolic] // CHECK:STDOUT: %struct_type.n: type = struct_type {.n: %i32} [concrete] // CHECK:STDOUT: %complete_type.54b: = complete_type_witness %struct_type.n [concrete] // CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: %CompleteClass.e9e: type = class_type @CompleteClass, @CompleteClass(%i32) [concrete] // CHECK:STDOUT: %pattern_type.0b0: type = pattern_type %CompleteClass.e9e [concrete] -// CHECK:STDOUT: %F.type.b25: type = fn_type @F.loc11 [concrete] -// CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [concrete] +// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] +// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -141,8 +141,8 @@ class Class(U:! type) { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -163,7 +163,7 @@ class Class(U:! type) { // CHECK:STDOUT: } { // CHECK:STDOUT: %T.loc6_21.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc6_21.1 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type.b25 = fn_decl @F.loc11 [concrete = constants.%F.c41] { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { // CHECK:STDOUT: %return.patt: %pattern_type.0b0 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.0b0 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -188,14 +188,14 @@ class Class(U:! type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %CompleteClass: type = class_type @CompleteClass, @CompleteClass(%T.loc6_21.1) [symbolic = %CompleteClass (constants.%CompleteClass.f97)] // CHECK:STDOUT: %CompleteClass.elem: type = unbound_element_type %CompleteClass, constants.%i32 [symbolic = %CompleteClass.elem (constants.%CompleteClass.elem)] -// CHECK:STDOUT: %F.type: type = fn_type @F.loc8, @CompleteClass(%T.loc6_21.1) [symbolic = %F.type (constants.%F.type.14f)] -// CHECK:STDOUT: %F: @CompleteClass.%F.type (%F.type.14f) = struct_value () [symbolic = %F (constants.%F.874)] +// CHECK:STDOUT: %CompleteClass.F.type: type = fn_type @CompleteClass.F, @CompleteClass(%T.loc6_21.1) [symbolic = %CompleteClass.F.type (constants.%CompleteClass.F.type)] +// CHECK:STDOUT: %CompleteClass.F: @CompleteClass.%CompleteClass.F.type (%CompleteClass.F.type) = struct_value () [symbolic = %CompleteClass.F (constants.%CompleteClass.F)] // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %.loc7: @CompleteClass.%CompleteClass.elem (%CompleteClass.elem) = field_decl n, element0 [concrete] -// CHECK:STDOUT: %F.decl: @CompleteClass.%F.type (%F.type.14f) = fn_decl @F.loc8 [symbolic = @CompleteClass.%F (constants.%F.874)] { +// CHECK:STDOUT: %CompleteClass.F.decl: @CompleteClass.%CompleteClass.F.type (%CompleteClass.F.type) = fn_decl @CompleteClass.F [symbolic = @CompleteClass.%CompleteClass.F (constants.%CompleteClass.F)] { // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -211,28 +211,28 @@ class Class(U:! type) { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%CompleteClass.f97 // CHECK:STDOUT: .n = %.loc7 -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %CompleteClass.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc8(@CompleteClass.%T.loc6_21.2: type) { +// CHECK:STDOUT: generic fn @CompleteClass.F(@CompleteClass.%T.loc6_21.2: type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: fn() -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc8_27.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc8_27.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc8_27.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc8_27.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc8_27.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc8_27.2(%int_0) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc8_27.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc8_27.2: %i32 = converted %int_0, %.loc8_27.1 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: return %.loc8_27.2 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc11() -> %CompleteClass.e9e; +// CHECK:STDOUT: fn @F() -> %CompleteClass.e9e; // CHECK:STDOUT: // CHECK:STDOUT: specific @Class(constants.%T) { // CHECK:STDOUT: %T.loc4_13.1 => constants.%T @@ -244,11 +244,11 @@ class Class(U:! type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %CompleteClass => constants.%CompleteClass.f97 // CHECK:STDOUT: %CompleteClass.elem => constants.%CompleteClass.elem -// CHECK:STDOUT: %F.type => constants.%F.type.14f -// CHECK:STDOUT: %F => constants.%F.874 +// CHECK:STDOUT: %CompleteClass.F.type => constants.%CompleteClass.F.type +// CHECK:STDOUT: %CompleteClass.F => constants.%CompleteClass.F // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc8(constants.%T) {} +// CHECK:STDOUT: specific @CompleteClass.F(constants.%T) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @CompleteClass(constants.%i32) { // CHECK:STDOUT: %T.loc6_21.1 => constants.%i32 @@ -263,8 +263,8 @@ class Class(U:! type) { // CHECK:STDOUT: %ImplicitAs.type.595: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.595 = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] -// CHECK:STDOUT: %Convert.type.9a6: type = fn_type @Convert.2, @ImplicitAs.impl.a8d(%To) [symbolic] -// CHECK:STDOUT: %Convert.458: %Convert.type.9a6 = struct_value () [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.9a6: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.458: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.9a6 = struct_value () [symbolic] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %Class.type: type = generic_class_type @Class [concrete] // CHECK:STDOUT: %Class.generic: %Class.type = struct_value () [concrete] @@ -281,27 +281,27 @@ class Class(U:! type) { // CHECK:STDOUT: %complete_type.a68: = complete_type_witness %struct_type.n.4d6 [concrete] // CHECK:STDOUT: %CompleteClass.f97: type = class_type @CompleteClass, @CompleteClass(%T) [symbolic] // CHECK:STDOUT: %CompleteClass.elem.9ef: type = unbound_element_type %CompleteClass.f97, %i32 [symbolic] -// CHECK:STDOUT: %F.type.14f: type = fn_type @F.1, @CompleteClass(%T) [symbolic] -// CHECK:STDOUT: %F.874: %F.type.14f = struct_value () [symbolic] +// CHECK:STDOUT: %CompleteClass.F.type.14f: type = fn_type @CompleteClass.F, @CompleteClass(%T) [symbolic] +// CHECK:STDOUT: %CompleteClass.F.874: %CompleteClass.F.type.14f = struct_value () [symbolic] // CHECK:STDOUT: %CompleteClass.a06: type = class_type @CompleteClass, @CompleteClass(%i32) [concrete] // CHECK:STDOUT: %pattern_type.84b: type = pattern_type %CompleteClass.a06 [concrete] -// CHECK:STDOUT: %F.type.b25: type = fn_type @F.loc8 [concrete] -// CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [concrete] +// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] +// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %CompleteClass.elem.426: type = unbound_element_type %CompleteClass.a06, %i32 [concrete] -// CHECK:STDOUT: %F.type.0aa: type = fn_type @F.1, @CompleteClass(%i32) [concrete] -// CHECK:STDOUT: %F.971: %F.type.0aa = struct_value () [concrete] +// CHECK:STDOUT: %CompleteClass.F.type.0aa: type = fn_type @CompleteClass.F, @CompleteClass(%i32) [concrete] +// CHECK:STDOUT: %CompleteClass.F.971: %CompleteClass.F.type.0aa = struct_value () [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %struct_type.n.44a: type = struct_type {.n: Core.IntLiteral} [concrete] // CHECK:STDOUT: %ImplicitAs.type.b9e: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.ea0: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] -// CHECK:STDOUT: %ImplicitAs.impl_witness.2ce: = impl_witness imports.%ImplicitAs.impl_witness_table.1ad, @ImplicitAs.impl.a8d(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.e14: type = fn_type @Convert.2, @ImplicitAs.impl.a8d(%int_32) [concrete] -// CHECK:STDOUT: %Convert.4cb: %Convert.type.e14 = struct_value () [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.ea0: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.2ce: = impl_witness imports.%ImplicitAs.impl_witness_table.1ad, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e14: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.4cb: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e14 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.b9e = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.2ce) [concrete] -// CHECK:STDOUT: %.940: type = fn_type_with_self_type %Convert.type.ea0, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.4cb [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.4cb, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.940: type = fn_type_with_self_type %ImplicitAs.Convert.type.ea0, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.4cb [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.4cb, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.47b: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %CompleteClass.val: %CompleteClass.a06 = struct_value (%int_1.47b) [concrete] // CHECK:STDOUT: } @@ -314,8 +314,8 @@ class Class(U:! type) { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Main.import_ref.773: @ImplicitAs.impl.a8d.%Convert.type (%Convert.type.9a6) = import_ref Main//foo, inst140 [indirect], loaded [symbolic = @ImplicitAs.impl.a8d.%Convert (constants.%Convert.458)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.1ad = impl_witness_table (%Main.import_ref.773), @ImplicitAs.impl.a8d [concrete] +// CHECK:STDOUT: %Main.import_ref.773: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.9a6) = import_ref Main//foo, inst140 [indirect], loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.458)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.1ad = impl_witness_table (%Main.import_ref.773), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Main.import_ref.5ab3ec.1: type = import_ref Main//foo, loc4_13, loaded [symbolic = @Class.%T.1 (constants.%T)] // CHECK:STDOUT: %Main.import_ref.5ab3ec.2: type = import_ref Main//foo, loc6_21, loaded [symbolic = @CompleteClass.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.eb1: = import_ref Main//foo, loc9_1, loaded [concrete = constants.%complete_type.a68] @@ -342,7 +342,7 @@ class Class(U:! type) { // CHECK:STDOUT: } { // CHECK:STDOUT: %T.loc4: type = bind_symbolic_name T, 0 [symbolic = %T.1 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type.b25 = fn_decl @F.loc8 [concrete = constants.%F.c41] { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { // CHECK:STDOUT: %return.patt: %pattern_type.84b = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.84b = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -385,8 +385,8 @@ class Class(U:! type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %CompleteClass: type = class_type @CompleteClass, @CompleteClass(%T) [symbolic = %CompleteClass (constants.%CompleteClass.f97)] // CHECK:STDOUT: %CompleteClass.elem: type = unbound_element_type %CompleteClass, constants.%i32 [symbolic = %CompleteClass.elem (constants.%CompleteClass.elem.9ef)] -// CHECK:STDOUT: %F.type: type = fn_type @F.1, @CompleteClass(%T) [symbolic = %F.type (constants.%F.type.14f)] -// CHECK:STDOUT: %F: @CompleteClass.%F.type (%F.type.14f) = struct_value () [symbolic = %F (constants.%F.874)] +// CHECK:STDOUT: %CompleteClass.F.type: type = fn_type @CompleteClass.F, @CompleteClass(%T) [symbolic = %CompleteClass.F.type (constants.%CompleteClass.F.type.14f)] +// CHECK:STDOUT: %CompleteClass.F: @CompleteClass.%CompleteClass.F.type (%CompleteClass.F.type.14f) = struct_value () [symbolic = %CompleteClass.F (constants.%CompleteClass.F.874)] // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: complete_type_witness = imports.%Main.import_ref.eb1 @@ -398,22 +398,22 @@ class Class(U:! type) { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.1(imports.%Main.import_ref.5ab3ec.3: type) [from "foo.carbon"] { +// CHECK:STDOUT: generic fn @CompleteClass.F(imports.%Main.import_ref.5ab3ec.3: type) [from "foo.carbon"] { // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc8() -> %return.param: %CompleteClass.a06 [from "foo.carbon"] { +// CHECK:STDOUT: fn @F() -> %return.param: %CompleteClass.a06 [from "foo.carbon"] { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %.loc9_17.1: %struct_type.n.44a = struct_literal (%int_1) -// CHECK:STDOUT: %impl.elem0: %.940 = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Convert.4cb] -// CHECK:STDOUT: %bound_method.loc9_17.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.940 = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.4cb] +// CHECK:STDOUT: %bound_method.loc9_17.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc9_17.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc9_17.2(%int_1) [concrete = constants.%int_1.47b] -// CHECK:STDOUT: %.loc9_17.2: init %i32 = converted %int_1, %int.convert_checked [concrete = constants.%int_1.47b] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc9_17.2(%int_1) [concrete = constants.%int_1.47b] +// CHECK:STDOUT: %.loc9_17.2: init %i32 = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_1.47b] // CHECK:STDOUT: %.loc9_17.3: ref %i32 = class_element_access %return, element0 // CHECK:STDOUT: %.loc9_17.4: init %i32 = initialize_from %.loc9_17.2 to %.loc9_17.3 [concrete = constants.%int_1.47b] // CHECK:STDOUT: %.loc9_17.5: init %CompleteClass.a06 = class_init (%.loc9_17.4), %return [concrete = constants.%CompleteClass.val] @@ -431,11 +431,11 @@ class Class(U:! type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %CompleteClass => constants.%CompleteClass.f97 // CHECK:STDOUT: %CompleteClass.elem => constants.%CompleteClass.elem.9ef -// CHECK:STDOUT: %F.type => constants.%F.type.14f -// CHECK:STDOUT: %F => constants.%F.874 +// CHECK:STDOUT: %CompleteClass.F.type => constants.%CompleteClass.F.type.14f +// CHECK:STDOUT: %CompleteClass.F => constants.%CompleteClass.F.874 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.1(constants.%T) {} +// CHECK:STDOUT: specific @CompleteClass.F(constants.%T) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @CompleteClass(constants.%i32) { // CHECK:STDOUT: %T => constants.%i32 @@ -443,8 +443,8 @@ class Class(U:! type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %CompleteClass => constants.%CompleteClass.a06 // CHECK:STDOUT: %CompleteClass.elem => constants.%CompleteClass.elem.426 -// CHECK:STDOUT: %F.type => constants.%F.type.0aa -// CHECK:STDOUT: %F => constants.%F.971 +// CHECK:STDOUT: %CompleteClass.F.type => constants.%CompleteClass.F.type.0aa +// CHECK:STDOUT: %CompleteClass.F => constants.%CompleteClass.F.971 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- use_foo.carbon @@ -465,21 +465,21 @@ class Class(U:! type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %CompleteClass.f97: type = class_type @CompleteClass, @CompleteClass(%T) [symbolic] // CHECK:STDOUT: %CompleteClass.elem.28a: type = unbound_element_type %CompleteClass.f97, %i32 [symbolic] -// CHECK:STDOUT: %F.type.14f: type = fn_type @F.2, @CompleteClass(%T) [symbolic] -// CHECK:STDOUT: %F.874: %F.type.14f = struct_value () [symbolic] +// CHECK:STDOUT: %CompleteClass.F.type.14f: type = fn_type @CompleteClass.F, @CompleteClass(%T) [symbolic] +// CHECK:STDOUT: %CompleteClass.F.874: %CompleteClass.F.type.14f = struct_value () [symbolic] // CHECK:STDOUT: %CompleteClass.e9e: type = class_type @CompleteClass, @CompleteClass(%i32) [concrete] // CHECK:STDOUT: %CompleteClass.elem.7fc: type = unbound_element_type %CompleteClass.e9e, %i32 [concrete] -// CHECK:STDOUT: %F.type.1bc: type = fn_type @F.2, @CompleteClass(%i32) [concrete] -// CHECK:STDOUT: %F.f7c: %F.type.1bc = struct_value () [concrete] +// CHECK:STDOUT: %CompleteClass.F.type.1bc: type = fn_type @CompleteClass.F, @CompleteClass(%i32) [concrete] +// CHECK:STDOUT: %CompleteClass.F.f7c: %CompleteClass.F.type.1bc = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.0b0: type = pattern_type %CompleteClass.e9e [concrete] -// CHECK:STDOUT: %F.type.b25: type = fn_type @F.1 [concrete] -// CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [concrete] -// CHECK:STDOUT: %F.specific_fn: = specific_function %F.f7c, @F.2(%i32) [concrete] +// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] +// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %CompleteClass.F.specific_fn: = specific_function %CompleteClass.F.f7c, @CompleteClass.F(%i32) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.9c5: type = fn_type @Op.1, @Destroy.impl(%CompleteClass.e9e) [concrete] -// CHECK:STDOUT: %Op.d10: %Op.type.9c5 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.9c5: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%CompleteClass.e9e) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.d10: %T.as.Destroy.impl.Op.type.9c5 = struct_value () [concrete] // CHECK:STDOUT: %ptr.a97: type = ptr_type %CompleteClass.e9e [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.d10, @Op.1(%CompleteClass.e9e) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.d10, @T.as.Destroy.impl.Op(%CompleteClass.e9e) [concrete] // CHECK:STDOUT: %UseField.type: type = fn_type @UseField [concrete] // CHECK:STDOUT: %UseField: %UseField.type = struct_value () [concrete] // CHECK:STDOUT: } @@ -487,7 +487,7 @@ class Class(U:! type) { // CHECK:STDOUT: imports { // CHECK:STDOUT: %Main.Class = import_ref Main//foo, Class, unloaded // CHECK:STDOUT: %Main.CompleteClass: %CompleteClass.type = import_ref Main//foo, CompleteClass, loaded [concrete = constants.%CompleteClass.generic] -// CHECK:STDOUT: %Main.F: %F.type.b25 = import_ref Main//foo, F, loaded [concrete = constants.%F.c41] +// CHECK:STDOUT: %Main.F: %F.type = import_ref Main//foo, F, loaded [concrete = constants.%F] // CHECK:STDOUT: %Core.ece: = namespace file.%Core.import, [concrete] { // CHECK:STDOUT: .Int = %Core.Int // CHECK:STDOUT: .Destroy = %Core.Destroy @@ -499,7 +499,7 @@ class Class(U:! type) { // CHECK:STDOUT: %Main.import_ref.eb1: = import_ref Main//foo, loc9_1, loaded [concrete = constants.%complete_type.54b] // CHECK:STDOUT: %Main.import_ref.3c0 = import_ref Main//foo, inst33 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.e76: @CompleteClass.%CompleteClass.elem (%CompleteClass.elem.28a) = import_ref Main//foo, loc7_8, loaded [concrete = %.364] -// CHECK:STDOUT: %Main.import_ref.a52: @CompleteClass.%F.type (%F.type.14f) = import_ref Main//foo, loc8_17, loaded [symbolic = @CompleteClass.%F (constants.%F.874)] +// CHECK:STDOUT: %Main.import_ref.a52: @CompleteClass.%CompleteClass.F.type (%CompleteClass.F.type.14f) = import_ref Main//foo, loc8_17, loaded [symbolic = @CompleteClass.%CompleteClass.F (constants.%CompleteClass.F.874)] // CHECK:STDOUT: %Main.import_ref.5ab3ec.2: type = import_ref Main//foo, loc6_21, loaded [symbolic = @CompleteClass.%T (constants.%T)] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: %.364: @CompleteClass.%CompleteClass.elem (%CompleteClass.elem.28a) = field_decl n, element0 [concrete] @@ -542,8 +542,8 @@ class Class(U:! type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %CompleteClass: type = class_type @CompleteClass, @CompleteClass(%T) [symbolic = %CompleteClass (constants.%CompleteClass.f97)] // CHECK:STDOUT: %CompleteClass.elem: type = unbound_element_type %CompleteClass, constants.%i32 [symbolic = %CompleteClass.elem (constants.%CompleteClass.elem.28a)] -// CHECK:STDOUT: %F.type: type = fn_type @F.2, @CompleteClass(%T) [symbolic = %F.type (constants.%F.type.14f)] -// CHECK:STDOUT: %F: @CompleteClass.%F.type (%F.type.14f) = struct_value () [symbolic = %F (constants.%F.874)] +// CHECK:STDOUT: %CompleteClass.F.type: type = fn_type @CompleteClass.F, @CompleteClass(%T) [symbolic = %CompleteClass.F.type (constants.%CompleteClass.F.type.14f)] +// CHECK:STDOUT: %CompleteClass.F: @CompleteClass.%CompleteClass.F.type (%CompleteClass.F.type.14f) = struct_value () [symbolic = %CompleteClass.F (constants.%CompleteClass.F.874)] // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: complete_type_witness = imports.%Main.import_ref.eb1 @@ -562,10 +562,10 @@ class Class(U:! type) { // CHECK:STDOUT: %v.var_patt: %pattern_type.0b0 = var_pattern %v.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %v.var: ref %CompleteClass.e9e = var %v.var_patt -// CHECK:STDOUT: %F.ref.loc6: %F.type.b25 = name_ref F, imports.%Main.F [concrete = constants.%F.c41] +// CHECK:STDOUT: %F.ref.loc6: %F.type = name_ref F, imports.%Main.F [concrete = constants.%F] // CHECK:STDOUT: %.loc6_3: ref %CompleteClass.e9e = splice_block %v.var {} -// CHECK:STDOUT: %F.call.loc6: init %CompleteClass.e9e = call %F.ref.loc6() to %.loc6_3 -// CHECK:STDOUT: assign %v.var, %F.call.loc6 +// CHECK:STDOUT: %F.call: init %CompleteClass.e9e = call %F.ref.loc6() to %.loc6_3 +// CHECK:STDOUT: assign %v.var, %F.call // CHECK:STDOUT: %.loc6_27: type = splice_block %CompleteClass [concrete = constants.%CompleteClass.e9e] { // CHECK:STDOUT: %CompleteClass.ref: %CompleteClass.type = name_ref CompleteClass, imports.%Main.CompleteClass [concrete = constants.%CompleteClass.generic] // CHECK:STDOUT: %int_32.loc6: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -574,32 +574,32 @@ class Class(U:! type) { // CHECK:STDOUT: } // CHECK:STDOUT: %v: ref %CompleteClass.e9e = bind_name v, %v.var // CHECK:STDOUT: %v.ref: ref %CompleteClass.e9e = name_ref v, %v -// CHECK:STDOUT: %.loc7_11: %F.type.1bc = specific_constant imports.%Main.import_ref.a52, @CompleteClass(constants.%i32) [concrete = constants.%F.f7c] -// CHECK:STDOUT: %F.ref.loc7: %F.type.1bc = name_ref F, %.loc7_11 [concrete = constants.%F.f7c] -// CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref.loc7, @F.2(constants.%i32) [concrete = constants.%F.specific_fn] -// CHECK:STDOUT: %F.call.loc7: init %i32 = call %F.specific_fn() -// CHECK:STDOUT: %.loc7_15.1: %i32 = value_of_initializer %F.call.loc7 -// CHECK:STDOUT: %.loc7_15.2: %i32 = converted %F.call.loc7, %.loc7_15.1 -// CHECK:STDOUT: %Op.bound.loc6_3.1: = bound_method %.loc6_3, constants.%Op.d10 -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.d10, @Op.1(constants.%CompleteClass.e9e) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc6_3.1: = bound_method %.loc6_3, %Op.specific_fn.1 +// CHECK:STDOUT: %.loc7_11: %CompleteClass.F.type.1bc = specific_constant imports.%Main.import_ref.a52, @CompleteClass(constants.%i32) [concrete = constants.%CompleteClass.F.f7c] +// CHECK:STDOUT: %F.ref.loc7: %CompleteClass.F.type.1bc = name_ref F, %.loc7_11 [concrete = constants.%CompleteClass.F.f7c] +// CHECK:STDOUT: %CompleteClass.F.specific_fn: = specific_function %F.ref.loc7, @CompleteClass.F(constants.%i32) [concrete = constants.%CompleteClass.F.specific_fn] +// CHECK:STDOUT: %CompleteClass.F.call: init %i32 = call %CompleteClass.F.specific_fn() +// CHECK:STDOUT: %.loc7_15.1: %i32 = value_of_initializer %CompleteClass.F.call +// CHECK:STDOUT: %.loc7_15.2: %i32 = converted %CompleteClass.F.call, %.loc7_15.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc6_3.1: = bound_method %.loc6_3, constants.%T.as.Destroy.impl.Op.d10 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.d10, @T.as.Destroy.impl.Op(constants.%CompleteClass.e9e) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc6_3.1: = bound_method %.loc6_3, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc6_3.1: %ptr.a97 = addr_of %.loc6_3 -// CHECK:STDOUT: %no_op.loc6_3.1: init %empty_tuple.type = call %bound_method.loc6_3.1(%addr.loc6_3.1) -// CHECK:STDOUT: %Op.bound.loc6_3.2: = bound_method %v.var, constants.%Op.d10 -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.d10, @Op.1(constants.%CompleteClass.e9e) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc6_3.2: = bound_method %v.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc6_3.1: init %empty_tuple.type = call %bound_method.loc6_3.1(%addr.loc6_3.1) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc6_3.2: = bound_method %v.var, constants.%T.as.Destroy.impl.Op.d10 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.d10, @T.as.Destroy.impl.Op(constants.%CompleteClass.e9e) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc6_3.2: = bound_method %v.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc6_3.2: %ptr.a97 = addr_of %v.var -// CHECK:STDOUT: %no_op.loc6_3.2: init %empty_tuple.type = call %bound_method.loc6_3.2(%addr.loc6_3.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc6_3.2: init %empty_tuple.type = call %bound_method.loc6_3.2(%addr.loc6_3.2) // CHECK:STDOUT: return %.loc7_15.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.2(imports.%Main.import_ref.5ab3ec.2: type) [from "foo.carbon"] { +// CHECK:STDOUT: generic fn @CompleteClass.F(imports.%Main.import_ref.5ab3ec.2: type) [from "foo.carbon"] { // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.1 [from "foo.carbon"]; +// CHECK:STDOUT: fn @F [from "foo.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: fn @UseField() -> %i32 { // CHECK:STDOUT: !entry: @@ -608,7 +608,7 @@ class Class(U:! type) { // CHECK:STDOUT: %v.var_patt: %pattern_type.0b0 = var_pattern %v.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %v.var: ref %CompleteClass.e9e = var %v.var_patt -// CHECK:STDOUT: %F.ref: %F.type.b25 = name_ref F, imports.%Main.F [concrete = constants.%F.c41] +// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%Main.F [concrete = constants.%F] // CHECK:STDOUT: %.loc11_3: ref %CompleteClass.e9e = splice_block %v.var {} // CHECK:STDOUT: %F.call: init %CompleteClass.e9e = call %F.ref() to %.loc11_3 // CHECK:STDOUT: assign %v.var, %F.call @@ -623,16 +623,16 @@ class Class(U:! type) { // CHECK:STDOUT: %n.ref: %CompleteClass.elem.7fc = name_ref n, imports.%Main.import_ref.e76 [concrete = imports.%.364] // CHECK:STDOUT: %.loc12_11.1: ref %i32 = class_element_access %v.ref, element0 // CHECK:STDOUT: %.loc12_11.2: %i32 = bind_value %.loc12_11.1 -// CHECK:STDOUT: %Op.bound.loc11_3.1: = bound_method %.loc11_3, constants.%Op.d10 -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.d10, @Op.1(constants.%CompleteClass.e9e) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc11_3.1: = bound_method %.loc11_3, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc11_3.1: = bound_method %.loc11_3, constants.%T.as.Destroy.impl.Op.d10 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.d10, @T.as.Destroy.impl.Op(constants.%CompleteClass.e9e) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc11_3.1: = bound_method %.loc11_3, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc11_3.1: %ptr.a97 = addr_of %.loc11_3 -// CHECK:STDOUT: %no_op.loc11_3.1: init %empty_tuple.type = call %bound_method.loc11_3.1(%addr.loc11_3.1) -// CHECK:STDOUT: %Op.bound.loc11_3.2: = bound_method %v.var, constants.%Op.d10 -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.d10, @Op.1(constants.%CompleteClass.e9e) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc11_3.2: = bound_method %v.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc11_3.1: init %empty_tuple.type = call %bound_method.loc11_3.1(%addr.loc11_3.1) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc11_3.2: = bound_method %v.var, constants.%T.as.Destroy.impl.Op.d10 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.d10, @T.as.Destroy.impl.Op(constants.%CompleteClass.e9e) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc11_3.2: = bound_method %v.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc11_3.2: %ptr.a97 = addr_of %v.var -// CHECK:STDOUT: %no_op.loc11_3.2: init %empty_tuple.type = call %bound_method.loc11_3.2(%addr.loc11_3.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc11_3.2: init %empty_tuple.type = call %bound_method.loc11_3.2(%addr.loc11_3.2) // CHECK:STDOUT: return %.loc12_11.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -642,11 +642,11 @@ class Class(U:! type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %CompleteClass => constants.%CompleteClass.f97 // CHECK:STDOUT: %CompleteClass.elem => constants.%CompleteClass.elem.28a -// CHECK:STDOUT: %F.type => constants.%F.type.14f -// CHECK:STDOUT: %F => constants.%F.874 +// CHECK:STDOUT: %CompleteClass.F.type => constants.%CompleteClass.F.type.14f +// CHECK:STDOUT: %CompleteClass.F => constants.%CompleteClass.F.874 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.2(constants.%T) {} +// CHECK:STDOUT: specific @CompleteClass.F(constants.%T) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @CompleteClass(constants.%i32) { // CHECK:STDOUT: %T => constants.%i32 @@ -654,11 +654,11 @@ class Class(U:! type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %CompleteClass => constants.%CompleteClass.e9e // CHECK:STDOUT: %CompleteClass.elem => constants.%CompleteClass.elem.7fc -// CHECK:STDOUT: %F.type => constants.%F.type.1bc -// CHECK:STDOUT: %F => constants.%F.f7c +// CHECK:STDOUT: %CompleteClass.F.type => constants.%CompleteClass.F.type.1bc +// CHECK:STDOUT: %CompleteClass.F => constants.%CompleteClass.F.f7c // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.2(constants.%i32) { +// CHECK:STDOUT: specific @CompleteClass.F(constants.%i32) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -679,37 +679,37 @@ class Class(U:! type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %CompleteClass.f97: type = class_type @CompleteClass, @CompleteClass(%T) [symbolic] // CHECK:STDOUT: %CompleteClass.elem.9ef: type = unbound_element_type %CompleteClass.f97, %i32 [symbolic] -// CHECK:STDOUT: %F.type.14f: type = fn_type @F.2, @CompleteClass(%T) [symbolic] -// CHECK:STDOUT: %F.874: %F.type.14f = struct_value () [symbolic] +// CHECK:STDOUT: %CompleteClass.F.type.14f: type = fn_type @CompleteClass.F, @CompleteClass(%T) [symbolic] +// CHECK:STDOUT: %CompleteClass.F.874: %CompleteClass.F.type.14f = struct_value () [symbolic] // CHECK:STDOUT: %ptr.9e1: type = ptr_type %i32 [concrete] // CHECK:STDOUT: %CompleteClass.0fe: type = class_type @CompleteClass, @CompleteClass(%ptr.9e1) [concrete] // CHECK:STDOUT: %CompleteClass.elem.d29: type = unbound_element_type %CompleteClass.0fe, %i32 [concrete] -// CHECK:STDOUT: %F.type.8cf: type = fn_type @F.2, @CompleteClass(%ptr.9e1) [concrete] -// CHECK:STDOUT: %F.012: %F.type.8cf = struct_value () [concrete] +// CHECK:STDOUT: %CompleteClass.F.type.8cf: type = fn_type @CompleteClass.F, @CompleteClass(%ptr.9e1) [concrete] +// CHECK:STDOUT: %CompleteClass.F.012: %CompleteClass.F.type.8cf = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.062: type = pattern_type %CompleteClass.0fe [concrete] -// CHECK:STDOUT: %F.type.b25: type = fn_type @F.1 [concrete] -// CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [concrete] +// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] +// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %CompleteClass.a06: type = class_type @CompleteClass, @CompleteClass(%i32) [concrete] // CHECK:STDOUT: %CompleteClass.elem.426: type = unbound_element_type %CompleteClass.a06, %i32 [concrete] -// CHECK:STDOUT: %F.type.0aa: type = fn_type @F.2, @CompleteClass(%i32) [concrete] -// CHECK:STDOUT: %F.971: %F.type.0aa = struct_value () [concrete] +// CHECK:STDOUT: %CompleteClass.F.type.0aa: type = fn_type @CompleteClass.F, @CompleteClass(%i32) [concrete] +// CHECK:STDOUT: %CompleteClass.F.971: %CompleteClass.F.type.0aa = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.370: type = fn_type @Op.1, @Destroy.impl(%CompleteClass.a06) [concrete] -// CHECK:STDOUT: %Op.867: %Op.type.370 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.370: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%CompleteClass.a06) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.867: %T.as.Destroy.impl.Op.type.370 = struct_value () [concrete] // CHECK:STDOUT: %ptr.d29: type = ptr_type %CompleteClass.a06 [concrete] -// CHECK:STDOUT: %Op.specific_fn.0ab: = specific_function %Op.867, @Op.1(%CompleteClass.a06) [concrete] -// CHECK:STDOUT: %Op.type.310: type = fn_type @Op.1, @Destroy.impl(%CompleteClass.0fe) [concrete] -// CHECK:STDOUT: %Op.200: %Op.type.310 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.0ab: = specific_function %T.as.Destroy.impl.Op.867, @T.as.Destroy.impl.Op(%CompleteClass.a06) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.310: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%CompleteClass.0fe) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.200: %T.as.Destroy.impl.Op.type.310 = struct_value () [concrete] // CHECK:STDOUT: %ptr.c79: type = ptr_type %CompleteClass.0fe [concrete] -// CHECK:STDOUT: %Op.specific_fn.a4e: = specific_function %Op.200, @Op.1(%CompleteClass.0fe) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.a4e: = specific_function %T.as.Destroy.impl.Op.200, @T.as.Destroy.impl.Op(%CompleteClass.0fe) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Main.Class = import_ref Main//foo, Class, unloaded // CHECK:STDOUT: %Main.CompleteClass: %CompleteClass.type = import_ref Main//foo, CompleteClass, loaded [concrete = constants.%CompleteClass.generic] -// CHECK:STDOUT: %Main.F: %F.type.b25 = import_ref Main//foo, F, loaded [concrete = constants.%F.c41] +// CHECK:STDOUT: %Main.F: %F.type = import_ref Main//foo, F, loaded [concrete = constants.%F] // CHECK:STDOUT: %Core.ece: = namespace file.%Core.import, [concrete] { // CHECK:STDOUT: .Int = %Core.Int // CHECK:STDOUT: .ImplicitAs = %Core.ImplicitAs @@ -747,8 +747,8 @@ class Class(U:! type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %CompleteClass: type = class_type @CompleteClass, @CompleteClass(%T) [symbolic = %CompleteClass (constants.%CompleteClass.f97)] // CHECK:STDOUT: %CompleteClass.elem: type = unbound_element_type %CompleteClass, constants.%i32 [symbolic = %CompleteClass.elem (constants.%CompleteClass.elem.9ef)] -// CHECK:STDOUT: %F.type: type = fn_type @F.2, @CompleteClass(%T) [symbolic = %F.type (constants.%F.type.14f)] -// CHECK:STDOUT: %F: @CompleteClass.%F.type (%F.type.14f) = struct_value () [symbolic = %F (constants.%F.874)] +// CHECK:STDOUT: %CompleteClass.F.type: type = fn_type @CompleteClass.F, @CompleteClass(%T) [symbolic = %CompleteClass.F.type (constants.%CompleteClass.F.type.14f)] +// CHECK:STDOUT: %CompleteClass.F: @CompleteClass.%CompleteClass.F.type (%CompleteClass.F.type.14f) = struct_value () [symbolic = %CompleteClass.F (constants.%CompleteClass.F.874)] // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: complete_type_witness = imports.%Main.import_ref.eb1 @@ -767,7 +767,7 @@ class Class(U:! type) { // CHECK:STDOUT: %v.var_patt: %pattern_type.062 = var_pattern %v.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %v.var: ref %CompleteClass.0fe = var %v.var_patt -// CHECK:STDOUT: %F.ref: %F.type.b25 = name_ref F, imports.%Main.F [concrete = constants.%F.c41] +// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%Main.F [concrete = constants.%F] // CHECK:STDOUT: %.loc14_34: ref %CompleteClass.a06 = temporary_storage // CHECK:STDOUT: %F.call: init %CompleteClass.a06 = call %F.ref() to %.loc14_34 // CHECK:STDOUT: %.loc14_3: %CompleteClass.0fe = converted %F.call, [concrete = ] @@ -780,26 +780,26 @@ class Class(U:! type) { // CHECK:STDOUT: %CompleteClass: type = class_type @CompleteClass, @CompleteClass(constants.%ptr.9e1) [concrete = constants.%CompleteClass.0fe] // CHECK:STDOUT: } // CHECK:STDOUT: %v: ref %CompleteClass.0fe = bind_name v, %v.var -// CHECK:STDOUT: %Op.bound.loc14_34: = bound_method %.loc14_34, constants.%Op.867 -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.867, @Op.1(constants.%CompleteClass.a06) [concrete = constants.%Op.specific_fn.0ab] -// CHECK:STDOUT: %bound_method.loc14_34: = bound_method %.loc14_34, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc14_34: = bound_method %.loc14_34, constants.%T.as.Destroy.impl.Op.867 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.867, @T.as.Destroy.impl.Op(constants.%CompleteClass.a06) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.0ab] +// CHECK:STDOUT: %bound_method.loc14_34: = bound_method %.loc14_34, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc14_34: %ptr.d29 = addr_of %.loc14_34 -// CHECK:STDOUT: %no_op.loc14_34: init %empty_tuple.type = call %bound_method.loc14_34(%addr.loc14_34) -// CHECK:STDOUT: %Op.bound.loc14_3: = bound_method %v.var, constants.%Op.200 -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.200, @Op.1(constants.%CompleteClass.0fe) [concrete = constants.%Op.specific_fn.a4e] -// CHECK:STDOUT: %bound_method.loc14_3: = bound_method %v.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc14_34: init %empty_tuple.type = call %bound_method.loc14_34(%addr.loc14_34) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc14_3: = bound_method %v.var, constants.%T.as.Destroy.impl.Op.200 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.200, @T.as.Destroy.impl.Op(constants.%CompleteClass.0fe) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.a4e] +// CHECK:STDOUT: %bound_method.loc14_3: = bound_method %v.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc14_3: %ptr.c79 = addr_of %v.var -// CHECK:STDOUT: %no_op.loc14_3: init %empty_tuple.type = call %bound_method.loc14_3(%addr.loc14_3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc14_3: init %empty_tuple.type = call %bound_method.loc14_3(%addr.loc14_3) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.2(imports.%Main.import_ref.5ab3ec.2: type) [from "foo.carbon"] { +// CHECK:STDOUT: generic fn @CompleteClass.F(imports.%Main.import_ref.5ab3ec.2: type) [from "foo.carbon"] { // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.1 [from "foo.carbon"]; +// CHECK:STDOUT: fn @F [from "foo.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: specific @CompleteClass(constants.%T) { // CHECK:STDOUT: %T => constants.%T @@ -807,11 +807,11 @@ class Class(U:! type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %CompleteClass => constants.%CompleteClass.f97 // CHECK:STDOUT: %CompleteClass.elem => constants.%CompleteClass.elem.9ef -// CHECK:STDOUT: %F.type => constants.%F.type.14f -// CHECK:STDOUT: %F => constants.%F.874 +// CHECK:STDOUT: %CompleteClass.F.type => constants.%CompleteClass.F.type.14f +// CHECK:STDOUT: %CompleteClass.F => constants.%CompleteClass.F.874 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.2(constants.%T) {} +// CHECK:STDOUT: specific @CompleteClass.F(constants.%T) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @CompleteClass(constants.%ptr.9e1) { // CHECK:STDOUT: %T => constants.%ptr.9e1 @@ -819,8 +819,8 @@ class Class(U:! type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %CompleteClass => constants.%CompleteClass.0fe // CHECK:STDOUT: %CompleteClass.elem => constants.%CompleteClass.elem.d29 -// CHECK:STDOUT: %F.type => constants.%F.type.8cf -// CHECK:STDOUT: %F => constants.%F.012 +// CHECK:STDOUT: %CompleteClass.F.type => constants.%CompleteClass.F.type.8cf +// CHECK:STDOUT: %CompleteClass.F => constants.%CompleteClass.F.012 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @CompleteClass(constants.%i32) { @@ -829,8 +829,8 @@ class Class(U:! type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %CompleteClass => constants.%CompleteClass.a06 // CHECK:STDOUT: %CompleteClass.elem => constants.%CompleteClass.elem.426 -// CHECK:STDOUT: %F.type => constants.%F.type.0aa -// CHECK:STDOUT: %F => constants.%F.971 +// CHECK:STDOUT: %CompleteClass.F.type => constants.%CompleteClass.F.type.0aa +// CHECK:STDOUT: %CompleteClass.F => constants.%CompleteClass.F.971 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_foo.impl.carbon diff --git a/toolchain/check/testdata/class/generic/init.carbon b/toolchain/check/testdata/class/generic/init.carbon index 3072c76359e5..0d132008cd64 100644 --- a/toolchain/check/testdata/class/generic/init.carbon +++ b/toolchain/check/testdata/class/generic/init.carbon @@ -65,14 +65,14 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // CHECK:STDOUT: %require_complete.4f8: = require_complete_type %Class.fe1 [symbolic] // CHECK:STDOUT: %pattern_type.3c1: type = pattern_type %Class.fe1 [symbolic] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.bae: type = fn_type @Op.1 [concrete] +// CHECK:STDOUT: %Destroy.Op.type: type = fn_type @Destroy.Op [concrete] // CHECK:STDOUT: %ptr.955: type = ptr_type %Class.fe1 [symbolic] // CHECK:STDOUT: %require_complete.2ae: = require_complete_type %ptr.955 [symbolic] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %Class.fe1, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.2d8: %Destroy.type = facet_value %Class.fe1, (%Destroy.lookup_impl_witness) [symbolic] -// CHECK:STDOUT: %.d76: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.2d8 [symbolic] +// CHECK:STDOUT: %.d76: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.2d8 [symbolic] // CHECK:STDOUT: %impl.elem0.5b7: %.d76 = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0.5b7, @Op.1(%Destroy.facet.2d8) [symbolic] +// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0.5b7, @Destroy.Op(%Destroy.facet.2d8) [symbolic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] @@ -87,10 +87,10 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // CHECK:STDOUT: %struct_type.k.0bf: type = struct_type {.k: %i32} [concrete] // CHECK:STDOUT: %complete_type.954: = complete_type_witness %struct_type.k.0bf [concrete] // CHECK:STDOUT: %pattern_type.0fa: type = pattern_type %Class.247 [concrete] -// CHECK:STDOUT: %Op.type.fdc: type = fn_type @Op.2, @Destroy.impl(%Class.247) [concrete] -// CHECK:STDOUT: %Op.af5: %Op.type.fdc = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.fdc: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%Class.247) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.af5: %T.as.Destroy.impl.Op.type.fdc = struct_value () [concrete] // CHECK:STDOUT: %ptr.f7c: type = ptr_type %Class.247 [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.af5, @Op.2(%Class.247) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.af5, @T.as.Destroy.impl.Op(%Class.247) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -188,9 +188,9 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class.loc9_17.2, %T.loc8_26.1 [symbolic = %Class.elem (constants.%Class.elem.e26)] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %Class.loc9_17.2, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness)] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %Class.loc9_17.2, (%Destroy.lookup_impl_witness) [symbolic = %Destroy.facet (constants.%Destroy.facet.2d8)] -// CHECK:STDOUT: %.loc9_3.3: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.loc9_3.3 (constants.%.d76)] +// CHECK:STDOUT: %.loc9_3.3: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet [symbolic = %.loc9_3.3 (constants.%.d76)] // CHECK:STDOUT: %impl.elem0.loc9_3.2: @InitFromStructGeneric.%.loc9_3.3 (%.d76) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc9_3.2 (constants.%impl.elem0.5b7)] -// CHECK:STDOUT: %specific_impl_fn.loc9_3.2: = specific_impl_function %impl.elem0.loc9_3.2, @Op.1(%Destroy.facet) [symbolic = %specific_impl_fn.loc9_3.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc9_3.2: = specific_impl_function %impl.elem0.loc9_3.2, @Destroy.Op(%Destroy.facet) [symbolic = %specific_impl_fn.loc9_3.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %ptr: type = ptr_type %Class.loc9_17.2 [symbolic = %ptr (constants.%ptr.955)] // CHECK:STDOUT: %require_complete.loc9_3: = require_complete_type %ptr [symbolic = %require_complete.loc9_3 (constants.%require_complete.2ae)] // CHECK:STDOUT: @@ -220,7 +220,7 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // CHECK:STDOUT: %.loc10_11.2: @InitFromStructGeneric.%T.loc8_26.1 (%T) = bind_value %.loc10_11.1 // CHECK:STDOUT: %impl.elem0.loc9_3.1: @InitFromStructGeneric.%.loc9_3.3 (%.d76) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc9_3.2 (constants.%impl.elem0.5b7)] // CHECK:STDOUT: %bound_method.loc9_3.1: = bound_method %v.var, %impl.elem0.loc9_3.1 -// CHECK:STDOUT: %specific_impl_fn.loc9_3.1: = specific_impl_function %impl.elem0.loc9_3.1, @Op.1(constants.%Destroy.facet.2d8) [symbolic = %specific_impl_fn.loc9_3.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc9_3.1: = specific_impl_function %impl.elem0.loc9_3.1, @Destroy.Op(constants.%Destroy.facet.2d8) [symbolic = %specific_impl_fn.loc9_3.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %bound_method.loc9_3.2: = bound_method %v.var, %specific_impl_fn.loc9_3.1 // CHECK:STDOUT: %addr: @InitFromStructGeneric.%ptr (%ptr.955) = addr_of %v.var // CHECK:STDOUT: %.loc9_3.2: init %empty_tuple.type = call %bound_method.loc9_3.2(%addr) @@ -253,11 +253,11 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // CHECK:STDOUT: %k.ref: %Class.elem.2d8 = name_ref k, @Class.%.loc5 [concrete = @Class.%.loc5] // CHECK:STDOUT: %.loc15_11.1: ref %i32 = class_element_access %v.ref, element0 // CHECK:STDOUT: %.loc15_11.2: %i32 = bind_value %.loc15_11.1 -// CHECK:STDOUT: %Op.bound: = bound_method %v.var, constants.%Op.af5 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.af5, @Op.2(constants.%Class.247) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %v.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %v.var, constants.%T.as.Destroy.impl.Op.af5 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.af5, @T.as.Destroy.impl.Op(constants.%Class.247) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %v.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.f7c = addr_of %v.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %.loc15_11.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/member_access.carbon b/toolchain/check/testdata/class/generic/member_access.carbon index 717118b8da04..fdb1de9e9e1d 100644 --- a/toolchain/check/testdata/class/generic/member_access.carbon +++ b/toolchain/check/testdata/class/generic/member_access.carbon @@ -58,15 +58,15 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: %Class.elem.e26: type = unbound_element_type %Class.fe1, %T [symbolic] // CHECK:STDOUT: %pattern_type.3c1: type = pattern_type %Class.fe1 [symbolic] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %T [symbolic] -// CHECK:STDOUT: %Get.type.fd9: type = fn_type @Get, @Class(%T) [symbolic] -// CHECK:STDOUT: %Get.cf9: %Get.type.fd9 = struct_value () [symbolic] +// CHECK:STDOUT: %Class.Get.type.fd9: type = fn_type @Class.Get, @Class(%T) [symbolic] +// CHECK:STDOUT: %Class.Get.cf9: %Class.Get.type.fd9 = struct_value () [symbolic] // CHECK:STDOUT: %ptr.955: type = ptr_type %Class.fe1 [symbolic] // CHECK:STDOUT: %pattern_type.9e0: type = pattern_type %ptr.955 [symbolic] // CHECK:STDOUT: %pattern_type.f6d: type = pattern_type auto [concrete] // CHECK:STDOUT: %ptr.79f: type = ptr_type %T [symbolic] // CHECK:STDOUT: %pattern_type.afe: type = pattern_type %ptr.79f [symbolic] -// CHECK:STDOUT: %GetAddr.type.402: type = fn_type @GetAddr, @Class(%T) [symbolic] -// CHECK:STDOUT: %GetAddr.102: %GetAddr.type.402 = struct_value () [symbolic] +// CHECK:STDOUT: %Class.GetAddr.type.402: type = fn_type @Class.GetAddr, @Class(%T) [symbolic] +// CHECK:STDOUT: %Class.GetAddr.102: %Class.GetAddr.type.402 = struct_value () [symbolic] // CHECK:STDOUT: %struct_type.x.2ac: type = struct_type {.x: %T} [symbolic] // CHECK:STDOUT: %complete_type.433: = complete_type_witness %struct_type.x.2ac [symbolic] // CHECK:STDOUT: %require_complete.4f8: = require_complete_type %Class.fe1 [symbolic] @@ -84,22 +84,22 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [concrete] // CHECK:STDOUT: %complete_type.f8a: = complete_type_witness %i32.builtin [concrete] // CHECK:STDOUT: %Class.elem.2d8: type = unbound_element_type %Class.247, %i32 [concrete] -// CHECK:STDOUT: %Get.type.59d: type = fn_type @Get, @Class(%i32) [concrete] -// CHECK:STDOUT: %Get.a40: %Get.type.59d = struct_value () [concrete] -// CHECK:STDOUT: %GetAddr.type.be7: type = fn_type @GetAddr, @Class(%i32) [concrete] -// CHECK:STDOUT: %GetAddr.909: %GetAddr.type.be7 = struct_value () [concrete] +// CHECK:STDOUT: %Class.Get.type.59d: type = fn_type @Class.Get, @Class(%i32) [concrete] +// CHECK:STDOUT: %Class.Get.a40: %Class.Get.type.59d = struct_value () [concrete] +// CHECK:STDOUT: %Class.GetAddr.type.be7: type = fn_type @Class.GetAddr, @Class(%i32) [concrete] +// CHECK:STDOUT: %Class.GetAddr.909: %Class.GetAddr.type.be7 = struct_value () [concrete] // CHECK:STDOUT: %struct_type.x.ed6: type = struct_type {.x: %i32} [concrete] // CHECK:STDOUT: %complete_type.1ec: = complete_type_witness %struct_type.x.ed6 [concrete] // CHECK:STDOUT: %MethodCall.type: type = fn_type @MethodCall [concrete] // CHECK:STDOUT: %MethodCall: %MethodCall.type = struct_value () [concrete] -// CHECK:STDOUT: %Get.specific_fn: = specific_function %Get.a40, @Get(%i32) [concrete] +// CHECK:STDOUT: %Class.Get.specific_fn: = specific_function %Class.Get.a40, @Class.Get(%i32) [concrete] // CHECK:STDOUT: %ptr.f7c: type = ptr_type %Class.247 [concrete] // CHECK:STDOUT: %pattern_type.14a: type = pattern_type %ptr.f7c [concrete] // CHECK:STDOUT: %AddrMethodCall.type: type = fn_type @AddrMethodCall [concrete] // CHECK:STDOUT: %AddrMethodCall: %AddrMethodCall.type = struct_value () [concrete] // CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] // CHECK:STDOUT: %pattern_type.fe8: type = pattern_type %ptr.235 [concrete] -// CHECK:STDOUT: %GetAddr.specific_fn: = specific_function %GetAddr.909, @GetAddr(%i32) [concrete] +// CHECK:STDOUT: %Class.GetAddr.specific_fn: = specific_function %Class.GetAddr.909, @Class.GetAddr(%i32) [concrete] // CHECK:STDOUT: %complete_type.3d0: = complete_type_witness %ptr.235 [concrete] // CHECK:STDOUT: %complete_type.6ee: = complete_type_witness %ptr.f7c [concrete] // CHECK:STDOUT: } @@ -194,50 +194,50 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: %require_complete: = require_complete_type %T.loc2_13.1 [symbolic = %require_complete (constants.%require_complete.4ae)] // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T.loc2_13.1) [symbolic = %Class (constants.%Class.fe1)] // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T.loc2_13.1 [symbolic = %Class.elem (constants.%Class.elem.e26)] -// CHECK:STDOUT: %Get.type: type = fn_type @Get, @Class(%T.loc2_13.1) [symbolic = %Get.type (constants.%Get.type.fd9)] -// CHECK:STDOUT: %Get: @Class.%Get.type (%Get.type.fd9) = struct_value () [symbolic = %Get (constants.%Get.cf9)] -// CHECK:STDOUT: %GetAddr.type: type = fn_type @GetAddr, @Class(%T.loc2_13.1) [symbolic = %GetAddr.type (constants.%GetAddr.type.402)] -// CHECK:STDOUT: %GetAddr: @Class.%GetAddr.type (%GetAddr.type.402) = struct_value () [symbolic = %GetAddr (constants.%GetAddr.102)] +// CHECK:STDOUT: %Class.Get.type: type = fn_type @Class.Get, @Class(%T.loc2_13.1) [symbolic = %Class.Get.type (constants.%Class.Get.type.fd9)] +// CHECK:STDOUT: %Class.Get: @Class.%Class.Get.type (%Class.Get.type.fd9) = struct_value () [symbolic = %Class.Get (constants.%Class.Get.cf9)] +// CHECK:STDOUT: %Class.GetAddr.type: type = fn_type @Class.GetAddr, @Class(%T.loc2_13.1) [symbolic = %Class.GetAddr.type (constants.%Class.GetAddr.type.402)] +// CHECK:STDOUT: %Class.GetAddr: @Class.%Class.GetAddr.type (%Class.GetAddr.type.402) = struct_value () [symbolic = %Class.GetAddr (constants.%Class.GetAddr.102)] // CHECK:STDOUT: %struct_type.x.loc8_1.2: type = struct_type {.x: @Class.%T.loc2_13.1 (%T)} [symbolic = %struct_type.x.loc8_1.2 (constants.%struct_type.x.2ac)] // CHECK:STDOUT: %complete_type.loc8_1.2: = complete_type_witness %struct_type.x.loc8_1.2 [symbolic = %complete_type.loc8_1.2 (constants.%complete_type.433)] // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc2_13.2 [symbolic = %T.loc2_13.1 (constants.%T)] // CHECK:STDOUT: %.loc3: @Class.%Class.elem (%Class.elem.e26) = field_decl x, element0 [concrete] -// CHECK:STDOUT: %Get.decl: @Class.%Get.type (%Get.type.fd9) = fn_decl @Get [symbolic = @Class.%Get (constants.%Get.cf9)] { -// CHECK:STDOUT: %self.patt: @Get.%pattern_type.loc5_10 (%pattern_type.3c1) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @Get.%pattern_type.loc5_10 (%pattern_type.3c1) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: @Get.%pattern_type.loc5_24 (%pattern_type.7dc) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @Get.%pattern_type.loc5_24 (%pattern_type.7dc) = out_param_pattern %return.patt, call_param1 [concrete] +// CHECK:STDOUT: %Class.Get.decl: @Class.%Class.Get.type (%Class.Get.type.fd9) = fn_decl @Class.Get [symbolic = @Class.%Class.Get (constants.%Class.Get.cf9)] { +// CHECK:STDOUT: %self.patt: @Class.Get.%pattern_type.loc5_10 (%pattern_type.3c1) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @Class.Get.%pattern_type.loc5_10 (%pattern_type.3c1) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %return.patt: @Class.Get.%pattern_type.loc5_24 (%pattern_type.7dc) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @Class.Get.%pattern_type.loc5_24 (%pattern_type.7dc) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, @Class.%T.loc2_13.2 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %self.param: @Get.%Class (%Class.fe1) = value_param call_param0 +// CHECK:STDOUT: %self.param: @Class.Get.%Class (%Class.fe1) = value_param call_param0 // CHECK:STDOUT: %.loc5_16.1: type = splice_block %Self.ref [symbolic = %Class (constants.%Class.fe1)] { // CHECK:STDOUT: %.loc5_16.2: type = specific_constant constants.%Class.fe1, @Class(constants.%T) [symbolic = %Class (constants.%Class.fe1)] // CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc5_16.2 [symbolic = %Class (constants.%Class.fe1)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @Get.%Class (%Class.fe1) = bind_name self, %self.param -// CHECK:STDOUT: %return.param: ref @Get.%T (%T) = out_param call_param1 -// CHECK:STDOUT: %return: ref @Get.%T (%T) = return_slot %return.param +// CHECK:STDOUT: %self: @Class.Get.%Class (%Class.fe1) = bind_name self, %self.param +// CHECK:STDOUT: %return.param: ref @Class.Get.%T (%T) = out_param call_param1 +// CHECK:STDOUT: %return: ref @Class.Get.%T (%T) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %GetAddr.decl: @Class.%GetAddr.type (%GetAddr.type.402) = fn_decl @GetAddr [symbolic = @Class.%GetAddr (constants.%GetAddr.102)] { -// CHECK:STDOUT: %self.patt: @GetAddr.%pattern_type.loc7_19 (%pattern_type.9e0) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @GetAddr.%pattern_type.loc7_19 (%pattern_type.9e0) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %Class.GetAddr.decl: @Class.%Class.GetAddr.type (%Class.GetAddr.type.402) = fn_decl @Class.GetAddr [symbolic = @Class.%Class.GetAddr (constants.%Class.GetAddr.102)] { +// CHECK:STDOUT: %self.patt: @Class.GetAddr.%pattern_type.loc7_19 (%pattern_type.9e0) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @Class.GetAddr.%pattern_type.loc7_19 (%pattern_type.9e0) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %.loc7_14: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] -// CHECK:STDOUT: %return.patt: @GetAddr.%pattern_type.loc7_34 (%pattern_type.afe) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @GetAddr.%pattern_type.loc7_34 (%pattern_type.afe) = out_param_pattern %return.patt, call_param1 [concrete] +// CHECK:STDOUT: %return.patt: @Class.GetAddr.%pattern_type.loc7_34 (%pattern_type.afe) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @Class.GetAddr.%pattern_type.loc7_34 (%pattern_type.afe) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, @Class.%T.loc2_13.2 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %ptr.loc7_38.1: type = ptr_type %T.ref [symbolic = %ptr.loc7_38.2 (constants.%ptr.79f)] -// CHECK:STDOUT: %self.param: @GetAddr.%ptr.loc7_29.2 (%ptr.955) = value_param call_param0 -// CHECK:STDOUT: %.loc7_29: type = splice_block %ptr.loc7_29.1 [symbolic = %ptr.loc7_29.2 (constants.%ptr.955)] { +// CHECK:STDOUT: %ptr.loc7_38.2: type = ptr_type %T.ref [symbolic = %ptr.loc7_38.1 (constants.%ptr.79f)] +// CHECK:STDOUT: %self.param: @Class.GetAddr.%ptr.loc7_29.1 (%ptr.955) = value_param call_param0 +// CHECK:STDOUT: %.loc7_29: type = splice_block %ptr.loc7_29.2 [symbolic = %ptr.loc7_29.1 (constants.%ptr.955)] { // CHECK:STDOUT: %.loc7_25: type = specific_constant constants.%Class.fe1, @Class(constants.%T) [symbolic = %Class (constants.%Class.fe1)] // CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc7_25 [symbolic = %Class (constants.%Class.fe1)] -// CHECK:STDOUT: %ptr.loc7_29.1: type = ptr_type %Self.ref [symbolic = %ptr.loc7_29.2 (constants.%ptr.955)] +// CHECK:STDOUT: %ptr.loc7_29.2: type = ptr_type %Self.ref [symbolic = %ptr.loc7_29.1 (constants.%ptr.955)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @GetAddr.%ptr.loc7_29.2 (%ptr.955) = bind_name self, %self.param -// CHECK:STDOUT: %return.param: ref @GetAddr.%ptr.loc7_38.2 (%ptr.79f) = out_param call_param1 -// CHECK:STDOUT: %return: ref @GetAddr.%ptr.loc7_38.2 (%ptr.79f) = return_slot %return.param +// CHECK:STDOUT: %self: @Class.GetAddr.%ptr.loc7_29.1 (%ptr.955) = bind_name self, %self.param +// CHECK:STDOUT: %return.param: ref @Class.GetAddr.%ptr.loc7_38.1 (%ptr.79f) = out_param call_param1 +// CHECK:STDOUT: %return: ref @Class.GetAddr.%ptr.loc7_38.1 (%ptr.79f) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %struct_type.x.loc8_1.1: type = struct_type {.x: %T} [symbolic = %struct_type.x.loc8_1.2 (constants.%struct_type.x.2ac)] // CHECK:STDOUT: %complete_type.loc8_1.1: = complete_type_witness %struct_type.x.loc8_1.1 [symbolic = %complete_type.loc8_1.2 (constants.%complete_type.433)] @@ -247,12 +247,12 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: .Self = constants.%Class.fe1 // CHECK:STDOUT: .T = // CHECK:STDOUT: .x = %.loc3 -// CHECK:STDOUT: .Get = %Get.decl -// CHECK:STDOUT: .GetAddr = %GetAddr.decl +// CHECK:STDOUT: .Get = %Class.Get.decl +// CHECK:STDOUT: .GetAddr = %Class.GetAddr.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Get(@Class.%T.loc2_13.2: type) { +// CHECK:STDOUT: generic fn @Class.Get(@Class.%T.loc2_13.2: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T) [symbolic = %Class (constants.%Class.fe1)] // CHECK:STDOUT: %pattern_type.loc5_10: type = pattern_type %Class [symbolic = %pattern_type.loc5_10 (constants.%pattern_type.3c1)] @@ -263,37 +263,37 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T [symbolic = %Class.elem (constants.%Class.elem.e26)] // CHECK:STDOUT: %require_complete.loc5_42: = require_complete_type %T [symbolic = %require_complete.loc5_42 (constants.%require_complete.4ae)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @Get.%Class (%Class.fe1)) -> @Get.%T (%T) { +// CHECK:STDOUT: fn(%self.param: @Class.Get.%Class (%Class.fe1)) -> @Class.Get.%T (%T) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %self.ref: @Get.%Class (%Class.fe1) = name_ref self, %self -// CHECK:STDOUT: %x.ref: @Get.%Class.elem (%Class.elem.e26) = name_ref x, @Class.%.loc3 [concrete = @Class.%.loc3] -// CHECK:STDOUT: %.loc5_42.1: ref @Get.%T (%T) = class_element_access %self.ref, element0 -// CHECK:STDOUT: %.loc5_42.2: @Get.%T (%T) = bind_value %.loc5_42.1 +// CHECK:STDOUT: %self.ref: @Class.Get.%Class (%Class.fe1) = name_ref self, %self +// CHECK:STDOUT: %x.ref: @Class.Get.%Class.elem (%Class.elem.e26) = name_ref x, @Class.%.loc3 [concrete = @Class.%.loc3] +// CHECK:STDOUT: %.loc5_42.1: ref @Class.Get.%T (%T) = class_element_access %self.ref, element0 +// CHECK:STDOUT: %.loc5_42.2: @Class.Get.%T (%T) = bind_value %.loc5_42.1 // CHECK:STDOUT: return %.loc5_42.2 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @GetAddr(@Class.%T.loc2_13.2: type) { +// CHECK:STDOUT: generic fn @Class.GetAddr(@Class.%T.loc2_13.2: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T) [symbolic = %Class (constants.%Class.fe1)] -// CHECK:STDOUT: %ptr.loc7_29.2: type = ptr_type %Class [symbolic = %ptr.loc7_29.2 (constants.%ptr.955)] -// CHECK:STDOUT: %pattern_type.loc7_19: type = pattern_type %ptr.loc7_29.2 [symbolic = %pattern_type.loc7_19 (constants.%pattern_type.9e0)] -// CHECK:STDOUT: %ptr.loc7_38.2: type = ptr_type %T [symbolic = %ptr.loc7_38.2 (constants.%ptr.79f)] -// CHECK:STDOUT: %pattern_type.loc7_34: type = pattern_type %ptr.loc7_38.2 [symbolic = %pattern_type.loc7_34 (constants.%pattern_type.afe)] +// CHECK:STDOUT: %ptr.loc7_29.1: type = ptr_type %Class [symbolic = %ptr.loc7_29.1 (constants.%ptr.955)] +// CHECK:STDOUT: %pattern_type.loc7_19: type = pattern_type %ptr.loc7_29.1 [symbolic = %pattern_type.loc7_19 (constants.%pattern_type.9e0)] +// CHECK:STDOUT: %ptr.loc7_38.1: type = ptr_type %T [symbolic = %ptr.loc7_38.1 (constants.%ptr.79f)] +// CHECK:STDOUT: %pattern_type.loc7_34: type = pattern_type %ptr.loc7_38.1 [symbolic = %pattern_type.loc7_34 (constants.%pattern_type.afe)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc7_34: = require_complete_type %ptr.loc7_38.2 [symbolic = %require_complete.loc7_34 (constants.%require_complete.6e5)] -// CHECK:STDOUT: %require_complete.loc7_23: = require_complete_type %ptr.loc7_29.2 [symbolic = %require_complete.loc7_23 (constants.%require_complete.2ae)] +// CHECK:STDOUT: %require_complete.loc7_34: = require_complete_type %ptr.loc7_38.1 [symbolic = %require_complete.loc7_34 (constants.%require_complete.6e5)] +// CHECK:STDOUT: %require_complete.loc7_23: = require_complete_type %ptr.loc7_29.1 [symbolic = %require_complete.loc7_23 (constants.%require_complete.2ae)] // CHECK:STDOUT: %require_complete.loc7_54: = require_complete_type %Class [symbolic = %require_complete.loc7_54 (constants.%require_complete.4f8)] // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T [symbolic = %Class.elem (constants.%Class.elem.e26)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @GetAddr.%ptr.loc7_29.2 (%ptr.955)) -> @GetAddr.%ptr.loc7_38.2 (%ptr.79f) { +// CHECK:STDOUT: fn(%self.param: @Class.GetAddr.%ptr.loc7_29.1 (%ptr.955)) -> @Class.GetAddr.%ptr.loc7_38.1 (%ptr.79f) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %self.ref: @GetAddr.%ptr.loc7_29.2 (%ptr.955) = name_ref self, %self -// CHECK:STDOUT: %.loc7_54.1: ref @GetAddr.%Class (%Class.fe1) = deref %self.ref -// CHECK:STDOUT: %x.ref: @GetAddr.%Class.elem (%Class.elem.e26) = name_ref x, @Class.%.loc3 [concrete = @Class.%.loc3] -// CHECK:STDOUT: %.loc7_54.2: ref @GetAddr.%T (%T) = class_element_access %.loc7_54.1, element0 -// CHECK:STDOUT: %addr: @GetAddr.%ptr.loc7_38.2 (%ptr.79f) = addr_of %.loc7_54.2 +// CHECK:STDOUT: %self.ref: @Class.GetAddr.%ptr.loc7_29.1 (%ptr.955) = name_ref self, %self +// CHECK:STDOUT: %.loc7_54.1: ref @Class.GetAddr.%Class (%Class.fe1) = deref %self.ref +// CHECK:STDOUT: %x.ref: @Class.GetAddr.%Class.elem (%Class.elem.e26) = name_ref x, @Class.%.loc3 [concrete = @Class.%.loc3] +// CHECK:STDOUT: %.loc7_54.2: ref @Class.GetAddr.%T (%T) = class_element_access %.loc7_54.1, element0 +// CHECK:STDOUT: %addr: @Class.GetAddr.%ptr.loc7_38.1 (%ptr.79f) = addr_of %.loc7_54.2 // CHECK:STDOUT: return %addr // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -310,14 +310,14 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: fn @MethodCall(%x.param: %Class.247) -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %x.ref: %Class.247 = name_ref x, %x -// CHECK:STDOUT: %.loc15_11: %Get.type.59d = specific_constant @Class.%Get.decl, @Class(constants.%i32) [concrete = constants.%Get.a40] -// CHECK:STDOUT: %Get.ref: %Get.type.59d = name_ref Get, %.loc15_11 [concrete = constants.%Get.a40] -// CHECK:STDOUT: %Get.bound: = bound_method %x.ref, %Get.ref -// CHECK:STDOUT: %Get.specific_fn: = specific_function %Get.ref, @Get(constants.%i32) [concrete = constants.%Get.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %x.ref, %Get.specific_fn -// CHECK:STDOUT: %Get.call: init %i32 = call %bound_method(%x.ref) -// CHECK:STDOUT: %.loc15_17.1: %i32 = value_of_initializer %Get.call -// CHECK:STDOUT: %.loc15_17.2: %i32 = converted %Get.call, %.loc15_17.1 +// CHECK:STDOUT: %.loc15_11: %Class.Get.type.59d = specific_constant @Class.%Class.Get.decl, @Class(constants.%i32) [concrete = constants.%Class.Get.a40] +// CHECK:STDOUT: %Get.ref: %Class.Get.type.59d = name_ref Get, %.loc15_11 [concrete = constants.%Class.Get.a40] +// CHECK:STDOUT: %Class.Get.bound: = bound_method %x.ref, %Get.ref +// CHECK:STDOUT: %Class.Get.specific_fn: = specific_function %Get.ref, @Class.Get(constants.%i32) [concrete = constants.%Class.Get.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %x.ref, %Class.Get.specific_fn +// CHECK:STDOUT: %Class.Get.call: init %i32 = call %bound_method(%x.ref) +// CHECK:STDOUT: %.loc15_17.1: %i32 = value_of_initializer %Class.Get.call +// CHECK:STDOUT: %.loc15_17.2: %i32 = converted %Class.Get.call, %.loc15_17.1 // CHECK:STDOUT: return %.loc15_17.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -325,15 +325,15 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %p.ref: %ptr.f7c = name_ref p, %p // CHECK:STDOUT: %.loc19_12.1: ref %Class.247 = deref %p.ref -// CHECK:STDOUT: %.loc19_12.2: %GetAddr.type.be7 = specific_constant @Class.%GetAddr.decl, @Class(constants.%i32) [concrete = constants.%GetAddr.909] -// CHECK:STDOUT: %GetAddr.ref: %GetAddr.type.be7 = name_ref GetAddr, %.loc19_12.2 [concrete = constants.%GetAddr.909] -// CHECK:STDOUT: %GetAddr.bound: = bound_method %.loc19_12.1, %GetAddr.ref -// CHECK:STDOUT: %GetAddr.specific_fn: = specific_function %GetAddr.ref, @GetAddr(constants.%i32) [concrete = constants.%GetAddr.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc19_12.1, %GetAddr.specific_fn +// CHECK:STDOUT: %.loc19_12.2: %Class.GetAddr.type.be7 = specific_constant @Class.%Class.GetAddr.decl, @Class(constants.%i32) [concrete = constants.%Class.GetAddr.909] +// CHECK:STDOUT: %GetAddr.ref: %Class.GetAddr.type.be7 = name_ref GetAddr, %.loc19_12.2 [concrete = constants.%Class.GetAddr.909] +// CHECK:STDOUT: %Class.GetAddr.bound: = bound_method %.loc19_12.1, %GetAddr.ref +// CHECK:STDOUT: %Class.GetAddr.specific_fn: = specific_function %GetAddr.ref, @Class.GetAddr(constants.%i32) [concrete = constants.%Class.GetAddr.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %.loc19_12.1, %Class.GetAddr.specific_fn // CHECK:STDOUT: %addr: %ptr.f7c = addr_of %.loc19_12.1 -// CHECK:STDOUT: %GetAddr.call: init %ptr.235 = call %bound_method(%addr) -// CHECK:STDOUT: %.loc19_22.1: %ptr.235 = value_of_initializer %GetAddr.call -// CHECK:STDOUT: %.loc19_22.2: %ptr.235 = converted %GetAddr.call, %.loc19_22.1 +// CHECK:STDOUT: %Class.GetAddr.call: init %ptr.235 = call %bound_method(%addr) +// CHECK:STDOUT: %.loc19_22.1: %ptr.235 = value_of_initializer %Class.GetAddr.call +// CHECK:STDOUT: %.loc19_22.2: %ptr.235 = converted %Class.GetAddr.call, %.loc19_22.1 // CHECK:STDOUT: %.loc19_10.1: ref %i32 = deref %.loc19_22.2 // CHECK:STDOUT: %.loc19_10.2: %i32 = bind_value %.loc19_10.1 // CHECK:STDOUT: return %.loc19_10.2 @@ -346,27 +346,27 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: %require_complete => constants.%require_complete.4ae // CHECK:STDOUT: %Class => constants.%Class.fe1 // CHECK:STDOUT: %Class.elem => constants.%Class.elem.e26 -// CHECK:STDOUT: %Get.type => constants.%Get.type.fd9 -// CHECK:STDOUT: %Get => constants.%Get.cf9 -// CHECK:STDOUT: %GetAddr.type => constants.%GetAddr.type.402 -// CHECK:STDOUT: %GetAddr => constants.%GetAddr.102 +// CHECK:STDOUT: %Class.Get.type => constants.%Class.Get.type.fd9 +// CHECK:STDOUT: %Class.Get => constants.%Class.Get.cf9 +// CHECK:STDOUT: %Class.GetAddr.type => constants.%Class.GetAddr.type.402 +// CHECK:STDOUT: %Class.GetAddr => constants.%Class.GetAddr.102 // CHECK:STDOUT: %struct_type.x.loc8_1.2 => constants.%struct_type.x.2ac // CHECK:STDOUT: %complete_type.loc8_1.2 => constants.%complete_type.433 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Get(constants.%T) { +// CHECK:STDOUT: specific @Class.Get(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %Class => constants.%Class.fe1 // CHECK:STDOUT: %pattern_type.loc5_10 => constants.%pattern_type.3c1 // CHECK:STDOUT: %pattern_type.loc5_24 => constants.%pattern_type.7dc // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @GetAddr(constants.%T) { +// CHECK:STDOUT: specific @Class.GetAddr(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %Class => constants.%Class.fe1 -// CHECK:STDOUT: %ptr.loc7_29.2 => constants.%ptr.955 +// CHECK:STDOUT: %ptr.loc7_29.1 => constants.%ptr.955 // CHECK:STDOUT: %pattern_type.loc7_19 => constants.%pattern_type.9e0 -// CHECK:STDOUT: %ptr.loc7_38.2 => constants.%ptr.79f +// CHECK:STDOUT: %ptr.loc7_38.1 => constants.%ptr.79f // CHECK:STDOUT: %pattern_type.loc7_34 => constants.%pattern_type.afe // CHECK:STDOUT: } // CHECK:STDOUT: @@ -377,15 +377,15 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: %require_complete => constants.%complete_type.f8a // CHECK:STDOUT: %Class => constants.%Class.247 // CHECK:STDOUT: %Class.elem => constants.%Class.elem.2d8 -// CHECK:STDOUT: %Get.type => constants.%Get.type.59d -// CHECK:STDOUT: %Get => constants.%Get.a40 -// CHECK:STDOUT: %GetAddr.type => constants.%GetAddr.type.be7 -// CHECK:STDOUT: %GetAddr => constants.%GetAddr.909 +// CHECK:STDOUT: %Class.Get.type => constants.%Class.Get.type.59d +// CHECK:STDOUT: %Class.Get => constants.%Class.Get.a40 +// CHECK:STDOUT: %Class.GetAddr.type => constants.%Class.GetAddr.type.be7 +// CHECK:STDOUT: %Class.GetAddr => constants.%Class.GetAddr.909 // CHECK:STDOUT: %struct_type.x.loc8_1.2 => constants.%struct_type.x.ed6 // CHECK:STDOUT: %complete_type.loc8_1.2 => constants.%complete_type.1ec // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Get(constants.%i32) { +// CHECK:STDOUT: specific @Class.Get(constants.%i32) { // CHECK:STDOUT: %T => constants.%i32 // CHECK:STDOUT: %Class => constants.%Class.247 // CHECK:STDOUT: %pattern_type.loc5_10 => constants.%pattern_type.0fa @@ -397,12 +397,12 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: %require_complete.loc5_42 => constants.%complete_type.f8a // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @GetAddr(constants.%i32) { +// CHECK:STDOUT: specific @Class.GetAddr(constants.%i32) { // CHECK:STDOUT: %T => constants.%i32 // CHECK:STDOUT: %Class => constants.%Class.247 -// CHECK:STDOUT: %ptr.loc7_29.2 => constants.%ptr.f7c +// CHECK:STDOUT: %ptr.loc7_29.1 => constants.%ptr.f7c // CHECK:STDOUT: %pattern_type.loc7_19 => constants.%pattern_type.14a -// CHECK:STDOUT: %ptr.loc7_38.2 => constants.%ptr.235 +// CHECK:STDOUT: %ptr.loc7_38.1 => constants.%ptr.235 // CHECK:STDOUT: %pattern_type.loc7_34 => constants.%pattern_type.fe8 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -422,24 +422,24 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: %Class.generic: %Class.type = struct_value () [concrete] // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T) [symbolic] // CHECK:STDOUT: %pattern_type.3c1: type = pattern_type %Class [symbolic] -// CHECK:STDOUT: %Make.type: type = fn_type @Make, @Class(%T) [symbolic] -// CHECK:STDOUT: %Make: %Make.type = struct_value () [symbolic] +// CHECK:STDOUT: %Class.Make.type: type = fn_type @Class.Make, @Class(%T) [symbolic] +// CHECK:STDOUT: %Class.Make: %Class.Make.type = struct_value () [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %require_complete.4f8: = require_complete_type %Class [symbolic] // CHECK:STDOUT: %Class.val: %Class = struct_value () [symbolic] // CHECK:STDOUT: %StaticMemberFunctionCall.type: type = fn_type @StaticMemberFunctionCall [concrete] // CHECK:STDOUT: %StaticMemberFunctionCall: %StaticMemberFunctionCall.type = struct_value () [concrete] -// CHECK:STDOUT: %Make.specific_fn: = specific_function %Make, @Make(%T) [symbolic] +// CHECK:STDOUT: %Class.Make.specific_fn: = specific_function %Class.Make, @Class.Make(%T) [symbolic] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.bae: type = fn_type @Op.1 [concrete] +// CHECK:STDOUT: %Destroy.Op.type: type = fn_type @Destroy.Op [concrete] // CHECK:STDOUT: %ptr.955: type = ptr_type %Class [symbolic] // CHECK:STDOUT: %require_complete.2ae: = require_complete_type %ptr.955 [symbolic] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %Class, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %Class, (%Destroy.lookup_impl_witness) [symbolic] -// CHECK:STDOUT: %.d76: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [symbolic] +// CHECK:STDOUT: %.d76: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet [symbolic] // CHECK:STDOUT: %impl.elem0: %.d76 = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Op.1(%Destroy.facet) [symbolic] +// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Destroy.Op(%Destroy.facet) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -481,19 +481,19 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_13.1 (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Make.type: type = fn_type @Make, @Class(%T.loc4_13.1) [symbolic = %Make.type (constants.%Make.type)] -// CHECK:STDOUT: %Make: @Class.%Make.type (%Make.type) = struct_value () [symbolic = %Make (constants.%Make)] +// CHECK:STDOUT: %Class.Make.type: type = fn_type @Class.Make, @Class(%T.loc4_13.1) [symbolic = %Class.Make.type (constants.%Class.Make.type)] +// CHECK:STDOUT: %Class.Make: @Class.%Class.Make.type (%Class.Make.type) = struct_value () [symbolic = %Class.Make (constants.%Class.Make)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %Make.decl: @Class.%Make.type (%Make.type) = fn_decl @Make [symbolic = @Class.%Make (constants.%Make)] { -// CHECK:STDOUT: %return.patt: @Make.%pattern_type (%pattern_type.3c1) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @Make.%pattern_type (%pattern_type.3c1) = out_param_pattern %return.patt, call_param0 [concrete] +// CHECK:STDOUT: %Class.Make.decl: @Class.%Class.Make.type (%Class.Make.type) = fn_decl @Class.Make [symbolic = @Class.%Class.Make (constants.%Class.Make)] { +// CHECK:STDOUT: %return.patt: @Class.Make.%pattern_type (%pattern_type.3c1) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @Class.Make.%pattern_type (%pattern_type.3c1) = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Class.ref: %Class.type = name_ref Class, file.%Class.decl [concrete = constants.%Class.generic] // CHECK:STDOUT: %T.ref: type = name_ref T, @Class.%T.loc4_13.2 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %Class.loc5_23.1: type = class_type @Class, @Class(constants.%T) [symbolic = %Class.loc5_23.2 (constants.%Class)] -// CHECK:STDOUT: %return.param: ref @Make.%Class.loc5_23.2 (%Class) = out_param call_param0 -// CHECK:STDOUT: %return: ref @Make.%Class.loc5_23.2 (%Class) = return_slot %return.param +// CHECK:STDOUT: %Class.loc5_23.2: type = class_type @Class, @Class(constants.%T) [symbolic = %Class.loc5_23.1 (constants.%Class)] +// CHECK:STDOUT: %return.param: ref @Class.Make.%Class.loc5_23.1 (%Class) = out_param call_param0 +// CHECK:STDOUT: %return: ref @Class.Make.%Class.loc5_23.1 (%Class) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] @@ -503,24 +503,24 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: .Self = constants.%Class // CHECK:STDOUT: .Class = // CHECK:STDOUT: .T = -// CHECK:STDOUT: .Make = %Make.decl +// CHECK:STDOUT: .Make = %Class.Make.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Make(@Class.%T.loc4_13.2: type) { +// CHECK:STDOUT: generic fn @Class.Make(@Class.%T.loc4_13.2: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %Class.loc5_23.2: type = class_type @Class, @Class(%T) [symbolic = %Class.loc5_23.2 (constants.%Class)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Class.loc5_23.2 [symbolic = %pattern_type (constants.%pattern_type.3c1)] +// CHECK:STDOUT: %Class.loc5_23.1: type = class_type @Class, @Class(%T) [symbolic = %Class.loc5_23.1 (constants.%Class)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Class.loc5_23.1 [symbolic = %pattern_type (constants.%pattern_type.3c1)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type %Class.loc5_23.2 [symbolic = %require_complete (constants.%require_complete.4f8)] -// CHECK:STDOUT: %Class.val: @Make.%Class.loc5_23.2 (%Class) = struct_value () [symbolic = %Class.val (constants.%Class.val)] +// CHECK:STDOUT: %require_complete: = require_complete_type %Class.loc5_23.1 [symbolic = %require_complete (constants.%require_complete.4f8)] +// CHECK:STDOUT: %Class.val: @Class.Make.%Class.loc5_23.1 (%Class) = struct_value () [symbolic = %Class.val (constants.%Class.val)] // CHECK:STDOUT: -// CHECK:STDOUT: fn() -> %return.param: @Make.%Class.loc5_23.2 (%Class) { +// CHECK:STDOUT: fn() -> %return.param: @Class.Make.%Class.loc5_23.1 (%Class) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %.loc5_35.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc5_35.2: init @Make.%Class.loc5_23.2 (%Class) = class_init (), %return [symbolic = %Class.val (constants.%Class.val)] -// CHECK:STDOUT: %.loc5_36: init @Make.%Class.loc5_23.2 (%Class) = converted %.loc5_35.1, %.loc5_35.2 [symbolic = %Class.val (constants.%Class.val)] +// CHECK:STDOUT: %.loc5_35.2: init @Class.Make.%Class.loc5_23.1 (%Class) = class_init (), %return [symbolic = %Class.val (constants.%Class.val)] +// CHECK:STDOUT: %.loc5_36: init @Class.Make.%Class.loc5_23.1 (%Class) = converted %.loc5_35.1, %.loc5_35.2 [symbolic = %Class.val (constants.%Class.val)] // CHECK:STDOUT: return %.loc5_36 to %return // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -532,14 +532,14 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete.loc9: = require_complete_type %Class.loc8_49.1 [symbolic = %require_complete.loc9 (constants.%require_complete.4f8)] -// CHECK:STDOUT: %Make.type: type = fn_type @Make, @Class(%T.loc8_29.1) [symbolic = %Make.type (constants.%Make.type)] -// CHECK:STDOUT: %Make: @StaticMemberFunctionCall.%Make.type (%Make.type) = struct_value () [symbolic = %Make (constants.%Make)] -// CHECK:STDOUT: %Make.specific_fn.loc9_18.2: = specific_function %Make, @Make(%T.loc8_29.1) [symbolic = %Make.specific_fn.loc9_18.2 (constants.%Make.specific_fn)] +// CHECK:STDOUT: %Class.Make.type: type = fn_type @Class.Make, @Class(%T.loc8_29.1) [symbolic = %Class.Make.type (constants.%Class.Make.type)] +// CHECK:STDOUT: %Class.Make: @StaticMemberFunctionCall.%Class.Make.type (%Class.Make.type) = struct_value () [symbolic = %Class.Make (constants.%Class.Make)] +// CHECK:STDOUT: %Class.Make.specific_fn.loc9_18.2: = specific_function %Class.Make, @Class.Make(%T.loc8_29.1) [symbolic = %Class.Make.specific_fn.loc9_18.2 (constants.%Class.Make.specific_fn)] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %Class.loc8_49.1, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness)] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %Class.loc8_49.1, (%Destroy.lookup_impl_witness) [symbolic = %Destroy.facet (constants.%Destroy.facet)] -// CHECK:STDOUT: %.loc8_39.3: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.loc8_39.3 (constants.%.d76)] +// CHECK:STDOUT: %.loc8_39.3: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet [symbolic = %.loc8_39.3 (constants.%.d76)] // CHECK:STDOUT: %impl.elem0.loc8_39.2: @StaticMemberFunctionCall.%.loc8_39.3 (%.d76) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc8_39.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %specific_impl_fn.loc8_39.2: = specific_impl_function %impl.elem0.loc8_39.2, @Op.1(%Destroy.facet) [symbolic = %specific_impl_fn.loc8_39.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc8_39.2: = specific_impl_function %impl.elem0.loc8_39.2, @Destroy.Op(%Destroy.facet) [symbolic = %specific_impl_fn.loc8_39.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %ptr: type = ptr_type %Class.loc8_49.1 [symbolic = %ptr (constants.%ptr.955)] // CHECK:STDOUT: %require_complete.loc8: = require_complete_type %ptr [symbolic = %require_complete.loc8 (constants.%require_complete.2ae)] // CHECK:STDOUT: @@ -548,18 +548,18 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: %Class.ref.loc9: %Class.type = name_ref Class, file.%Class.decl [concrete = constants.%Class.generic] // CHECK:STDOUT: %T.ref.loc9: type = name_ref T, %T.loc8_29.2 [symbolic = %T.loc8_29.1 (constants.%T)] // CHECK:STDOUT: %Class.loc9: type = class_type @Class, @Class(constants.%T) [symbolic = %Class.loc8_49.1 (constants.%Class)] -// CHECK:STDOUT: %.loc9: @StaticMemberFunctionCall.%Make.type (%Make.type) = specific_constant @Class.%Make.decl, @Class(constants.%T) [symbolic = %Make (constants.%Make)] -// CHECK:STDOUT: %Make.ref: @StaticMemberFunctionCall.%Make.type (%Make.type) = name_ref Make, %.loc9 [symbolic = %Make (constants.%Make)] -// CHECK:STDOUT: %Make.specific_fn.loc9_18.1: = specific_function %Make.ref, @Make(constants.%T) [symbolic = %Make.specific_fn.loc9_18.2 (constants.%Make.specific_fn)] +// CHECK:STDOUT: %.loc9: @StaticMemberFunctionCall.%Class.Make.type (%Class.Make.type) = specific_constant @Class.%Class.Make.decl, @Class(constants.%T) [symbolic = %Class.Make (constants.%Class.Make)] +// CHECK:STDOUT: %Make.ref: @StaticMemberFunctionCall.%Class.Make.type (%Class.Make.type) = name_ref Make, %.loc9 [symbolic = %Class.Make (constants.%Class.Make)] +// CHECK:STDOUT: %Class.Make.specific_fn.loc9_18.1: = specific_function %Make.ref, @Class.Make(constants.%T) [symbolic = %Class.Make.specific_fn.loc9_18.2 (constants.%Class.Make.specific_fn)] // CHECK:STDOUT: %.loc8_39.1: ref @StaticMemberFunctionCall.%Class.loc8_49.1 (%Class) = splice_block %return {} -// CHECK:STDOUT: %Make.call: init @StaticMemberFunctionCall.%Class.loc8_49.1 (%Class) = call %Make.specific_fn.loc9_18.1() to %.loc8_39.1 +// CHECK:STDOUT: %Class.Make.call: init @StaticMemberFunctionCall.%Class.loc8_49.1 (%Class) = call %Class.Make.specific_fn.loc9_18.1() to %.loc8_39.1 // CHECK:STDOUT: %impl.elem0.loc8_39.1: @StaticMemberFunctionCall.%.loc8_39.3 (%.d76) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc8_39.2 (constants.%impl.elem0)] // CHECK:STDOUT: %bound_method.loc8_39.1: = bound_method %.loc8_39.1, %impl.elem0.loc8_39.1 -// CHECK:STDOUT: %specific_impl_fn.loc8_39.1: = specific_impl_function %impl.elem0.loc8_39.1, @Op.1(constants.%Destroy.facet) [symbolic = %specific_impl_fn.loc8_39.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc8_39.1: = specific_impl_function %impl.elem0.loc8_39.1, @Destroy.Op(constants.%Destroy.facet) [symbolic = %specific_impl_fn.loc8_39.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %bound_method.loc8_39.2: = bound_method %.loc8_39.1, %specific_impl_fn.loc8_39.1 // CHECK:STDOUT: %addr: @StaticMemberFunctionCall.%ptr (%ptr.955) = addr_of %.loc8_39.1 // CHECK:STDOUT: %.loc8_39.2: init %empty_tuple.type = call %bound_method.loc8_39.2(%addr) -// CHECK:STDOUT: return %Make.call to %return +// CHECK:STDOUT: return %Class.Make.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -567,13 +567,13 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: %T.loc4_13.1 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Make.type => constants.%Make.type -// CHECK:STDOUT: %Make => constants.%Make +// CHECK:STDOUT: %Class.Make.type => constants.%Class.Make.type +// CHECK:STDOUT: %Class.Make => constants.%Class.Make // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Make(constants.%T) { +// CHECK:STDOUT: specific @Class.Make(constants.%T) { // CHECK:STDOUT: %T => constants.%T -// CHECK:STDOUT: %Class.loc5_23.2 => constants.%Class +// CHECK:STDOUT: %Class.loc5_23.1 => constants.%Class // CHECK:STDOUT: %pattern_type => constants.%pattern_type.3c1 // CHECK:STDOUT: // CHECK:STDOUT: !definition: diff --git a/toolchain/check/testdata/class/generic/member_inline.carbon b/toolchain/check/testdata/class/generic/member_inline.carbon index 47904e61273f..bddc5b218cae 100644 --- a/toolchain/check/testdata/class/generic/member_inline.carbon +++ b/toolchain/check/testdata/class/generic/member_inline.carbon @@ -52,11 +52,11 @@ class C(T:! type) { // CHECK:STDOUT: %Class.generic: %Class.type = struct_value () [concrete] // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T) [symbolic] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %T [symbolic] -// CHECK:STDOUT: %F.type: type = fn_type @F, @Class(%T) [symbolic] -// CHECK:STDOUT: %F: %F.type = struct_value () [symbolic] +// CHECK:STDOUT: %Class.F.type: type = fn_type @Class.F, @Class(%T) [symbolic] +// CHECK:STDOUT: %Class.F: %Class.F.type = struct_value () [symbolic] // CHECK:STDOUT: %pattern_type.3c1: type = pattern_type %Class [symbolic] -// CHECK:STDOUT: %G.type: type = fn_type @G, @Class(%T) [symbolic] -// CHECK:STDOUT: %G: %G.type = struct_value () [symbolic] +// CHECK:STDOUT: %Class.G.type: type = fn_type @Class.G, @Class(%T) [symbolic] +// CHECK:STDOUT: %Class.G: %Class.G.type = struct_value () [symbolic] // CHECK:STDOUT: %require_complete.4ae: = require_complete_type %T [symbolic] // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T [symbolic] // CHECK:STDOUT: %struct_type.n: type = struct_type {.n: %T} [symbolic] @@ -88,10 +88,10 @@ class C(T:! type) { // CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_13.1 (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type: type = fn_type @F, @Class(%T.loc4_13.1) [symbolic = %F.type (constants.%F.type)] -// CHECK:STDOUT: %F: @Class.%F.type (%F.type) = struct_value () [symbolic = %F (constants.%F)] -// CHECK:STDOUT: %G.type: type = fn_type @G, @Class(%T.loc4_13.1) [symbolic = %G.type (constants.%G.type)] -// CHECK:STDOUT: %G: @Class.%G.type (%G.type) = struct_value () [symbolic = %G (constants.%G)] +// CHECK:STDOUT: %Class.F.type: type = fn_type @Class.F, @Class(%T.loc4_13.1) [symbolic = %Class.F.type (constants.%Class.F.type)] +// CHECK:STDOUT: %Class.F: @Class.%Class.F.type (%Class.F.type) = struct_value () [symbolic = %Class.F (constants.%Class.F)] +// CHECK:STDOUT: %Class.G.type: type = fn_type @Class.G, @Class(%T.loc4_13.1) [symbolic = %Class.G.type (constants.%Class.G.type)] +// CHECK:STDOUT: %Class.G: @Class.%Class.G.type (%Class.G.type) = struct_value () [symbolic = %Class.G (constants.%Class.G)] // CHECK:STDOUT: %require_complete: = require_complete_type %T.loc4_13.1 [symbolic = %require_complete (constants.%require_complete.4ae)] // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T.loc4_13.1) [symbolic = %Class (constants.%Class)] // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T.loc4_13.1 [symbolic = %Class.elem (constants.%Class.elem)] @@ -99,34 +99,34 @@ class C(T:! type) { // CHECK:STDOUT: %complete_type.loc14_1.2: = complete_type_witness %struct_type.n.loc14_1.2 [symbolic = %complete_type.loc14_1.2 (constants.%complete_type)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %F.decl: @Class.%F.type (%F.type) = fn_decl @F [symbolic = @Class.%F (constants.%F)] { -// CHECK:STDOUT: %n.patt: @F.%pattern_type (%pattern_type.7dc) = binding_pattern n [concrete] -// CHECK:STDOUT: %n.param_patt: @F.%pattern_type (%pattern_type.7dc) = value_param_pattern %n.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: @F.%pattern_type (%pattern_type.7dc) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @F.%pattern_type (%pattern_type.7dc) = out_param_pattern %return.patt, call_param1 [concrete] +// CHECK:STDOUT: %Class.F.decl: @Class.%Class.F.type (%Class.F.type) = fn_decl @Class.F [symbolic = @Class.%Class.F (constants.%Class.F)] { +// CHECK:STDOUT: %n.patt: @Class.F.%pattern_type (%pattern_type.7dc) = binding_pattern n [concrete] +// CHECK:STDOUT: %n.param_patt: @Class.F.%pattern_type (%pattern_type.7dc) = value_param_pattern %n.patt, call_param0 [concrete] +// CHECK:STDOUT: %return.patt: @Class.F.%pattern_type (%pattern_type.7dc) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @Class.F.%pattern_type (%pattern_type.7dc) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc5_17: type = name_ref T, @Class.%T.loc4_13.2 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %n.param: @F.%T (%T) = value_param call_param0 +// CHECK:STDOUT: %n.param: @Class.F.%T (%T) = value_param call_param0 // CHECK:STDOUT: %T.ref.loc5_11: type = name_ref T, @Class.%T.loc4_13.2 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %n: @F.%T (%T) = bind_name n, %n.param -// CHECK:STDOUT: %return.param: ref @F.%T (%T) = out_param call_param1 -// CHECK:STDOUT: %return: ref @F.%T (%T) = return_slot %return.param +// CHECK:STDOUT: %n: @Class.F.%T (%T) = bind_name n, %n.param +// CHECK:STDOUT: %return.param: ref @Class.F.%T (%T) = out_param call_param1 +// CHECK:STDOUT: %return: ref @Class.F.%T (%T) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: @Class.%G.type (%G.type) = fn_decl @G [symbolic = @Class.%G (constants.%G)] { -// CHECK:STDOUT: %self.patt: @G.%pattern_type.loc9_8 (%pattern_type.3c1) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @G.%pattern_type.loc9_8 (%pattern_type.3c1) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: @G.%pattern_type.loc9_22 (%pattern_type.7dc) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @G.%pattern_type.loc9_22 (%pattern_type.7dc) = out_param_pattern %return.patt, call_param1 [concrete] +// CHECK:STDOUT: %Class.G.decl: @Class.%Class.G.type (%Class.G.type) = fn_decl @Class.G [symbolic = @Class.%Class.G (constants.%Class.G)] { +// CHECK:STDOUT: %self.patt: @Class.G.%pattern_type.loc9_8 (%pattern_type.3c1) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @Class.G.%pattern_type.loc9_8 (%pattern_type.3c1) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %return.patt: @Class.G.%pattern_type.loc9_22 (%pattern_type.7dc) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @Class.G.%pattern_type.loc9_22 (%pattern_type.7dc) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, @Class.%T.loc4_13.2 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %self.param: @G.%Class (%Class) = value_param call_param0 +// CHECK:STDOUT: %self.param: @Class.G.%Class (%Class) = value_param call_param0 // CHECK:STDOUT: %.loc9_14.1: type = splice_block %Self.ref [symbolic = %Class (constants.%Class)] { // CHECK:STDOUT: %.loc9_14.2: type = specific_constant constants.%Class, @Class(constants.%T) [symbolic = %Class (constants.%Class)] // CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc9_14.2 [symbolic = %Class (constants.%Class)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @G.%Class (%Class) = bind_name self, %self.param -// CHECK:STDOUT: %return.param: ref @G.%T (%T) = out_param call_param1 -// CHECK:STDOUT: %return: ref @G.%T (%T) = return_slot %return.param +// CHECK:STDOUT: %self: @Class.G.%Class (%Class) = bind_name self, %self.param +// CHECK:STDOUT: %return.param: ref @Class.G.%T (%T) = out_param call_param1 +// CHECK:STDOUT: %return: ref @Class.G.%T (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4_13.2 [symbolic = %T.loc4_13.1 (constants.%T)] // CHECK:STDOUT: %.loc13: @Class.%Class.elem (%Class.elem) = field_decl n, element0 [concrete] @@ -137,27 +137,27 @@ class C(T:! type) { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class // CHECK:STDOUT: .T = -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .F = %Class.F.decl +// CHECK:STDOUT: .G = %Class.G.decl // CHECK:STDOUT: .n = %.loc13 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(@Class.%T.loc4_13.2: type) { +// CHECK:STDOUT: generic fn @Class.F(@Class.%T.loc4_13.2: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %pattern_type: type = pattern_type %T [symbolic = %pattern_type (constants.%pattern_type.7dc)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %T [symbolic = %require_complete (constants.%require_complete.4ae)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%n.param: @F.%T (%T)) -> @F.%T (%T) { +// CHECK:STDOUT: fn(%n.param: @Class.F.%T (%T)) -> @Class.F.%T (%T) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %n.ref: @F.%T (%T) = name_ref n, %n +// CHECK:STDOUT: %n.ref: @Class.F.%T (%T) = name_ref n, %n // CHECK:STDOUT: return %n.ref // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @G(@Class.%T.loc4_13.2: type) { +// CHECK:STDOUT: generic fn @Class.G(@Class.%T.loc4_13.2: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T) [symbolic = %Class (constants.%Class)] // CHECK:STDOUT: %pattern_type.loc9_8: type = pattern_type %Class [symbolic = %pattern_type.loc9_8 (constants.%pattern_type.3c1)] @@ -168,12 +168,12 @@ class C(T:! type) { // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T [symbolic = %Class.elem (constants.%Class.elem)] // CHECK:STDOUT: %require_complete.loc10: = require_complete_type %T [symbolic = %require_complete.loc10 (constants.%require_complete.4ae)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @G.%Class (%Class)) -> @G.%T (%T) { +// CHECK:STDOUT: fn(%self.param: @Class.G.%Class (%Class)) -> @Class.G.%T (%T) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %self.ref: @G.%Class (%Class) = name_ref self, %self -// CHECK:STDOUT: %n.ref: @G.%Class.elem (%Class.elem) = name_ref n, @Class.%.loc13 [concrete = @Class.%.loc13] -// CHECK:STDOUT: %.loc10_16.1: ref @G.%T (%T) = class_element_access %self.ref, element0 -// CHECK:STDOUT: %.loc10_16.2: @G.%T (%T) = bind_value %.loc10_16.1 +// CHECK:STDOUT: %self.ref: @Class.G.%Class (%Class) = name_ref self, %self +// CHECK:STDOUT: %n.ref: @Class.G.%Class.elem (%Class.elem) = name_ref n, @Class.%.loc13 [concrete = @Class.%.loc13] +// CHECK:STDOUT: %.loc10_16.1: ref @Class.G.%T (%T) = class_element_access %self.ref, element0 +// CHECK:STDOUT: %.loc10_16.2: @Class.G.%T (%T) = bind_value %.loc10_16.1 // CHECK:STDOUT: return %.loc10_16.2 // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -182,10 +182,10 @@ class C(T:! type) { // CHECK:STDOUT: %T.loc4_13.1 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type -// CHECK:STDOUT: %F => constants.%F -// CHECK:STDOUT: %G.type => constants.%G.type -// CHECK:STDOUT: %G => constants.%G +// CHECK:STDOUT: %Class.F.type => constants.%Class.F.type +// CHECK:STDOUT: %Class.F => constants.%Class.F +// CHECK:STDOUT: %Class.G.type => constants.%Class.G.type +// CHECK:STDOUT: %Class.G => constants.%Class.G // CHECK:STDOUT: %require_complete => constants.%require_complete.4ae // CHECK:STDOUT: %Class => constants.%Class // CHECK:STDOUT: %Class.elem => constants.%Class.elem @@ -193,12 +193,12 @@ class C(T:! type) { // CHECK:STDOUT: %complete_type.loc14_1.2 => constants.%complete_type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%T) { +// CHECK:STDOUT: specific @Class.F(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7dc // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @G(constants.%T) { +// CHECK:STDOUT: specific @Class.G(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %Class => constants.%Class // CHECK:STDOUT: %pattern_type.loc9_8 => constants.%pattern_type.3c1 @@ -213,8 +213,8 @@ class C(T:! type) { // CHECK:STDOUT: %C.type: type = generic_class_type @C [concrete] // CHECK:STDOUT: %C.generic: %C.type = struct_value () [concrete] // CHECK:STDOUT: %C: type = class_type @C, @C(%T) [symbolic] -// CHECK:STDOUT: %F.type: type = fn_type @F, @C(%T) [symbolic] -// CHECK:STDOUT: %F: %F.type = struct_value () [symbolic] +// CHECK:STDOUT: %C.F.type: type = fn_type @C.F, @C(%T) [symbolic] +// CHECK:STDOUT: %C.F: %C.F.type = struct_value () [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %empty_struct_type [symbolic] // CHECK:STDOUT: %struct_type.data: type = struct_type {.data: %empty_struct_type} [concrete] @@ -245,13 +245,13 @@ class C(T:! type) { // CHECK:STDOUT: %T.loc4_9.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_9.1 (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type: type = fn_type @F, @C(%T.loc4_9.1) [symbolic = %F.type (constants.%F.type)] -// CHECK:STDOUT: %F: @C.%F.type (%F.type) = struct_value () [symbolic = %F (constants.%F)] +// CHECK:STDOUT: %C.F.type: type = fn_type @C.F, @C(%T.loc4_9.1) [symbolic = %C.F.type (constants.%C.F.type)] +// CHECK:STDOUT: %C.F: @C.%C.F.type (%C.F.type) = struct_value () [symbolic = %C.F (constants.%C.F)] // CHECK:STDOUT: %C: type = class_type @C, @C(%T.loc4_9.1) [symbolic = %C (constants.%C)] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, constants.%empty_struct_type [symbolic = %C.elem (constants.%C.elem)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %F.decl: @C.%F.type (%F.type) = fn_decl @F [symbolic = @C.%F (constants.%F)] {} {} +// CHECK:STDOUT: %C.F.decl: @C.%C.F.type (%C.F.type) = fn_decl @C.F [symbolic = @C.%C.F (constants.%C.F)] {} {} // CHECK:STDOUT: %.loc12_14.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc12_14.2: type = converted %.loc12_14.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %.loc12_11: @C.%C.elem (%C.elem) = field_decl data, element0 [concrete] @@ -261,12 +261,12 @@ class C(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %C.F.decl // CHECK:STDOUT: .data = %.loc12_11 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(@C.%T.loc4_9.2: type) { +// CHECK:STDOUT: generic fn @C.F(@C.%T.loc4_9.2: type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %C: type = class_type @C, @C(%T) [symbolic = %C (constants.%C)] @@ -274,7 +274,7 @@ class C(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: fn() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %data.ref: @F.%C.elem (%C.elem) = name_ref data, @C.%.loc12_11 [concrete = @C.%.loc12_11] +// CHECK:STDOUT: %data.ref: @C.F.%C.elem (%C.elem) = name_ref data, @C.%.loc12_11 [concrete = @C.%.loc12_11] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -283,11 +283,11 @@ class C(T:! type) { // CHECK:STDOUT: %T.loc4_9.1 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type -// CHECK:STDOUT: %F => constants.%F +// CHECK:STDOUT: %C.F.type => constants.%C.F.type +// CHECK:STDOUT: %C.F => constants.%C.F // CHECK:STDOUT: %C => constants.%C // CHECK:STDOUT: %C.elem => constants.%C.elem // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%T) {} +// CHECK:STDOUT: specific @C.F(constants.%T) {} // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/member_out_of_line.carbon b/toolchain/check/testdata/class/generic/member_out_of_line.carbon index cc2485763083..df50e544fddf 100644 --- a/toolchain/check/testdata/class/generic/member_out_of_line.carbon +++ b/toolchain/check/testdata/class/generic/member_out_of_line.carbon @@ -119,11 +119,11 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %Class.generic: %Class.type = struct_value () [concrete] // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T) [symbolic] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %T [symbolic] -// CHECK:STDOUT: %F.type: type = fn_type @F, @Class(%T) [symbolic] -// CHECK:STDOUT: %F: %F.type = struct_value () [symbolic] +// CHECK:STDOUT: %Class.F.type: type = fn_type @Class.F, @Class(%T) [symbolic] +// CHECK:STDOUT: %Class.F: %Class.F.type = struct_value () [symbolic] // CHECK:STDOUT: %pattern_type.3c1: type = pattern_type %Class [symbolic] -// CHECK:STDOUT: %G.type: type = fn_type @G, @Class(%T) [symbolic] -// CHECK:STDOUT: %G: %G.type = struct_value () [symbolic] +// CHECK:STDOUT: %Class.G.type: type = fn_type @Class.G, @Class(%T) [symbolic] +// CHECK:STDOUT: %Class.G: %Class.G.type = struct_value () [symbolic] // CHECK:STDOUT: %require_complete.4ae: = require_complete_type %T [symbolic] // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T [symbolic] // CHECK:STDOUT: %struct_type.n: type = struct_type {.n: %T} [symbolic] @@ -149,36 +149,36 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: } { // CHECK:STDOUT: %T.loc4_13.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_13.1 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [symbolic = constants.%F] { -// CHECK:STDOUT: %n.patt: @F.%pattern_type (%pattern_type.7dc) = binding_pattern n [concrete] -// CHECK:STDOUT: %n.param_patt: @F.%pattern_type (%pattern_type.7dc) = value_param_pattern %n.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: @F.%pattern_type (%pattern_type.7dc) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @F.%pattern_type (%pattern_type.7dc) = out_param_pattern %return.patt, call_param1 [concrete] +// CHECK:STDOUT: %Class.F.decl: %Class.F.type = fn_decl @Class.F [symbolic = constants.%Class.F] { +// CHECK:STDOUT: %n.patt: @Class.F.%pattern_type (%pattern_type.7dc) = binding_pattern n [concrete] +// CHECK:STDOUT: %n.param_patt: @Class.F.%pattern_type (%pattern_type.7dc) = value_param_pattern %n.patt, call_param0 [concrete] +// CHECK:STDOUT: %return.patt: @Class.F.%pattern_type (%pattern_type.7dc) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @Class.F.%pattern_type (%pattern_type.7dc) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.loc10: type = bind_symbolic_name T, 0 [symbolic = @Class.%T.loc4_13.1 (constants.%T)] // CHECK:STDOUT: %T.ref.loc10_31: type = name_ref T, %T.loc10 [symbolic = %T.loc5 (constants.%T)] -// CHECK:STDOUT: %n.param.loc10: @F.%T.loc5 (%T) = value_param call_param0 +// CHECK:STDOUT: %n.param.loc10: @Class.F.%T.loc5 (%T) = value_param call_param0 // CHECK:STDOUT: %T.ref.loc10_25: type = name_ref T, %T.loc10 [symbolic = %T.loc5 (constants.%T)] -// CHECK:STDOUT: %n.loc10: @F.%T.loc5 (%T) = bind_name n, %n.param.loc10 -// CHECK:STDOUT: %return.param.loc10: ref @F.%T.loc5 (%T) = out_param call_param1 -// CHECK:STDOUT: %return.loc10: ref @F.%T.loc5 (%T) = return_slot %return.param.loc10 +// CHECK:STDOUT: %n.loc10: @Class.F.%T.loc5 (%T) = bind_name n, %n.param.loc10 +// CHECK:STDOUT: %return.param.loc10: ref @Class.F.%T.loc5 (%T) = out_param call_param1 +// CHECK:STDOUT: %return.loc10: ref @Class.F.%T.loc5 (%T) = return_slot %return.param.loc10 // CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [symbolic = constants.%G] { -// CHECK:STDOUT: %self.patt: @G.%pattern_type.loc6_8 (%pattern_type.3c1) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @G.%pattern_type.loc6_8 (%pattern_type.3c1) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: @G.%pattern_type.loc6_22 (%pattern_type.7dc) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @G.%pattern_type.loc6_22 (%pattern_type.7dc) = out_param_pattern %return.patt, call_param1 [concrete] +// CHECK:STDOUT: %Class.G.decl: %Class.G.type = fn_decl @Class.G [symbolic = constants.%Class.G] { +// CHECK:STDOUT: %self.patt: @Class.G.%pattern_type.loc6_8 (%pattern_type.3c1) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @Class.G.%pattern_type.loc6_8 (%pattern_type.3c1) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %return.patt: @Class.G.%pattern_type.loc6_22 (%pattern_type.7dc) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @Class.G.%pattern_type.loc6_22 (%pattern_type.7dc) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.loc14: type = bind_symbolic_name T, 0 [symbolic = @Class.%T.loc4_13.1 (constants.%T)] // CHECK:STDOUT: %T.ref.loc14: type = name_ref T, %T.loc14 [symbolic = %T.loc6 (constants.%T)] -// CHECK:STDOUT: %self.param.loc14: @G.%Class (%Class) = value_param call_param0 +// CHECK:STDOUT: %self.param.loc14: @Class.G.%Class (%Class) = value_param call_param0 // CHECK:STDOUT: %.loc14_28.1: type = splice_block %Self.ref.loc14 [symbolic = %Class (constants.%Class)] { // CHECK:STDOUT: %.loc14_28.2: type = specific_constant constants.%Class, @Class(constants.%T) [symbolic = %Class (constants.%Class)] // CHECK:STDOUT: %Self.ref.loc14: type = name_ref Self, %.loc14_28.2 [symbolic = %Class (constants.%Class)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self.loc14: @G.%Class (%Class) = bind_name self, %self.param.loc14 -// CHECK:STDOUT: %return.param.loc14: ref @G.%T.loc6 (%T) = out_param call_param1 -// CHECK:STDOUT: %return.loc14: ref @G.%T.loc6 (%T) = return_slot %return.param.loc14 +// CHECK:STDOUT: %self.loc14: @Class.G.%Class (%Class) = bind_name self, %self.param.loc14 +// CHECK:STDOUT: %return.param.loc14: ref @Class.G.%T.loc6 (%T) = out_param call_param1 +// CHECK:STDOUT: %return.loc14: ref @Class.G.%T.loc6 (%T) = return_slot %return.param.loc14 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -186,10 +186,10 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_13.1 (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type: type = fn_type @F, @Class(%T.loc4_13.1) [symbolic = %F.type (constants.%F.type)] -// CHECK:STDOUT: %F: @Class.%F.type (%F.type) = struct_value () [symbolic = %F (constants.%F)] -// CHECK:STDOUT: %G.type: type = fn_type @G, @Class(%T.loc4_13.1) [symbolic = %G.type (constants.%G.type)] -// CHECK:STDOUT: %G: @Class.%G.type (%G.type) = struct_value () [symbolic = %G (constants.%G)] +// CHECK:STDOUT: %Class.F.type: type = fn_type @Class.F, @Class(%T.loc4_13.1) [symbolic = %Class.F.type (constants.%Class.F.type)] +// CHECK:STDOUT: %Class.F: @Class.%Class.F.type (%Class.F.type) = struct_value () [symbolic = %Class.F (constants.%Class.F)] +// CHECK:STDOUT: %Class.G.type: type = fn_type @Class.G, @Class(%T.loc4_13.1) [symbolic = %Class.G.type (constants.%Class.G.type)] +// CHECK:STDOUT: %Class.G: @Class.%Class.G.type (%Class.G.type) = struct_value () [symbolic = %Class.G (constants.%Class.G)] // CHECK:STDOUT: %require_complete: = require_complete_type %T.loc4_13.1 [symbolic = %require_complete (constants.%require_complete.4ae)] // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T.loc4_13.1) [symbolic = %Class (constants.%Class)] // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T.loc4_13.1 [symbolic = %Class.elem (constants.%Class.elem)] @@ -197,34 +197,34 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %complete_type.loc8_1.2: = complete_type_witness %struct_type.n.loc8_1.2 [symbolic = %complete_type.loc8_1.2 (constants.%complete_type)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %F.decl: @Class.%F.type (%F.type) = fn_decl @F [symbolic = @Class.%F (constants.%F)] { -// CHECK:STDOUT: %n.patt: @F.%pattern_type (%pattern_type.7dc) = binding_pattern n [concrete] -// CHECK:STDOUT: %n.param_patt: @F.%pattern_type (%pattern_type.7dc) = value_param_pattern %n.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: @F.%pattern_type (%pattern_type.7dc) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @F.%pattern_type (%pattern_type.7dc) = out_param_pattern %return.patt, call_param1 [concrete] +// CHECK:STDOUT: %Class.F.decl: @Class.%Class.F.type (%Class.F.type) = fn_decl @Class.F [symbolic = @Class.%Class.F (constants.%Class.F)] { +// CHECK:STDOUT: %n.patt: @Class.F.%pattern_type (%pattern_type.7dc) = binding_pattern n [concrete] +// CHECK:STDOUT: %n.param_patt: @Class.F.%pattern_type (%pattern_type.7dc) = value_param_pattern %n.patt, call_param0 [concrete] +// CHECK:STDOUT: %return.patt: @Class.F.%pattern_type (%pattern_type.7dc) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @Class.F.%pattern_type (%pattern_type.7dc) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc5_17: type = name_ref T, @Class.%T.loc4_13.2 [symbolic = %T.loc5 (constants.%T)] -// CHECK:STDOUT: %n.param.loc5: @F.%T.loc5 (%T) = value_param call_param0 +// CHECK:STDOUT: %n.param.loc5: @Class.F.%T.loc5 (%T) = value_param call_param0 // CHECK:STDOUT: %T.ref.loc5_11: type = name_ref T, @Class.%T.loc4_13.2 [symbolic = %T.loc5 (constants.%T)] -// CHECK:STDOUT: %n.loc5: @F.%T.loc5 (%T) = bind_name n, %n.param.loc5 -// CHECK:STDOUT: %return.param.loc5: ref @F.%T.loc5 (%T) = out_param call_param1 -// CHECK:STDOUT: %return.loc5: ref @F.%T.loc5 (%T) = return_slot %return.param.loc5 +// CHECK:STDOUT: %n.loc5: @Class.F.%T.loc5 (%T) = bind_name n, %n.param.loc5 +// CHECK:STDOUT: %return.param.loc5: ref @Class.F.%T.loc5 (%T) = out_param call_param1 +// CHECK:STDOUT: %return.loc5: ref @Class.F.%T.loc5 (%T) = return_slot %return.param.loc5 // CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: @Class.%G.type (%G.type) = fn_decl @G [symbolic = @Class.%G (constants.%G)] { -// CHECK:STDOUT: %self.patt: @G.%pattern_type.loc6_8 (%pattern_type.3c1) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @G.%pattern_type.loc6_8 (%pattern_type.3c1) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: @G.%pattern_type.loc6_22 (%pattern_type.7dc) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @G.%pattern_type.loc6_22 (%pattern_type.7dc) = out_param_pattern %return.patt, call_param1 [concrete] +// CHECK:STDOUT: %Class.G.decl: @Class.%Class.G.type (%Class.G.type) = fn_decl @Class.G [symbolic = @Class.%Class.G (constants.%Class.G)] { +// CHECK:STDOUT: %self.patt: @Class.G.%pattern_type.loc6_8 (%pattern_type.3c1) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @Class.G.%pattern_type.loc6_8 (%pattern_type.3c1) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %return.patt: @Class.G.%pattern_type.loc6_22 (%pattern_type.7dc) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @Class.G.%pattern_type.loc6_22 (%pattern_type.7dc) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc6: type = name_ref T, @Class.%T.loc4_13.2 [symbolic = %T.loc6 (constants.%T)] -// CHECK:STDOUT: %self.param.loc6: @G.%Class (%Class) = value_param call_param0 +// CHECK:STDOUT: %self.param.loc6: @Class.G.%Class (%Class) = value_param call_param0 // CHECK:STDOUT: %.loc6_14.1: type = splice_block %Self.ref.loc6 [symbolic = %Class (constants.%Class)] { // CHECK:STDOUT: %.loc6_14.2: type = specific_constant constants.%Class, @Class(constants.%T) [symbolic = %Class (constants.%Class)] // CHECK:STDOUT: %Self.ref.loc6: type = name_ref Self, %.loc6_14.2 [symbolic = %Class (constants.%Class)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self.loc6: @G.%Class (%Class) = bind_name self, %self.param.loc6 -// CHECK:STDOUT: %return.param.loc6: ref @G.%T.loc6 (%T) = out_param call_param1 -// CHECK:STDOUT: %return.loc6: ref @G.%T.loc6 (%T) = return_slot %return.param.loc6 +// CHECK:STDOUT: %self.loc6: @Class.G.%Class (%Class) = bind_name self, %self.param.loc6 +// CHECK:STDOUT: %return.param.loc6: ref @Class.G.%T.loc6 (%T) = out_param call_param1 +// CHECK:STDOUT: %return.loc6: ref @Class.G.%T.loc6 (%T) = return_slot %return.param.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4_13.2 [symbolic = %T.loc4_13.1 (constants.%T)] // CHECK:STDOUT: %.loc7: @Class.%Class.elem (%Class.elem) = field_decl n, element0 [concrete] @@ -235,27 +235,27 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class // CHECK:STDOUT: .T = -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .F = %Class.F.decl +// CHECK:STDOUT: .G = %Class.G.decl // CHECK:STDOUT: .n = %.loc7 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(@Class.%T.loc4_13.2: type) { +// CHECK:STDOUT: generic fn @Class.F(@Class.%T.loc4_13.2: type) { // CHECK:STDOUT: %T.loc5: type = bind_symbolic_name T, 0 [symbolic = %T.loc5 (constants.%T)] // CHECK:STDOUT: %pattern_type: type = pattern_type %T.loc5 [symbolic = %pattern_type (constants.%pattern_type.7dc)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %T.loc5 [symbolic = %require_complete (constants.%require_complete.4ae)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%n.param.loc10: @F.%T.loc5 (%T)) -> @F.%T.loc5 (%T) { +// CHECK:STDOUT: fn(%n.param.loc10: @Class.F.%T.loc5 (%T)) -> @Class.F.%T.loc5 (%T) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %n.ref: @F.%T.loc5 (%T) = name_ref n, %n.loc10 +// CHECK:STDOUT: %n.ref: @Class.F.%T.loc5 (%T) = name_ref n, %n.loc10 // CHECK:STDOUT: return %n.ref // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @G(@Class.%T.loc4_13.2: type) { +// CHECK:STDOUT: generic fn @Class.G(@Class.%T.loc4_13.2: type) { // CHECK:STDOUT: %T.loc6: type = bind_symbolic_name T, 0 [symbolic = %T.loc6 (constants.%T)] // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T.loc6) [symbolic = %Class (constants.%Class)] // CHECK:STDOUT: %pattern_type.loc6_8: type = pattern_type %Class [symbolic = %pattern_type.loc6_8 (constants.%pattern_type.3c1)] @@ -266,12 +266,12 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T.loc6 [symbolic = %Class.elem (constants.%Class.elem)] // CHECK:STDOUT: %require_complete.loc15: = require_complete_type %T.loc6 [symbolic = %require_complete.loc15 (constants.%require_complete.4ae)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param.loc14: @G.%Class (%Class)) -> @G.%T.loc6 (%T) { +// CHECK:STDOUT: fn(%self.param.loc14: @Class.G.%Class (%Class)) -> @Class.G.%T.loc6 (%T) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %self.ref: @G.%Class (%Class) = name_ref self, %self.loc14 -// CHECK:STDOUT: %n.ref: @G.%Class.elem (%Class.elem) = name_ref n, @Class.%.loc7 [concrete = @Class.%.loc7] -// CHECK:STDOUT: %.loc15_14.1: ref @G.%T.loc6 (%T) = class_element_access %self.ref, element0 -// CHECK:STDOUT: %.loc15_14.2: @G.%T.loc6 (%T) = bind_value %.loc15_14.1 +// CHECK:STDOUT: %self.ref: @Class.G.%Class (%Class) = name_ref self, %self.loc14 +// CHECK:STDOUT: %n.ref: @Class.G.%Class.elem (%Class.elem) = name_ref n, @Class.%.loc7 [concrete = @Class.%.loc7] +// CHECK:STDOUT: %.loc15_14.1: ref @Class.G.%T.loc6 (%T) = class_element_access %self.ref, element0 +// CHECK:STDOUT: %.loc15_14.2: @Class.G.%T.loc6 (%T) = bind_value %.loc15_14.1 // CHECK:STDOUT: return %.loc15_14.2 // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -280,10 +280,10 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %T.loc4_13.1 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type -// CHECK:STDOUT: %F => constants.%F -// CHECK:STDOUT: %G.type => constants.%G.type -// CHECK:STDOUT: %G => constants.%G +// CHECK:STDOUT: %Class.F.type => constants.%Class.F.type +// CHECK:STDOUT: %Class.F => constants.%Class.F +// CHECK:STDOUT: %Class.G.type => constants.%Class.G.type +// CHECK:STDOUT: %Class.G => constants.%Class.G // CHECK:STDOUT: %require_complete => constants.%require_complete.4ae // CHECK:STDOUT: %Class => constants.%Class // CHECK:STDOUT: %Class.elem => constants.%Class.elem @@ -291,12 +291,12 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %complete_type.loc8_1.2 => constants.%complete_type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%T) { +// CHECK:STDOUT: specific @Class.F(constants.%T) { // CHECK:STDOUT: %T.loc5 => constants.%T // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7dc // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @G(constants.%T) { +// CHECK:STDOUT: specific @Class.G(constants.%T) { // CHECK:STDOUT: %T.loc6 => constants.%T // CHECK:STDOUT: %Class => constants.%Class // CHECK:STDOUT: %pattern_type.loc6_8 => constants.%pattern_type.3c1 @@ -317,8 +317,8 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %B.generic: %B.type = struct_value () [symbolic] // CHECK:STDOUT: %B: type = class_type @B, @B(%T, %N) [symbolic] // CHECK:STDOUT: %pattern_type.13e: type = pattern_type %B [symbolic] -// CHECK:STDOUT: %F.type: type = fn_type @F, @B(%T, %N) [symbolic] -// CHECK:STDOUT: %F: %F.type = struct_value () [symbolic] +// CHECK:STDOUT: %B.F.type: type = fn_type @B.F, @B(%T, %N) [symbolic] +// CHECK:STDOUT: %B.F: %B.F.type = struct_value () [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %require_complete.fca: = require_complete_type %B [symbolic] @@ -343,24 +343,24 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: } { // CHECK:STDOUT: %T.loc4_9.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_9.1 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [symbolic = constants.%F] { -// CHECK:STDOUT: %self.patt: @F.%pattern_type.loc6_10 (%pattern_type.13e) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.%pattern_type.loc6_10 (%pattern_type.13e) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %a.patt: @F.%pattern_type.loc6_22 (%pattern_type.7dc) = binding_pattern a [concrete] -// CHECK:STDOUT: %a.param_patt: @F.%pattern_type.loc6_22 (%pattern_type.7dc) = value_param_pattern %a.patt, call_param1 [concrete] +// CHECK:STDOUT: %B.F.decl: %B.F.type = fn_decl @B.F [symbolic = constants.%B.F] { +// CHECK:STDOUT: %self.patt: @B.F.%pattern_type.loc6_10 (%pattern_type.13e) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @B.F.%pattern_type.loc6_10 (%pattern_type.13e) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %a.patt: @B.F.%pattern_type.loc6_22 (%pattern_type.7dc) = binding_pattern a [concrete] +// CHECK:STDOUT: %a.param_patt: @B.F.%pattern_type.loc6_22 (%pattern_type.7dc) = value_param_pattern %a.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.loc10: type = bind_symbolic_name T, 0 [symbolic = @A.%T.loc4_9.1 (constants.%T)] // CHECK:STDOUT: %T.ref.loc10_22: type = name_ref T, %T.loc10 [symbolic = @B.%T (constants.%T)] -// CHECK:STDOUT: %N.loc10: @B.%T (%T) = bind_symbolic_name N, 1 [symbolic = @B.%N.loc5_11.2 (constants.%N)] -// CHECK:STDOUT: %self.param.loc10: @F.%B (%B) = value_param call_param0 +// CHECK:STDOUT: %N.loc10: @B.%T (%T) = bind_symbolic_name N, 1 [symbolic = @B.%N.loc5_11.1 (constants.%N)] +// CHECK:STDOUT: %self.param.loc10: @B.F.%B (%B) = value_param call_param0 // CHECK:STDOUT: %.loc10_33.1: type = splice_block %Self.ref.loc10 [symbolic = %B (constants.%B)] { // CHECK:STDOUT: %.loc10_33.2: type = specific_constant constants.%B, @B(constants.%T, constants.%N) [symbolic = %B (constants.%B)] // CHECK:STDOUT: %Self.ref.loc10: type = name_ref Self, %.loc10_33.2 [symbolic = %B (constants.%B)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self.loc10: @F.%B (%B) = bind_name self, %self.param.loc10 -// CHECK:STDOUT: %a.param.loc10: @F.%T.loc6 (%T) = value_param call_param1 +// CHECK:STDOUT: %self.loc10: @B.F.%B (%B) = bind_name self, %self.param.loc10 +// CHECK:STDOUT: %a.param.loc10: @B.F.%T.loc6 (%T) = value_param call_param1 // CHECK:STDOUT: %T.ref.loc10_42: type = name_ref T, %T.loc10 [symbolic = %T.loc6 (constants.%T)] -// CHECK:STDOUT: %a.loc10: @F.%T.loc6 (%T) = bind_name a, %a.param.loc10 +// CHECK:STDOUT: %a.loc10: @B.F.%T.loc6 (%T) = bind_name a, %a.param.loc10 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -376,7 +376,7 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %N.patt: @B.%pattern_type (%pattern_type.7dc) = symbolic_binding_pattern N, 1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, @A.%T.loc4_9.2 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %N.loc5_11.1: @B.%T (%T) = bind_symbolic_name N, 1 [symbolic = %N.loc5_11.2 (constants.%N)] +// CHECK:STDOUT: %N.loc5_11.2: @B.%T (%T) = bind_symbolic_name N, 1 [symbolic = %N.loc5_11.1 (constants.%N)] // CHECK:STDOUT: } // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] @@ -389,31 +389,31 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic class @B(@A.%T.loc4_9.2: type, %N.loc5_11.1: @B.%T (%T)) { +// CHECK:STDOUT: generic class @B(@A.%T.loc4_9.2: type, %N.loc5_11.2: @B.%T (%T)) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %N.loc5_11.2: @B.%T (%T) = bind_symbolic_name N, 1 [symbolic = %N.loc5_11.2 (constants.%N)] +// CHECK:STDOUT: %N.loc5_11.1: @B.%T (%T) = bind_symbolic_name N, 1 [symbolic = %N.loc5_11.1 (constants.%N)] // CHECK:STDOUT: %pattern_type: type = pattern_type %T [symbolic = %pattern_type (constants.%pattern_type.7dc)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type: type = fn_type @F, @B(%T, %N.loc5_11.2) [symbolic = %F.type (constants.%F.type)] -// CHECK:STDOUT: %F: @B.%F.type (%F.type) = struct_value () [symbolic = %F (constants.%F)] +// CHECK:STDOUT: %B.F.type: type = fn_type @B.F, @B(%T, %N.loc5_11.1) [symbolic = %B.F.type (constants.%B.F.type)] +// CHECK:STDOUT: %B.F: @B.%B.F.type (%B.F.type) = struct_value () [symbolic = %B.F (constants.%B.F)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %F.decl: @B.%F.type (%F.type) = fn_decl @F [symbolic = @B.%F (constants.%F)] { -// CHECK:STDOUT: %self.patt: @F.%pattern_type.loc6_10 (%pattern_type.13e) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.%pattern_type.loc6_10 (%pattern_type.13e) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %a.patt: @F.%pattern_type.loc6_22 (%pattern_type.7dc) = binding_pattern a [concrete] -// CHECK:STDOUT: %a.param_patt: @F.%pattern_type.loc6_22 (%pattern_type.7dc) = value_param_pattern %a.patt, call_param1 [concrete] +// CHECK:STDOUT: %B.F.decl: @B.%B.F.type (%B.F.type) = fn_decl @B.F [symbolic = @B.%B.F (constants.%B.F)] { +// CHECK:STDOUT: %self.patt: @B.F.%pattern_type.loc6_10 (%pattern_type.13e) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @B.F.%pattern_type.loc6_10 (%pattern_type.13e) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %a.patt: @B.F.%pattern_type.loc6_22 (%pattern_type.7dc) = binding_pattern a [concrete] +// CHECK:STDOUT: %a.param_patt: @B.F.%pattern_type.loc6_22 (%pattern_type.7dc) = value_param_pattern %a.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param.loc6: @F.%B (%B) = value_param call_param0 +// CHECK:STDOUT: %self.param.loc6: @B.F.%B (%B) = value_param call_param0 // CHECK:STDOUT: %.loc6_16.1: type = splice_block %Self.ref.loc6 [symbolic = %B (constants.%B)] { // CHECK:STDOUT: %.loc6_16.2: type = specific_constant constants.%B, @B(constants.%T, constants.%N) [symbolic = %B (constants.%B)] // CHECK:STDOUT: %Self.ref.loc6: type = name_ref Self, %.loc6_16.2 [symbolic = %B (constants.%B)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self.loc6: @F.%B (%B) = bind_name self, %self.param.loc6 -// CHECK:STDOUT: %a.param.loc6: @F.%T.loc6 (%T) = value_param call_param1 +// CHECK:STDOUT: %self.loc6: @B.F.%B (%B) = bind_name self, %self.param.loc6 +// CHECK:STDOUT: %a.param.loc6: @B.F.%T.loc6 (%T) = value_param call_param1 // CHECK:STDOUT: %T.ref.loc6: type = name_ref T, @A.%T.loc4_9.2 [symbolic = %T.loc6 (constants.%T)] -// CHECK:STDOUT: %a.loc6: @F.%T.loc6 (%T) = bind_name a, %a.param.loc6 +// CHECK:STDOUT: %a.loc6: @B.F.%T.loc6 (%T) = bind_name a, %a.param.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] @@ -422,13 +422,13 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: .T = -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %B.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(@A.%T.loc4_9.2: type, @B.%N.loc5_11.1: @B.%T (%T)) { +// CHECK:STDOUT: generic fn @B.F(@A.%T.loc4_9.2: type, @B.%N.loc5_11.2: @B.%T (%T)) { // CHECK:STDOUT: %T.loc6: type = bind_symbolic_name T, 0 [symbolic = %T.loc6 (constants.%T)] -// CHECK:STDOUT: %N.loc6: @F.%T.loc6 (%T) = bind_symbolic_name N, 1 [symbolic = %N.loc6 (constants.%N)] +// CHECK:STDOUT: %N.loc6: @B.F.%T.loc6 (%T) = bind_symbolic_name N, 1 [symbolic = %N.loc6 (constants.%N)] // CHECK:STDOUT: %B: type = class_type @B, @B(%T.loc6, %N.loc6) [symbolic = %B (constants.%B)] // CHECK:STDOUT: %pattern_type.loc6_10: type = pattern_type %B [symbolic = %pattern_type.loc6_10 (constants.%pattern_type.13e)] // CHECK:STDOUT: %pattern_type.loc6_22: type = pattern_type %T.loc6 [symbolic = %pattern_type.loc6_22 (constants.%pattern_type.7dc)] @@ -437,7 +437,7 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %require_complete.loc10_31: = require_complete_type %B [symbolic = %require_complete.loc10_31 (constants.%require_complete.fca)] // CHECK:STDOUT: %require_complete.loc10_40: = require_complete_type %T.loc6 [symbolic = %require_complete.loc10_40 (constants.%require_complete.4ae)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param.loc10: @F.%B (%B), %a.param.loc10: @F.%T.loc6 (%T)) { +// CHECK:STDOUT: fn(%self.param.loc10: @B.F.%B (%B), %a.param.loc10: @B.F.%T.loc6 (%T)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -453,15 +453,15 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: // CHECK:STDOUT: specific @B(constants.%T, constants.%N) { // CHECK:STDOUT: %T => constants.%T -// CHECK:STDOUT: %N.loc5_11.2 => constants.%N +// CHECK:STDOUT: %N.loc5_11.1 => constants.%N // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7dc // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type -// CHECK:STDOUT: %F => constants.%F +// CHECK:STDOUT: %B.F.type => constants.%B.F.type +// CHECK:STDOUT: %B.F => constants.%B.F // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%T, constants.%N) { +// CHECK:STDOUT: specific @B.F(constants.%T, constants.%N) { // CHECK:STDOUT: %T.loc6 => constants.%T // CHECK:STDOUT: %N.loc6 => constants.%N // CHECK:STDOUT: %B => constants.%B @@ -473,13 +473,13 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %NotGeneric: type = class_type @NotGeneric [concrete] -// CHECK:STDOUT: %F.type.065: type = fn_type @F.loc5 [concrete] -// CHECK:STDOUT: %F.fdb: %F.type.065 = struct_value () [concrete] +// CHECK:STDOUT: %NotGeneric.F.type: type = fn_type @NotGeneric.F [concrete] +// CHECK:STDOUT: %NotGeneric.F: %NotGeneric.F.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %F.type.b25: type = fn_type @F.loc15 [concrete] -// CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [concrete] +// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] +// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -496,25 +496,25 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %NotGeneric.decl: type = class_decl @NotGeneric [concrete = constants.%NotGeneric] {} {} -// CHECK:STDOUT: %F.decl: %F.type.b25 = fn_decl @F.loc15 [concrete = constants.%F.c41] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} { // CHECK:STDOUT: %T.loc15_15.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc15_15.1 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NotGeneric { -// CHECK:STDOUT: %F.decl: %F.type.065 = fn_decl @F.loc5 [concrete = constants.%F.fdb] {} {} +// CHECK:STDOUT: %NotGeneric.F.decl: %NotGeneric.F.type = fn_decl @NotGeneric.F [concrete = constants.%NotGeneric.F] {} {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%NotGeneric -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %NotGeneric.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc5(); +// CHECK:STDOUT: fn @NotGeneric.F(); // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc15(%T.loc15_15.2: type) { +// CHECK:STDOUT: generic fn @F(%T.loc15_15.2: type) { // CHECK:STDOUT: %T.loc15_15.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc15_15.1 (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -525,7 +525,7 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc15(constants.%T) { +// CHECK:STDOUT: specific @F(constants.%T) { // CHECK:STDOUT: %T.loc15_15.1 => constants.%T // CHECK:STDOUT: } // CHECK:STDOUT: @@ -537,12 +537,12 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %Generic.type: type = generic_class_type @Generic [concrete] // CHECK:STDOUT: %Generic.generic: %Generic.type = struct_value () [concrete] // CHECK:STDOUT: %Generic: type = class_type @Generic, @Generic(%T) [symbolic] -// CHECK:STDOUT: %TooFew.type.dac: type = fn_type @TooFew.loc5, @Generic(%T) [symbolic] -// CHECK:STDOUT: %TooFew.840: %TooFew.type.dac = struct_value () [symbolic] +// CHECK:STDOUT: %Generic.TooFew.type: type = fn_type @Generic.TooFew, @Generic(%T) [symbolic] +// CHECK:STDOUT: %Generic.TooFew: %Generic.TooFew.type = struct_value () [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] -// CHECK:STDOUT: %TooFew.type.e89: type = fn_type @TooFew.loc15 [concrete] -// CHECK:STDOUT: %TooFew.7c3: %TooFew.type.e89 = struct_value () [concrete] +// CHECK:STDOUT: %TooFew.type: type = fn_type @TooFew [concrete] +// CHECK:STDOUT: %TooFew: %TooFew.type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -563,33 +563,33 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: } { // CHECK:STDOUT: %T.loc4_15.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_15.1 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %TooFew.decl: %TooFew.type.e89 = fn_decl @TooFew.loc15 [concrete = constants.%TooFew.7c3] {} {} +// CHECK:STDOUT: %TooFew.decl: %TooFew.type = fn_decl @TooFew [concrete = constants.%TooFew] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Generic(%T.loc4_15.2: type) { // CHECK:STDOUT: %T.loc4_15.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_15.1 (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %TooFew.type: type = fn_type @TooFew.loc5, @Generic(%T.loc4_15.1) [symbolic = %TooFew.type (constants.%TooFew.type.dac)] -// CHECK:STDOUT: %TooFew: @Generic.%TooFew.type (%TooFew.type.dac) = struct_value () [symbolic = %TooFew (constants.%TooFew.840)] +// CHECK:STDOUT: %Generic.TooFew.type: type = fn_type @Generic.TooFew, @Generic(%T.loc4_15.1) [symbolic = %Generic.TooFew.type (constants.%Generic.TooFew.type)] +// CHECK:STDOUT: %Generic.TooFew: @Generic.%Generic.TooFew.type (%Generic.TooFew.type) = struct_value () [symbolic = %Generic.TooFew (constants.%Generic.TooFew)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %TooFew.decl: @Generic.%TooFew.type (%TooFew.type.dac) = fn_decl @TooFew.loc5 [symbolic = @Generic.%TooFew (constants.%TooFew.840)] {} {} +// CHECK:STDOUT: %Generic.TooFew.decl: @Generic.%Generic.TooFew.type (%Generic.TooFew.type) = fn_decl @Generic.TooFew [symbolic = @Generic.%Generic.TooFew (constants.%Generic.TooFew)] {} {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Generic -// CHECK:STDOUT: .TooFew = %TooFew.decl +// CHECK:STDOUT: .TooFew = %Generic.TooFew.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @TooFew.loc5(@Generic.%T.loc4_15.2: type) { +// CHECK:STDOUT: generic fn @Generic.TooFew(@Generic.%T.loc4_15.2: type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @TooFew.loc15() { +// CHECK:STDOUT: fn @TooFew() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -598,7 +598,7 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %T.loc4_15.1 => constants.%T // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @TooFew.loc5(constants.%T) {} +// CHECK:STDOUT: specific @Generic.TooFew(constants.%T) {} // CHECK:STDOUT: // CHECK:STDOUT: --- fail_mismatched_too_many_args.carbon // CHECK:STDOUT: @@ -608,13 +608,13 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %Generic.type: type = generic_class_type @Generic [concrete] // CHECK:STDOUT: %Generic.generic: %Generic.type = struct_value () [concrete] // CHECK:STDOUT: %Generic: type = class_type @Generic, @Generic(%T) [symbolic] -// CHECK:STDOUT: %TooMany.type.cc8: type = fn_type @TooMany.loc5, @Generic(%T) [symbolic] -// CHECK:STDOUT: %TooMany.dc4: %TooMany.type.cc8 = struct_value () [symbolic] +// CHECK:STDOUT: %Generic.TooMany.type: type = fn_type @Generic.TooMany, @Generic(%T) [symbolic] +// CHECK:STDOUT: %Generic.TooMany: %Generic.TooMany.type = struct_value () [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %U: type = bind_symbolic_name U, 1 [symbolic] -// CHECK:STDOUT: %TooMany.type.c84: type = fn_type @TooMany.loc15 [concrete] -// CHECK:STDOUT: %TooMany.1dc: %TooMany.type.c84 = struct_value () [concrete] +// CHECK:STDOUT: %TooMany.type: type = fn_type @TooMany [concrete] +// CHECK:STDOUT: %TooMany: %TooMany.type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -635,7 +635,7 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: } { // CHECK:STDOUT: %T.loc4_15.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_15.1 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %TooMany.decl: %TooMany.type.c84 = fn_decl @TooMany.loc15 [concrete = constants.%TooMany.1dc] {} { +// CHECK:STDOUT: %TooMany.decl: %TooMany.type = fn_decl @TooMany [concrete = constants.%TooMany] {} { // CHECK:STDOUT: %T.loc15_12.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc15_12.1 (constants.%T)] // CHECK:STDOUT: %U.loc15_22.2: type = bind_symbolic_name U, 1 [symbolic = %U.loc15_22.1 (constants.%U)] // CHECK:STDOUT: } @@ -645,26 +645,26 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %T.loc4_15.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_15.1 (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %TooMany.type: type = fn_type @TooMany.loc5, @Generic(%T.loc4_15.1) [symbolic = %TooMany.type (constants.%TooMany.type.cc8)] -// CHECK:STDOUT: %TooMany: @Generic.%TooMany.type (%TooMany.type.cc8) = struct_value () [symbolic = %TooMany (constants.%TooMany.dc4)] +// CHECK:STDOUT: %Generic.TooMany.type: type = fn_type @Generic.TooMany, @Generic(%T.loc4_15.1) [symbolic = %Generic.TooMany.type (constants.%Generic.TooMany.type)] +// CHECK:STDOUT: %Generic.TooMany: @Generic.%Generic.TooMany.type (%Generic.TooMany.type) = struct_value () [symbolic = %Generic.TooMany (constants.%Generic.TooMany)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %TooMany.decl: @Generic.%TooMany.type (%TooMany.type.cc8) = fn_decl @TooMany.loc5 [symbolic = @Generic.%TooMany (constants.%TooMany.dc4)] {} {} +// CHECK:STDOUT: %Generic.TooMany.decl: @Generic.%Generic.TooMany.type (%Generic.TooMany.type) = fn_decl @Generic.TooMany [symbolic = @Generic.%Generic.TooMany (constants.%Generic.TooMany)] {} {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Generic -// CHECK:STDOUT: .TooMany = %TooMany.decl +// CHECK:STDOUT: .TooMany = %Generic.TooMany.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @TooMany.loc5(@Generic.%T.loc4_15.2: type) { +// CHECK:STDOUT: generic fn @Generic.TooMany(@Generic.%T.loc4_15.2: type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @TooMany.loc15(%T.loc15_12.2: type, %U.loc15_22.2: type) { +// CHECK:STDOUT: generic fn @TooMany(%T.loc15_12.2: type, %U.loc15_22.2: type) { // CHECK:STDOUT: %T.loc15_12.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc15_12.1 (constants.%T)] // CHECK:STDOUT: %U.loc15_22.1: type = bind_symbolic_name U, 1 [symbolic = %U.loc15_22.1 (constants.%U)] // CHECK:STDOUT: @@ -680,9 +680,9 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %T.loc4_15.1 => constants.%T // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @TooMany.loc5(constants.%T) {} +// CHECK:STDOUT: specific @Generic.TooMany(constants.%T) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @TooMany.loc15(constants.%T, constants.%U) { +// CHECK:STDOUT: specific @TooMany(constants.%T, constants.%U) { // CHECK:STDOUT: %T.loc15_12.1 => constants.%T // CHECK:STDOUT: %U.loc15_22.1 => constants.%U // CHECK:STDOUT: } @@ -696,13 +696,13 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Generic.generic: %Generic.type = struct_value () [concrete] // CHECK:STDOUT: %Generic: type = class_type @Generic, @Generic(%T.8b3) [symbolic] -// CHECK:STDOUT: %WrongType.type.c41: type = fn_type @WrongType.loc5, @Generic(%T.8b3) [symbolic] -// CHECK:STDOUT: %WrongType.408: %WrongType.type.c41 = struct_value () [symbolic] +// CHECK:STDOUT: %Generic.WrongType.type: type = fn_type @Generic.WrongType, @Generic(%T.8b3) [symbolic] +// CHECK:STDOUT: %Generic.WrongType: %Generic.WrongType.type = struct_value () [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %T.7a6: %empty_tuple.type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %WrongType.type.edf: type = fn_type @WrongType.loc15 [concrete] -// CHECK:STDOUT: %WrongType.131: %WrongType.type.edf = struct_value () [concrete] +// CHECK:STDOUT: %WrongType.type: type = fn_type @WrongType [concrete] +// CHECK:STDOUT: %WrongType: %WrongType.type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -723,7 +723,7 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: } { // CHECK:STDOUT: %T.loc4_15.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_15.1 (constants.%T.8b3)] // CHECK:STDOUT: } -// CHECK:STDOUT: %WrongType.decl: %WrongType.type.edf = fn_decl @WrongType.loc15 [concrete = constants.%WrongType.131] {} { +// CHECK:STDOUT: %WrongType.decl: %WrongType.type = fn_decl @WrongType [concrete = constants.%WrongType] {} { // CHECK:STDOUT: %.loc15_17.1: type = splice_block %.loc15_17.3 [concrete = constants.%empty_tuple.type] { // CHECK:STDOUT: %.loc15_17.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc15_17.3: type = converted %.loc15_17.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] @@ -736,26 +736,26 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %T.loc4_15.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_15.1 (constants.%T.8b3)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %WrongType.type: type = fn_type @WrongType.loc5, @Generic(%T.loc4_15.1) [symbolic = %WrongType.type (constants.%WrongType.type.c41)] -// CHECK:STDOUT: %WrongType: @Generic.%WrongType.type (%WrongType.type.c41) = struct_value () [symbolic = %WrongType (constants.%WrongType.408)] +// CHECK:STDOUT: %Generic.WrongType.type: type = fn_type @Generic.WrongType, @Generic(%T.loc4_15.1) [symbolic = %Generic.WrongType.type (constants.%Generic.WrongType.type)] +// CHECK:STDOUT: %Generic.WrongType: @Generic.%Generic.WrongType.type (%Generic.WrongType.type) = struct_value () [symbolic = %Generic.WrongType (constants.%Generic.WrongType)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %WrongType.decl: @Generic.%WrongType.type (%WrongType.type.c41) = fn_decl @WrongType.loc5 [symbolic = @Generic.%WrongType (constants.%WrongType.408)] {} {} +// CHECK:STDOUT: %Generic.WrongType.decl: @Generic.%Generic.WrongType.type (%Generic.WrongType.type) = fn_decl @Generic.WrongType [symbolic = @Generic.%Generic.WrongType (constants.%Generic.WrongType)] {} {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Generic -// CHECK:STDOUT: .WrongType = %WrongType.decl +// CHECK:STDOUT: .WrongType = %Generic.WrongType.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @WrongType.loc5(@Generic.%T.loc4_15.2: type) { +// CHECK:STDOUT: generic fn @Generic.WrongType(@Generic.%T.loc4_15.2: type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @WrongType.loc15(%T.loc15_12.2: %empty_tuple.type) { +// CHECK:STDOUT: generic fn @WrongType(%T.loc15_12.2: %empty_tuple.type) { // CHECK:STDOUT: %T.loc15_12.1: %empty_tuple.type = bind_symbolic_name T, 0 [symbolic = %T.loc15_12.1 (constants.%T.7a6)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -770,9 +770,9 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %T.loc4_15.1 => constants.%T.8b3 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @WrongType.loc5(constants.%T.8b3) {} +// CHECK:STDOUT: specific @Generic.WrongType(constants.%T.8b3) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @WrongType.loc15(constants.%T.7a6) { +// CHECK:STDOUT: specific @WrongType(constants.%T.7a6) { // CHECK:STDOUT: %T.loc15_12.1 => constants.%T.7a6 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/member_type.carbon b/toolchain/check/testdata/class/generic/member_type.carbon index d8cdd84f0b08..281d0963597a 100644 --- a/toolchain/check/testdata/class/generic/member_type.carbon +++ b/toolchain/check/testdata/class/generic/member_type.carbon @@ -72,8 +72,8 @@ fn Test() -> i32 { // CHECK:STDOUT: %complete_type.84b: = complete_type_witness %struct_type.n.848 [symbolic] // CHECK:STDOUT: %pattern_type.7dcd0a.1: type = pattern_type %T [symbolic] // CHECK:STDOUT: %pattern_type.253: type = pattern_type %Inner.51b [symbolic] -// CHECK:STDOUT: %F.type.2ee: type = fn_type @F, @Outer(%T) [symbolic] -// CHECK:STDOUT: %F.384: %F.type.2ee = struct_value () [symbolic] +// CHECK:STDOUT: %Outer.F.type.2ee: type = fn_type @Outer.F, @Outer(%T) [symbolic] +// CHECK:STDOUT: %Outer.F.384: %Outer.F.type.2ee = 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: %require_complete.561: = require_complete_type %Inner.51b [symbolic] @@ -88,35 +88,35 @@ fn Test() -> i32 { // CHECK:STDOUT: %complete_type.f8a: = complete_type_witness %i32.builtin [concrete] // CHECK:STDOUT: %Outer.545: type = class_type @Outer, @Outer(%i32) [concrete] // CHECK:STDOUT: %Inner.721: type = class_type @Inner, @Inner(%i32) [concrete] -// CHECK:STDOUT: %F.type.9d7: type = fn_type @F, @Outer(%i32) [concrete] -// CHECK:STDOUT: %F.c88: %F.type.9d7 = struct_value () [concrete] +// CHECK:STDOUT: %Outer.F.type.9d7: type = fn_type @Outer.F, @Outer(%i32) [concrete] +// CHECK:STDOUT: %Outer.F.c88: %Outer.F.type.9d7 = struct_value () [concrete] // CHECK:STDOUT: %Inner.elem.6c2: type = unbound_element_type %Inner.721, %i32 [concrete] // CHECK:STDOUT: %struct_type.n.033: type = struct_type {.n: %i32} [concrete] // CHECK:STDOUT: %complete_type.54b: = complete_type_witness %struct_type.n.033 [concrete] // CHECK:STDOUT: %pattern_type.c22: type = pattern_type %Inner.721 [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] -// CHECK:STDOUT: %F.specific_fn: = specific_function %F.c88, @F(%i32) [concrete] +// CHECK:STDOUT: %Outer.F.specific_fn: = specific_function %Outer.F.c88, @Outer.F(%i32) [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.a38: type = fn_type @Op.1, @Destroy.impl(%Inner.721) [concrete] -// CHECK:STDOUT: %Op.27e: %Op.type.a38 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a38: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%Inner.721) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.27e: %T.as.Destroy.impl.Op.type.a38 = struct_value () [concrete] // CHECK:STDOUT: %ptr.416: type = ptr_type %Inner.721 [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.27e, @Op.1(%Inner.721) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.27e, @T.as.Destroy.impl.Op(%Inner.721) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -129,8 +129,8 @@ fn Test() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -162,24 +162,24 @@ fn Test() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Inner: type = class_type @Inner, @Inner(%T.loc4_13.1) [symbolic = %Inner (constants.%Inner.51b)] -// CHECK:STDOUT: %F.type: type = fn_type @F, @Outer(%T.loc4_13.1) [symbolic = %F.type (constants.%F.type.2ee)] -// CHECK:STDOUT: %F: @Outer.%F.type (%F.type.2ee) = struct_value () [symbolic = %F (constants.%F.384)] +// CHECK:STDOUT: %Outer.F.type: type = fn_type @Outer.F, @Outer(%T.loc4_13.1) [symbolic = %Outer.F.type (constants.%Outer.F.type.2ee)] +// CHECK:STDOUT: %Outer.F: @Outer.%Outer.F.type (%Outer.F.type.2ee) = struct_value () [symbolic = %Outer.F (constants.%Outer.F.384)] // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: %Inner.decl: type = class_decl @Inner [symbolic = @Outer.%Inner (constants.%Inner.51b)] {} {} -// CHECK:STDOUT: %F.decl: @Outer.%F.type (%F.type.2ee) = fn_decl @F [symbolic = @Outer.%F (constants.%F.384)] { -// CHECK:STDOUT: %n.patt: @F.%pattern_type.loc9_8 (%pattern_type.7dcd0a.1) = binding_pattern n [concrete] -// CHECK:STDOUT: %n.param_patt: @F.%pattern_type.loc9_8 (%pattern_type.7dcd0a.1) = value_param_pattern %n.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: @F.%pattern_type.loc9_14 (%pattern_type.253) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @F.%pattern_type.loc9_14 (%pattern_type.253) = out_param_pattern %return.patt, call_param1 [concrete] +// CHECK:STDOUT: %Outer.F.decl: @Outer.%Outer.F.type (%Outer.F.type.2ee) = fn_decl @Outer.F [symbolic = @Outer.%Outer.F (constants.%Outer.F.384)] { +// CHECK:STDOUT: %n.patt: @Outer.F.%pattern_type.loc9_8 (%pattern_type.7dcd0a.1) = binding_pattern n [concrete] +// CHECK:STDOUT: %n.param_patt: @Outer.F.%pattern_type.loc9_8 (%pattern_type.7dcd0a.1) = value_param_pattern %n.patt, call_param0 [concrete] +// CHECK:STDOUT: %return.patt: @Outer.F.%pattern_type.loc9_14 (%pattern_type.253) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @Outer.F.%pattern_type.loc9_14 (%pattern_type.253) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc9_17: type = specific_constant @Outer.%Inner.decl, @Outer(constants.%T) [symbolic = %Inner (constants.%Inner.51b)] // CHECK:STDOUT: %Inner.ref: type = name_ref Inner, %.loc9_17 [symbolic = %Inner (constants.%Inner.51b)] -// CHECK:STDOUT: %n.param: @F.%T (%T) = value_param call_param0 +// CHECK:STDOUT: %n.param: @Outer.F.%T (%T) = value_param call_param0 // CHECK:STDOUT: %T.ref: type = name_ref T, @Outer.%T.loc4_13.2 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %n: @F.%T (%T) = bind_name n, %n.param -// CHECK:STDOUT: %return.param: ref @F.%Inner (%Inner.51b) = out_param call_param1 -// CHECK:STDOUT: %return: ref @F.%Inner (%Inner.51b) = return_slot %return.param +// CHECK:STDOUT: %n: @Outer.F.%T (%T) = bind_name n, %n.param +// CHECK:STDOUT: %return.param: ref @Outer.F.%Inner (%Inner.51b) = out_param call_param1 +// CHECK:STDOUT: %return: ref @Outer.F.%Inner (%Inner.51b) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] @@ -189,7 +189,7 @@ fn Test() -> i32 { // CHECK:STDOUT: .Self = constants.%Outer.9d6 // CHECK:STDOUT: .Inner = %Inner.decl // CHECK:STDOUT: .T = -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %Outer.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -216,7 +216,7 @@ fn Test() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(@Outer.%T.loc4_13.2: type) { +// CHECK:STDOUT: generic fn @Outer.F(@Outer.%T.loc4_13.2: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %pattern_type.loc9_8: type = pattern_type %T [symbolic = %pattern_type.loc9_8 (constants.%pattern_type.7dcd0a.1)] // CHECK:STDOUT: %Inner: type = class_type @Inner, @Inner(%T) [symbolic = %Inner (constants.%Inner.51b)] @@ -225,16 +225,16 @@ fn Test() -> i32 { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete.loc9_14: = require_complete_type %Inner [symbolic = %require_complete.loc9_14 (constants.%require_complete.561)] // CHECK:STDOUT: %require_complete.loc9_9: = require_complete_type %T [symbolic = %require_complete.loc9_9 (constants.%require_complete.4ae)] -// CHECK:STDOUT: %struct_type.n: type = struct_type {.n: @F.%T (%T)} [symbolic = %struct_type.n (constants.%struct_type.n.848)] +// CHECK:STDOUT: %struct_type.n: type = struct_type {.n: @Outer.F.%T (%T)} [symbolic = %struct_type.n (constants.%struct_type.n.848)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%n.param: @F.%T (%T)) -> %return.param: @F.%Inner (%Inner.51b) { +// CHECK:STDOUT: fn(%n.param: @Outer.F.%T (%T)) -> %return.param: @Outer.F.%Inner (%Inner.51b) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %n.ref: @F.%T (%T) = name_ref n, %n -// CHECK:STDOUT: %.loc9_39.1: @F.%struct_type.n (%struct_type.n.848) = struct_literal (%n.ref) -// CHECK:STDOUT: %.loc9_39.2: ref @F.%T (%T) = class_element_access %return, element0 -// CHECK:STDOUT: %.loc9_39.3: init @F.%T (%T) = initialize_from %n.ref to %.loc9_39.2 -// CHECK:STDOUT: %.loc9_39.4: init @F.%Inner (%Inner.51b) = class_init (%.loc9_39.3), %return -// CHECK:STDOUT: %.loc9_40: init @F.%Inner (%Inner.51b) = converted %.loc9_39.1, %.loc9_39.4 +// CHECK:STDOUT: %n.ref: @Outer.F.%T (%T) = name_ref n, %n +// CHECK:STDOUT: %.loc9_39.1: @Outer.F.%struct_type.n (%struct_type.n.848) = struct_literal (%n.ref) +// CHECK:STDOUT: %.loc9_39.2: ref @Outer.F.%T (%T) = class_element_access %return, element0 +// CHECK:STDOUT: %.loc9_39.3: init @Outer.F.%T (%T) = initialize_from %n.ref to %.loc9_39.2 +// CHECK:STDOUT: %.loc9_39.4: init @Outer.F.%Inner (%Inner.51b) = class_init (%.loc9_39.3), %return +// CHECK:STDOUT: %.loc9_40: init @Outer.F.%Inner (%Inner.51b) = converted %.loc9_39.1, %.loc9_39.4 // CHECK:STDOUT: return %.loc9_40 to %return // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -250,20 +250,20 @@ fn Test() -> i32 { // CHECK:STDOUT: %int_32.loc13_35: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc13_35: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %Outer.loc13_38: type = class_type @Outer, @Outer(constants.%i32) [concrete = constants.%Outer.545] -// CHECK:STDOUT: %.loc13_39: %F.type.9d7 = specific_constant @Outer.%F.decl, @Outer(constants.%i32) [concrete = constants.%F.c88] -// CHECK:STDOUT: %F.ref: %F.type.9d7 = name_ref F, %.loc13_39 [concrete = constants.%F.c88] +// CHECK:STDOUT: %.loc13_39: %Outer.F.type.9d7 = specific_constant @Outer.%Outer.F.decl, @Outer(constants.%i32) [concrete = constants.%Outer.F.c88] +// CHECK:STDOUT: %F.ref: %Outer.F.type.9d7 = name_ref F, %.loc13_39 [concrete = constants.%Outer.F.c88] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%i32) [concrete = constants.%F.specific_fn] +// CHECK:STDOUT: %Outer.F.specific_fn: = specific_function %F.ref, @Outer.F(constants.%i32) [concrete = constants.%Outer.F.specific_fn] // CHECK:STDOUT: %.loc13_3: ref %Inner.721 = splice_block %c.var {} -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc13_42.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc13_42.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc13_42.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc13_42.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc13_42.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc13_42.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc13_42.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc13_42.2: %i32 = converted %int_1, %.loc13_42.1 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %F.call: init %Inner.721 = call %F.specific_fn(%.loc13_42.2) to %.loc13_3 -// CHECK:STDOUT: assign %c.var, %F.call +// CHECK:STDOUT: %Outer.F.call: init %Inner.721 = call %Outer.F.specific_fn(%.loc13_42.2) to %.loc13_3 +// CHECK:STDOUT: assign %c.var, %Outer.F.call // CHECK:STDOUT: %.loc13_20.1: type = splice_block %Inner.ref [concrete = constants.%Inner.721] { // CHECK:STDOUT: %Outer.ref.loc13_10: %Outer.type = name_ref Outer, file.%Outer.decl [concrete = constants.%Outer.generic] // CHECK:STDOUT: %int_32.loc13_16: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -277,16 +277,16 @@ fn Test() -> i32 { // CHECK:STDOUT: %n.ref: %Inner.elem.6c2 = name_ref n, @Inner.%.loc6 [concrete = @Inner.%.loc6] // CHECK:STDOUT: %.loc14_11.1: ref %i32 = class_element_access %c.ref, element0 // CHECK:STDOUT: %.loc14_11.2: %i32 = bind_value %.loc14_11.1 -// CHECK:STDOUT: %Op.bound.loc13_3.1: = bound_method %.loc13_3, constants.%Op.27e -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.27e, @Op.1(constants.%Inner.721) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc13_3.1: = bound_method %.loc13_3, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc13_3.1: = bound_method %.loc13_3, constants.%T.as.Destroy.impl.Op.27e +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.27e, @T.as.Destroy.impl.Op(constants.%Inner.721) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc13_3.1: = bound_method %.loc13_3, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc13_3.1: %ptr.416 = addr_of %.loc13_3 -// CHECK:STDOUT: %no_op.loc13_3.1: init %empty_tuple.type = call %bound_method.loc13_3.1(%addr.loc13_3.1) -// CHECK:STDOUT: %Op.bound.loc13_3.2: = bound_method %c.var, constants.%Op.27e -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.27e, @Op.1(constants.%Inner.721) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc13_3.2: = bound_method %c.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc13_3.1: init %empty_tuple.type = call %bound_method.loc13_3.1(%addr.loc13_3.1) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc13_3.2: = bound_method %c.var, constants.%T.as.Destroy.impl.Op.27e +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.27e, @T.as.Destroy.impl.Op(constants.%Inner.721) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc13_3.2: = bound_method %c.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc13_3.2: %ptr.416 = addr_of %c.var -// CHECK:STDOUT: %no_op.loc13_3.2: init %empty_tuple.type = call %bound_method.loc13_3.2(%addr.loc13_3.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc13_3.2: init %empty_tuple.type = call %bound_method.loc13_3.2(%addr.loc13_3.2) // CHECK:STDOUT: return %.loc14_11.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -295,8 +295,8 @@ fn Test() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Inner => constants.%Inner.51b -// CHECK:STDOUT: %F.type => constants.%F.type.2ee -// CHECK:STDOUT: %F => constants.%F.384 +// CHECK:STDOUT: %Outer.F.type => constants.%Outer.F.type.2ee +// CHECK:STDOUT: %Outer.F => constants.%Outer.F.384 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Inner(constants.%T) { @@ -309,7 +309,7 @@ fn Test() -> i32 { // CHECK:STDOUT: %complete_type.loc7_3.2 => constants.%complete_type.84b // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%T) { +// CHECK:STDOUT: specific @Outer.F(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %pattern_type.loc9_8 => constants.%pattern_type.7dcd0a.1 // CHECK:STDOUT: %Inner => constants.%Inner.51b @@ -321,8 +321,8 @@ fn Test() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Inner => constants.%Inner.721 -// CHECK:STDOUT: %F.type => constants.%F.type.9d7 -// CHECK:STDOUT: %F => constants.%F.c88 +// CHECK:STDOUT: %Outer.F.type => constants.%Outer.F.type.9d7 +// CHECK:STDOUT: %Outer.F => constants.%Outer.F.c88 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Inner(constants.%i32) { @@ -335,7 +335,7 @@ fn Test() -> i32 { // CHECK:STDOUT: %complete_type.loc7_3.2 => constants.%complete_type.54b // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%i32) { +// CHECK:STDOUT: specific @Outer.F(constants.%i32) { // CHECK:STDOUT: %T => constants.%i32 // CHECK:STDOUT: %pattern_type.loc9_8 => constants.%pattern_type.7ce // CHECK:STDOUT: %Inner => constants.%Inner.721 @@ -361,16 +361,16 @@ fn Test() -> i32 { // CHECK:STDOUT: %Self.as_type.ea1: type = facet_access_type %Self.770 [symbolic] // CHECK:STDOUT: %pattern_type.81e: type = pattern_type %Self.as_type.ea1 [symbolic] // CHECK:STDOUT: %pattern_type.7dcd0a.1: type = pattern_type %T [symbolic] -// CHECK:STDOUT: %F.type.0f3: type = fn_type @F.loc6, @Inner(%T) [symbolic] -// CHECK:STDOUT: %F.db9: %F.type.0f3 = struct_value () [symbolic] +// CHECK:STDOUT: %Inner.F.type.0f3: type = fn_type @Inner.F, @Inner(%T) [symbolic] +// CHECK:STDOUT: %Inner.F.db9: %Inner.F.type.0f3 = struct_value () [symbolic] // CHECK:STDOUT: %Inner.assoc_type.115: type = assoc_entity_type @Inner, @Inner(%T) [symbolic] -// CHECK:STDOUT: %assoc0.95e: %Inner.assoc_type.115 = assoc_entity element0, @Inner.%F.decl [symbolic] +// CHECK:STDOUT: %assoc0.95e: %Inner.assoc_type.115 = assoc_entity element0, @Inner.%Inner.F.decl [symbolic] // CHECK:STDOUT: %C.390: type = class_type @C, @C(%T) [symbolic] // CHECK:STDOUT: %require_complete.8fa: = require_complete_type %Inner.type.392 [symbolic] -// CHECK:STDOUT: %Inner.impl_witness.b15: = impl_witness @C.%Inner.impl_witness_table, @Inner.impl.eed(%T) [symbolic] +// CHECK:STDOUT: %Inner.impl_witness.b15: = impl_witness @C.%Inner.impl_witness_table, @C.as.Inner.impl(%T) [symbolic] // CHECK:STDOUT: %pattern_type.e59: type = pattern_type %C.390 [symbolic] -// CHECK:STDOUT: %F.type.77b: type = fn_type @F.loc11, @Inner.impl.eed(%T) [symbolic] -// CHECK:STDOUT: %F.ed9: %F.type.77b = struct_value () [symbolic] +// CHECK:STDOUT: %C.as.Inner.impl.F.type.77b: type = fn_type @C.as.Inner.impl.F, @C.as.Inner.impl(%T) [symbolic] +// CHECK:STDOUT: %C.as.Inner.impl.F.ed9: %C.as.Inner.impl.F.type.77b = struct_value () [symbolic] // CHECK:STDOUT: %Inner.facet.9a3: %Inner.type.392 = facet_value %C.390, (%Inner.impl_witness.b15) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] @@ -378,9 +378,9 @@ fn Test() -> i32 { // CHECK:STDOUT: %require_complete.930: = require_complete_type %C.390 [symbolic] // CHECK:STDOUT: %Inner.lookup_impl_witness: = lookup_impl_witness %C.390, @Inner, @Inner(%T) [symbolic] // CHECK:STDOUT: %Inner.facet.c18: %Inner.type.392 = facet_value %C.390, (%Inner.lookup_impl_witness) [symbolic] -// CHECK:STDOUT: %.692: type = fn_type_with_self_type %F.type.0f3, %Inner.facet.c18 [symbolic] +// CHECK:STDOUT: %.692: type = fn_type_with_self_type %Inner.F.type.0f3, %Inner.facet.c18 [symbolic] // CHECK:STDOUT: %impl.elem0.681: %.692 = impl_witness_access %Inner.lookup_impl_witness, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0.681, @F.loc6(%T, %Inner.facet.c18) [symbolic] +// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0.681, @Inner.F(%T, %Inner.facet.c18) [symbolic] // CHECK:STDOUT: %D: type = class_type @D [concrete] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] @@ -390,15 +390,15 @@ fn Test() -> i32 { // CHECK:STDOUT: %Inner.type.52d: type = facet_type <@Inner, @Inner(%i32)> [concrete] // CHECK:STDOUT: %C.70f: type = class_type @C, @C(%i32) [concrete] // CHECK:STDOUT: %Self.493: %Inner.type.52d = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %F.type.86e: type = fn_type @F.loc6, @Inner(%i32) [concrete] -// CHECK:STDOUT: %F.11d: %F.type.86e = struct_value () [concrete] +// CHECK:STDOUT: %Inner.F.type.86e: type = fn_type @Inner.F, @Inner(%i32) [concrete] +// CHECK:STDOUT: %Inner.F.11d: %Inner.F.type.86e = struct_value () [concrete] // CHECK:STDOUT: %Inner.assoc_type.215: type = assoc_entity_type @Inner, @Inner(%i32) [concrete] -// CHECK:STDOUT: %assoc0.e80: %Inner.assoc_type.215 = assoc_entity element0, @Inner.%F.decl [concrete] +// CHECK:STDOUT: %assoc0.e80: %Inner.assoc_type.215 = assoc_entity element0, @Inner.%Inner.F.decl [concrete] // CHECK:STDOUT: %Inner.impl_witness.1dc: = impl_witness @D.%Inner.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.510: type = pattern_type %D [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %F.type.a78: type = fn_type @F.loc18 [concrete] -// CHECK:STDOUT: %F.a24: %F.type.a78 = struct_value () [concrete] +// CHECK:STDOUT: %D.as.Inner.impl.F.type: type = fn_type @D.as.Inner.impl.F [concrete] +// CHECK:STDOUT: %D.as.Inner.impl.F: %D.as.Inner.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %Inner.facet.edc: %Inner.type.52d = facet_value %D, (%Inner.impl_witness.1dc) [concrete] // CHECK:STDOUT: %Test.type: type = fn_type @Test [concrete] // CHECK:STDOUT: %Test: %Test.type = struct_value () [concrete] @@ -407,17 +407,17 @@ fn Test() -> i32 { // CHECK:STDOUT: %pattern_type.de9: type = pattern_type %C.70f [concrete] // CHECK:STDOUT: %C.val: %C.70f = struct_value () [concrete] // CHECK:STDOUT: %complete_type.9fa: = complete_type_witness %Inner.type.52d [concrete] -// CHECK:STDOUT: %Inner.impl_witness.47d: = impl_witness @C.%Inner.impl_witness_table, @Inner.impl.eed(%i32) [concrete] -// CHECK:STDOUT: %F.type.f11: type = fn_type @F.loc11, @Inner.impl.eed(%i32) [concrete] -// CHECK:STDOUT: %F.e75: %F.type.f11 = struct_value () [concrete] +// CHECK:STDOUT: %Inner.impl_witness.47d: = impl_witness @C.%Inner.impl_witness_table, @C.as.Inner.impl(%i32) [concrete] +// CHECK:STDOUT: %C.as.Inner.impl.F.type.f11: type = fn_type @C.as.Inner.impl.F, @C.as.Inner.impl(%i32) [concrete] +// CHECK:STDOUT: %C.as.Inner.impl.F.e75: %C.as.Inner.impl.F.type.f11 = struct_value () [concrete] // CHECK:STDOUT: %Inner.facet.840: %Inner.type.52d = facet_value %C.70f, (%Inner.impl_witness.47d) [concrete] -// CHECK:STDOUT: %.b10: type = fn_type_with_self_type %F.type.86e, %Inner.facet.840 [concrete] -// CHECK:STDOUT: %F.specific_fn: = specific_function %F.e75, @F.loc11(%i32) [concrete] +// CHECK:STDOUT: %.b10: type = fn_type_with_self_type %Inner.F.type.86e, %Inner.facet.840 [concrete] +// CHECK:STDOUT: %C.as.Inner.impl.F.specific_fn: = specific_function %C.as.Inner.impl.F.e75, @C.as.Inner.impl.F(%i32) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.b66: type = fn_type @Op.1, @Destroy.impl(%C.70f) [concrete] -// CHECK:STDOUT: %Op.369: %Op.type.b66 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.b66: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C.70f) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.369: %T.as.Destroy.impl.Op.type.b66 = struct_value () [concrete] // CHECK:STDOUT: %ptr.18f: type = ptr_type %C.70f [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.369, @Op.1(%C.70f) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.369, @T.as.Destroy.impl.Op(%C.70f) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -461,81 +461,81 @@ fn Test() -> i32 { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Inner.type: type = facet_type <@Inner, @Inner(%T)> [symbolic = %Inner.type (constants.%Inner.type.392)] // CHECK:STDOUT: %Self.2: @Inner.%Inner.type (%Inner.type.392) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.770)] -// CHECK:STDOUT: %F.type: type = fn_type @F.loc6, @Inner(%T) [symbolic = %F.type (constants.%F.type.0f3)] -// CHECK:STDOUT: %F: @Inner.%F.type (%F.type.0f3) = struct_value () [symbolic = %F (constants.%F.db9)] +// CHECK:STDOUT: %Inner.F.type: type = fn_type @Inner.F, @Inner(%T) [symbolic = %Inner.F.type (constants.%Inner.F.type.0f3)] +// CHECK:STDOUT: %Inner.F: @Inner.%Inner.F.type (%Inner.F.type.0f3) = struct_value () [symbolic = %Inner.F (constants.%Inner.F.db9)] // CHECK:STDOUT: %Inner.assoc_type: type = assoc_entity_type @Inner, @Inner(%T) [symbolic = %Inner.assoc_type (constants.%Inner.assoc_type.115)] -// CHECK:STDOUT: %assoc0.loc6_28.2: @Inner.%Inner.assoc_type (%Inner.assoc_type.115) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc6_28.2 (constants.%assoc0.95e)] +// CHECK:STDOUT: %assoc0.loc6_28.2: @Inner.%Inner.assoc_type (%Inner.assoc_type.115) = assoc_entity element0, %Inner.F.decl [symbolic = %assoc0.loc6_28.2 (constants.%assoc0.95e)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: %Self.1: @Inner.%Inner.type (%Inner.type.392) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.770)] -// CHECK:STDOUT: %F.decl: @Inner.%F.type (%F.type.0f3) = fn_decl @F.loc6 [symbolic = @Inner.%F (constants.%F.db9)] { -// CHECK:STDOUT: %self.patt: @F.loc6.%pattern_type.loc6_10 (%pattern_type.81e) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.loc6.%pattern_type.loc6_10 (%pattern_type.81e) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: @F.loc6.%pattern_type.loc6_24 (%pattern_type.7dcd0a.1) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @F.loc6.%pattern_type.loc6_24 (%pattern_type.7dcd0a.1) = out_param_pattern %return.patt, call_param1 [concrete] +// CHECK:STDOUT: %Inner.F.decl: @Inner.%Inner.F.type (%Inner.F.type.0f3) = fn_decl @Inner.F [symbolic = @Inner.%Inner.F (constants.%Inner.F.db9)] { +// CHECK:STDOUT: %self.patt: @Inner.F.%pattern_type.loc6_10 (%pattern_type.81e) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @Inner.F.%pattern_type.loc6_10 (%pattern_type.81e) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %return.patt: @Inner.F.%pattern_type.loc6_24 (%pattern_type.7dcd0a.1) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @Inner.F.%pattern_type.loc6_24 (%pattern_type.7dcd0a.1) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, @Outer.%T.loc4_13.2 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %self.param: @F.loc6.%Self.as_type.loc6_16.2 (%Self.as_type.ea1) = value_param call_param0 -// CHECK:STDOUT: %.loc6_16.1: type = splice_block %.loc6_16.3 [symbolic = %Self.as_type.loc6_16.2 (constants.%Self.as_type.ea1)] { -// CHECK:STDOUT: %.loc6_16.2: @F.loc6.%Inner.type (%Inner.type.392) = specific_constant @Inner.%Self.1, @Inner(constants.%T) [symbolic = %Self (constants.%Self.770)] -// CHECK:STDOUT: %Self.ref: @F.loc6.%Inner.type (%Inner.type.392) = name_ref Self, %.loc6_16.2 [symbolic = %Self (constants.%Self.770)] -// CHECK:STDOUT: %Self.as_type.loc6_16.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc6_16.2 (constants.%Self.as_type.ea1)] -// CHECK:STDOUT: %.loc6_16.3: type = converted %Self.ref, %Self.as_type.loc6_16.1 [symbolic = %Self.as_type.loc6_16.2 (constants.%Self.as_type.ea1)] +// CHECK:STDOUT: %self.param: @Inner.F.%Self.as_type.loc6_16.1 (%Self.as_type.ea1) = value_param call_param0 +// CHECK:STDOUT: %.loc6_16.1: type = splice_block %.loc6_16.3 [symbolic = %Self.as_type.loc6_16.1 (constants.%Self.as_type.ea1)] { +// CHECK:STDOUT: %.loc6_16.2: @Inner.F.%Inner.type (%Inner.type.392) = specific_constant @Inner.%Self.1, @Inner(constants.%T) [symbolic = %Self (constants.%Self.770)] +// CHECK:STDOUT: %Self.ref: @Inner.F.%Inner.type (%Inner.type.392) = name_ref Self, %.loc6_16.2 [symbolic = %Self (constants.%Self.770)] +// CHECK:STDOUT: %Self.as_type.loc6_16.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc6_16.1 (constants.%Self.as_type.ea1)] +// CHECK:STDOUT: %.loc6_16.3: type = converted %Self.ref, %Self.as_type.loc6_16.2 [symbolic = %Self.as_type.loc6_16.1 (constants.%Self.as_type.ea1)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.loc6.%Self.as_type.loc6_16.2 (%Self.as_type.ea1) = bind_name self, %self.param -// CHECK:STDOUT: %return.param: ref @F.loc6.%T (%T) = out_param call_param1 -// CHECK:STDOUT: %return: ref @F.loc6.%T (%T) = return_slot %return.param +// CHECK:STDOUT: %self: @Inner.F.%Self.as_type.loc6_16.1 (%Self.as_type.ea1) = bind_name self, %self.param +// CHECK:STDOUT: %return.param: ref @Inner.F.%T (%T) = out_param call_param1 +// CHECK:STDOUT: %return: ref @Inner.F.%T (%T) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0.loc6_28.1: @Inner.%Inner.assoc_type (%Inner.assoc_type.115) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc6_28.2 (constants.%assoc0.95e)] +// CHECK:STDOUT: %assoc0.loc6_28.1: @Inner.%Inner.assoc_type (%Inner.assoc_type.115) = assoc_entity element0, %Inner.F.decl [symbolic = %assoc0.loc6_28.2 (constants.%assoc0.95e)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 // CHECK:STDOUT: .T = // CHECK:STDOUT: .F = %assoc0.loc6_28.1 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%Inner.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @Inner.impl.eed(@Outer.%T.loc4_13.2: type) { +// CHECK:STDOUT: generic impl @C.as.Inner.impl(@Outer.%T.loc4_13.2: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %C: type = class_type @C, @C(%T) [symbolic = %C (constants.%C.390)] // CHECK:STDOUT: %Inner.type: type = facet_type <@Inner, @Inner(%T)> [symbolic = %Inner.type (constants.%Inner.type.392)] // CHECK:STDOUT: %require_complete: = require_complete_type %Inner.type [symbolic = %require_complete (constants.%require_complete.8fa)] -// CHECK:STDOUT: %Inner.impl_witness: = impl_witness @C.%Inner.impl_witness_table, @Inner.impl.eed(%T) [symbolic = %Inner.impl_witness (constants.%Inner.impl_witness.b15)] +// CHECK:STDOUT: %Inner.impl_witness: = impl_witness @C.%Inner.impl_witness_table, @C.as.Inner.impl(%T) [symbolic = %Inner.impl_witness (constants.%Inner.impl_witness.b15)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type: type = fn_type @F.loc11, @Inner.impl.eed(%T) [symbolic = %F.type (constants.%F.type.77b)] -// CHECK:STDOUT: %F: @Inner.impl.eed.%F.type (%F.type.77b) = struct_value () [symbolic = %F (constants.%F.ed9)] +// CHECK:STDOUT: %C.as.Inner.impl.F.type: type = fn_type @C.as.Inner.impl.F, @C.as.Inner.impl(%T) [symbolic = %C.as.Inner.impl.F.type (constants.%C.as.Inner.impl.F.type.77b)] +// CHECK:STDOUT: %C.as.Inner.impl.F: @C.as.Inner.impl.%C.as.Inner.impl.F.type (%C.as.Inner.impl.F.type.77b) = struct_value () [symbolic = %C.as.Inner.impl.F (constants.%C.as.Inner.impl.F.ed9)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %Self.ref as %Inner.ref { -// CHECK:STDOUT: %F.decl: @Inner.impl.eed.%F.type (%F.type.77b) = fn_decl @F.loc11 [symbolic = @Inner.impl.eed.%F (constants.%F.ed9)] { -// CHECK:STDOUT: %self.patt: @F.loc11.%pattern_type.loc11_12 (%pattern_type.e59) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.loc11.%pattern_type.loc11_12 (%pattern_type.e59) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: @F.loc11.%pattern_type.loc11_23 (%pattern_type.7dcd0a.1) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @F.loc11.%pattern_type.loc11_23 (%pattern_type.7dcd0a.1) = out_param_pattern %return.patt, call_param1 [concrete] +// CHECK:STDOUT: %C.as.Inner.impl.F.decl: @C.as.Inner.impl.%C.as.Inner.impl.F.type (%C.as.Inner.impl.F.type.77b) = fn_decl @C.as.Inner.impl.F [symbolic = @C.as.Inner.impl.%C.as.Inner.impl.F (constants.%C.as.Inner.impl.F.ed9)] { +// CHECK:STDOUT: %self.patt: @C.as.Inner.impl.F.%pattern_type.loc11_12 (%pattern_type.e59) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @C.as.Inner.impl.F.%pattern_type.loc11_12 (%pattern_type.e59) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %return.patt: @C.as.Inner.impl.F.%pattern_type.loc11_23 (%pattern_type.7dcd0a.1) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @C.as.Inner.impl.F.%pattern_type.loc11_23 (%pattern_type.7dcd0a.1) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, @Outer.%T.loc4_13.2 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %self.param: @F.loc11.%C (%C.390) = value_param call_param0 +// CHECK:STDOUT: %self.param: @C.as.Inner.impl.F.%C (%C.390) = value_param call_param0 // CHECK:STDOUT: %.loc11_18.1: type = splice_block %C.ref [symbolic = %C (constants.%C.390)] { // CHECK:STDOUT: %.loc11_18.2: type = specific_constant @Outer.%C.decl, @Outer(constants.%T) [symbolic = %C (constants.%C.390)] // CHECK:STDOUT: %C.ref: type = name_ref C, %.loc11_18.2 [symbolic = %C (constants.%C.390)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.loc11.%C (%C.390) = bind_name self, %self.param -// CHECK:STDOUT: %return.param: ref @F.loc11.%T (%T) = out_param call_param1 -// CHECK:STDOUT: %return: ref @F.loc11.%T (%T) = return_slot %return.param +// CHECK:STDOUT: %self: @C.as.Inner.impl.F.%C (%C.390) = bind_name self, %self.param +// CHECK:STDOUT: %return.param: ref @C.as.Inner.impl.F.%T (%T) = out_param call_param1 +// CHECK:STDOUT: %return: ref @C.as.Inner.impl.F.%T (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .C = // CHECK:STDOUT: .T = -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %C.as.Inner.impl.F.decl // CHECK:STDOUT: .Inner = // CHECK:STDOUT: witness = @C.%Inner.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Inner.impl.a83: %Self.ref as %Inner.ref { -// CHECK:STDOUT: %F.decl: %F.type.a78 = fn_decl @F.loc18 [concrete = constants.%F.a24] { +// CHECK:STDOUT: impl @D.as.Inner.impl: %Self.ref as %Inner.ref { +// CHECK:STDOUT: %D.as.Inner.impl.F.decl: %D.as.Inner.impl.F.type = fn_decl @D.as.Inner.impl.F [concrete = constants.%D.as.Inner.impl.F] { // CHECK:STDOUT: %self.patt: %pattern_type.510 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.510 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] @@ -552,7 +552,7 @@ fn Test() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .D = -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %D.as.Inner.impl.F.decl // CHECK:STDOUT: witness = @D.%Inner.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: @@ -582,13 +582,13 @@ fn Test() -> i32 { // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: impl_decl @Inner.impl.eed [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.Inner.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C.390 [symbolic = %C (constants.%C.390)] // CHECK:STDOUT: %.loc10: type = specific_constant @Outer.%Inner.decl, @Outer(constants.%T) [symbolic = %Inner.type (constants.%Inner.type.392)] // CHECK:STDOUT: %Inner.ref: type = name_ref Inner, %.loc10 [symbolic = %Inner.type (constants.%Inner.type.392)] // CHECK:STDOUT: } -// CHECK:STDOUT: %Inner.impl_witness_table = impl_witness_table (@Inner.impl.eed.%F.decl), @Inner.impl.eed [concrete] -// CHECK:STDOUT: %Inner.impl_witness: = impl_witness %Inner.impl_witness_table, @Inner.impl.eed(constants.%T) [symbolic = @Inner.impl.eed.%Inner.impl_witness (constants.%Inner.impl_witness.b15)] +// CHECK:STDOUT: %Inner.impl_witness_table = impl_witness_table (@C.as.Inner.impl.%C.as.Inner.impl.F.decl), @C.as.Inner.impl [concrete] +// CHECK:STDOUT: %Inner.impl_witness: = impl_witness %Inner.impl_witness_table, @C.as.Inner.impl(constants.%T) [symbolic = @C.as.Inner.impl.%Inner.impl_witness (constants.%Inner.impl_witness.b15)] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type @@ -602,7 +602,7 @@ fn Test() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { -// CHECK:STDOUT: impl_decl @Inner.impl.a83 [concrete] {} { +// CHECK:STDOUT: impl_decl @D.as.Inner.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%D [concrete = constants.%D] // CHECK:STDOUT: %Outer.ref: %Outer.type = name_ref Outer, file.%Outer.decl [concrete = constants.%Outer.generic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -611,7 +611,7 @@ fn Test() -> i32 { // CHECK:STDOUT: %.loc17: type = specific_constant @Outer.%Inner.decl, @Outer(constants.%i32) [concrete = constants.%Inner.type.52d] // CHECK:STDOUT: %Inner.ref: type = name_ref Inner, %.loc17 [concrete = constants.%Inner.type.52d] // CHECK:STDOUT: } -// CHECK:STDOUT: %Inner.impl_witness_table = impl_witness_table (@Inner.impl.a83.%F.decl), @Inner.impl.a83 [concrete] +// CHECK:STDOUT: %Inner.impl_witness_table = impl_witness_table (@D.as.Inner.impl.%D.as.Inner.impl.F.decl), @D.as.Inner.impl [concrete] // CHECK:STDOUT: %Inner.impl_witness: = impl_witness %Inner.impl_witness_table [concrete = constants.%Inner.impl_witness.1dc] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] @@ -623,18 +623,18 @@ fn Test() -> i32 { // CHECK:STDOUT: .D = // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc6(@Outer.%T.loc4_13.2: type, @Inner.%Self.1: @Inner.%Inner.type (%Inner.type.392)) { +// CHECK:STDOUT: generic fn @Inner.F(@Outer.%T.loc4_13.2: type, @Inner.%Self.1: @Inner.%Inner.type (%Inner.type.392)) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Inner.type: type = facet_type <@Inner, @Inner(%T)> [symbolic = %Inner.type (constants.%Inner.type.392)] -// CHECK:STDOUT: %Self: @F.loc6.%Inner.type (%Inner.type.392) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.770)] -// CHECK:STDOUT: %Self.as_type.loc6_16.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc6_16.2 (constants.%Self.as_type.ea1)] -// CHECK:STDOUT: %pattern_type.loc6_10: type = pattern_type %Self.as_type.loc6_16.2 [symbolic = %pattern_type.loc6_10 (constants.%pattern_type.81e)] +// CHECK:STDOUT: %Self: @Inner.F.%Inner.type (%Inner.type.392) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.770)] +// CHECK:STDOUT: %Self.as_type.loc6_16.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc6_16.1 (constants.%Self.as_type.ea1)] +// CHECK:STDOUT: %pattern_type.loc6_10: type = pattern_type %Self.as_type.loc6_16.1 [symbolic = %pattern_type.loc6_10 (constants.%pattern_type.81e)] // CHECK:STDOUT: %pattern_type.loc6_24: type = pattern_type %T [symbolic = %pattern_type.loc6_24 (constants.%pattern_type.7dcd0a.1)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @F.loc6.%Self.as_type.loc6_16.2 (%Self.as_type.ea1)) -> @F.loc6.%T (%T); +// CHECK:STDOUT: fn(%self.param: @Inner.F.%Self.as_type.loc6_16.1 (%Self.as_type.ea1)) -> @Inner.F.%T (%T); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc11(@Outer.%T.loc4_13.2: type) { +// CHECK:STDOUT: generic fn @C.as.Inner.impl.F(@Outer.%T.loc4_13.2: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %C: type = class_type @C, @C(%T) [symbolic = %C (constants.%C.390)] // CHECK:STDOUT: %pattern_type.loc11_12: type = pattern_type %C [symbolic = %pattern_type.loc11_12 (constants.%pattern_type.e59)] @@ -646,33 +646,33 @@ fn Test() -> i32 { // CHECK:STDOUT: %Inner.type: type = facet_type <@Inner, @Inner(%T)> [symbolic = %Inner.type (constants.%Inner.type.392)] // CHECK:STDOUT: %require_complete.loc11_48: = require_complete_type %Inner.type [symbolic = %require_complete.loc11_48 (constants.%require_complete.8fa)] // CHECK:STDOUT: %Inner.assoc_type: type = assoc_entity_type @Inner, @Inner(%T) [symbolic = %Inner.assoc_type (constants.%Inner.assoc_type.115)] -// CHECK:STDOUT: %assoc0: @F.loc11.%Inner.assoc_type (%Inner.assoc_type.115) = assoc_entity element0, @Inner.%F.decl [symbolic = %assoc0 (constants.%assoc0.95e)] +// CHECK:STDOUT: %assoc0: @C.as.Inner.impl.F.%Inner.assoc_type (%Inner.assoc_type.115) = assoc_entity element0, @Inner.%Inner.F.decl [symbolic = %assoc0 (constants.%assoc0.95e)] // CHECK:STDOUT: %Inner.lookup_impl_witness: = lookup_impl_witness %C, @Inner, @Inner(%T) [symbolic = %Inner.lookup_impl_witness (constants.%Inner.lookup_impl_witness)] -// CHECK:STDOUT: %F.type: type = fn_type @F.loc6, @Inner(%T) [symbolic = %F.type (constants.%F.type.0f3)] -// CHECK:STDOUT: %Inner.facet: @F.loc11.%Inner.type (%Inner.type.392) = facet_value %C, (%Inner.lookup_impl_witness) [symbolic = %Inner.facet (constants.%Inner.facet.c18)] -// CHECK:STDOUT: %.loc11_41: type = fn_type_with_self_type %F.type, %Inner.facet [symbolic = %.loc11_41 (constants.%.692)] -// CHECK:STDOUT: %impl.elem0.loc11_41.2: @F.loc11.%.loc11_41 (%.692) = impl_witness_access %Inner.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc11_41.2 (constants.%impl.elem0.681)] -// CHECK:STDOUT: %specific_impl_fn.loc11_41.2: = specific_impl_function %impl.elem0.loc11_41.2, @F.loc6(%T, %Inner.facet) [symbolic = %specific_impl_fn.loc11_41.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %Inner.F.type: type = fn_type @Inner.F, @Inner(%T) [symbolic = %Inner.F.type (constants.%Inner.F.type.0f3)] +// CHECK:STDOUT: %Inner.facet: @C.as.Inner.impl.F.%Inner.type (%Inner.type.392) = facet_value %C, (%Inner.lookup_impl_witness) [symbolic = %Inner.facet (constants.%Inner.facet.c18)] +// CHECK:STDOUT: %.loc11_41: type = fn_type_with_self_type %Inner.F.type, %Inner.facet [symbolic = %.loc11_41 (constants.%.692)] +// CHECK:STDOUT: %impl.elem0.loc11_41.2: @C.as.Inner.impl.F.%.loc11_41 (%.692) = impl_witness_access %Inner.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc11_41.2 (constants.%impl.elem0.681)] +// CHECK:STDOUT: %specific_impl_fn.loc11_41.2: = specific_impl_function %impl.elem0.loc11_41.2, @Inner.F(%T, %Inner.facet) [symbolic = %specific_impl_fn.loc11_41.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @F.loc11.%C (%C.390)) -> @F.loc11.%T (%T) { +// CHECK:STDOUT: fn(%self.param: @C.as.Inner.impl.F.%C (%C.390)) -> @C.as.Inner.impl.F.%T (%T) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %self.ref: @F.loc11.%C (%C.390) = name_ref self, %self +// CHECK:STDOUT: %self.ref: @C.as.Inner.impl.F.%C (%C.390) = name_ref self, %self // CHECK:STDOUT: %.loc11_43: type = specific_constant @Outer.%Inner.decl, @Outer(constants.%T) [symbolic = %Inner.type (constants.%Inner.type.392)] // CHECK:STDOUT: %Inner.ref: type = name_ref Inner, %.loc11_43 [symbolic = %Inner.type (constants.%Inner.type.392)] -// CHECK:STDOUT: %.loc11_48: @F.loc11.%Inner.assoc_type (%Inner.assoc_type.115) = specific_constant @Inner.%assoc0.loc6_28.1, @Inner(constants.%T) [symbolic = %assoc0 (constants.%assoc0.95e)] -// CHECK:STDOUT: %F.ref: @F.loc11.%Inner.assoc_type (%Inner.assoc_type.115) = name_ref F, %.loc11_48 [symbolic = %assoc0 (constants.%assoc0.95e)] -// CHECK:STDOUT: %impl.elem0.loc11_41.1: @F.loc11.%.loc11_41 (%.692) = impl_witness_access constants.%Inner.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc11_41.2 (constants.%impl.elem0.681)] +// CHECK:STDOUT: %.loc11_48: @C.as.Inner.impl.F.%Inner.assoc_type (%Inner.assoc_type.115) = specific_constant @Inner.%assoc0.loc6_28.1, @Inner(constants.%T) [symbolic = %assoc0 (constants.%assoc0.95e)] +// CHECK:STDOUT: %F.ref: @C.as.Inner.impl.F.%Inner.assoc_type (%Inner.assoc_type.115) = name_ref F, %.loc11_48 [symbolic = %assoc0 (constants.%assoc0.95e)] +// CHECK:STDOUT: %impl.elem0.loc11_41.1: @C.as.Inner.impl.F.%.loc11_41 (%.692) = impl_witness_access constants.%Inner.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc11_41.2 (constants.%impl.elem0.681)] // CHECK:STDOUT: %bound_method.loc11_41: = bound_method %self.ref, %impl.elem0.loc11_41.1 -// CHECK:STDOUT: %specific_impl_fn.loc11_41.1: = specific_impl_function %impl.elem0.loc11_41.1, @F.loc6(constants.%T, constants.%Inner.facet.c18) [symbolic = %specific_impl_fn.loc11_41.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc11_41.1: = specific_impl_function %impl.elem0.loc11_41.1, @Inner.F(constants.%T, constants.%Inner.facet.c18) [symbolic = %specific_impl_fn.loc11_41.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %bound_method.loc11_52: = bound_method %self.ref, %specific_impl_fn.loc11_41.1 -// CHECK:STDOUT: %.loc11_52: init @F.loc11.%T (%T) = call %bound_method.loc11_52(%self.ref) -// CHECK:STDOUT: %.loc11_53.1: @F.loc11.%T (%T) = value_of_initializer %.loc11_52 -// CHECK:STDOUT: %.loc11_53.2: @F.loc11.%T (%T) = converted %.loc11_52, %.loc11_53.1 +// CHECK:STDOUT: %.loc11_52: init @C.as.Inner.impl.F.%T (%T) = call %bound_method.loc11_52(%self.ref) +// CHECK:STDOUT: %.loc11_53.1: @C.as.Inner.impl.F.%T (%T) = value_of_initializer %.loc11_52 +// CHECK:STDOUT: %.loc11_53.2: @C.as.Inner.impl.F.%T (%T) = converted %.loc11_52, %.loc11_53.1 // CHECK:STDOUT: return %.loc11_53.2 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc18(%self.param: %D) -> %i32; +// CHECK:STDOUT: fn @D.as.Inner.impl.F(%self.param: %D) -> %i32; // CHECK:STDOUT: // CHECK:STDOUT: fn @Test() -> %i32 { // CHECK:STDOUT: !entry: @@ -703,19 +703,19 @@ fn Test() -> i32 { // CHECK:STDOUT: %Inner.ref: type = name_ref Inner, %.loc24_23 [concrete = constants.%Inner.type.52d] // CHECK:STDOUT: %.loc24_29: %Inner.assoc_type.215 = specific_constant @Inner.%assoc0.loc6_28.1, @Inner(constants.%i32) [concrete = constants.%assoc0.e80] // CHECK:STDOUT: %F.ref: %Inner.assoc_type.215 = name_ref F, %.loc24_29 [concrete = constants.%assoc0.e80] -// CHECK:STDOUT: %impl.elem0: %.b10 = impl_witness_access constants.%Inner.impl_witness.47d, element0 [concrete = constants.%F.e75] +// CHECK:STDOUT: %impl.elem0: %.b10 = impl_witness_access constants.%Inner.impl_witness.47d, element0 [concrete = constants.%C.as.Inner.impl.F.e75] // CHECK:STDOUT: %bound_method.loc24_11: = bound_method %c.ref, %impl.elem0 -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @F.loc11(constants.%i32) [concrete = constants.%F.specific_fn] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @C.as.Inner.impl.F(constants.%i32) [concrete = constants.%C.as.Inner.impl.F.specific_fn] // CHECK:STDOUT: %bound_method.loc24_33: = bound_method %c.ref, %specific_fn // CHECK:STDOUT: %.loc24_10: %C.70f = bind_value %c.ref -// CHECK:STDOUT: %F.call: init %i32 = call %bound_method.loc24_33(%.loc24_10) -// CHECK:STDOUT: %.loc24_34.1: %i32 = value_of_initializer %F.call -// CHECK:STDOUT: %.loc24_34.2: %i32 = converted %F.call, %.loc24_34.1 -// CHECK:STDOUT: %Op.bound: = bound_method %c.var, constants.%Op.369 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.369, @Op.1(constants.%C.70f) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc23: = bound_method %c.var, %Op.specific_fn +// CHECK:STDOUT: %C.as.Inner.impl.F.call: init %i32 = call %bound_method.loc24_33(%.loc24_10) +// CHECK:STDOUT: %.loc24_34.1: %i32 = value_of_initializer %C.as.Inner.impl.F.call +// CHECK:STDOUT: %.loc24_34.2: %i32 = converted %C.as.Inner.impl.F.call, %.loc24_34.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %c.var, constants.%T.as.Destroy.impl.Op.369 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.369, @T.as.Destroy.impl.Op(constants.%C.70f) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc23: = bound_method %c.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.18f = addr_of %c.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc23(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc23(%addr) // CHECK:STDOUT: return %.loc24_34.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -732,17 +732,17 @@ fn Test() -> i32 { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %Inner.type => constants.%Inner.type.392 // CHECK:STDOUT: %Self.2 => constants.%Self.770 -// CHECK:STDOUT: %F.type => constants.%F.type.0f3 -// CHECK:STDOUT: %F => constants.%F.db9 +// CHECK:STDOUT: %Inner.F.type => constants.%Inner.F.type.0f3 +// CHECK:STDOUT: %Inner.F => constants.%Inner.F.db9 // CHECK:STDOUT: %Inner.assoc_type => constants.%Inner.assoc_type.115 // CHECK:STDOUT: %assoc0.loc6_28.2 => constants.%assoc0.95e // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc6(constants.%T, constants.%Self.770) { +// CHECK:STDOUT: specific @Inner.F(constants.%T, constants.%Self.770) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %Inner.type => constants.%Inner.type.392 // CHECK:STDOUT: %Self => constants.%Self.770 -// CHECK:STDOUT: %Self.as_type.loc6_16.2 => constants.%Self.as_type.ea1 +// CHECK:STDOUT: %Self.as_type.loc6_16.1 => constants.%Self.as_type.ea1 // CHECK:STDOUT: %pattern_type.loc6_10 => constants.%pattern_type.81e // CHECK:STDOUT: %pattern_type.loc6_24 => constants.%pattern_type.7dcd0a.1 // CHECK:STDOUT: } @@ -751,7 +751,7 @@ fn Test() -> i32 { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Inner.impl.eed(constants.%T) { +// CHECK:STDOUT: specific @C.as.Inner.impl(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %C => constants.%C.390 // CHECK:STDOUT: %Inner.type => constants.%Inner.type.392 @@ -759,31 +759,31 @@ fn Test() -> i32 { // CHECK:STDOUT: %Inner.impl_witness => constants.%Inner.impl_witness.b15 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.77b -// CHECK:STDOUT: %F => constants.%F.ed9 +// CHECK:STDOUT: %C.as.Inner.impl.F.type => constants.%C.as.Inner.impl.F.type.77b +// CHECK:STDOUT: %C.as.Inner.impl.F => constants.%C.as.Inner.impl.F.ed9 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc11(constants.%T) { +// CHECK:STDOUT: specific @C.as.Inner.impl.F(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %C => constants.%C.390 // CHECK:STDOUT: %pattern_type.loc11_12 => constants.%pattern_type.e59 // CHECK:STDOUT: %pattern_type.loc11_23 => constants.%pattern_type.7dcd0a.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc6(constants.%T, constants.%Inner.facet.9a3) { +// CHECK:STDOUT: specific @Inner.F(constants.%T, constants.%Inner.facet.9a3) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %Inner.type => constants.%Inner.type.392 // CHECK:STDOUT: %Self => constants.%Inner.facet.9a3 -// CHECK:STDOUT: %Self.as_type.loc6_16.2 => constants.%C.390 +// CHECK:STDOUT: %Self.as_type.loc6_16.1 => constants.%C.390 // CHECK:STDOUT: %pattern_type.loc6_10 => constants.%pattern_type.e59 // CHECK:STDOUT: %pattern_type.loc6_24 => constants.%pattern_type.7dcd0a.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc6(constants.%T, constants.%Inner.facet.c18) { +// CHECK:STDOUT: specific @Inner.F(constants.%T, constants.%Inner.facet.c18) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %Inner.type => constants.%Inner.type.392 // CHECK:STDOUT: %Self => constants.%Inner.facet.c18 -// CHECK:STDOUT: %Self.as_type.loc6_16.2 => constants.%C.390 +// CHECK:STDOUT: %Self.as_type.loc6_16.1 => constants.%C.390 // CHECK:STDOUT: %pattern_type.loc6_10 => constants.%pattern_type.e59 // CHECK:STDOUT: %pattern_type.loc6_24 => constants.%pattern_type.7dcd0a.1 // CHECK:STDOUT: } @@ -801,8 +801,8 @@ fn Test() -> i32 { // CHECK:STDOUT: %T => constants.%i32 // CHECK:STDOUT: %Inner.type => constants.%Inner.type.52d // CHECK:STDOUT: %Self.2 => constants.%Self.493 -// CHECK:STDOUT: %F.type => constants.%F.type.86e -// CHECK:STDOUT: %F => constants.%F.11d +// CHECK:STDOUT: %Inner.F.type => constants.%Inner.F.type.86e +// CHECK:STDOUT: %Inner.F => constants.%Inner.F.11d // CHECK:STDOUT: %Inner.assoc_type => constants.%Inner.assoc_type.215 // CHECK:STDOUT: %assoc0.loc6_28.2 => constants.%assoc0.e80 // CHECK:STDOUT: } @@ -811,16 +811,16 @@ fn Test() -> i32 { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc6(constants.%i32, constants.%Inner.facet.edc) { +// CHECK:STDOUT: specific @Inner.F(constants.%i32, constants.%Inner.facet.edc) { // CHECK:STDOUT: %T => constants.%i32 // CHECK:STDOUT: %Inner.type => constants.%Inner.type.52d // CHECK:STDOUT: %Self => constants.%Inner.facet.edc -// CHECK:STDOUT: %Self.as_type.loc6_16.2 => constants.%D +// CHECK:STDOUT: %Self.as_type.loc6_16.1 => constants.%D // CHECK:STDOUT: %pattern_type.loc6_10 => constants.%pattern_type.510 // CHECK:STDOUT: %pattern_type.loc6_24 => constants.%pattern_type.7ce // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Inner.impl.eed(constants.%i32) { +// CHECK:STDOUT: specific @C.as.Inner.impl(constants.%i32) { // CHECK:STDOUT: %T => constants.%i32 // CHECK:STDOUT: %C => constants.%C.70f // CHECK:STDOUT: %Inner.type => constants.%Inner.type.52d @@ -828,11 +828,11 @@ fn Test() -> i32 { // CHECK:STDOUT: %Inner.impl_witness => constants.%Inner.impl_witness.47d // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.f11 -// CHECK:STDOUT: %F => constants.%F.e75 +// CHECK:STDOUT: %C.as.Inner.impl.F.type => constants.%C.as.Inner.impl.F.type.f11 +// CHECK:STDOUT: %C.as.Inner.impl.F => constants.%C.as.Inner.impl.F.e75 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc11(constants.%i32) { +// CHECK:STDOUT: specific @C.as.Inner.impl.F(constants.%i32) { // CHECK:STDOUT: %T => constants.%i32 // CHECK:STDOUT: %C => constants.%C.70f // CHECK:STDOUT: %pattern_type.loc11_12 => constants.%pattern_type.de9 @@ -846,18 +846,18 @@ fn Test() -> i32 { // CHECK:STDOUT: %Inner.assoc_type => constants.%Inner.assoc_type.215 // CHECK:STDOUT: %assoc0 => constants.%assoc0.e80 // CHECK:STDOUT: %Inner.lookup_impl_witness => constants.%Inner.impl_witness.47d -// CHECK:STDOUT: %F.type => constants.%F.type.86e +// CHECK:STDOUT: %Inner.F.type => constants.%Inner.F.type.86e // CHECK:STDOUT: %Inner.facet => constants.%Inner.facet.840 // CHECK:STDOUT: %.loc11_41 => constants.%.b10 -// CHECK:STDOUT: %impl.elem0.loc11_41.2 => constants.%F.e75 -// CHECK:STDOUT: %specific_impl_fn.loc11_41.2 => constants.%F.specific_fn +// CHECK:STDOUT: %impl.elem0.loc11_41.2 => constants.%C.as.Inner.impl.F.e75 +// CHECK:STDOUT: %specific_impl_fn.loc11_41.2 => constants.%C.as.Inner.impl.F.specific_fn // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc6(constants.%i32, constants.%Inner.facet.840) { +// CHECK:STDOUT: specific @Inner.F(constants.%i32, constants.%Inner.facet.840) { // CHECK:STDOUT: %T => constants.%i32 // CHECK:STDOUT: %Inner.type => constants.%Inner.type.52d // CHECK:STDOUT: %Self => constants.%Inner.facet.840 -// CHECK:STDOUT: %Self.as_type.loc6_16.2 => constants.%C.70f +// CHECK:STDOUT: %Self.as_type.loc6_16.1 => constants.%C.70f // CHECK:STDOUT: %pattern_type.loc6_10 => constants.%pattern_type.de9 // CHECK:STDOUT: %pattern_type.loc6_24 => constants.%pattern_type.7ce // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/generic/method_deduce.carbon b/toolchain/check/testdata/class/generic/method_deduce.carbon index 851dfe2ef8b8..1bba3655a8c2 100644 --- a/toolchain/check/testdata/class/generic/method_deduce.carbon +++ b/toolchain/check/testdata/class/generic/method_deduce.carbon @@ -45,54 +45,54 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] // CHECK:STDOUT: %tuple.type.30b: type = tuple_type (%T, %U) [symbolic] // CHECK:STDOUT: %pattern_type.65c: type = pattern_type %tuple.type.30b [symbolic] -// CHECK:STDOUT: %Get.type.fd9: type = fn_type @Get, @Class(%T) [symbolic] -// CHECK:STDOUT: %Get.cf9: %Get.type.fd9 = struct_value () [symbolic] +// CHECK:STDOUT: %Class.Get.type.fd9: type = fn_type @Class.Get, @Class(%T) [symbolic] +// CHECK:STDOUT: %Class.Get.cf9: %Class.Get.type.fd9 = struct_value () [symbolic] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %T [symbolic] -// CHECK:STDOUT: %GetNoDeduce.type.766: type = fn_type @GetNoDeduce, @Class(%T) [symbolic] -// CHECK:STDOUT: %GetNoDeduce.c9a: %GetNoDeduce.type.766 = struct_value () [symbolic] +// CHECK:STDOUT: %Class.GetNoDeduce.type.766: type = fn_type @Class.GetNoDeduce, @Class(%T) [symbolic] +// CHECK:STDOUT: %Class.GetNoDeduce.c9a: %Class.GetNoDeduce.type.766 = struct_value () [symbolic] // CHECK:STDOUT: %ptr.937: type = ptr_type %tuple.type.30b [symbolic] // CHECK:STDOUT: %require_complete.fe1: = require_complete_type %tuple.type.30b [symbolic] -// CHECK:STDOUT: %Get.specific_fn.f73: = specific_function %Get.cf9, @Get(%T, %U) [symbolic] +// CHECK:STDOUT: %Class.Get.specific_fn.f73: = specific_function %Class.Get.cf9, @Class.Get(%T, %U) [symbolic] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.bae: type = fn_type @Op.1 [concrete] -// CHECK:STDOUT: %Op.type.bc9: type = fn_type @Op.2, @Destroy.impl(%T) [symbolic] -// CHECK:STDOUT: %Op.46f: %Op.type.bc9 = struct_value () [symbolic] +// CHECK:STDOUT: %Destroy.Op.type: type = fn_type @Destroy.Op [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.bc9: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%T) [symbolic] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.46f: %T.as.Destroy.impl.Op.type.bc9 = struct_value () [symbolic] // CHECK:STDOUT: %require_complete.8fa: = require_complete_type %ptr.937 [symbolic] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %tuple.type.30b, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.1c6: %Destroy.type = facet_value %tuple.type.30b, (%Destroy.lookup_impl_witness) [symbolic] -// CHECK:STDOUT: %.1e9: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.1c6 [symbolic] +// CHECK:STDOUT: %.1e9: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.1c6 [symbolic] // CHECK:STDOUT: %impl.elem0: %.1e9 = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Op.1(%Destroy.facet.1c6) [symbolic] +// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Destroy.Op(%Destroy.facet.1c6) [symbolic] // CHECK:STDOUT: %require_complete.4ae: = require_complete_type %T [symbolic] -// CHECK:STDOUT: %GetNoDeduce.specific_fn.536: = specific_function %GetNoDeduce.c9a, @GetNoDeduce(%T, %U) [symbolic] +// CHECK:STDOUT: %Class.GetNoDeduce.specific_fn.536: = specific_function %Class.GetNoDeduce.c9a, @Class.GetNoDeduce(%T, %U) [symbolic] // CHECK:STDOUT: %Class.480: type = class_type @Class, @Class(%A) [concrete] // CHECK:STDOUT: %pattern_type.827: type = pattern_type %Class.480 [concrete] // CHECK:STDOUT: %tuple.type.cc6: type = tuple_type (%A, %B) [concrete] // CHECK:STDOUT: %pattern_type.edc: type = pattern_type %tuple.type.cc6 [concrete] // CHECK:STDOUT: %CallGenericMethod.type: type = fn_type @CallGenericMethod [concrete] // CHECK:STDOUT: %CallGenericMethod: %CallGenericMethod.type = struct_value () [concrete] -// CHECK:STDOUT: %Get.type.501: type = fn_type @Get, @Class(%A) [concrete] -// CHECK:STDOUT: %Get.f37: %Get.type.501 = struct_value () [concrete] -// CHECK:STDOUT: %GetNoDeduce.type.5d6: type = fn_type @GetNoDeduce, @Class(%A) [concrete] -// CHECK:STDOUT: %GetNoDeduce.162: %GetNoDeduce.type.5d6 = struct_value () [concrete] -// CHECK:STDOUT: %Get.specific_fn.213: = specific_function %Get.f37, @Get(%A, %B) [concrete] -// CHECK:STDOUT: %Destroy.impl_witness.ae3: = impl_witness imports.%Destroy.impl_witness_table, @Destroy.impl(%tuple.type.cc6) [concrete] -// CHECK:STDOUT: %Op.type.87c: type = fn_type @Op.2, @Destroy.impl(%tuple.type.cc6) [concrete] -// CHECK:STDOUT: %Op.f13: %Op.type.87c = struct_value () [concrete] +// CHECK:STDOUT: %Class.Get.type.501: type = fn_type @Class.Get, @Class(%A) [concrete] +// CHECK:STDOUT: %Class.Get.f37: %Class.Get.type.501 = struct_value () [concrete] +// CHECK:STDOUT: %Class.GetNoDeduce.type.5d6: type = fn_type @Class.GetNoDeduce, @Class(%A) [concrete] +// CHECK:STDOUT: %Class.GetNoDeduce.162: %Class.GetNoDeduce.type.5d6 = struct_value () [concrete] +// CHECK:STDOUT: %Class.Get.specific_fn.213: = specific_function %Class.Get.f37, @Class.Get(%A, %B) [concrete] +// CHECK:STDOUT: %Destroy.impl_witness.ae3: = impl_witness imports.%Destroy.impl_witness_table, @T.as.Destroy.impl(%tuple.type.cc6) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.87c: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%tuple.type.cc6) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.f13: %T.as.Destroy.impl.Op.type.87c = struct_value () [concrete] // CHECK:STDOUT: %ptr.3b5: type = ptr_type %tuple.type.cc6 [concrete] // CHECK:STDOUT: %complete_type.a4a: = complete_type_witness %ptr.3b5 [concrete] // CHECK:STDOUT: %Destroy.facet.fae: %Destroy.type = facet_value %tuple.type.cc6, (%Destroy.impl_witness.ae3) [concrete] -// CHECK:STDOUT: %.c9f: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.fae [concrete] -// CHECK:STDOUT: %Op.specific_fn.8d7: = specific_function %Op.f13, @Op.2(%tuple.type.cc6) [concrete] +// CHECK:STDOUT: %.c9f: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.fae [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.8d7: = specific_function %T.as.Destroy.impl.Op.f13, @T.as.Destroy.impl.Op(%tuple.type.cc6) [concrete] // CHECK:STDOUT: %CallGenericMethodWithNonDeducedParam.type: type = fn_type @CallGenericMethodWithNonDeducedParam [concrete] // CHECK:STDOUT: %CallGenericMethodWithNonDeducedParam: %CallGenericMethodWithNonDeducedParam.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.c10: type = pattern_type %A [concrete] -// CHECK:STDOUT: %GetNoDeduce.specific_fn.438: = specific_function %GetNoDeduce.162, @GetNoDeduce(%A, %B) [concrete] +// CHECK:STDOUT: %Class.GetNoDeduce.specific_fn.438: = specific_function %Class.GetNoDeduce.162, @Class.GetNoDeduce(%A, %B) [concrete] // CHECK:STDOUT: %A.val: %A = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.b96: type = fn_type @Op.2, @Destroy.impl(%A) [concrete] -// CHECK:STDOUT: %Op.885: %Op.type.b96 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.b96: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%A) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.885: %T.as.Destroy.impl.Op.type.b96 = struct_value () [concrete] // CHECK:STDOUT: %ptr.6db: type = ptr_type %A [concrete] -// CHECK:STDOUT: %Op.specific_fn.716: = specific_function %Op.885, @Op.2(%A) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.716: = specific_function %T.as.Destroy.impl.Op.885, @T.as.Destroy.impl.Op(%A) [concrete] // CHECK:STDOUT: %complete_type.56a: = complete_type_witness %tuple.type.cc6 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -103,8 +103,8 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @Destroy.impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @Destroy.impl.%Op (constants.%Op.46f)] -// CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @Destroy.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.0b9: @T.as.Destroy.impl.%T.as.Destroy.impl.Op.type (%T.as.Destroy.impl.Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @T.as.Destroy.impl.%T.as.Destroy.impl.Op (constants.%T.as.Destroy.impl.Op.46f)] +// CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @T.as.Destroy.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -188,42 +188,42 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %T.loc18_13.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc18_13.1 (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Get.type: type = fn_type @Get, @Class(%T.loc18_13.1) [symbolic = %Get.type (constants.%Get.type.fd9)] -// CHECK:STDOUT: %Get: @Class.%Get.type (%Get.type.fd9) = struct_value () [symbolic = %Get (constants.%Get.cf9)] -// CHECK:STDOUT: %GetNoDeduce.type: type = fn_type @GetNoDeduce, @Class(%T.loc18_13.1) [symbolic = %GetNoDeduce.type (constants.%GetNoDeduce.type.766)] -// CHECK:STDOUT: %GetNoDeduce: @Class.%GetNoDeduce.type (%GetNoDeduce.type.766) = struct_value () [symbolic = %GetNoDeduce (constants.%GetNoDeduce.c9a)] +// CHECK:STDOUT: %Class.Get.type: type = fn_type @Class.Get, @Class(%T.loc18_13.1) [symbolic = %Class.Get.type (constants.%Class.Get.type.fd9)] +// CHECK:STDOUT: %Class.Get: @Class.%Class.Get.type (%Class.Get.type.fd9) = struct_value () [symbolic = %Class.Get (constants.%Class.Get.cf9)] +// CHECK:STDOUT: %Class.GetNoDeduce.type: type = fn_type @Class.GetNoDeduce, @Class(%T.loc18_13.1) [symbolic = %Class.GetNoDeduce.type (constants.%Class.GetNoDeduce.type.766)] +// CHECK:STDOUT: %Class.GetNoDeduce: @Class.%Class.GetNoDeduce.type (%Class.GetNoDeduce.type.766) = struct_value () [symbolic = %Class.GetNoDeduce (constants.%Class.GetNoDeduce.c9a)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %Get.decl: @Class.%Get.type (%Get.type.fd9) = fn_decl @Get [symbolic = @Class.%Get (constants.%Get.cf9)] { +// CHECK:STDOUT: %Class.Get.decl: @Class.%Class.Get.type (%Class.Get.type.fd9) = fn_decl @Class.Get [symbolic = @Class.%Class.Get (constants.%Class.Get.cf9)] { // CHECK:STDOUT: %U.patt: %pattern_type.98f = symbolic_binding_pattern U, 1 [concrete] -// CHECK:STDOUT: %return.patt: @Get.%pattern_type (%pattern_type.65c) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @Get.%pattern_type (%pattern_type.65c) = out_param_pattern %return.patt, call_param0 [concrete] +// CHECK:STDOUT: %return.patt: @Class.Get.%pattern_type (%pattern_type.65c) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @Class.Get.%pattern_type (%pattern_type.65c) = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, @Class.%T.loc18_13.2 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %U.ref.loc19_27: type = name_ref U, %U.loc19_10.1 [symbolic = %U.loc19_10.2 (constants.%U)] +// CHECK:STDOUT: %U.ref.loc19_27: type = name_ref U, %U.loc19_10.2 [symbolic = %U.loc19_10.1 (constants.%U)] // CHECK:STDOUT: %.loc19_28.1: %tuple.type.24b = tuple_literal (%T.ref, %U.ref.loc19_27) // CHECK:STDOUT: %.loc19_28.2: type = converted %.loc19_28.1, constants.%tuple.type.30b [symbolic = %tuple.type (constants.%tuple.type.30b)] -// CHECK:STDOUT: %U.loc19_10.1: type = bind_symbolic_name U, 1 [symbolic = %U.loc19_10.2 (constants.%U)] -// CHECK:STDOUT: %return.param: ref @Get.%tuple.type (%tuple.type.30b) = out_param call_param0 -// CHECK:STDOUT: %return: ref @Get.%tuple.type (%tuple.type.30b) = return_slot %return.param +// CHECK:STDOUT: %U.loc19_10.2: type = bind_symbolic_name U, 1 [symbolic = %U.loc19_10.1 (constants.%U)] +// CHECK:STDOUT: %return.param: ref @Class.Get.%tuple.type (%tuple.type.30b) = out_param call_param0 +// CHECK:STDOUT: %return: ref @Class.Get.%tuple.type (%tuple.type.30b) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %GetNoDeduce.decl: @Class.%GetNoDeduce.type (%GetNoDeduce.type.766) = fn_decl @GetNoDeduce [symbolic = @Class.%GetNoDeduce (constants.%GetNoDeduce.c9a)] { -// CHECK:STDOUT: %x.patt: @GetNoDeduce.%pattern_type.loc20_18 (%pattern_type.7dc) = binding_pattern x [concrete] -// CHECK:STDOUT: %x.param_patt: @GetNoDeduce.%pattern_type.loc20_18 (%pattern_type.7dc) = value_param_pattern %x.patt, call_param0 [concrete] +// CHECK:STDOUT: %Class.GetNoDeduce.decl: @Class.%Class.GetNoDeduce.type (%Class.GetNoDeduce.type.766) = fn_decl @Class.GetNoDeduce [symbolic = @Class.%Class.GetNoDeduce (constants.%Class.GetNoDeduce.c9a)] { +// CHECK:STDOUT: %x.patt: @Class.GetNoDeduce.%pattern_type.loc20_18 (%pattern_type.7dc) = binding_pattern x [concrete] +// CHECK:STDOUT: %x.param_patt: @Class.GetNoDeduce.%pattern_type.loc20_18 (%pattern_type.7dc) = value_param_pattern %x.patt, call_param0 [concrete] // CHECK:STDOUT: %U.patt: %pattern_type.98f = symbolic_binding_pattern U, 1 [concrete] -// CHECK:STDOUT: %return.patt: @GetNoDeduce.%pattern_type.loc20_34 (%pattern_type.65c) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @GetNoDeduce.%pattern_type.loc20_34 (%pattern_type.65c) = out_param_pattern %return.patt, call_param1 [concrete] +// CHECK:STDOUT: %return.patt: @Class.GetNoDeduce.%pattern_type.loc20_34 (%pattern_type.65c) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @Class.GetNoDeduce.%pattern_type.loc20_34 (%pattern_type.65c) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc20_38: type = name_ref T, @Class.%T.loc18_13.2 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %U.ref.loc20_41: type = name_ref U, %U.loc20_24.1 [symbolic = %U.loc20_24.2 (constants.%U)] +// CHECK:STDOUT: %U.ref.loc20_41: type = name_ref U, %U.loc20_24.2 [symbolic = %U.loc20_24.1 (constants.%U)] // CHECK:STDOUT: %.loc20_42.1: %tuple.type.24b = tuple_literal (%T.ref.loc20_38, %U.ref.loc20_41) // CHECK:STDOUT: %.loc20_42.2: type = converted %.loc20_42.1, constants.%tuple.type.30b [symbolic = %tuple.type (constants.%tuple.type.30b)] -// CHECK:STDOUT: %x.param: @GetNoDeduce.%T (%T) = value_param call_param0 +// CHECK:STDOUT: %x.param: @Class.GetNoDeduce.%T (%T) = value_param call_param0 // CHECK:STDOUT: %T.ref.loc20_21: type = name_ref T, @Class.%T.loc18_13.2 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %x: @GetNoDeduce.%T (%T) = bind_name x, %x.param -// CHECK:STDOUT: %U.loc20_24.1: type = bind_symbolic_name U, 1 [symbolic = %U.loc20_24.2 (constants.%U)] -// CHECK:STDOUT: %return.param: ref @GetNoDeduce.%tuple.type (%tuple.type.30b) = out_param call_param1 -// CHECK:STDOUT: %return: ref @GetNoDeduce.%tuple.type (%tuple.type.30b) = return_slot %return.param +// CHECK:STDOUT: %x: @Class.GetNoDeduce.%T (%T) = bind_name x, %x.param +// CHECK:STDOUT: %U.loc20_24.2: type = bind_symbolic_name U, 1 [symbolic = %U.loc20_24.1 (constants.%U)] +// CHECK:STDOUT: %return.param: ref @Class.GetNoDeduce.%tuple.type (%tuple.type.30b) = out_param call_param1 +// CHECK:STDOUT: %return: ref @Class.GetNoDeduce.%tuple.type (%tuple.type.30b) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] @@ -232,154 +232,154 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class.fe1 // CHECK:STDOUT: .T = -// CHECK:STDOUT: .Get = %Get.decl -// CHECK:STDOUT: .GetNoDeduce = %GetNoDeduce.decl +// CHECK:STDOUT: .Get = %Class.Get.decl +// CHECK:STDOUT: .GetNoDeduce = %Class.GetNoDeduce.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Get(@Class.%T.loc18_13.2: type, %U.loc19_10.1: type) { -// CHECK:STDOUT: %U.loc19_10.2: type = bind_symbolic_name U, 1 [symbolic = %U.loc19_10.2 (constants.%U)] +// CHECK:STDOUT: generic fn @Class.Get(@Class.%T.loc18_13.2: type, %U.loc19_10.2: type) { +// CHECK:STDOUT: %U.loc19_10.1: type = bind_symbolic_name U, 1 [symbolic = %U.loc19_10.1 (constants.%U)] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %tuple.type: type = tuple_type (%T, %U.loc19_10.2) [symbolic = %tuple.type (constants.%tuple.type.30b)] +// CHECK:STDOUT: %tuple.type: type = tuple_type (%T, %U.loc19_10.1) [symbolic = %tuple.type (constants.%tuple.type.30b)] // CHECK:STDOUT: %pattern_type: type = pattern_type %tuple.type [symbolic = %pattern_type (constants.%pattern_type.65c)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete.loc19_20.1: = require_complete_type %tuple.type [symbolic = %require_complete.loc19_20.1 (constants.%require_complete.fe1)] -// CHECK:STDOUT: %Get.type: type = fn_type @Get, @Class(%T) [symbolic = %Get.type (constants.%Get.type.fd9)] -// CHECK:STDOUT: %Get: @Get.%Get.type (%Get.type.fd9) = struct_value () [symbolic = %Get (constants.%Get.cf9)] -// CHECK:STDOUT: %Get.specific_fn.loc19_39.2: = specific_function %Get, @Get(%T, %U.loc19_10.2) [symbolic = %Get.specific_fn.loc19_39.2 (constants.%Get.specific_fn.f73)] +// CHECK:STDOUT: %Class.Get.type: type = fn_type @Class.Get, @Class(%T) [symbolic = %Class.Get.type (constants.%Class.Get.type.fd9)] +// CHECK:STDOUT: %Class.Get: @Class.Get.%Class.Get.type (%Class.Get.type.fd9) = struct_value () [symbolic = %Class.Get (constants.%Class.Get.cf9)] +// CHECK:STDOUT: %Class.Get.specific_fn.loc19_39.2: = specific_function %Class.Get, @Class.Get(%T, %U.loc19_10.1) [symbolic = %Class.Get.specific_fn.loc19_39.2 (constants.%Class.Get.specific_fn.f73)] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %tuple.type, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness)] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %tuple.type, (%Destroy.lookup_impl_witness) [symbolic = %Destroy.facet (constants.%Destroy.facet.1c6)] -// CHECK:STDOUT: %.loc19_20.3: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.loc19_20.3 (constants.%.1e9)] -// CHECK:STDOUT: %impl.elem0.loc19_20.2: @Get.%.loc19_20.3 (%.1e9) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc19_20.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %specific_impl_fn.loc19_20.2: = specific_impl_function %impl.elem0.loc19_20.2, @Op.1(%Destroy.facet) [symbolic = %specific_impl_fn.loc19_20.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %.loc19_20.3: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet [symbolic = %.loc19_20.3 (constants.%.1e9)] +// CHECK:STDOUT: %impl.elem0.loc19_20.2: @Class.Get.%.loc19_20.3 (%.1e9) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc19_20.2 (constants.%impl.elem0)] +// CHECK:STDOUT: %specific_impl_fn.loc19_20.2: = specific_impl_function %impl.elem0.loc19_20.2, @Destroy.Op(%Destroy.facet) [symbolic = %specific_impl_fn.loc19_20.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %ptr: type = ptr_type %tuple.type [symbolic = %ptr (constants.%ptr.937)] // CHECK:STDOUT: %require_complete.loc19_20.2: = require_complete_type %ptr [symbolic = %require_complete.loc19_20.2 (constants.%require_complete.8fa)] // CHECK:STDOUT: -// CHECK:STDOUT: fn() -> %return.param: @Get.%tuple.type (%tuple.type.30b) { +// CHECK:STDOUT: fn() -> %return.param: @Class.Get.%tuple.type (%tuple.type.30b) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc19_39: @Get.%Get.type (%Get.type.fd9) = specific_constant @Class.%Get.decl, @Class(constants.%T) [symbolic = %Get (constants.%Get.cf9)] -// CHECK:STDOUT: %Get.ref: @Get.%Get.type (%Get.type.fd9) = name_ref Get, %.loc19_39 [symbolic = %Get (constants.%Get.cf9)] -// CHECK:STDOUT: %U.ref.loc19_43: type = name_ref U, %U.loc19_10.1 [symbolic = %U.loc19_10.2 (constants.%U)] -// CHECK:STDOUT: %Get.specific_fn.loc19_39.1: = specific_function %Get.ref, @Get(constants.%T, constants.%U) [symbolic = %Get.specific_fn.loc19_39.2 (constants.%Get.specific_fn.f73)] -// CHECK:STDOUT: %.loc19_20.1: ref @Get.%tuple.type (%tuple.type.30b) = splice_block %return {} -// CHECK:STDOUT: %Get.call: init @Get.%tuple.type (%tuple.type.30b) = call %Get.specific_fn.loc19_39.1() to %.loc19_20.1 -// CHECK:STDOUT: %impl.elem0.loc19_20.1: @Get.%.loc19_20.3 (%.1e9) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc19_20.2 (constants.%impl.elem0)] +// CHECK:STDOUT: %.loc19_39: @Class.Get.%Class.Get.type (%Class.Get.type.fd9) = specific_constant @Class.%Class.Get.decl, @Class(constants.%T) [symbolic = %Class.Get (constants.%Class.Get.cf9)] +// CHECK:STDOUT: %Get.ref: @Class.Get.%Class.Get.type (%Class.Get.type.fd9) = name_ref Get, %.loc19_39 [symbolic = %Class.Get (constants.%Class.Get.cf9)] +// CHECK:STDOUT: %U.ref.loc19_43: type = name_ref U, %U.loc19_10.2 [symbolic = %U.loc19_10.1 (constants.%U)] +// CHECK:STDOUT: %Class.Get.specific_fn.loc19_39.1: = specific_function %Get.ref, @Class.Get(constants.%T, constants.%U) [symbolic = %Class.Get.specific_fn.loc19_39.2 (constants.%Class.Get.specific_fn.f73)] +// CHECK:STDOUT: %.loc19_20.1: ref @Class.Get.%tuple.type (%tuple.type.30b) = splice_block %return {} +// CHECK:STDOUT: %Class.Get.call: init @Class.Get.%tuple.type (%tuple.type.30b) = call %Class.Get.specific_fn.loc19_39.1() to %.loc19_20.1 +// CHECK:STDOUT: %impl.elem0.loc19_20.1: @Class.Get.%.loc19_20.3 (%.1e9) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc19_20.2 (constants.%impl.elem0)] // CHECK:STDOUT: %bound_method.loc19_20.1: = bound_method %.loc19_20.1, %impl.elem0.loc19_20.1 -// CHECK:STDOUT: %specific_impl_fn.loc19_20.1: = specific_impl_function %impl.elem0.loc19_20.1, @Op.1(constants.%Destroy.facet.1c6) [symbolic = %specific_impl_fn.loc19_20.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc19_20.1: = specific_impl_function %impl.elem0.loc19_20.1, @Destroy.Op(constants.%Destroy.facet.1c6) [symbolic = %specific_impl_fn.loc19_20.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %bound_method.loc19_20.2: = bound_method %.loc19_20.1, %specific_impl_fn.loc19_20.1 -// CHECK:STDOUT: %addr: @Get.%ptr (%ptr.937) = addr_of %.loc19_20.1 +// CHECK:STDOUT: %addr: @Class.Get.%ptr (%ptr.937) = addr_of %.loc19_20.1 // CHECK:STDOUT: %.loc19_20.2: init %empty_tuple.type = call %bound_method.loc19_20.2(%addr) -// CHECK:STDOUT: return %Get.call to %return +// CHECK:STDOUT: return %Class.Get.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @GetNoDeduce(@Class.%T.loc18_13.2: type, %U.loc20_24.1: type) { +// CHECK:STDOUT: generic fn @Class.GetNoDeduce(@Class.%T.loc18_13.2: type, %U.loc20_24.2: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %pattern_type.loc20_18: type = pattern_type %T [symbolic = %pattern_type.loc20_18 (constants.%pattern_type.7dc)] -// CHECK:STDOUT: %U.loc20_24.2: type = bind_symbolic_name U, 1 [symbolic = %U.loc20_24.2 (constants.%U)] -// CHECK:STDOUT: %tuple.type: type = tuple_type (%T, %U.loc20_24.2) [symbolic = %tuple.type (constants.%tuple.type.30b)] +// CHECK:STDOUT: %U.loc20_24.1: type = bind_symbolic_name U, 1 [symbolic = %U.loc20_24.1 (constants.%U)] +// CHECK:STDOUT: %tuple.type: type = tuple_type (%T, %U.loc20_24.1) [symbolic = %tuple.type (constants.%tuple.type.30b)] // CHECK:STDOUT: %pattern_type.loc20_34: type = pattern_type %tuple.type [symbolic = %pattern_type.loc20_34 (constants.%pattern_type.65c)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete.loc20_19: = require_complete_type %T [symbolic = %require_complete.loc20_19 (constants.%require_complete.4ae)] -// CHECK:STDOUT: %GetNoDeduce.type: type = fn_type @GetNoDeduce, @Class(%T) [symbolic = %GetNoDeduce.type (constants.%GetNoDeduce.type.766)] -// CHECK:STDOUT: %GetNoDeduce: @GetNoDeduce.%GetNoDeduce.type (%GetNoDeduce.type.766) = struct_value () [symbolic = %GetNoDeduce (constants.%GetNoDeduce.c9a)] -// CHECK:STDOUT: %GetNoDeduce.specific_fn.loc20_53.2: = specific_function %GetNoDeduce, @GetNoDeduce(%T, %U.loc20_24.2) [symbolic = %GetNoDeduce.specific_fn.loc20_53.2 (constants.%GetNoDeduce.specific_fn.536)] +// CHECK:STDOUT: %Class.GetNoDeduce.type: type = fn_type @Class.GetNoDeduce, @Class(%T) [symbolic = %Class.GetNoDeduce.type (constants.%Class.GetNoDeduce.type.766)] +// CHECK:STDOUT: %Class.GetNoDeduce: @Class.GetNoDeduce.%Class.GetNoDeduce.type (%Class.GetNoDeduce.type.766) = struct_value () [symbolic = %Class.GetNoDeduce (constants.%Class.GetNoDeduce.c9a)] +// CHECK:STDOUT: %Class.GetNoDeduce.specific_fn.loc20_53.2: = specific_function %Class.GetNoDeduce, @Class.GetNoDeduce(%T, %U.loc20_24.1) [symbolic = %Class.GetNoDeduce.specific_fn.loc20_53.2 (constants.%Class.GetNoDeduce.specific_fn.536)] // CHECK:STDOUT: %require_complete.loc20_70: = require_complete_type %tuple.type [symbolic = %require_complete.loc20_70 (constants.%require_complete.fe1)] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %tuple.type, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness)] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %tuple.type, (%Destroy.lookup_impl_witness) [symbolic = %Destroy.facet (constants.%Destroy.facet.1c6)] -// CHECK:STDOUT: %.loc20_34.3: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.loc20_34.3 (constants.%.1e9)] -// CHECK:STDOUT: %impl.elem0.loc20_34.2: @GetNoDeduce.%.loc20_34.3 (%.1e9) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc20_34.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %specific_impl_fn.loc20_34.2: = specific_impl_function %impl.elem0.loc20_34.2, @Op.1(%Destroy.facet) [symbolic = %specific_impl_fn.loc20_34.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %.loc20_34.3: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet [symbolic = %.loc20_34.3 (constants.%.1e9)] +// CHECK:STDOUT: %impl.elem0.loc20_34.2: @Class.GetNoDeduce.%.loc20_34.3 (%.1e9) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc20_34.2 (constants.%impl.elem0)] +// CHECK:STDOUT: %specific_impl_fn.loc20_34.2: = specific_impl_function %impl.elem0.loc20_34.2, @Destroy.Op(%Destroy.facet) [symbolic = %specific_impl_fn.loc20_34.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %ptr: type = ptr_type %tuple.type [symbolic = %ptr (constants.%ptr.937)] // CHECK:STDOUT: %require_complete.loc20_34: = require_complete_type %ptr [symbolic = %require_complete.loc20_34 (constants.%require_complete.8fa)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%x.param: @GetNoDeduce.%T (%T)) -> %return.param: @GetNoDeduce.%tuple.type (%tuple.type.30b) { +// CHECK:STDOUT: fn(%x.param: @Class.GetNoDeduce.%T (%T)) -> %return.param: @Class.GetNoDeduce.%tuple.type (%tuple.type.30b) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc20_53: @GetNoDeduce.%GetNoDeduce.type (%GetNoDeduce.type.766) = specific_constant @Class.%GetNoDeduce.decl, @Class(constants.%T) [symbolic = %GetNoDeduce (constants.%GetNoDeduce.c9a)] -// CHECK:STDOUT: %GetNoDeduce.ref: @GetNoDeduce.%GetNoDeduce.type (%GetNoDeduce.type.766) = name_ref GetNoDeduce, %.loc20_53 [symbolic = %GetNoDeduce (constants.%GetNoDeduce.c9a)] -// CHECK:STDOUT: %x.ref: @GetNoDeduce.%T (%T) = name_ref x, %x -// CHECK:STDOUT: %U.ref.loc20_68: type = name_ref U, %U.loc20_24.1 [symbolic = %U.loc20_24.2 (constants.%U)] -// CHECK:STDOUT: %GetNoDeduce.specific_fn.loc20_53.1: = specific_function %GetNoDeduce.ref, @GetNoDeduce(constants.%T, constants.%U) [symbolic = %GetNoDeduce.specific_fn.loc20_53.2 (constants.%GetNoDeduce.specific_fn.536)] -// CHECK:STDOUT: %.loc20_34.1: ref @GetNoDeduce.%tuple.type (%tuple.type.30b) = splice_block %return {} -// CHECK:STDOUT: %GetNoDeduce.call: init @GetNoDeduce.%tuple.type (%tuple.type.30b) = call %GetNoDeduce.specific_fn.loc20_53.1(%x.ref) to %.loc20_34.1 -// CHECK:STDOUT: %impl.elem0.loc20_34.1: @GetNoDeduce.%.loc20_34.3 (%.1e9) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc20_34.2 (constants.%impl.elem0)] +// CHECK:STDOUT: %.loc20_53: @Class.GetNoDeduce.%Class.GetNoDeduce.type (%Class.GetNoDeduce.type.766) = specific_constant @Class.%Class.GetNoDeduce.decl, @Class(constants.%T) [symbolic = %Class.GetNoDeduce (constants.%Class.GetNoDeduce.c9a)] +// CHECK:STDOUT: %GetNoDeduce.ref: @Class.GetNoDeduce.%Class.GetNoDeduce.type (%Class.GetNoDeduce.type.766) = name_ref GetNoDeduce, %.loc20_53 [symbolic = %Class.GetNoDeduce (constants.%Class.GetNoDeduce.c9a)] +// CHECK:STDOUT: %x.ref: @Class.GetNoDeduce.%T (%T) = name_ref x, %x +// CHECK:STDOUT: %U.ref.loc20_68: type = name_ref U, %U.loc20_24.2 [symbolic = %U.loc20_24.1 (constants.%U)] +// CHECK:STDOUT: %Class.GetNoDeduce.specific_fn.loc20_53.1: = specific_function %GetNoDeduce.ref, @Class.GetNoDeduce(constants.%T, constants.%U) [symbolic = %Class.GetNoDeduce.specific_fn.loc20_53.2 (constants.%Class.GetNoDeduce.specific_fn.536)] +// CHECK:STDOUT: %.loc20_34.1: ref @Class.GetNoDeduce.%tuple.type (%tuple.type.30b) = splice_block %return {} +// CHECK:STDOUT: %Class.GetNoDeduce.call: init @Class.GetNoDeduce.%tuple.type (%tuple.type.30b) = call %Class.GetNoDeduce.specific_fn.loc20_53.1(%x.ref) to %.loc20_34.1 +// CHECK:STDOUT: %impl.elem0.loc20_34.1: @Class.GetNoDeduce.%.loc20_34.3 (%.1e9) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc20_34.2 (constants.%impl.elem0)] // CHECK:STDOUT: %bound_method.loc20_34.1: = bound_method %.loc20_34.1, %impl.elem0.loc20_34.1 -// CHECK:STDOUT: %specific_impl_fn.loc20_34.1: = specific_impl_function %impl.elem0.loc20_34.1, @Op.1(constants.%Destroy.facet.1c6) [symbolic = %specific_impl_fn.loc20_34.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc20_34.1: = specific_impl_function %impl.elem0.loc20_34.1, @Destroy.Op(constants.%Destroy.facet.1c6) [symbolic = %specific_impl_fn.loc20_34.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %bound_method.loc20_34.2: = bound_method %.loc20_34.1, %specific_impl_fn.loc20_34.1 -// CHECK:STDOUT: %addr: @GetNoDeduce.%ptr (%ptr.937) = addr_of %.loc20_34.1 +// CHECK:STDOUT: %addr: @Class.GetNoDeduce.%ptr (%ptr.937) = addr_of %.loc20_34.1 // CHECK:STDOUT: %.loc20_34.2: init %empty_tuple.type = call %bound_method.loc20_34.2(%addr) -// CHECK:STDOUT: return %GetNoDeduce.call to %return +// CHECK:STDOUT: return %Class.GetNoDeduce.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @CallGenericMethod(%c.param: %Class.480) -> %return.param: %tuple.type.cc6 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %c.ref: %Class.480 = name_ref c, %c -// CHECK:STDOUT: %.loc24: %Get.type.501 = specific_constant @Class.%Get.decl, @Class(constants.%A) [concrete = constants.%Get.f37] -// CHECK:STDOUT: %Get.ref: %Get.type.501 = name_ref Get, %.loc24 [concrete = constants.%Get.f37] +// CHECK:STDOUT: %.loc24: %Class.Get.type.501 = specific_constant @Class.%Class.Get.decl, @Class(constants.%A) [concrete = constants.%Class.Get.f37] +// CHECK:STDOUT: %Get.ref: %Class.Get.type.501 = name_ref Get, %.loc24 [concrete = constants.%Class.Get.f37] // CHECK:STDOUT: %B.ref.loc24: type = name_ref B, file.%B.decl [concrete = constants.%B] -// CHECK:STDOUT: %Get.specific_fn: = specific_function %Get.ref, @Get(constants.%A, constants.%B) [concrete = constants.%Get.specific_fn.213] +// CHECK:STDOUT: %Class.Get.specific_fn: = specific_function %Get.ref, @Class.Get(constants.%A, constants.%B) [concrete = constants.%Class.Get.specific_fn.213] // CHECK:STDOUT: %.loc23_35: ref %tuple.type.cc6 = splice_block %return {} -// CHECK:STDOUT: %Get.call: init %tuple.type.cc6 = call %Get.specific_fn() to %.loc23_35 -// CHECK:STDOUT: %Op.bound: = bound_method %.loc23_35, constants.%Op.f13 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.f13, @Op.2(constants.%tuple.type.cc6) [concrete = constants.%Op.specific_fn.8d7] -// CHECK:STDOUT: %bound_method: = bound_method %.loc23_35, %Op.specific_fn +// CHECK:STDOUT: %Class.Get.call: init %tuple.type.cc6 = call %Class.Get.specific_fn() to %.loc23_35 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc23_35, constants.%T.as.Destroy.impl.Op.f13 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.f13, @T.as.Destroy.impl.Op(constants.%tuple.type.cc6) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.8d7] +// CHECK:STDOUT: %bound_method: = bound_method %.loc23_35, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.3b5 = addr_of %.loc23_35 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) -// CHECK:STDOUT: return %Get.call to %return +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: return %Class.Get.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @CallGenericMethodWithNonDeducedParam(%c.param: %Class.480) -> %return.param: %tuple.type.cc6 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %c.ref: %Class.480 = name_ref c, %c -// CHECK:STDOUT: %.loc28_11: %GetNoDeduce.type.5d6 = specific_constant @Class.%GetNoDeduce.decl, @Class(constants.%A) [concrete = constants.%GetNoDeduce.162] -// CHECK:STDOUT: %GetNoDeduce.ref: %GetNoDeduce.type.5d6 = name_ref GetNoDeduce, %.loc28_11 [concrete = constants.%GetNoDeduce.162] +// CHECK:STDOUT: %.loc28_11: %Class.GetNoDeduce.type.5d6 = specific_constant @Class.%Class.GetNoDeduce.decl, @Class(constants.%A) [concrete = constants.%Class.GetNoDeduce.162] +// CHECK:STDOUT: %GetNoDeduce.ref: %Class.GetNoDeduce.type.5d6 = name_ref GetNoDeduce, %.loc28_11 [concrete = constants.%Class.GetNoDeduce.162] // CHECK:STDOUT: %.loc28_25.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %B.ref.loc28: type = name_ref B, file.%B.decl [concrete = constants.%B] -// CHECK:STDOUT: %GetNoDeduce.specific_fn: = specific_function %GetNoDeduce.ref, @GetNoDeduce(constants.%A, constants.%B) [concrete = constants.%GetNoDeduce.specific_fn.438] +// CHECK:STDOUT: %Class.GetNoDeduce.specific_fn: = specific_function %GetNoDeduce.ref, @Class.GetNoDeduce(constants.%A, constants.%B) [concrete = constants.%Class.GetNoDeduce.specific_fn.438] // CHECK:STDOUT: %.loc27_54: ref %tuple.type.cc6 = splice_block %return {} // CHECK:STDOUT: %.loc28_25.2: ref %A = temporary_storage // CHECK:STDOUT: %.loc28_25.3: init %A = class_init (), %.loc28_25.2 [concrete = constants.%A.val] // CHECK:STDOUT: %.loc28_25.4: ref %A = temporary %.loc28_25.2, %.loc28_25.3 // CHECK:STDOUT: %.loc28_25.5: ref %A = converted %.loc28_25.1, %.loc28_25.4 // CHECK:STDOUT: %.loc28_25.6: %A = bind_value %.loc28_25.5 -// CHECK:STDOUT: %GetNoDeduce.call: init %tuple.type.cc6 = call %GetNoDeduce.specific_fn(%.loc28_25.6) to %.loc27_54 -// CHECK:STDOUT: %Op.bound.loc28: = bound_method %.loc28_25.2, constants.%Op.885 -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.885, @Op.2(constants.%A) [concrete = constants.%Op.specific_fn.716] -// CHECK:STDOUT: %bound_method.loc28: = bound_method %.loc28_25.2, %Op.specific_fn.1 +// CHECK:STDOUT: %Class.GetNoDeduce.call: init %tuple.type.cc6 = call %Class.GetNoDeduce.specific_fn(%.loc28_25.6) to %.loc27_54 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc28: = bound_method %.loc28_25.2, constants.%T.as.Destroy.impl.Op.885 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.885, @T.as.Destroy.impl.Op(constants.%A) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.716] +// CHECK:STDOUT: %bound_method.loc28: = bound_method %.loc28_25.2, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc28: %ptr.6db = addr_of %.loc28_25.2 -// CHECK:STDOUT: %no_op.loc28: init %empty_tuple.type = call %bound_method.loc28(%addr.loc28) -// CHECK:STDOUT: %Op.bound.loc27: = bound_method %.loc27_54, constants.%Op.f13 -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.f13, @Op.2(constants.%tuple.type.cc6) [concrete = constants.%Op.specific_fn.8d7] -// CHECK:STDOUT: %bound_method.loc27: = bound_method %.loc27_54, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc28: init %empty_tuple.type = call %bound_method.loc28(%addr.loc28) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc27: = bound_method %.loc27_54, constants.%T.as.Destroy.impl.Op.f13 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.f13, @T.as.Destroy.impl.Op(constants.%tuple.type.cc6) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.8d7] +// CHECK:STDOUT: %bound_method.loc27: = bound_method %.loc27_54, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc27: %ptr.3b5 = addr_of %.loc27_54 -// CHECK:STDOUT: %no_op.loc27: init %empty_tuple.type = call %bound_method.loc27(%addr.loc27) -// CHECK:STDOUT: return %GetNoDeduce.call to %return +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc27: init %empty_tuple.type = call %bound_method.loc27(%addr.loc27) +// CHECK:STDOUT: return %Class.GetNoDeduce.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Class(constants.%T) { // CHECK:STDOUT: %T.loc18_13.1 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Get.type => constants.%Get.type.fd9 -// CHECK:STDOUT: %Get => constants.%Get.cf9 -// CHECK:STDOUT: %GetNoDeduce.type => constants.%GetNoDeduce.type.766 -// CHECK:STDOUT: %GetNoDeduce => constants.%GetNoDeduce.c9a +// CHECK:STDOUT: %Class.Get.type => constants.%Class.Get.type.fd9 +// CHECK:STDOUT: %Class.Get => constants.%Class.Get.cf9 +// CHECK:STDOUT: %Class.GetNoDeduce.type => constants.%Class.GetNoDeduce.type.766 +// CHECK:STDOUT: %Class.GetNoDeduce => constants.%Class.GetNoDeduce.c9a // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Get(constants.%T, constants.%U) { -// CHECK:STDOUT: %U.loc19_10.2 => constants.%U +// CHECK:STDOUT: specific @Class.Get(constants.%T, constants.%U) { +// CHECK:STDOUT: %U.loc19_10.1 => constants.%U // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %tuple.type => constants.%tuple.type.30b // CHECK:STDOUT: %pattern_type => constants.%pattern_type.65c // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete.loc19_20.1 => constants.%require_complete.fe1 -// CHECK:STDOUT: %Get.type => constants.%Get.type.fd9 -// CHECK:STDOUT: %Get => constants.%Get.cf9 -// CHECK:STDOUT: %Get.specific_fn.loc19_39.2 => constants.%Get.specific_fn.f73 +// CHECK:STDOUT: %Class.Get.type => constants.%Class.Get.type.fd9 +// CHECK:STDOUT: %Class.Get => constants.%Class.Get.cf9 +// CHECK:STDOUT: %Class.Get.specific_fn.loc19_39.2 => constants.%Class.Get.specific_fn.f73 // CHECK:STDOUT: %Destroy.lookup_impl_witness => constants.%Destroy.lookup_impl_witness // CHECK:STDOUT: %Destroy.facet => constants.%Destroy.facet.1c6 // CHECK:STDOUT: %.loc19_20.3 => constants.%.1e9 @@ -389,18 +389,18 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %require_complete.loc19_20.2 => constants.%require_complete.8fa // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @GetNoDeduce(constants.%T, constants.%U) { +// CHECK:STDOUT: specific @Class.GetNoDeduce(constants.%T, constants.%U) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %pattern_type.loc20_18 => constants.%pattern_type.7dc -// CHECK:STDOUT: %U.loc20_24.2 => constants.%U +// CHECK:STDOUT: %U.loc20_24.1 => constants.%U // CHECK:STDOUT: %tuple.type => constants.%tuple.type.30b // CHECK:STDOUT: %pattern_type.loc20_34 => constants.%pattern_type.65c // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete.loc20_19 => constants.%require_complete.4ae -// CHECK:STDOUT: %GetNoDeduce.type => constants.%GetNoDeduce.type.766 -// CHECK:STDOUT: %GetNoDeduce => constants.%GetNoDeduce.c9a -// CHECK:STDOUT: %GetNoDeduce.specific_fn.loc20_53.2 => constants.%GetNoDeduce.specific_fn.536 +// CHECK:STDOUT: %Class.GetNoDeduce.type => constants.%Class.GetNoDeduce.type.766 +// CHECK:STDOUT: %Class.GetNoDeduce => constants.%Class.GetNoDeduce.c9a +// CHECK:STDOUT: %Class.GetNoDeduce.specific_fn.loc20_53.2 => constants.%Class.GetNoDeduce.specific_fn.536 // CHECK:STDOUT: %require_complete.loc20_70 => constants.%require_complete.fe1 // CHECK:STDOUT: %Destroy.lookup_impl_witness => constants.%Destroy.lookup_impl_witness // CHECK:STDOUT: %Destroy.facet => constants.%Destroy.facet.1c6 @@ -415,50 +415,50 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %T.loc18_13.1 => constants.%A // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Get.type => constants.%Get.type.501 -// CHECK:STDOUT: %Get => constants.%Get.f37 -// CHECK:STDOUT: %GetNoDeduce.type => constants.%GetNoDeduce.type.5d6 -// CHECK:STDOUT: %GetNoDeduce => constants.%GetNoDeduce.162 +// CHECK:STDOUT: %Class.Get.type => constants.%Class.Get.type.501 +// CHECK:STDOUT: %Class.Get => constants.%Class.Get.f37 +// CHECK:STDOUT: %Class.GetNoDeduce.type => constants.%Class.GetNoDeduce.type.5d6 +// CHECK:STDOUT: %Class.GetNoDeduce => constants.%Class.GetNoDeduce.162 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Get(constants.%A, constants.%B) { -// CHECK:STDOUT: %U.loc19_10.2 => constants.%B +// CHECK:STDOUT: specific @Class.Get(constants.%A, constants.%B) { +// CHECK:STDOUT: %U.loc19_10.1 => constants.%B // CHECK:STDOUT: %T => constants.%A // CHECK:STDOUT: %tuple.type => constants.%tuple.type.cc6 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.edc // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete.loc19_20.1 => constants.%complete_type.56a -// CHECK:STDOUT: %Get.type => constants.%Get.type.501 -// CHECK:STDOUT: %Get => constants.%Get.f37 -// CHECK:STDOUT: %Get.specific_fn.loc19_39.2 => constants.%Get.specific_fn.213 +// CHECK:STDOUT: %Class.Get.type => constants.%Class.Get.type.501 +// CHECK:STDOUT: %Class.Get => constants.%Class.Get.f37 +// CHECK:STDOUT: %Class.Get.specific_fn.loc19_39.2 => constants.%Class.Get.specific_fn.213 // CHECK:STDOUT: %Destroy.lookup_impl_witness => constants.%Destroy.impl_witness.ae3 // CHECK:STDOUT: %Destroy.facet => constants.%Destroy.facet.fae // CHECK:STDOUT: %.loc19_20.3 => constants.%.c9f -// CHECK:STDOUT: %impl.elem0.loc19_20.2 => constants.%Op.f13 -// CHECK:STDOUT: %specific_impl_fn.loc19_20.2 => constants.%Op.specific_fn.8d7 +// CHECK:STDOUT: %impl.elem0.loc19_20.2 => constants.%T.as.Destroy.impl.Op.f13 +// CHECK:STDOUT: %specific_impl_fn.loc19_20.2 => constants.%T.as.Destroy.impl.Op.specific_fn.8d7 // CHECK:STDOUT: %ptr => constants.%ptr.3b5 // CHECK:STDOUT: %require_complete.loc19_20.2 => constants.%complete_type.a4a // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @GetNoDeduce(constants.%A, constants.%B) { +// CHECK:STDOUT: specific @Class.GetNoDeduce(constants.%A, constants.%B) { // CHECK:STDOUT: %T => constants.%A // CHECK:STDOUT: %pattern_type.loc20_18 => constants.%pattern_type.c10 -// CHECK:STDOUT: %U.loc20_24.2 => constants.%B +// CHECK:STDOUT: %U.loc20_24.1 => constants.%B // CHECK:STDOUT: %tuple.type => constants.%tuple.type.cc6 // CHECK:STDOUT: %pattern_type.loc20_34 => constants.%pattern_type.edc // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete.loc20_19 => constants.%complete_type.357 -// CHECK:STDOUT: %GetNoDeduce.type => constants.%GetNoDeduce.type.5d6 -// CHECK:STDOUT: %GetNoDeduce => constants.%GetNoDeduce.162 -// CHECK:STDOUT: %GetNoDeduce.specific_fn.loc20_53.2 => constants.%GetNoDeduce.specific_fn.438 +// CHECK:STDOUT: %Class.GetNoDeduce.type => constants.%Class.GetNoDeduce.type.5d6 +// CHECK:STDOUT: %Class.GetNoDeduce => constants.%Class.GetNoDeduce.162 +// CHECK:STDOUT: %Class.GetNoDeduce.specific_fn.loc20_53.2 => constants.%Class.GetNoDeduce.specific_fn.438 // CHECK:STDOUT: %require_complete.loc20_70 => constants.%complete_type.56a // CHECK:STDOUT: %Destroy.lookup_impl_witness => constants.%Destroy.impl_witness.ae3 // CHECK:STDOUT: %Destroy.facet => constants.%Destroy.facet.fae // CHECK:STDOUT: %.loc20_34.3 => constants.%.c9f -// CHECK:STDOUT: %impl.elem0.loc20_34.2 => constants.%Op.f13 -// CHECK:STDOUT: %specific_impl_fn.loc20_34.2 => constants.%Op.specific_fn.8d7 +// CHECK:STDOUT: %impl.elem0.loc20_34.2 => constants.%T.as.Destroy.impl.Op.f13 +// CHECK:STDOUT: %specific_impl_fn.loc20_34.2 => constants.%T.as.Destroy.impl.Op.specific_fn.8d7 // CHECK:STDOUT: %ptr => constants.%ptr.3b5 // CHECK:STDOUT: %require_complete.loc20_34 => constants.%complete_type.a4a // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/generic/self.carbon b/toolchain/check/testdata/class/generic/self.carbon index ba48477d43c9..6f01dd492e91 100644 --- a/toolchain/check/testdata/class/generic/self.carbon +++ b/toolchain/check/testdata/class/generic/self.carbon @@ -33,27 +33,27 @@ class Class(T:! type) { // CHECK:STDOUT: %Class.generic: %Class.type = struct_value () [concrete] // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T) [symbolic] // CHECK:STDOUT: %pattern_type.3c1: type = pattern_type %Class [symbolic] -// CHECK:STDOUT: %MakeSelf.type: type = fn_type @MakeSelf, @Class(%T) [symbolic] -// CHECK:STDOUT: %MakeSelf: %MakeSelf.type = struct_value () [symbolic] -// CHECK:STDOUT: %MakeClass.type: type = fn_type @MakeClass, @Class(%T) [symbolic] -// CHECK:STDOUT: %MakeClass: %MakeClass.type = struct_value () [symbolic] -// CHECK:STDOUT: %F.type: type = fn_type @F, @Class(%T) [symbolic] -// CHECK:STDOUT: %F: %F.type = struct_value () [symbolic] +// CHECK:STDOUT: %Class.MakeSelf.type: type = fn_type @Class.MakeSelf, @Class(%T) [symbolic] +// CHECK:STDOUT: %Class.MakeSelf: %Class.MakeSelf.type = struct_value () [symbolic] +// CHECK:STDOUT: %Class.MakeClass.type: type = fn_type @Class.MakeClass, @Class(%T) [symbolic] +// CHECK:STDOUT: %Class.MakeClass: %Class.MakeClass.type = struct_value () [symbolic] +// CHECK:STDOUT: %Class.F.type: type = fn_type @Class.F, @Class(%T) [symbolic] +// CHECK:STDOUT: %Class.F: %Class.F.type = struct_value () [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %require_complete.4f8: = require_complete_type %Class [symbolic] // CHECK:STDOUT: %Class.val: %Class = struct_value () [symbolic] -// CHECK:STDOUT: %MakeSelf.specific_fn: = specific_function %MakeSelf, @MakeSelf(%T) [symbolic] -// CHECK:STDOUT: %MakeClass.specific_fn: = specific_function %MakeClass, @MakeClass(%T) [symbolic] +// CHECK:STDOUT: %Class.MakeSelf.specific_fn: = specific_function %Class.MakeSelf, @Class.MakeSelf(%T) [symbolic] +// CHECK:STDOUT: %Class.MakeClass.specific_fn: = specific_function %Class.MakeClass, @Class.MakeClass(%T) [symbolic] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.bae: type = fn_type @Op.1 [concrete] +// CHECK:STDOUT: %Destroy.Op.type: type = fn_type @Destroy.Op [concrete] // CHECK:STDOUT: %ptr.955: type = ptr_type %Class [symbolic] // CHECK:STDOUT: %require_complete.2ae: = require_complete_type %ptr.955 [symbolic] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %Class, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %Class, (%Destroy.lookup_impl_witness) [symbolic] -// CHECK:STDOUT: %.d76: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [symbolic] +// CHECK:STDOUT: %.d76: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet [symbolic] // CHECK:STDOUT: %impl.elem0: %.d76 = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Op.1(%Destroy.facet) [symbolic] +// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Destroy.Op(%Destroy.facet) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -82,162 +82,162 @@ class Class(T:! type) { // CHECK:STDOUT: %T.loc15_13.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc15_13.1 (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %MakeSelf.type: type = fn_type @MakeSelf, @Class(%T.loc15_13.1) [symbolic = %MakeSelf.type (constants.%MakeSelf.type)] -// CHECK:STDOUT: %MakeSelf: @Class.%MakeSelf.type (%MakeSelf.type) = struct_value () [symbolic = %MakeSelf (constants.%MakeSelf)] -// CHECK:STDOUT: %MakeClass.type: type = fn_type @MakeClass, @Class(%T.loc15_13.1) [symbolic = %MakeClass.type (constants.%MakeClass.type)] -// CHECK:STDOUT: %MakeClass: @Class.%MakeClass.type (%MakeClass.type) = struct_value () [symbolic = %MakeClass (constants.%MakeClass)] -// CHECK:STDOUT: %F.type: type = fn_type @F, @Class(%T.loc15_13.1) [symbolic = %F.type (constants.%F.type)] -// CHECK:STDOUT: %F: @Class.%F.type (%F.type) = struct_value () [symbolic = %F (constants.%F)] +// CHECK:STDOUT: %Class.MakeSelf.type: type = fn_type @Class.MakeSelf, @Class(%T.loc15_13.1) [symbolic = %Class.MakeSelf.type (constants.%Class.MakeSelf.type)] +// CHECK:STDOUT: %Class.MakeSelf: @Class.%Class.MakeSelf.type (%Class.MakeSelf.type) = struct_value () [symbolic = %Class.MakeSelf (constants.%Class.MakeSelf)] +// CHECK:STDOUT: %Class.MakeClass.type: type = fn_type @Class.MakeClass, @Class(%T.loc15_13.1) [symbolic = %Class.MakeClass.type (constants.%Class.MakeClass.type)] +// CHECK:STDOUT: %Class.MakeClass: @Class.%Class.MakeClass.type (%Class.MakeClass.type) = struct_value () [symbolic = %Class.MakeClass (constants.%Class.MakeClass)] +// CHECK:STDOUT: %Class.F.type: type = fn_type @Class.F, @Class(%T.loc15_13.1) [symbolic = %Class.F.type (constants.%Class.F.type)] +// CHECK:STDOUT: %Class.F: @Class.%Class.F.type (%Class.F.type) = struct_value () [symbolic = %Class.F (constants.%Class.F)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %MakeSelf.decl: @Class.%MakeSelf.type (%MakeSelf.type) = fn_decl @MakeSelf [symbolic = @Class.%MakeSelf (constants.%MakeSelf)] { -// CHECK:STDOUT: %return.patt: @MakeSelf.%pattern_type (%pattern_type.3c1) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @MakeSelf.%pattern_type (%pattern_type.3c1) = out_param_pattern %return.patt, call_param0 [concrete] +// CHECK:STDOUT: %Class.MakeSelf.decl: @Class.%Class.MakeSelf.type (%Class.MakeSelf.type) = fn_decl @Class.MakeSelf [symbolic = @Class.%Class.MakeSelf (constants.%Class.MakeSelf)] { +// CHECK:STDOUT: %return.patt: @Class.MakeSelf.%pattern_type (%pattern_type.3c1) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @Class.MakeSelf.%pattern_type (%pattern_type.3c1) = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc18_20: type = specific_constant constants.%Class, @Class(constants.%T) [symbolic = %Class (constants.%Class)] // CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc18_20 [symbolic = %Class (constants.%Class)] -// CHECK:STDOUT: %return.param: ref @MakeSelf.%Class (%Class) = out_param call_param0 -// CHECK:STDOUT: %return: ref @MakeSelf.%Class (%Class) = return_slot %return.param +// CHECK:STDOUT: %return.param: ref @Class.MakeSelf.%Class (%Class) = out_param call_param0 +// CHECK:STDOUT: %return: ref @Class.MakeSelf.%Class (%Class) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %MakeClass.decl: @Class.%MakeClass.type (%MakeClass.type) = fn_decl @MakeClass [symbolic = @Class.%MakeClass (constants.%MakeClass)] { -// CHECK:STDOUT: %return.patt: @MakeClass.%pattern_type (%pattern_type.3c1) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @MakeClass.%pattern_type (%pattern_type.3c1) = out_param_pattern %return.patt, call_param0 [concrete] +// CHECK:STDOUT: %Class.MakeClass.decl: @Class.%Class.MakeClass.type (%Class.MakeClass.type) = fn_decl @Class.MakeClass [symbolic = @Class.%Class.MakeClass (constants.%Class.MakeClass)] { +// CHECK:STDOUT: %return.patt: @Class.MakeClass.%pattern_type (%pattern_type.3c1) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @Class.MakeClass.%pattern_type (%pattern_type.3c1) = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Class.ref: %Class.type = name_ref Class, file.%Class.decl [concrete = constants.%Class.generic] // CHECK:STDOUT: %T.ref: type = name_ref T, @Class.%T.loc15_13.2 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %Class.loc19_28.1: type = class_type @Class, @Class(constants.%T) [symbolic = %Class.loc19_28.2 (constants.%Class)] -// CHECK:STDOUT: %return.param: ref @MakeClass.%Class.loc19_28.2 (%Class) = out_param call_param0 -// CHECK:STDOUT: %return: ref @MakeClass.%Class.loc19_28.2 (%Class) = return_slot %return.param +// CHECK:STDOUT: %Class.loc19_28.2: type = class_type @Class, @Class(constants.%T) [symbolic = %Class.loc19_28.1 (constants.%Class)] +// CHECK:STDOUT: %return.param: ref @Class.MakeClass.%Class.loc19_28.1 (%Class) = out_param call_param0 +// CHECK:STDOUT: %return: ref @Class.MakeClass.%Class.loc19_28.1 (%Class) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: @Class.%F.type (%F.type) = fn_decl @F [symbolic = @Class.%F (constants.%F)] {} {} +// CHECK:STDOUT: %Class.F.decl: @Class.%Class.F.type (%Class.F.type) = fn_decl @Class.F [symbolic = @Class.%Class.F (constants.%Class.F)] {} {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class -// CHECK:STDOUT: .MakeSelf = %MakeSelf.decl +// CHECK:STDOUT: .MakeSelf = %Class.MakeSelf.decl // CHECK:STDOUT: .Class = // CHECK:STDOUT: .T = -// CHECK:STDOUT: .MakeClass = %MakeClass.decl -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .MakeClass = %Class.MakeClass.decl +// CHECK:STDOUT: .F = %Class.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @MakeSelf(@Class.%T.loc15_13.2: type) { +// CHECK:STDOUT: generic fn @Class.MakeSelf(@Class.%T.loc15_13.2: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T) [symbolic = %Class (constants.%Class)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Class [symbolic = %pattern_type (constants.%pattern_type.3c1)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %Class [symbolic = %require_complete (constants.%require_complete.4f8)] -// CHECK:STDOUT: %Class.val: @MakeSelf.%Class (%Class) = struct_value () [symbolic = %Class.val (constants.%Class.val)] +// CHECK:STDOUT: %Class.val: @Class.MakeSelf.%Class (%Class) = struct_value () [symbolic = %Class.val (constants.%Class.val)] // CHECK:STDOUT: -// CHECK:STDOUT: fn() -> %return.param: @MakeSelf.%Class (%Class) { +// CHECK:STDOUT: fn() -> %return.param: @Class.MakeSelf.%Class (%Class) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %.loc18_35.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc18_35.2: init @MakeSelf.%Class (%Class) = class_init (), %return [symbolic = %Class.val (constants.%Class.val)] -// CHECK:STDOUT: %.loc18_36: init @MakeSelf.%Class (%Class) = converted %.loc18_35.1, %.loc18_35.2 [symbolic = %Class.val (constants.%Class.val)] +// CHECK:STDOUT: %.loc18_35.2: init @Class.MakeSelf.%Class (%Class) = class_init (), %return [symbolic = %Class.val (constants.%Class.val)] +// CHECK:STDOUT: %.loc18_36: init @Class.MakeSelf.%Class (%Class) = converted %.loc18_35.1, %.loc18_35.2 [symbolic = %Class.val (constants.%Class.val)] // CHECK:STDOUT: return %.loc18_36 to %return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @MakeClass(@Class.%T.loc15_13.2: type) { +// CHECK:STDOUT: generic fn @Class.MakeClass(@Class.%T.loc15_13.2: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %Class.loc19_28.2: type = class_type @Class, @Class(%T) [symbolic = %Class.loc19_28.2 (constants.%Class)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Class.loc19_28.2 [symbolic = %pattern_type (constants.%pattern_type.3c1)] +// CHECK:STDOUT: %Class.loc19_28.1: type = class_type @Class, @Class(%T) [symbolic = %Class.loc19_28.1 (constants.%Class)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Class.loc19_28.1 [symbolic = %pattern_type (constants.%pattern_type.3c1)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type %Class.loc19_28.2 [symbolic = %require_complete (constants.%require_complete.4f8)] -// CHECK:STDOUT: %Class.val: @MakeClass.%Class.loc19_28.2 (%Class) = struct_value () [symbolic = %Class.val (constants.%Class.val)] +// CHECK:STDOUT: %require_complete: = require_complete_type %Class.loc19_28.1 [symbolic = %require_complete (constants.%require_complete.4f8)] +// CHECK:STDOUT: %Class.val: @Class.MakeClass.%Class.loc19_28.1 (%Class) = struct_value () [symbolic = %Class.val (constants.%Class.val)] // CHECK:STDOUT: -// CHECK:STDOUT: fn() -> %return.param: @MakeClass.%Class.loc19_28.2 (%Class) { +// CHECK:STDOUT: fn() -> %return.param: @Class.MakeClass.%Class.loc19_28.1 (%Class) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %.loc19_40.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc19_40.2: init @MakeClass.%Class.loc19_28.2 (%Class) = class_init (), %return [symbolic = %Class.val (constants.%Class.val)] -// CHECK:STDOUT: %.loc19_41: init @MakeClass.%Class.loc19_28.2 (%Class) = converted %.loc19_40.1, %.loc19_40.2 [symbolic = %Class.val (constants.%Class.val)] +// CHECK:STDOUT: %.loc19_40.2: init @Class.MakeClass.%Class.loc19_28.1 (%Class) = class_init (), %return [symbolic = %Class.val (constants.%Class.val)] +// CHECK:STDOUT: %.loc19_41: init @Class.MakeClass.%Class.loc19_28.1 (%Class) = converted %.loc19_40.1, %.loc19_40.2 [symbolic = %Class.val (constants.%Class.val)] // CHECK:STDOUT: return %.loc19_41 to %return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(@Class.%T.loc15_13.2: type) { +// CHECK:STDOUT: generic fn @Class.F(@Class.%T.loc15_13.2: type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Class.loc21_19.2: type = class_type @Class, @Class(%T) [symbolic = %Class.loc21_19.2 (constants.%Class)] // CHECK:STDOUT: %require_complete.loc21: = require_complete_type %Class.loc21_19.2 [symbolic = %require_complete.loc21 (constants.%require_complete.4f8)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Class.loc21_19.2 [symbolic = %pattern_type (constants.%pattern_type.3c1)] -// CHECK:STDOUT: %MakeSelf.type: type = fn_type @MakeSelf, @Class(%T) [symbolic = %MakeSelf.type (constants.%MakeSelf.type)] -// CHECK:STDOUT: %MakeSelf: @F.%MakeSelf.type (%MakeSelf.type) = struct_value () [symbolic = %MakeSelf (constants.%MakeSelf)] -// CHECK:STDOUT: %MakeSelf.specific_fn.loc21_23.2: = specific_function %MakeSelf, @MakeSelf(%T) [symbolic = %MakeSelf.specific_fn.loc21_23.2 (constants.%MakeSelf.specific_fn)] -// CHECK:STDOUT: %MakeClass.type: type = fn_type @MakeClass, @Class(%T) [symbolic = %MakeClass.type (constants.%MakeClass.type)] -// CHECK:STDOUT: %MakeClass: @F.%MakeClass.type (%MakeClass.type) = struct_value () [symbolic = %MakeClass (constants.%MakeClass)] -// CHECK:STDOUT: %MakeClass.specific_fn.loc22_19.2: = specific_function %MakeClass, @MakeClass(%T) [symbolic = %MakeClass.specific_fn.loc22_19.2 (constants.%MakeClass.specific_fn)] +// CHECK:STDOUT: %Class.MakeSelf.type: type = fn_type @Class.MakeSelf, @Class(%T) [symbolic = %Class.MakeSelf.type (constants.%Class.MakeSelf.type)] +// CHECK:STDOUT: %Class.MakeSelf: @Class.F.%Class.MakeSelf.type (%Class.MakeSelf.type) = struct_value () [symbolic = %Class.MakeSelf (constants.%Class.MakeSelf)] +// CHECK:STDOUT: %Class.MakeSelf.specific_fn.loc21_23.2: = specific_function %Class.MakeSelf, @Class.MakeSelf(%T) [symbolic = %Class.MakeSelf.specific_fn.loc21_23.2 (constants.%Class.MakeSelf.specific_fn)] +// CHECK:STDOUT: %Class.MakeClass.type: type = fn_type @Class.MakeClass, @Class(%T) [symbolic = %Class.MakeClass.type (constants.%Class.MakeClass.type)] +// CHECK:STDOUT: %Class.MakeClass: @Class.F.%Class.MakeClass.type (%Class.MakeClass.type) = struct_value () [symbolic = %Class.MakeClass (constants.%Class.MakeClass)] +// CHECK:STDOUT: %Class.MakeClass.specific_fn.loc22_19.2: = specific_function %Class.MakeClass, @Class.MakeClass(%T) [symbolic = %Class.MakeClass.specific_fn.loc22_19.2 (constants.%Class.MakeClass.specific_fn)] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %Class.loc21_19.2, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness)] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %Class.loc21_19.2, (%Destroy.lookup_impl_witness) [symbolic = %Destroy.facet (constants.%Destroy.facet)] -// CHECK:STDOUT: %.loc22_5.4: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.loc22_5.4 (constants.%.d76)] -// CHECK:STDOUT: %impl.elem0.loc22_5.3: @F.%.loc22_5.4 (%.d76) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc22_5.3 (constants.%impl.elem0)] -// CHECK:STDOUT: %specific_impl_fn.loc22_5.3: = specific_impl_function %impl.elem0.loc22_5.3, @Op.1(%Destroy.facet) [symbolic = %specific_impl_fn.loc22_5.3 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %.loc22_5.4: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet [symbolic = %.loc22_5.4 (constants.%.d76)] +// CHECK:STDOUT: %impl.elem0.loc22_5.3: @Class.F.%.loc22_5.4 (%.d76) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc22_5.3 (constants.%impl.elem0)] +// CHECK:STDOUT: %specific_impl_fn.loc22_5.3: = specific_impl_function %impl.elem0.loc22_5.3, @Destroy.Op(%Destroy.facet) [symbolic = %specific_impl_fn.loc22_5.3 (constants.%specific_impl_fn)] // CHECK:STDOUT: %ptr: type = ptr_type %Class.loc21_19.2 [symbolic = %ptr (constants.%ptr.955)] // CHECK:STDOUT: %require_complete.loc22: = require_complete_type %ptr [symbolic = %require_complete.loc22 (constants.%require_complete.2ae)] // CHECK:STDOUT: // CHECK:STDOUT: fn() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %c.patt: @F.%pattern_type (%pattern_type.3c1) = binding_pattern c [concrete] -// CHECK:STDOUT: %c.var_patt: @F.%pattern_type (%pattern_type.3c1) = var_pattern %c.patt [concrete] +// CHECK:STDOUT: %c.patt: @Class.F.%pattern_type (%pattern_type.3c1) = binding_pattern c [concrete] +// CHECK:STDOUT: %c.var_patt: @Class.F.%pattern_type (%pattern_type.3c1) = var_pattern %c.patt [concrete] // CHECK:STDOUT: } -// CHECK:STDOUT: %c.var: ref @F.%Class.loc21_19.2 (%Class) = var %c.var_patt -// CHECK:STDOUT: %.loc21_23: @F.%MakeSelf.type (%MakeSelf.type) = specific_constant @Class.%MakeSelf.decl, @Class(constants.%T) [symbolic = %MakeSelf (constants.%MakeSelf)] -// CHECK:STDOUT: %MakeSelf.ref: @F.%MakeSelf.type (%MakeSelf.type) = name_ref MakeSelf, %.loc21_23 [symbolic = %MakeSelf (constants.%MakeSelf)] -// CHECK:STDOUT: %MakeSelf.specific_fn.loc21_23.1: = specific_function %MakeSelf.ref, @MakeSelf(constants.%T) [symbolic = %MakeSelf.specific_fn.loc21_23.2 (constants.%MakeSelf.specific_fn)] -// CHECK:STDOUT: %.loc21_5.1: ref @F.%Class.loc21_19.2 (%Class) = splice_block %c.var {} -// CHECK:STDOUT: %MakeSelf.call: init @F.%Class.loc21_19.2 (%Class) = call %MakeSelf.specific_fn.loc21_23.1() to %.loc21_5.1 -// CHECK:STDOUT: assign %c.var, %MakeSelf.call +// CHECK:STDOUT: %c.var: ref @Class.F.%Class.loc21_19.2 (%Class) = var %c.var_patt +// CHECK:STDOUT: %.loc21_23: @Class.F.%Class.MakeSelf.type (%Class.MakeSelf.type) = specific_constant @Class.%Class.MakeSelf.decl, @Class(constants.%T) [symbolic = %Class.MakeSelf (constants.%Class.MakeSelf)] +// CHECK:STDOUT: %MakeSelf.ref: @Class.F.%Class.MakeSelf.type (%Class.MakeSelf.type) = name_ref MakeSelf, %.loc21_23 [symbolic = %Class.MakeSelf (constants.%Class.MakeSelf)] +// CHECK:STDOUT: %Class.MakeSelf.specific_fn.loc21_23.1: = specific_function %MakeSelf.ref, @Class.MakeSelf(constants.%T) [symbolic = %Class.MakeSelf.specific_fn.loc21_23.2 (constants.%Class.MakeSelf.specific_fn)] +// CHECK:STDOUT: %.loc21_5.1: ref @Class.F.%Class.loc21_19.2 (%Class) = splice_block %c.var {} +// CHECK:STDOUT: %Class.MakeSelf.call: init @Class.F.%Class.loc21_19.2 (%Class) = call %Class.MakeSelf.specific_fn.loc21_23.1() to %.loc21_5.1 +// CHECK:STDOUT: assign %c.var, %Class.MakeSelf.call // CHECK:STDOUT: %.loc21_19: type = splice_block %Class.loc21_19.1 [symbolic = %Class.loc21_19.2 (constants.%Class)] { // CHECK:STDOUT: %Class.ref: %Class.type = name_ref Class, file.%Class.decl [concrete = constants.%Class.generic] // CHECK:STDOUT: %T.ref: type = name_ref T, @Class.%T.loc15_13.2 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Class.loc21_19.1: type = class_type @Class, @Class(constants.%T) [symbolic = %Class.loc21_19.2 (constants.%Class)] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: ref @F.%Class.loc21_19.2 (%Class) = bind_name c, %c.var +// CHECK:STDOUT: %c: ref @Class.F.%Class.loc21_19.2 (%Class) = bind_name c, %c.var // CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %s.patt: @F.%pattern_type (%pattern_type.3c1) = binding_pattern s [concrete] -// CHECK:STDOUT: %s.var_patt: @F.%pattern_type (%pattern_type.3c1) = var_pattern %s.patt [concrete] +// CHECK:STDOUT: %s.patt: @Class.F.%pattern_type (%pattern_type.3c1) = binding_pattern s [concrete] +// CHECK:STDOUT: %s.var_patt: @Class.F.%pattern_type (%pattern_type.3c1) = var_pattern %s.patt [concrete] // CHECK:STDOUT: } -// CHECK:STDOUT: %s.var: ref @F.%Class.loc21_19.2 (%Class) = var %s.var_patt -// CHECK:STDOUT: %.loc22_19: @F.%MakeClass.type (%MakeClass.type) = specific_constant @Class.%MakeClass.decl, @Class(constants.%T) [symbolic = %MakeClass (constants.%MakeClass)] -// CHECK:STDOUT: %MakeClass.ref: @F.%MakeClass.type (%MakeClass.type) = name_ref MakeClass, %.loc22_19 [symbolic = %MakeClass (constants.%MakeClass)] -// CHECK:STDOUT: %MakeClass.specific_fn.loc22_19.1: = specific_function %MakeClass.ref, @MakeClass(constants.%T) [symbolic = %MakeClass.specific_fn.loc22_19.2 (constants.%MakeClass.specific_fn)] -// CHECK:STDOUT: %.loc22_5.1: ref @F.%Class.loc21_19.2 (%Class) = splice_block %s.var {} -// CHECK:STDOUT: %MakeClass.call: init @F.%Class.loc21_19.2 (%Class) = call %MakeClass.specific_fn.loc22_19.1() to %.loc22_5.1 -// CHECK:STDOUT: assign %s.var, %MakeClass.call +// CHECK:STDOUT: %s.var: ref @Class.F.%Class.loc21_19.2 (%Class) = var %s.var_patt +// CHECK:STDOUT: %.loc22_19: @Class.F.%Class.MakeClass.type (%Class.MakeClass.type) = specific_constant @Class.%Class.MakeClass.decl, @Class(constants.%T) [symbolic = %Class.MakeClass (constants.%Class.MakeClass)] +// CHECK:STDOUT: %MakeClass.ref: @Class.F.%Class.MakeClass.type (%Class.MakeClass.type) = name_ref MakeClass, %.loc22_19 [symbolic = %Class.MakeClass (constants.%Class.MakeClass)] +// CHECK:STDOUT: %Class.MakeClass.specific_fn.loc22_19.1: = specific_function %MakeClass.ref, @Class.MakeClass(constants.%T) [symbolic = %Class.MakeClass.specific_fn.loc22_19.2 (constants.%Class.MakeClass.specific_fn)] +// CHECK:STDOUT: %.loc22_5.1: ref @Class.F.%Class.loc21_19.2 (%Class) = splice_block %s.var {} +// CHECK:STDOUT: %Class.MakeClass.call: init @Class.F.%Class.loc21_19.2 (%Class) = call %Class.MakeClass.specific_fn.loc22_19.1() to %.loc22_5.1 +// CHECK:STDOUT: assign %s.var, %Class.MakeClass.call // CHECK:STDOUT: %.loc22_12.1: type = splice_block %Self.ref [symbolic = %Class.loc21_19.2 (constants.%Class)] { // CHECK:STDOUT: %.loc22_12.2: type = specific_constant constants.%Class, @Class(constants.%T) [symbolic = %Class.loc21_19.2 (constants.%Class)] // CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc22_12.2 [symbolic = %Class.loc21_19.2 (constants.%Class)] // CHECK:STDOUT: } -// CHECK:STDOUT: %s: ref @F.%Class.loc21_19.2 (%Class) = bind_name s, %s.var -// CHECK:STDOUT: %impl.elem0.loc22_5.1: @F.%.loc22_5.4 (%.d76) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc22_5.3 (constants.%impl.elem0)] +// CHECK:STDOUT: %s: ref @Class.F.%Class.loc21_19.2 (%Class) = bind_name s, %s.var +// CHECK:STDOUT: %impl.elem0.loc22_5.1: @Class.F.%.loc22_5.4 (%.d76) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc22_5.3 (constants.%impl.elem0)] // CHECK:STDOUT: %bound_method.loc22_5.1: = bound_method %.loc22_5.1, %impl.elem0.loc22_5.1 -// CHECK:STDOUT: %specific_impl_fn.loc22_5.1: = specific_impl_function %impl.elem0.loc22_5.1, @Op.1(constants.%Destroy.facet) [symbolic = %specific_impl_fn.loc22_5.3 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc22_5.1: = specific_impl_function %impl.elem0.loc22_5.1, @Destroy.Op(constants.%Destroy.facet) [symbolic = %specific_impl_fn.loc22_5.3 (constants.%specific_impl_fn)] // CHECK:STDOUT: %bound_method.loc22_5.2: = bound_method %.loc22_5.1, %specific_impl_fn.loc22_5.1 -// CHECK:STDOUT: %addr.loc22_5.1: @F.%ptr (%ptr.955) = addr_of %.loc22_5.1 +// CHECK:STDOUT: %addr.loc22_5.1: @Class.F.%ptr (%ptr.955) = addr_of %.loc22_5.1 // CHECK:STDOUT: %.loc22_5.2: init %empty_tuple.type = call %bound_method.loc22_5.2(%addr.loc22_5.1) -// CHECK:STDOUT: %impl.elem0.loc22_5.2: @F.%.loc22_5.4 (%.d76) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc22_5.3 (constants.%impl.elem0)] +// CHECK:STDOUT: %impl.elem0.loc22_5.2: @Class.F.%.loc22_5.4 (%.d76) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc22_5.3 (constants.%impl.elem0)] // CHECK:STDOUT: %bound_method.loc22_5.3: = bound_method %s.var, %impl.elem0.loc22_5.2 -// CHECK:STDOUT: %specific_impl_fn.loc22_5.2: = specific_impl_function %impl.elem0.loc22_5.2, @Op.1(constants.%Destroy.facet) [symbolic = %specific_impl_fn.loc22_5.3 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc22_5.2: = specific_impl_function %impl.elem0.loc22_5.2, @Destroy.Op(constants.%Destroy.facet) [symbolic = %specific_impl_fn.loc22_5.3 (constants.%specific_impl_fn)] // CHECK:STDOUT: %bound_method.loc22_5.4: = bound_method %s.var, %specific_impl_fn.loc22_5.2 -// CHECK:STDOUT: %addr.loc22_5.2: @F.%ptr (%ptr.955) = addr_of %s.var +// CHECK:STDOUT: %addr.loc22_5.2: @Class.F.%ptr (%ptr.955) = addr_of %s.var // CHECK:STDOUT: %.loc22_5.3: init %empty_tuple.type = call %bound_method.loc22_5.4(%addr.loc22_5.2) -// CHECK:STDOUT: %impl.elem0.loc21_5.1: @F.%.loc22_5.4 (%.d76) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc22_5.3 (constants.%impl.elem0)] +// CHECK:STDOUT: %impl.elem0.loc21_5.1: @Class.F.%.loc22_5.4 (%.d76) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc22_5.3 (constants.%impl.elem0)] // CHECK:STDOUT: %bound_method.loc21_5.1: = bound_method %.loc21_5.1, %impl.elem0.loc21_5.1 -// CHECK:STDOUT: %specific_impl_fn.loc21_5.1: = specific_impl_function %impl.elem0.loc21_5.1, @Op.1(constants.%Destroy.facet) [symbolic = %specific_impl_fn.loc22_5.3 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc21_5.1: = specific_impl_function %impl.elem0.loc21_5.1, @Destroy.Op(constants.%Destroy.facet) [symbolic = %specific_impl_fn.loc22_5.3 (constants.%specific_impl_fn)] // CHECK:STDOUT: %bound_method.loc21_5.2: = bound_method %.loc21_5.1, %specific_impl_fn.loc21_5.1 -// CHECK:STDOUT: %addr.loc21_5.1: @F.%ptr (%ptr.955) = addr_of %.loc21_5.1 +// CHECK:STDOUT: %addr.loc21_5.1: @Class.F.%ptr (%ptr.955) = addr_of %.loc21_5.1 // CHECK:STDOUT: %.loc21_5.2: init %empty_tuple.type = call %bound_method.loc21_5.2(%addr.loc21_5.1) -// CHECK:STDOUT: %impl.elem0.loc21_5.2: @F.%.loc22_5.4 (%.d76) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc22_5.3 (constants.%impl.elem0)] +// CHECK:STDOUT: %impl.elem0.loc21_5.2: @Class.F.%.loc22_5.4 (%.d76) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc22_5.3 (constants.%impl.elem0)] // CHECK:STDOUT: %bound_method.loc21_5.3: = bound_method %c.var, %impl.elem0.loc21_5.2 -// CHECK:STDOUT: %specific_impl_fn.loc21_5.2: = specific_impl_function %impl.elem0.loc21_5.2, @Op.1(constants.%Destroy.facet) [symbolic = %specific_impl_fn.loc22_5.3 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc21_5.2: = specific_impl_function %impl.elem0.loc21_5.2, @Destroy.Op(constants.%Destroy.facet) [symbolic = %specific_impl_fn.loc22_5.3 (constants.%specific_impl_fn)] // CHECK:STDOUT: %bound_method.loc21_5.4: = bound_method %c.var, %specific_impl_fn.loc21_5.2 -// CHECK:STDOUT: %addr.loc21_5.2: @F.%ptr (%ptr.955) = addr_of %c.var +// CHECK:STDOUT: %addr.loc21_5.2: @Class.F.%ptr (%ptr.955) = addr_of %c.var // CHECK:STDOUT: %.loc21_5.3: init %empty_tuple.type = call %bound_method.loc21_5.4(%addr.loc21_5.2) // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -247,15 +247,15 @@ class Class(T:! type) { // CHECK:STDOUT: %T.loc15_13.1 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %MakeSelf.type => constants.%MakeSelf.type -// CHECK:STDOUT: %MakeSelf => constants.%MakeSelf -// CHECK:STDOUT: %MakeClass.type => constants.%MakeClass.type -// CHECK:STDOUT: %MakeClass => constants.%MakeClass -// CHECK:STDOUT: %F.type => constants.%F.type -// CHECK:STDOUT: %F => constants.%F +// CHECK:STDOUT: %Class.MakeSelf.type => constants.%Class.MakeSelf.type +// CHECK:STDOUT: %Class.MakeSelf => constants.%Class.MakeSelf +// CHECK:STDOUT: %Class.MakeClass.type => constants.%Class.MakeClass.type +// CHECK:STDOUT: %Class.MakeClass => constants.%Class.MakeClass +// CHECK:STDOUT: %Class.F.type => constants.%Class.F.type +// CHECK:STDOUT: %Class.F => constants.%Class.F // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @MakeSelf(constants.%T) { +// CHECK:STDOUT: specific @Class.MakeSelf(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %Class => constants.%Class // CHECK:STDOUT: %pattern_type => constants.%pattern_type.3c1 @@ -265,9 +265,9 @@ class Class(T:! type) { // CHECK:STDOUT: %Class.val => constants.%Class.val // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @MakeClass(constants.%T) { +// CHECK:STDOUT: specific @Class.MakeClass(constants.%T) { // CHECK:STDOUT: %T => constants.%T -// CHECK:STDOUT: %Class.loc19_28.2 => constants.%Class +// CHECK:STDOUT: %Class.loc19_28.1 => constants.%Class // CHECK:STDOUT: %pattern_type => constants.%pattern_type.3c1 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -275,5 +275,5 @@ class Class(T:! type) { // CHECK:STDOUT: %Class.val => constants.%Class.val // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%T) {} +// CHECK:STDOUT: specific @Class.F(constants.%T) {} // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/stringify.carbon b/toolchain/check/testdata/class/generic/stringify.carbon index e8511c15cdd6..8aaede4808de 100644 --- a/toolchain/check/testdata/class/generic/stringify.carbon +++ b/toolchain/check/testdata/class/generic/stringify.carbon @@ -273,7 +273,7 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: %Inner.decl: @Outer.%Inner.type (%Inner.type.eae) = class_decl @Inner [symbolic = @Outer.%Inner.generic (constants.%Inner.generic.137)] { // CHECK:STDOUT: %U.patt: %pattern_type.98f = symbolic_binding_pattern U, 1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %U.loc5_15.1: type = bind_symbolic_name U, 1 [symbolic = %U.loc5_15.2 (constants.%U)] +// CHECK:STDOUT: %U.loc5_15.2: type = bind_symbolic_name U, 1 [symbolic = %U.loc5_15.1 (constants.%U)] // CHECK:STDOUT: } // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] @@ -285,8 +285,8 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic class @Inner(@Outer.%T.loc4_13.2: type, %U.loc5_15.1: type) { -// CHECK:STDOUT: %U.loc5_15.2: type = bind_symbolic_name U, 1 [symbolic = %U.loc5_15.2 (constants.%U)] +// CHECK:STDOUT: generic class @Inner(@Outer.%T.loc4_13.2: type, %U.loc5_15.2: type) { +// CHECK:STDOUT: %U.loc5_15.1: type = bind_symbolic_name U, 1 [symbolic = %U.loc5_15.1 (constants.%U)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -313,7 +313,7 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Inner(constants.%T, constants.%U) { -// CHECK:STDOUT: %U.loc5_15.2 => constants.%U +// CHECK:STDOUT: %U.loc5_15.1 => constants.%U // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Outer(constants.%ptr.c28) { @@ -325,7 +325,7 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Inner(constants.%ptr.c28, constants.%ptr.1bb) { -// CHECK:STDOUT: %U.loc5_15.2 => constants.%ptr.1bb +// CHECK:STDOUT: %U.loc5_15.1 => constants.%ptr.1bb // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: } @@ -349,18 +349,18 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_123.fff, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_123.fff, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_123.fff, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_123.fff, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_123.f7f: %i32 = int_value 123 [concrete] // CHECK:STDOUT: %C.4c3: type = class_type @C, @C(%int_123.f7f) [concrete] // CHECK:STDOUT: %pattern_type.1b4: type = pattern_type %C.4c3 [concrete] @@ -375,8 +375,8 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -403,12 +403,12 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: %.loc13_13.1: type = splice_block %C [concrete = constants.%C.4c3] { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, %C.decl [concrete = constants.%C.generic] // CHECK:STDOUT: %int_123: Core.IntLiteral = int_value 123 [concrete = constants.%int_123.fff] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc13_13.1: = bound_method %int_123, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc13_13.1: = bound_method %int_123, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc13_13.2: = bound_method %int_123, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc13_13.2(%int_123) [concrete = constants.%int_123.f7f] -// CHECK:STDOUT: %.loc13_13.2: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_123.f7f] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc13_13.2(%int_123) [concrete = constants.%int_123.f7f] +// CHECK:STDOUT: %.loc13_13.2: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_123.f7f] // CHECK:STDOUT: %.loc13_13.3: %i32 = converted %int_123, %.loc13_13.2 [concrete = constants.%int_123.f7f] // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%int_123.f7f) [concrete = constants.%C.4c3] // CHECK:STDOUT: } @@ -472,30 +472,30 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %D.val.413: %D = struct_value (%int_1.5d2, %int_2.ef8) [concrete] // CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [concrete] // CHECK:STDOUT: %int_4.0c1: Core.IntLiteral = int_value 4 [concrete] -// CHECK:STDOUT: %Convert.bound.b30: = bound_method %int_3.1ba, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.047: = bound_method %int_3.1ba, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.b30: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.047: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_3.822: %i32 = int_value 3 [concrete] -// CHECK:STDOUT: %Convert.bound.ac3: = bound_method %int_4.0c1, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.1da: = bound_method %int_4.0c1, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ac3: = bound_method %int_4.0c1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.1da: = bound_method %int_4.0c1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_4.940: %i32 = int_value 4 [concrete] // CHECK:STDOUT: %D.val.835: %D = struct_value (%int_3.822, %int_4.940) [concrete] // CHECK:STDOUT: } @@ -509,8 +509,8 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -538,21 +538,21 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %.loc25_25.1: %struct_type.a.b.cfd = struct_literal (%int_1, %int_2) -// CHECK:STDOUT: %impl.elem0.loc25_25.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc25_25.1: = bound_method %int_1, %impl.elem0.loc25_25.1 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc25_25.1: = specific_function %impl.elem0.loc25_25.1, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc25_25.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc25_25.1: = bound_method %int_1, %impl.elem0.loc25_25.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc25_25.1: = specific_function %impl.elem0.loc25_25.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc25_25.2: = bound_method %int_1, %specific_fn.loc25_25.1 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc25_25.1: init %i32 = call %bound_method.loc25_25.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc25_25.2: init %i32 = converted %int_1, %int.convert_checked.loc25_25.1 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc25_25.1: init %i32 = call %bound_method.loc25_25.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc25_25.2: init %i32 = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc25_25.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc25_25.3: ref %D = temporary_storage // CHECK:STDOUT: %.loc25_25.4: ref %i32 = class_element_access %.loc25_25.3, element0 // CHECK:STDOUT: %.loc25_25.5: init %i32 = initialize_from %.loc25_25.2 to %.loc25_25.4 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %impl.elem0.loc25_25.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc25_25.3: = bound_method %int_2, %impl.elem0.loc25_25.2 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc25_25.2: = specific_function %impl.elem0.loc25_25.2, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc25_25.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc25_25.3: = bound_method %int_2, %impl.elem0.loc25_25.2 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc25_25.2: = specific_function %impl.elem0.loc25_25.2, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc25_25.4: = bound_method %int_2, %specific_fn.loc25_25.2 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc25_25.2: init %i32 = call %bound_method.loc25_25.4(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc25_25.6: init %i32 = converted %int_2, %int.convert_checked.loc25_25.2 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc25_25.2: init %i32 = call %bound_method.loc25_25.4(%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc25_25.6: init %i32 = converted %int_2, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc25_25.2 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc25_25.7: ref %i32 = class_element_access %.loc25_25.3, element1 // CHECK:STDOUT: %.loc25_25.8: init %i32 = initialize_from %.loc25_25.6 to %.loc25_25.7 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc25_25.9: init %D = class_init (%.loc25_25.5, %.loc25_25.8), %.loc25_25.3 [concrete = constants.%D.val.413] @@ -603,21 +603,21 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete = constants.%int_4.0c1] // CHECK:STDOUT: %.loc25_53.1: %struct_type.a.b.cfd = struct_literal (%int_3, %int_4) // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] -// CHECK:STDOUT: %impl.elem0.loc25_53.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc25_53.1: = bound_method %int_3, %impl.elem0.loc25_53.1 [concrete = constants.%Convert.bound.b30] -// CHECK:STDOUT: %specific_fn.loc25_53.1: = specific_function %impl.elem0.loc25_53.1, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc25_53.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc25_53.1: = bound_method %int_3, %impl.elem0.loc25_53.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.b30] +// CHECK:STDOUT: %specific_fn.loc25_53.1: = specific_function %impl.elem0.loc25_53.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc25_53.2: = bound_method %int_3, %specific_fn.loc25_53.1 [concrete = constants.%bound_method.047] -// CHECK:STDOUT: %int.convert_checked.loc25_53.1: init %i32 = call %bound_method.loc25_53.2(%int_3) [concrete = constants.%int_3.822] -// CHECK:STDOUT: %.loc25_53.2: init %i32 = converted %int_3, %int.convert_checked.loc25_53.1 [concrete = constants.%int_3.822] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc25_53.1: init %i32 = call %bound_method.loc25_53.2(%int_3) [concrete = constants.%int_3.822] +// CHECK:STDOUT: %.loc25_53.2: init %i32 = converted %int_3, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc25_53.1 [concrete = constants.%int_3.822] // CHECK:STDOUT: %.loc25_53.3: ref %D = temporary_storage // CHECK:STDOUT: %.loc25_53.4: ref %i32 = class_element_access %.loc25_53.3, element0 // CHECK:STDOUT: %.loc25_53.5: init %i32 = initialize_from %.loc25_53.2 to %.loc25_53.4 [concrete = constants.%int_3.822] -// CHECK:STDOUT: %impl.elem0.loc25_53.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc25_53.3: = bound_method %int_4, %impl.elem0.loc25_53.2 [concrete = constants.%Convert.bound.ac3] -// CHECK:STDOUT: %specific_fn.loc25_53.2: = specific_function %impl.elem0.loc25_53.2, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc25_53.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc25_53.3: = bound_method %int_4, %impl.elem0.loc25_53.2 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ac3] +// CHECK:STDOUT: %specific_fn.loc25_53.2: = specific_function %impl.elem0.loc25_53.2, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc25_53.4: = bound_method %int_4, %specific_fn.loc25_53.2 [concrete = constants.%bound_method.1da] -// CHECK:STDOUT: %int.convert_checked.loc25_53.2: init %i32 = call %bound_method.loc25_53.4(%int_4) [concrete = constants.%int_4.940] -// CHECK:STDOUT: %.loc25_53.6: init %i32 = converted %int_4, %int.convert_checked.loc25_53.2 [concrete = constants.%int_4.940] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc25_53.2: init %i32 = call %bound_method.loc25_53.4(%int_4) [concrete = constants.%int_4.940] +// CHECK:STDOUT: %.loc25_53.6: init %i32 = converted %int_4, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc25_53.2 [concrete = constants.%int_4.940] // CHECK:STDOUT: %.loc25_53.7: ref %i32 = class_element_access %.loc25_53.3, element1 // CHECK:STDOUT: %.loc25_53.8: init %i32 = initialize_from %.loc25_53.6 to %.loc25_53.7 [concrete = constants.%int_4.940] // CHECK:STDOUT: %.loc25_53.9: init %D = class_init (%.loc25_53.5, %.loc25_53.8), %.loc25_53.3 [concrete = constants.%D.val.835] diff --git a/toolchain/check/testdata/class/generic_method.carbon b/toolchain/check/testdata/class/generic_method.carbon index aaa457067399..5e6d14b6d1d8 100644 --- a/toolchain/check/testdata/class/generic_method.carbon +++ b/toolchain/check/testdata/class/generic_method.carbon @@ -31,8 +31,8 @@ fn Class(T:! type).F[self: Self](n: T) {} // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T [symbolic] // CHECK:STDOUT: %pattern_type.3c1: type = pattern_type %Class [symbolic] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %T [symbolic] -// CHECK:STDOUT: %F.type: type = fn_type @F, @Class(%T) [symbolic] -// CHECK:STDOUT: %F: %F.type = struct_value () [symbolic] +// CHECK:STDOUT: %Class.F.type: type = fn_type @Class.F, @Class(%T) [symbolic] +// CHECK:STDOUT: %Class.F: %Class.F.type = struct_value () [symbolic] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %T} [symbolic] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a [symbolic] // CHECK:STDOUT: %require_complete.4f8: = require_complete_type %Class [symbolic] @@ -56,22 +56,22 @@ fn Class(T:! type).F[self: Self](n: T) {} // CHECK:STDOUT: } { // CHECK:STDOUT: %T.loc15_13.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc15_13.1 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [symbolic = constants.%F] { -// CHECK:STDOUT: %self.patt: @F.%pattern_type.loc17_8 (%pattern_type.3c1) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.%pattern_type.loc17_8 (%pattern_type.3c1) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %n.patt: @F.%pattern_type.loc17_20 (%pattern_type.7dc) = binding_pattern n [concrete] -// CHECK:STDOUT: %n.param_patt: @F.%pattern_type.loc17_20 (%pattern_type.7dc) = value_param_pattern %n.patt, call_param1 [concrete] +// CHECK:STDOUT: %Class.F.decl: %Class.F.type = fn_decl @Class.F [symbolic = constants.%Class.F] { +// CHECK:STDOUT: %self.patt: @Class.F.%pattern_type.loc17_8 (%pattern_type.3c1) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @Class.F.%pattern_type.loc17_8 (%pattern_type.3c1) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %n.patt: @Class.F.%pattern_type.loc17_20 (%pattern_type.7dc) = binding_pattern n [concrete] +// CHECK:STDOUT: %n.param_patt: @Class.F.%pattern_type.loc17_20 (%pattern_type.7dc) = value_param_pattern %n.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.loc20: type = bind_symbolic_name T, 0 [symbolic = @Class.%T.loc15_13.1 (constants.%T)] -// CHECK:STDOUT: %self.param.loc20: @F.%Class (%Class) = value_param call_param0 +// CHECK:STDOUT: %self.param.loc20: @Class.F.%Class (%Class) = value_param call_param0 // CHECK:STDOUT: %.loc20_28.1: type = splice_block %Self.ref.loc20 [symbolic = %Class (constants.%Class)] { // CHECK:STDOUT: %.loc20_28.2: type = specific_constant constants.%Class, @Class(constants.%T) [symbolic = %Class (constants.%Class)] // CHECK:STDOUT: %Self.ref.loc20: type = name_ref Self, %.loc20_28.2 [symbolic = %Class (constants.%Class)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self.loc20: @F.%Class (%Class) = bind_name self, %self.param.loc20 -// CHECK:STDOUT: %n.param.loc20: @F.%T.loc17 (%T) = value_param call_param1 +// CHECK:STDOUT: %self.loc20: @Class.F.%Class (%Class) = bind_name self, %self.param.loc20 +// CHECK:STDOUT: %n.param.loc20: @Class.F.%T.loc17 (%T) = value_param call_param1 // CHECK:STDOUT: %T.ref.loc20: type = name_ref T, %T.loc20 [symbolic = %T.loc17 (constants.%T)] -// CHECK:STDOUT: %n.loc20: @F.%T.loc17 (%T) = bind_name n, %n.param.loc20 +// CHECK:STDOUT: %n.loc20: @Class.F.%T.loc17 (%T) = bind_name n, %n.param.loc20 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -82,29 +82,29 @@ fn Class(T:! type).F[self: Self](n: T) {} // CHECK:STDOUT: %require_complete: = require_complete_type %T.loc15_13.1 [symbolic = %require_complete (constants.%require_complete.4ae)] // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T.loc15_13.1) [symbolic = %Class (constants.%Class)] // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T.loc15_13.1 [symbolic = %Class.elem (constants.%Class.elem)] -// CHECK:STDOUT: %F.type: type = fn_type @F, @Class(%T.loc15_13.1) [symbolic = %F.type (constants.%F.type)] -// CHECK:STDOUT: %F: @Class.%F.type (%F.type) = struct_value () [symbolic = %F (constants.%F)] +// CHECK:STDOUT: %Class.F.type: type = fn_type @Class.F, @Class(%T.loc15_13.1) [symbolic = %Class.F.type (constants.%Class.F.type)] +// CHECK:STDOUT: %Class.F: @Class.%Class.F.type (%Class.F.type) = struct_value () [symbolic = %Class.F (constants.%Class.F)] // CHECK:STDOUT: %struct_type.a.loc18_1.2: type = struct_type {.a: @Class.%T.loc15_13.1 (%T)} [symbolic = %struct_type.a.loc18_1.2 (constants.%struct_type.a)] // CHECK:STDOUT: %complete_type.loc18_1.2: = complete_type_witness %struct_type.a.loc18_1.2 [symbolic = %complete_type.loc18_1.2 (constants.%complete_type)] // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc15_13.2 [symbolic = %T.loc15_13.1 (constants.%T)] // CHECK:STDOUT: %.loc16: @Class.%Class.elem (%Class.elem) = field_decl a, element0 [concrete] -// CHECK:STDOUT: %F.decl: @Class.%F.type (%F.type) = fn_decl @F [symbolic = @Class.%F (constants.%F)] { -// CHECK:STDOUT: %self.patt: @F.%pattern_type.loc17_8 (%pattern_type.3c1) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.%pattern_type.loc17_8 (%pattern_type.3c1) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %n.patt: @F.%pattern_type.loc17_20 (%pattern_type.7dc) = binding_pattern n [concrete] -// CHECK:STDOUT: %n.param_patt: @F.%pattern_type.loc17_20 (%pattern_type.7dc) = value_param_pattern %n.patt, call_param1 [concrete] +// CHECK:STDOUT: %Class.F.decl: @Class.%Class.F.type (%Class.F.type) = fn_decl @Class.F [symbolic = @Class.%Class.F (constants.%Class.F)] { +// CHECK:STDOUT: %self.patt: @Class.F.%pattern_type.loc17_8 (%pattern_type.3c1) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @Class.F.%pattern_type.loc17_8 (%pattern_type.3c1) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %n.patt: @Class.F.%pattern_type.loc17_20 (%pattern_type.7dc) = binding_pattern n [concrete] +// CHECK:STDOUT: %n.param_patt: @Class.F.%pattern_type.loc17_20 (%pattern_type.7dc) = value_param_pattern %n.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param.loc17: @F.%Class (%Class) = value_param call_param0 +// CHECK:STDOUT: %self.param.loc17: @Class.F.%Class (%Class) = value_param call_param0 // CHECK:STDOUT: %.loc17_14.1: type = splice_block %Self.ref.loc17 [symbolic = %Class (constants.%Class)] { // CHECK:STDOUT: %.loc17_14.2: type = specific_constant constants.%Class, @Class(constants.%T) [symbolic = %Class (constants.%Class)] // CHECK:STDOUT: %Self.ref.loc17: type = name_ref Self, %.loc17_14.2 [symbolic = %Class (constants.%Class)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self.loc17: @F.%Class (%Class) = bind_name self, %self.param.loc17 -// CHECK:STDOUT: %n.param.loc17: @F.%T.loc17 (%T) = value_param call_param1 +// CHECK:STDOUT: %self.loc17: @Class.F.%Class (%Class) = bind_name self, %self.param.loc17 +// CHECK:STDOUT: %n.param.loc17: @Class.F.%T.loc17 (%T) = value_param call_param1 // CHECK:STDOUT: %T.ref.loc17: type = name_ref T, @Class.%T.loc15_13.2 [symbolic = %T.loc17 (constants.%T)] -// CHECK:STDOUT: %n.loc17: @F.%T.loc17 (%T) = bind_name n, %n.param.loc17 +// CHECK:STDOUT: %n.loc17: @Class.F.%T.loc17 (%T) = bind_name n, %n.param.loc17 // CHECK:STDOUT: } // CHECK:STDOUT: %struct_type.a.loc18_1.1: type = struct_type {.a: %T} [symbolic = %struct_type.a.loc18_1.2 (constants.%struct_type.a)] // CHECK:STDOUT: %complete_type.loc18_1.1: = complete_type_witness %struct_type.a.loc18_1.1 [symbolic = %complete_type.loc18_1.2 (constants.%complete_type)] @@ -114,11 +114,11 @@ fn Class(T:! type).F[self: Self](n: T) {} // CHECK:STDOUT: .Self = constants.%Class // CHECK:STDOUT: .T = // CHECK:STDOUT: .a = %.loc16 -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %Class.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(@Class.%T.loc15_13.2: type) { +// CHECK:STDOUT: generic fn @Class.F(@Class.%T.loc15_13.2: type) { // CHECK:STDOUT: %T.loc17: type = bind_symbolic_name T, 0 [symbolic = %T.loc17 (constants.%T)] // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T.loc17) [symbolic = %Class (constants.%Class)] // CHECK:STDOUT: %pattern_type.loc17_8: type = pattern_type %Class [symbolic = %pattern_type.loc17_8 (constants.%pattern_type.3c1)] @@ -128,7 +128,7 @@ fn Class(T:! type).F[self: Self](n: T) {} // CHECK:STDOUT: %require_complete.loc20_26: = require_complete_type %Class [symbolic = %require_complete.loc20_26 (constants.%require_complete.4f8)] // CHECK:STDOUT: %require_complete.loc20_35: = require_complete_type %T.loc17 [symbolic = %require_complete.loc20_35 (constants.%require_complete.4ae)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param.loc20: @F.%Class (%Class), %n.param.loc20: @F.%T.loc17 (%T)) { +// CHECK:STDOUT: fn(%self.param.loc20: @Class.F.%Class (%Class), %n.param.loc20: @Class.F.%T.loc17 (%T)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -141,13 +141,13 @@ fn Class(T:! type).F[self: Self](n: T) {} // CHECK:STDOUT: %require_complete => constants.%require_complete.4ae // CHECK:STDOUT: %Class => constants.%Class // CHECK:STDOUT: %Class.elem => constants.%Class.elem -// CHECK:STDOUT: %F.type => constants.%F.type -// CHECK:STDOUT: %F => constants.%F +// CHECK:STDOUT: %Class.F.type => constants.%Class.F.type +// CHECK:STDOUT: %Class.F => constants.%Class.F // CHECK:STDOUT: %struct_type.a.loc18_1.2 => constants.%struct_type.a // CHECK:STDOUT: %complete_type.loc18_1.2 => constants.%complete_type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%T) { +// CHECK:STDOUT: specific @Class.F(constants.%T) { // CHECK:STDOUT: %T.loc17 => constants.%T // CHECK:STDOUT: %Class => constants.%Class // CHECK:STDOUT: %pattern_type.loc17_8 => constants.%pattern_type.3c1 diff --git a/toolchain/check/testdata/class/generic_vs_params.carbon b/toolchain/check/testdata/class/generic_vs_params.carbon index 3ef04b5d0c9e..95ebaef90bf3 100644 --- a/toolchain/check/testdata/class/generic_vs_params.carbon +++ b/toolchain/check/testdata/class/generic_vs_params.carbon @@ -249,7 +249,7 @@ class Foo[T:! type]; // CHECK:STDOUT: %GenericAndParams.decl: @C.%GenericAndParams.type (%GenericAndParams.type.3ce) = class_decl @GenericAndParams.loc10 [symbolic = @C.%GenericAndParams.generic (constants.%GenericAndParams.generic.54a)] { // CHECK:STDOUT: %U.patt: %pattern_type.98f = symbolic_binding_pattern U, 1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %U.loc10_26.1: type = bind_symbolic_name U, 1 [symbolic = %U.loc10_26.2 (constants.%U)] +// CHECK:STDOUT: %U.loc10_26.2: type = bind_symbolic_name U, 1 [symbolic = %U.loc10_26.1 (constants.%U)] // CHECK:STDOUT: } // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] @@ -275,8 +275,8 @@ class Foo[T:! type]; // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic class @GenericAndParams.loc10(@C.%T.loc8_9.2: type, %U.loc10_26.1: type) { -// CHECK:STDOUT: %U.loc10_26.2: type = bind_symbolic_name U, 1 [symbolic = %U.loc10_26.2 (constants.%U)] +// CHECK:STDOUT: generic class @GenericAndParams.loc10(@C.%T.loc8_9.2: type, %U.loc10_26.2: type) { +// CHECK:STDOUT: %U.loc10_26.1: type = bind_symbolic_name U, 1 [symbolic = %U.loc10_26.1 (constants.%U)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -335,7 +335,7 @@ class Foo[T:! type]; // CHECK:STDOUT: specific @GenericNoParams(constants.%T) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @GenericAndParams.loc10(constants.%T, constants.%U) { -// CHECK:STDOUT: %U.loc10_26.2 => constants.%U +// CHECK:STDOUT: %U.loc10_26.1 => constants.%U // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @GenericAndParams.loc6(constants.%X) { @@ -358,7 +358,7 @@ class Foo[T:! type]; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @GenericAndParams.loc10(constants.%X, constants.%X) { -// CHECK:STDOUT: %U.loc10_26.2 => constants.%X +// CHECK:STDOUT: %U.loc10_26.1 => constants.%X // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/import.carbon b/toolchain/check/testdata/class/import.carbon index 2bc03acf304d..c7f4196d57f8 100644 --- a/toolchain/check/testdata/class/import.carbon +++ b/toolchain/check/testdata/class/import.carbon @@ -69,13 +69,13 @@ fn Run() { // CHECK:STDOUT: %complete_type.1ec: = complete_type_witness %struct_type.x [concrete] // CHECK:STDOUT: %ForwardDeclared: type = class_type @ForwardDeclared [concrete] // CHECK:STDOUT: %pattern_type.1b8: type = pattern_type %ForwardDeclared [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %ForwardDeclared.F.type: type = fn_type @ForwardDeclared.F [concrete] +// CHECK:STDOUT: %ForwardDeclared.F: %ForwardDeclared.F.type = struct_value () [concrete] // CHECK:STDOUT: %ptr: type = ptr_type %ForwardDeclared [concrete] // CHECK:STDOUT: %pattern_type.ebb: type = pattern_type %ptr [concrete] // CHECK:STDOUT: %pattern_type.f6d: type = pattern_type auto [concrete] -// CHECK:STDOUT: %G.type: type = fn_type @G [concrete] -// CHECK:STDOUT: %G: %G.type = struct_value () [concrete] +// CHECK:STDOUT: %ForwardDeclared.G.type: type = fn_type @ForwardDeclared.G [concrete] +// CHECK:STDOUT: %ForwardDeclared.G: %ForwardDeclared.G.type = struct_value () [concrete] // CHECK:STDOUT: %Incomplete: type = class_type @Incomplete [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -127,7 +127,7 @@ fn Run() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @ForwardDeclared { -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { +// CHECK:STDOUT: %ForwardDeclared.F.decl: %ForwardDeclared.F.type = fn_decl @ForwardDeclared.F [concrete = constants.%ForwardDeclared.F] { // CHECK:STDOUT: %self.patt: %pattern_type.1b8 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.1b8 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -135,7 +135,7 @@ fn Run() { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%ForwardDeclared [concrete = constants.%ForwardDeclared] // CHECK:STDOUT: %self: %ForwardDeclared = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { +// CHECK:STDOUT: %ForwardDeclared.G.decl: %ForwardDeclared.G.type = fn_decl @ForwardDeclared.G [concrete = constants.%ForwardDeclared.G] { // CHECK:STDOUT: %self.patt: %pattern_type.ebb = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.ebb = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %.loc15_8: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] @@ -153,15 +153,15 @@ fn Run() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%ForwardDeclared -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .F = %ForwardDeclared.F.decl +// CHECK:STDOUT: .G = %ForwardDeclared.G.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Incomplete; // CHECK:STDOUT: -// CHECK:STDOUT: fn @F(%self.param: %ForwardDeclared); +// CHECK:STDOUT: fn @ForwardDeclared.F(%self.param: %ForwardDeclared); // CHECK:STDOUT: -// CHECK:STDOUT: fn @G(%self.param: %ptr); +// CHECK:STDOUT: fn @ForwardDeclared.G(%self.param: %ptr); // CHECK:STDOUT: // CHECK:STDOUT: --- b.carbon // CHECK:STDOUT: @@ -185,57 +185,57 @@ fn Run() { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.9ba: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.6da: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.6da: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0b2: type = fn_type @Convert.1, @ImplicitAs.impl.c81(%To) [symbolic] -// CHECK:STDOUT: %Convert.6d7: %Convert.type.0b2 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.e34: = impl_witness imports.%ImplicitAs.impl_witness_table.e36, @ImplicitAs.impl.c81(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.ed5: type = fn_type @Convert.1, @ImplicitAs.impl.c81(%int_32) [concrete] -// CHECK:STDOUT: %Convert.16d: %Convert.type.ed5 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0b2: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.6d7: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0b2 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.e34: = impl_witness imports.%ImplicitAs.impl_witness_table.e36, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.ed5: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.16d: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.ed5 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.9ba = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.e34) [concrete] -// CHECK:STDOUT: %.d6a: type = fn_type_with_self_type %Convert.type.6da, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.43e: = bound_method %int_1.5b8, %Convert.16d [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.16d, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.947: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.d6a: type = fn_type_with_self_type %ImplicitAs.Convert.type.6da, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.43e: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.16d [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.16d, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.947: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.47b: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %Field.val: %Field = struct_value (%int_1.47b) [concrete] // CHECK:STDOUT: %Field.elem: type = unbound_element_type %Field, %i32 [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] -// CHECK:STDOUT: %Convert.bound.918: = bound_method %int_2.ecc, %Convert.16d [concrete] -// CHECK:STDOUT: %bound_method.c74: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.918: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.16d [concrete] +// CHECK:STDOUT: %bound_method.c74: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.d0d: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %ForwardDeclared.7b34f2.1: type = class_type @ForwardDeclared.1 [concrete] // CHECK:STDOUT: %pattern_type.1b8: type = pattern_type %ForwardDeclared.7b34f2.1 [concrete] // CHECK:STDOUT: %ForwardDeclared.val: %ForwardDeclared.7b34f2.1 = struct_value () [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %G.type: type = fn_type @G [concrete] -// CHECK:STDOUT: %G: %G.type = struct_value () [concrete] +// CHECK:STDOUT: %ForwardDeclared.F.type: type = fn_type @ForwardDeclared.F [concrete] +// CHECK:STDOUT: %ForwardDeclared.F: %ForwardDeclared.F.type = struct_value () [concrete] +// CHECK:STDOUT: %ForwardDeclared.G.type: type = fn_type @ForwardDeclared.G [concrete] +// CHECK:STDOUT: %ForwardDeclared.G: %ForwardDeclared.G.type = struct_value () [concrete] // CHECK:STDOUT: %ptr.6cf: type = ptr_type %ForwardDeclared.7b34f2.1 [concrete] // CHECK:STDOUT: %pattern_type.ebb: type = pattern_type %ptr.6cf [concrete] // CHECK:STDOUT: %Incomplete: type = class_type @Incomplete [concrete] // CHECK:STDOUT: %ptr.c62: type = ptr_type %Incomplete [concrete] // CHECK:STDOUT: %pattern_type.275: type = pattern_type %ptr.c62 [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.7f0: type = fn_type @Op.1, @Destroy.impl(%ptr.c62) [concrete] -// CHECK:STDOUT: %Op.90d: %Op.type.7f0 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.7f0: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%ptr.c62) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.90d: %T.as.Destroy.impl.Op.type.7f0 = struct_value () [concrete] // CHECK:STDOUT: %ptr.c22: type = ptr_type %ptr.c62 [concrete] -// CHECK:STDOUT: %Op.specific_fn.b24: = specific_function %Op.90d, @Op.1(%ptr.c62) [concrete] -// CHECK:STDOUT: %Op.type.d2a: type = fn_type @Op.1, @Destroy.impl(%ptr.6cf) [concrete] -// CHECK:STDOUT: %Op.3b0: %Op.type.d2a = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.b24: = specific_function %T.as.Destroy.impl.Op.90d, @T.as.Destroy.impl.Op(%ptr.c62) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.d2a: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%ptr.6cf) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.3b0: %T.as.Destroy.impl.Op.type.d2a = struct_value () [concrete] // CHECK:STDOUT: %ptr.df0: type = ptr_type %ptr.6cf [concrete] -// CHECK:STDOUT: %Op.specific_fn.3de: = specific_function %Op.3b0, @Op.1(%ptr.6cf) [concrete] -// CHECK:STDOUT: %Op.type.308: type = fn_type @Op.1, @Destroy.impl(%ForwardDeclared.7b34f2.1) [concrete] -// CHECK:STDOUT: %Op.9e2: %Op.type.308 = struct_value () [concrete] -// CHECK:STDOUT: %Op.specific_fn.09a: = specific_function %Op.9e2, @Op.1(%ForwardDeclared.7b34f2.1) [concrete] -// CHECK:STDOUT: %Op.type.47c: type = fn_type @Op.1, @Destroy.impl(%Field) [concrete] -// CHECK:STDOUT: %Op.576: %Op.type.47c = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.3de: = specific_function %T.as.Destroy.impl.Op.3b0, @T.as.Destroy.impl.Op(%ptr.6cf) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.308: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%ForwardDeclared.7b34f2.1) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.9e2: %T.as.Destroy.impl.Op.type.308 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.09a: = specific_function %T.as.Destroy.impl.Op.9e2, @T.as.Destroy.impl.Op(%ForwardDeclared.7b34f2.1) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.47c: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%Field) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.576: %T.as.Destroy.impl.Op.type.47c = struct_value () [concrete] // CHECK:STDOUT: %ptr.d8b: type = ptr_type %Field [concrete] -// CHECK:STDOUT: %Op.specific_fn.29d: = specific_function %Op.576, @Op.1(%Field) [concrete] -// CHECK:STDOUT: %Op.type.b74: type = fn_type @Op.1, @Destroy.impl(%Empty) [concrete] -// CHECK:STDOUT: %Op.6e4: %Op.type.b74 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.29d: = specific_function %T.as.Destroy.impl.Op.576, @T.as.Destroy.impl.Op(%Field) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.b74: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%Empty) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.6e4: %T.as.Destroy.impl.Op.type.b74 = struct_value () [concrete] // CHECK:STDOUT: %ptr.961: type = ptr_type %Empty [concrete] -// CHECK:STDOUT: %Op.specific_fn.1a5: = specific_function %Op.6e4, @Op.1(%Empty) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1a5: = specific_function %T.as.Destroy.impl.Op.6e4, @T.as.Destroy.impl.Op(%Empty) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -255,13 +255,13 @@ fn Run() { // CHECK:STDOUT: %Main.import_ref.845 = import_ref Main//a, inst24 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.4d2: %Field.elem = import_ref Main//a, loc8_8, loaded [concrete = %.d33] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a86: @ImplicitAs.impl.c81.%Convert.type (%Convert.type.0b2) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.c81.%Convert (constants.%Convert.6d7)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.e36 = impl_witness_table (%Core.import_ref.a86), @ImplicitAs.impl.c81 [concrete] +// CHECK:STDOUT: %Core.import_ref.a86: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0b2) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.6d7)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.e36 = impl_witness_table (%Core.import_ref.a86), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %.d33: %Field.elem = field_decl x, element0 [concrete] // CHECK:STDOUT: %Main.import_ref.8f24d3.2: = import_ref Main//a, loc16_1, loaded [concrete = constants.%complete_type.357] // CHECK:STDOUT: %Main.import_ref.39e731.1 = import_ref Main//a, inst59 [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.760: %F.type = import_ref Main//a, loc14_21, loaded [concrete = constants.%F] -// CHECK:STDOUT: %Main.import_ref.26e: %G.type = import_ref Main//a, loc15_27, loaded [concrete = constants.%G] +// CHECK:STDOUT: %Main.import_ref.760: %ForwardDeclared.F.type = import_ref Main//a, loc14_21, loaded [concrete = constants.%ForwardDeclared.F] +// CHECK:STDOUT: %Main.import_ref.26e: %ForwardDeclared.G.type = import_ref Main//a, loc15_27, loaded [concrete = constants.%ForwardDeclared.G] // CHECK:STDOUT: %Main.import_ref.8f24d3.3: = import_ref Main//a, loc16_1, loaded [concrete = constants.%complete_type.357] // CHECK:STDOUT: %Main.import_ref.39e731.2 = import_ref Main//a, inst59 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.42a = import_ref Main//a, loc14_21, unloaded @@ -338,12 +338,12 @@ fn Run() { // CHECK:STDOUT: %b.var: ref %Field = var %b.var_patt // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %.loc9_25.1: %struct_type.x.c96 = struct_literal (%int_1) -// CHECK:STDOUT: %impl.elem0.loc9: %.d6a = impl_witness_access constants.%ImplicitAs.impl_witness.e34, element0 [concrete = constants.%Convert.16d] -// CHECK:STDOUT: %bound_method.loc9_25.1: = bound_method %int_1, %impl.elem0.loc9 [concrete = constants.%Convert.bound.43e] -// CHECK:STDOUT: %specific_fn.loc9: = specific_function %impl.elem0.loc9, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc9: %.d6a = impl_witness_access constants.%ImplicitAs.impl_witness.e34, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.16d] +// CHECK:STDOUT: %bound_method.loc9_25.1: = bound_method %int_1, %impl.elem0.loc9 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.43e] +// CHECK:STDOUT: %specific_fn.loc9: = specific_function %impl.elem0.loc9, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc9_25.2: = bound_method %int_1, %specific_fn.loc9 [concrete = constants.%bound_method.947] -// CHECK:STDOUT: %int.convert_checked.loc9: init %i32 = call %bound_method.loc9_25.2(%int_1) [concrete = constants.%int_1.47b] -// CHECK:STDOUT: %.loc9_25.2: init %i32 = converted %int_1, %int.convert_checked.loc9 [concrete = constants.%int_1.47b] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9: init %i32 = call %bound_method.loc9_25.2(%int_1) [concrete = constants.%int_1.47b] +// CHECK:STDOUT: %.loc9_25.2: init %i32 = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9 [concrete = constants.%int_1.47b] // CHECK:STDOUT: %.loc9_25.3: ref %i32 = class_element_access %b.var, element0 // CHECK:STDOUT: %.loc9_25.4: init %i32 = initialize_from %.loc9_25.2 to %.loc9_25.3 [concrete = constants.%int_1.47b] // CHECK:STDOUT: %.loc9_25.5: init %Field = class_init (%.loc9_25.4), %b.var [concrete = constants.%Field.val] @@ -355,12 +355,12 @@ fn Run() { // CHECK:STDOUT: %x.ref: %Field.elem = name_ref x, imports.%Main.import_ref.4d2 [concrete = imports.%.d33] // CHECK:STDOUT: %.loc10_4: ref %i32 = class_element_access %b.ref, element0 // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %impl.elem0.loc10: %.d6a = impl_witness_access constants.%ImplicitAs.impl_witness.e34, element0 [concrete = constants.%Convert.16d] -// CHECK:STDOUT: %bound_method.loc10_7.1: = bound_method %int_2, %impl.elem0.loc10 [concrete = constants.%Convert.bound.918] -// CHECK:STDOUT: %specific_fn.loc10: = specific_function %impl.elem0.loc10, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc10: %.d6a = impl_witness_access constants.%ImplicitAs.impl_witness.e34, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.16d] +// CHECK:STDOUT: %bound_method.loc10_7.1: = bound_method %int_2, %impl.elem0.loc10 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.918] +// CHECK:STDOUT: %specific_fn.loc10: = specific_function %impl.elem0.loc10, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc10_7.2: = bound_method %int_2, %specific_fn.loc10 [concrete = constants.%bound_method.c74] -// CHECK:STDOUT: %int.convert_checked.loc10: init %i32 = call %bound_method.loc10_7.2(%int_2) [concrete = constants.%int_2.d0d] -// CHECK:STDOUT: %.loc10_7: init %i32 = converted %int_2, %int.convert_checked.loc10 [concrete = constants.%int_2.d0d] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10: init %i32 = call %bound_method.loc10_7.2(%int_2) [concrete = constants.%int_2.d0d] +// CHECK:STDOUT: %.loc10_7: init %i32 = converted %int_2, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10 [concrete = constants.%int_2.d0d] // CHECK:STDOUT: assign %.loc10_4, %.loc10_7 // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %c.patt: %pattern_type.1b8 = binding_pattern c [concrete] @@ -374,15 +374,15 @@ fn Run() { // CHECK:STDOUT: %ForwardDeclared.ref.loc12: type = name_ref ForwardDeclared, imports.%Main.ForwardDeclared [concrete = constants.%ForwardDeclared.7b34f2.1] // CHECK:STDOUT: %c: ref %ForwardDeclared.7b34f2.1 = bind_name c, %c.var // CHECK:STDOUT: %c.ref.loc13: ref %ForwardDeclared.7b34f2.1 = name_ref c, %c -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%Main.import_ref.760 [concrete = constants.%F] -// CHECK:STDOUT: %F.bound: = bound_method %c.ref.loc13, %F.ref +// CHECK:STDOUT: %F.ref: %ForwardDeclared.F.type = name_ref F, imports.%Main.import_ref.760 [concrete = constants.%ForwardDeclared.F] +// CHECK:STDOUT: %ForwardDeclared.F.bound: = bound_method %c.ref.loc13, %F.ref // CHECK:STDOUT: %.loc13: %ForwardDeclared.7b34f2.1 = bind_value %c.ref.loc13 -// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.bound(%.loc13) +// CHECK:STDOUT: %ForwardDeclared.F.call: init %empty_tuple.type = call %ForwardDeclared.F.bound(%.loc13) // CHECK:STDOUT: %c.ref.loc14: ref %ForwardDeclared.7b34f2.1 = name_ref c, %c -// CHECK:STDOUT: %G.ref: %G.type = name_ref G, imports.%Main.import_ref.26e [concrete = constants.%G] -// CHECK:STDOUT: %G.bound: = bound_method %c.ref.loc14, %G.ref +// CHECK:STDOUT: %G.ref: %ForwardDeclared.G.type = name_ref G, imports.%Main.import_ref.26e [concrete = constants.%ForwardDeclared.G] +// CHECK:STDOUT: %ForwardDeclared.G.bound: = bound_method %c.ref.loc14, %G.ref // CHECK:STDOUT: %addr.loc14: %ptr.6cf = addr_of %c.ref.loc14 -// CHECK:STDOUT: %G.call: init %empty_tuple.type = call %G.bound(%addr.loc14) +// CHECK:STDOUT: %ForwardDeclared.G.call: init %empty_tuple.type = call %ForwardDeclared.G.bound(%addr.loc14) // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %d.patt: %pattern_type.ebb = binding_pattern d [concrete] // CHECK:STDOUT: %d.var_patt: %pattern_type.ebb = var_pattern %d.patt [concrete] @@ -406,35 +406,35 @@ fn Run() { // CHECK:STDOUT: %ptr.loc18: type = ptr_type %Incomplete.ref [concrete = constants.%ptr.c62] // CHECK:STDOUT: } // CHECK:STDOUT: %e: ref %ptr.c62 = bind_name e, %e.var -// CHECK:STDOUT: %Op.bound.loc18: = bound_method %e.var, constants.%Op.90d -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.90d, @Op.1(constants.%ptr.c62) [concrete = constants.%Op.specific_fn.b24] -// CHECK:STDOUT: %bound_method.loc18: = bound_method %e.var, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc18: = bound_method %e.var, constants.%T.as.Destroy.impl.Op.90d +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.90d, @T.as.Destroy.impl.Op(constants.%ptr.c62) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.b24] +// CHECK:STDOUT: %bound_method.loc18: = bound_method %e.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc18: %ptr.c22 = addr_of %e.var -// CHECK:STDOUT: %no_op.loc18: init %empty_tuple.type = call %bound_method.loc18(%addr.loc18) -// CHECK:STDOUT: %Op.bound.loc16: = bound_method %d.var, constants.%Op.3b0 -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.3b0, @Op.1(constants.%ptr.6cf) [concrete = constants.%Op.specific_fn.3de] -// CHECK:STDOUT: %bound_method.loc16: = bound_method %d.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc18: init %empty_tuple.type = call %bound_method.loc18(%addr.loc18) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc16: = bound_method %d.var, constants.%T.as.Destroy.impl.Op.3b0 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.3b0, @T.as.Destroy.impl.Op(constants.%ptr.6cf) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.3de] +// CHECK:STDOUT: %bound_method.loc16: = bound_method %d.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc16_3: %ptr.df0 = addr_of %d.var -// CHECK:STDOUT: %no_op.loc16: init %empty_tuple.type = call %bound_method.loc16(%addr.loc16_3) -// CHECK:STDOUT: %Op.bound.loc12: = bound_method %c.var, constants.%Op.9e2 -// CHECK:STDOUT: %Op.specific_fn.3: = specific_function constants.%Op.9e2, @Op.1(constants.%ForwardDeclared.7b34f2.1) [concrete = constants.%Op.specific_fn.09a] -// CHECK:STDOUT: %bound_method.loc12: = bound_method %c.var, %Op.specific_fn.3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc16: init %empty_tuple.type = call %bound_method.loc16(%addr.loc16_3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc12: = bound_method %c.var, constants.%T.as.Destroy.impl.Op.9e2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.3: = specific_function constants.%T.as.Destroy.impl.Op.9e2, @T.as.Destroy.impl.Op(constants.%ForwardDeclared.7b34f2.1) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.09a] +// CHECK:STDOUT: %bound_method.loc12: = bound_method %c.var, %T.as.Destroy.impl.Op.specific_fn.3 // CHECK:STDOUT: %addr.loc12: %ptr.6cf = addr_of %c.var -// CHECK:STDOUT: %no_op.loc12: init %empty_tuple.type = call %bound_method.loc12(%addr.loc12) -// CHECK:STDOUT: %Op.bound.loc9: = bound_method %b.var, constants.%Op.576 -// CHECK:STDOUT: %Op.specific_fn.4: = specific_function constants.%Op.576, @Op.1(constants.%Field) [concrete = constants.%Op.specific_fn.29d] -// CHECK:STDOUT: %bound_method.loc9_3: = bound_method %b.var, %Op.specific_fn.4 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc12: init %empty_tuple.type = call %bound_method.loc12(%addr.loc12) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc9: = bound_method %b.var, constants.%T.as.Destroy.impl.Op.576 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.4: = specific_function constants.%T.as.Destroy.impl.Op.576, @T.as.Destroy.impl.Op(constants.%Field) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.29d] +// CHECK:STDOUT: %bound_method.loc9_3: = bound_method %b.var, %T.as.Destroy.impl.Op.specific_fn.4 // CHECK:STDOUT: %addr.loc9: %ptr.d8b = addr_of %b.var -// CHECK:STDOUT: %no_op.loc9: init %empty_tuple.type = call %bound_method.loc9_3(%addr.loc9) -// CHECK:STDOUT: %Op.bound.loc7: = bound_method %a.var, constants.%Op.6e4 -// CHECK:STDOUT: %Op.specific_fn.5: = specific_function constants.%Op.6e4, @Op.1(constants.%Empty) [concrete = constants.%Op.specific_fn.1a5] -// CHECK:STDOUT: %bound_method.loc7: = bound_method %a.var, %Op.specific_fn.5 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc9: init %empty_tuple.type = call %bound_method.loc9_3(%addr.loc9) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc7: = bound_method %a.var, constants.%T.as.Destroy.impl.Op.6e4 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.5: = specific_function constants.%T.as.Destroy.impl.Op.6e4, @T.as.Destroy.impl.Op(constants.%Empty) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.1a5] +// CHECK:STDOUT: %bound_method.loc7: = bound_method %a.var, %T.as.Destroy.impl.Op.specific_fn.5 // CHECK:STDOUT: %addr.loc7: %ptr.961 = addr_of %a.var -// CHECK:STDOUT: %no_op.loc7: init %empty_tuple.type = call %bound_method.loc7(%addr.loc7) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc7: init %empty_tuple.type = call %bound_method.loc7(%addr.loc7) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F [from "a.carbon"]; +// CHECK:STDOUT: fn @ForwardDeclared.F [from "a.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: fn @G [from "a.carbon"]; +// CHECK:STDOUT: fn @ForwardDeclared.G [from "a.carbon"]; // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/import_base.carbon b/toolchain/check/testdata/class/import_base.carbon index c6fc223a246d..d3f3250068c5 100644 --- a/toolchain/check/testdata/class/import_base.carbon +++ b/toolchain/check/testdata/class/import_base.carbon @@ -45,10 +45,10 @@ fn Run() { // CHECK:STDOUT: constants { // CHECK:STDOUT: %Base: type = class_type @Base [concrete] // CHECK:STDOUT: %pattern_type.bcc: type = pattern_type %Base [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %Unused.type: type = fn_type @Unused [concrete] -// CHECK:STDOUT: %Unused: %Unused.type = struct_value () [concrete] +// CHECK:STDOUT: %Base.F.type: type = fn_type @Base.F [concrete] +// CHECK:STDOUT: %Base.F: %Base.F.type = struct_value () [concrete] +// CHECK:STDOUT: %Base.Unused.type: type = fn_type @Base.Unused [concrete] +// CHECK:STDOUT: %Base.Unused: %Base.Unused.type = struct_value () [concrete] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] @@ -83,7 +83,7 @@ fn Run() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Base { -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { +// CHECK:STDOUT: %Base.F.decl: %Base.F.type = fn_decl @Base.F [concrete = constants.%Base.F] { // CHECK:STDOUT: %self.patt: %pattern_type.bcc = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.bcc = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -91,7 +91,7 @@ fn Run() { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Base [concrete = constants.%Base] // CHECK:STDOUT: %self: %Base = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %Unused.decl: %Unused.type = fn_decl @Unused [concrete = constants.%Unused] { +// CHECK:STDOUT: %Base.Unused.decl: %Base.Unused.type = fn_decl @Base.Unused [concrete = constants.%Base.Unused] { // CHECK:STDOUT: %self.patt: %pattern_type.bcc = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.bcc = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -111,8 +111,8 @@ fn Run() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: .Unused = %Unused.decl +// CHECK:STDOUT: .F = %Base.F.decl +// CHECK:STDOUT: .Unused = %Base.Unused.decl // CHECK:STDOUT: .x = %.loc8 // CHECK:STDOUT: .unused = %.loc9 // CHECK:STDOUT: } @@ -131,9 +131,9 @@ fn Run() { // CHECK:STDOUT: extend %Base.ref // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F(%self.param: %Base); +// CHECK:STDOUT: fn @Base.F(%self.param: %Base); // CHECK:STDOUT: -// CHECK:STDOUT: fn @Unused(%self.param: %Base); +// CHECK:STDOUT: fn @Base.Unused(%self.param: %Base); // CHECK:STDOUT: // CHECK:STDOUT: --- b.carbon // CHECK:STDOUT: @@ -157,36 +157,36 @@ fn Run() { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.9ba: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.6da: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.6da: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0b2: type = fn_type @Convert.1, @ImplicitAs.impl.c81(%To) [symbolic] -// CHECK:STDOUT: %Convert.6d7: %Convert.type.0b2 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.e34: = impl_witness imports.%ImplicitAs.impl_witness_table.e36, @ImplicitAs.impl.c81(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.ed5: type = fn_type @Convert.1, @ImplicitAs.impl.c81(%int_32) [concrete] -// CHECK:STDOUT: %Convert.16d: %Convert.type.ed5 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0b2: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.6d7: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0b2 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.e34: = impl_witness imports.%ImplicitAs.impl_witness_table.e36, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.ed5: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.16d: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.ed5 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.9ba = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.e34) [concrete] -// CHECK:STDOUT: %.d6a: type = fn_type_with_self_type %Convert.type.6da, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.9aa: = bound_method %int_0.5c6, %Convert.16d [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.16d, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.8aa: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.d6a: type = fn_type_with_self_type %ImplicitAs.Convert.type.6da, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.9aa: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.16d [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.16d, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.8aa: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.263: %i32 = int_value 0 [concrete] -// CHECK:STDOUT: %Convert.bound.43e: = bound_method %int_1.5b8, %Convert.16d [concrete] -// CHECK:STDOUT: %bound_method.947: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.43e: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.16d [concrete] +// CHECK:STDOUT: %bound_method.947: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.47b: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %Base.val: %Base = struct_value (%int_0.263, %int_1.47b) [concrete] // CHECK:STDOUT: %Child.val: %Child = struct_value (%Base.val) [concrete] // CHECK:STDOUT: %Base.elem: type = unbound_element_type %Base, %i32 [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] -// CHECK:STDOUT: %Convert.bound.918: = bound_method %int_2.ecc, %Convert.16d [concrete] -// CHECK:STDOUT: %bound_method.c74: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.918: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.16d [concrete] +// CHECK:STDOUT: %bound_method.c74: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.d0d: %i32 = int_value 2 [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %Base.F.type: type = fn_type @Base.F [concrete] +// CHECK:STDOUT: %Base.F: %Base.F.type = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.ea2: type = fn_type @Op.1, @Destroy.impl(%Child) [concrete] -// CHECK:STDOUT: %Op.c04: %Op.type.ea2 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.ea2: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%Child) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.c04: %T.as.Destroy.impl.Op.type.ea2 = struct_value () [concrete] // CHECK:STDOUT: %ptr.dc0: type = ptr_type %Child [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.c04, @Op.1(%Child) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.c04, @T.as.Destroy.impl.Op(%Child) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -200,7 +200,7 @@ fn Run() { // CHECK:STDOUT: } // CHECK:STDOUT: %Main.import_ref.239: = import_ref Main//a, loc10_1, loaded [concrete = constants.%complete_type.90f] // CHECK:STDOUT: %Main.import_ref.1f3 = import_ref Main//a, inst18 [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.e8f: %F.type = import_ref Main//a, loc5_21, loaded [concrete = constants.%F] +// CHECK:STDOUT: %Main.import_ref.e8f: %Base.F.type = import_ref Main//a, loc5_21, loaded [concrete = constants.%Base.F] // CHECK:STDOUT: %Main.import_ref.8bf = import_ref Main//a, loc6_26, unloaded // CHECK:STDOUT: %Main.import_ref.e67: %Base.elem = import_ref Main//a, loc8_8, loaded [concrete = %.720] // CHECK:STDOUT: %Main.import_ref.2e4 = import_ref Main//a, loc9_13, unloaded @@ -209,8 +209,8 @@ fn Run() { // CHECK:STDOUT: %Main.import_ref.7e5 = import_ref Main//a, loc13_20, unloaded // CHECK:STDOUT: %Main.import_ref.a21640.2: type = import_ref Main//a, loc13_16, loaded [concrete = constants.%Base] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a86: @ImplicitAs.impl.c81.%Convert.type (%Convert.type.0b2) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.c81.%Convert (constants.%Convert.6d7)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.e36 = impl_witness_table (%Core.import_ref.a86), @ImplicitAs.impl.c81 [concrete] +// CHECK:STDOUT: %Core.import_ref.a86: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0b2) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.6d7)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.e36 = impl_witness_table (%Core.import_ref.a86), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %.720: %Base.elem = field_decl x, element0 [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } @@ -260,21 +260,21 @@ fn Run() { // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %.loc7_47.1: %struct_type.x.unused.c45 = struct_literal (%int_0, %int_1) // CHECK:STDOUT: %.loc7_48.1: %struct_type.base.6c7 = struct_literal (%.loc7_47.1) -// CHECK:STDOUT: %impl.elem0.loc7_47.1: %.d6a = impl_witness_access constants.%ImplicitAs.impl_witness.e34, element0 [concrete = constants.%Convert.16d] -// CHECK:STDOUT: %bound_method.loc7_47.1: = bound_method %int_0, %impl.elem0.loc7_47.1 [concrete = constants.%Convert.bound.9aa] -// CHECK:STDOUT: %specific_fn.loc7_47.1: = specific_function %impl.elem0.loc7_47.1, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc7_47.1: %.d6a = impl_witness_access constants.%ImplicitAs.impl_witness.e34, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.16d] +// CHECK:STDOUT: %bound_method.loc7_47.1: = bound_method %int_0, %impl.elem0.loc7_47.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.9aa] +// CHECK:STDOUT: %specific_fn.loc7_47.1: = specific_function %impl.elem0.loc7_47.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc7_47.2: = bound_method %int_0, %specific_fn.loc7_47.1 [concrete = constants.%bound_method.8aa] -// CHECK:STDOUT: %int.convert_checked.loc7_47.1: init %i32 = call %bound_method.loc7_47.2(%int_0) [concrete = constants.%int_0.263] -// CHECK:STDOUT: %.loc7_47.2: init %i32 = converted %int_0, %int.convert_checked.loc7_47.1 [concrete = constants.%int_0.263] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc7_47.1: init %i32 = call %bound_method.loc7_47.2(%int_0) [concrete = constants.%int_0.263] +// CHECK:STDOUT: %.loc7_47.2: init %i32 = converted %int_0, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc7_47.1 [concrete = constants.%int_0.263] // CHECK:STDOUT: %.loc7_48.2: ref %Base = class_element_access %a.var, element0 // CHECK:STDOUT: %.loc7_47.3: ref %i32 = class_element_access %.loc7_48.2, element0 // CHECK:STDOUT: %.loc7_47.4: init %i32 = initialize_from %.loc7_47.2 to %.loc7_47.3 [concrete = constants.%int_0.263] -// CHECK:STDOUT: %impl.elem0.loc7_47.2: %.d6a = impl_witness_access constants.%ImplicitAs.impl_witness.e34, element0 [concrete = constants.%Convert.16d] -// CHECK:STDOUT: %bound_method.loc7_47.3: = bound_method %int_1, %impl.elem0.loc7_47.2 [concrete = constants.%Convert.bound.43e] -// CHECK:STDOUT: %specific_fn.loc7_47.2: = specific_function %impl.elem0.loc7_47.2, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc7_47.2: %.d6a = impl_witness_access constants.%ImplicitAs.impl_witness.e34, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.16d] +// CHECK:STDOUT: %bound_method.loc7_47.3: = bound_method %int_1, %impl.elem0.loc7_47.2 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.43e] +// CHECK:STDOUT: %specific_fn.loc7_47.2: = specific_function %impl.elem0.loc7_47.2, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc7_47.4: = bound_method %int_1, %specific_fn.loc7_47.2 [concrete = constants.%bound_method.947] -// CHECK:STDOUT: %int.convert_checked.loc7_47.2: init %i32 = call %bound_method.loc7_47.4(%int_1) [concrete = constants.%int_1.47b] -// CHECK:STDOUT: %.loc7_47.5: init %i32 = converted %int_1, %int.convert_checked.loc7_47.2 [concrete = constants.%int_1.47b] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc7_47.2: init %i32 = call %bound_method.loc7_47.4(%int_1) [concrete = constants.%int_1.47b] +// CHECK:STDOUT: %.loc7_47.5: init %i32 = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc7_47.2 [concrete = constants.%int_1.47b] // CHECK:STDOUT: %.loc7_47.6: ref %i32 = class_element_access %.loc7_48.2, element1 // CHECK:STDOUT: %.loc7_47.7: init %i32 = initialize_from %.loc7_47.5 to %.loc7_47.6 [concrete = constants.%int_1.47b] // CHECK:STDOUT: %.loc7_47.8: init %Base = class_init (%.loc7_47.4, %.loc7_47.7), %.loc7_48.2 [concrete = constants.%Base.val] @@ -290,27 +290,27 @@ fn Run() { // CHECK:STDOUT: %.loc8_4.2: ref %Base = converted %a.ref.loc8, %.loc8_4.1 // CHECK:STDOUT: %.loc8_4.3: ref %i32 = class_element_access %.loc8_4.2, element0 // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %impl.elem0.loc8: %.d6a = impl_witness_access constants.%ImplicitAs.impl_witness.e34, element0 [concrete = constants.%Convert.16d] -// CHECK:STDOUT: %bound_method.loc8_7.1: = bound_method %int_2, %impl.elem0.loc8 [concrete = constants.%Convert.bound.918] -// CHECK:STDOUT: %specific_fn.loc8: = specific_function %impl.elem0.loc8, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc8: %.d6a = impl_witness_access constants.%ImplicitAs.impl_witness.e34, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.16d] +// CHECK:STDOUT: %bound_method.loc8_7.1: = bound_method %int_2, %impl.elem0.loc8 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.918] +// CHECK:STDOUT: %specific_fn.loc8: = specific_function %impl.elem0.loc8, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc8_7.2: = bound_method %int_2, %specific_fn.loc8 [concrete = constants.%bound_method.c74] -// CHECK:STDOUT: %int.convert_checked.loc8: init %i32 = call %bound_method.loc8_7.2(%int_2) [concrete = constants.%int_2.d0d] -// CHECK:STDOUT: %.loc8_7: init %i32 = converted %int_2, %int.convert_checked.loc8 [concrete = constants.%int_2.d0d] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc8: init %i32 = call %bound_method.loc8_7.2(%int_2) [concrete = constants.%int_2.d0d] +// CHECK:STDOUT: %.loc8_7: init %i32 = converted %int_2, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc8 [concrete = constants.%int_2.d0d] // CHECK:STDOUT: assign %.loc8_4.3, %.loc8_7 // CHECK:STDOUT: %a.ref.loc9: ref %Child = name_ref a, %a -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%Main.import_ref.e8f [concrete = constants.%F] -// CHECK:STDOUT: %F.bound: = bound_method %a.ref.loc9, %F.ref +// CHECK:STDOUT: %F.ref: %Base.F.type = name_ref F, imports.%Main.import_ref.e8f [concrete = constants.%Base.F] +// CHECK:STDOUT: %Base.F.bound: = bound_method %a.ref.loc9, %F.ref // CHECK:STDOUT: %.loc9_3.1: ref %Base = class_element_access %a.ref.loc9, element0 // CHECK:STDOUT: %.loc9_3.2: ref %Base = converted %a.ref.loc9, %.loc9_3.1 // CHECK:STDOUT: %.loc9_3.3: %Base = bind_value %.loc9_3.2 -// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.bound(%.loc9_3.3) -// CHECK:STDOUT: %Op.bound: = bound_method %a.var, constants.%Op.c04 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.c04, @Op.1(constants.%Child) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc7_3: = bound_method %a.var, %Op.specific_fn +// CHECK:STDOUT: %Base.F.call: init %empty_tuple.type = call %Base.F.bound(%.loc9_3.3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %a.var, constants.%T.as.Destroy.impl.Op.c04 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.c04, @T.as.Destroy.impl.Op(constants.%Child) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc7_3: = bound_method %a.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.dc0 = addr_of %a.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc7_3(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc7_3(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F [from "a.carbon"]; +// CHECK:STDOUT: fn @Base.F [from "a.carbon"]; // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/import_member_cycle.carbon b/toolchain/check/testdata/class/import_member_cycle.carbon index 5ca2babd960c..b7dec052c653 100644 --- a/toolchain/check/testdata/class/import_member_cycle.carbon +++ b/toolchain/check/testdata/class/import_member_cycle.carbon @@ -82,10 +82,10 @@ fn Run() { // CHECK:STDOUT: %complete_type.e4b: = complete_type_witness %struct_type.a [concrete] // CHECK:STDOUT: %pattern_type.d3d: type = pattern_type %ptr.257 [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.a45: type = fn_type @Op.1, @Destroy.impl(%ptr.257) [concrete] -// CHECK:STDOUT: %Op.109: %Op.type.a45 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a45: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%ptr.257) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.109: %T.as.Destroy.impl.Op.type.a45 = struct_value () [concrete] // CHECK:STDOUT: %ptr.d80: type = ptr_type %ptr.257 [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.109, @Op.1(%ptr.257) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.109, @T.as.Destroy.impl.Op(%ptr.257) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -132,11 +132,11 @@ fn Run() { // CHECK:STDOUT: %ptr: type = ptr_type %Cycle.ref [concrete = constants.%ptr.257] // CHECK:STDOUT: } // CHECK:STDOUT: %a: ref %ptr.257 = bind_name a, %a.var -// CHECK:STDOUT: %Op.bound: = bound_method %a.var, constants.%Op.109 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.109, @Op.1(constants.%ptr.257) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %a.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %a.var, constants.%T.as.Destroy.impl.Op.109 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.109, @T.as.Destroy.impl.Op(constants.%ptr.257) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %a.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.d80 = addr_of %a.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/indirect_import_member.carbon b/toolchain/check/testdata/class/indirect_import_member.carbon index fd8064faaf51..ef6548221ef4 100644 --- a/toolchain/check/testdata/class/indirect_import_member.carbon +++ b/toolchain/check/testdata/class/indirect_import_member.carbon @@ -108,8 +108,8 @@ var x: () = D.C.F(); // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %C.F.type: type = fn_type @C.F [concrete] +// CHECK:STDOUT: %C.F: %C.F.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: } @@ -122,17 +122,17 @@ var x: () = D.C.F(); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} +// CHECK:STDOUT: %C.F.decl: %C.F.type = fn_decl @C.F [concrete = constants.%C.F] {} {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %C.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F() { +// CHECK:STDOUT: fn @C.F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -261,15 +261,15 @@ var x: () = D.C.F(); // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %C.F.type: type = fn_type @C.F [concrete] +// CHECK:STDOUT: %C.F: %C.F.type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Main.C: type = import_ref Main//a, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Main.import_ref.8f2: = import_ref Main//a, loc6_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//a, inst16 [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.943: %F.type = import_ref Main//a, loc5_10, loaded [concrete = constants.%F] +// CHECK:STDOUT: %Main.import_ref.943: %C.F.type = import_ref Main//a, loc5_10, loaded [concrete = constants.%C.F] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -298,14 +298,14 @@ var x: () = D.C.F(); // CHECK:STDOUT: .F = imports.%Main.import_ref.943 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F [from "a.carbon"]; +// CHECK:STDOUT: fn @C.F [from "a.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C] -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%Main.import_ref.943 [concrete = constants.%F] -// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.ref() -// CHECK:STDOUT: assign file.%x.var, %F.call +// CHECK:STDOUT: %F.ref: %C.F.type = name_ref F, imports.%Main.import_ref.943 [concrete = constants.%C.F] +// CHECK:STDOUT: %C.F.call: init %empty_tuple.type = call %F.ref() +// CHECK:STDOUT: assign file.%x.var, %C.F.call // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -317,15 +317,15 @@ var x: () = D.C.F(); // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %C.F.type: type = fn_type @C.F [concrete] +// CHECK:STDOUT: %C.F: %C.F.type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Main.C: type = import_ref Main//c, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Main.import_ref.8db: = import_ref Main//c, inst21 [indirect], loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.6a9 = import_ref Main//c, inst22 [indirect], unloaded -// CHECK:STDOUT: %Main.import_ref.5d3: %F.type = import_ref Main//c, inst23 [indirect], loaded [concrete = constants.%F] +// CHECK:STDOUT: %Main.import_ref.5d3: %C.F.type = import_ref Main//c, inst23 [indirect], loaded [concrete = constants.%C.F] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -354,14 +354,14 @@ var x: () = D.C.F(); // CHECK:STDOUT: .F = imports.%Main.import_ref.5d3 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F [from "a.carbon"]; +// CHECK:STDOUT: fn @C.F [from "a.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C] -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%Main.import_ref.5d3 [concrete = constants.%F] -// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.ref() -// CHECK:STDOUT: assign file.%x.var, %F.call +// CHECK:STDOUT: %F.ref: %C.F.type = name_ref F, imports.%Main.import_ref.5d3 [concrete = constants.%C.F] +// CHECK:STDOUT: %C.F.call: init %empty_tuple.type = call %F.ref() +// CHECK:STDOUT: assign file.%x.var, %C.F.call // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -373,15 +373,15 @@ var x: () = D.C.F(); // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %C.F.type: type = fn_type @C.F [concrete] +// CHECK:STDOUT: %C.F: %C.F.type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Main.C: type = import_ref Main//c, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Main.import_ref.8db: = import_ref Main//c, inst21 [indirect], loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.6a9 = import_ref Main//c, inst22 [indirect], unloaded -// CHECK:STDOUT: %Main.import_ref.5d3: %F.type = import_ref Main//c, inst23 [indirect], loaded [concrete = constants.%F] +// CHECK:STDOUT: %Main.import_ref.5d3: %C.F.type = import_ref Main//c, inst23 [indirect], loaded [concrete = constants.%C.F] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -410,14 +410,14 @@ var x: () = D.C.F(); // CHECK:STDOUT: .F = imports.%Main.import_ref.5d3 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F [from "a.carbon"]; +// CHECK:STDOUT: fn @C.F [from "a.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C] -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%Main.import_ref.5d3 [concrete = constants.%F] -// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.ref() -// CHECK:STDOUT: assign file.%x.var, %F.call +// CHECK:STDOUT: %F.ref: %C.F.type = name_ref F, imports.%Main.import_ref.5d3 [concrete = constants.%C.F] +// CHECK:STDOUT: %C.F.call: init %empty_tuple.type = call %F.ref() +// CHECK:STDOUT: assign file.%x.var, %C.F.call // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -430,8 +430,8 @@ var x: () = D.C.F(); // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %C.F.type: type = fn_type @C.F [concrete] +// CHECK:STDOUT: %C.F: %C.F.type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -441,7 +441,7 @@ var x: () = D.C.F(); // CHECK:STDOUT: %Main.import_ref.bf1: type = import_ref Main//e, loc7_9, loaded [concrete = constants.%C] // CHECK:STDOUT: %Main.import_ref.8f3: = import_ref Main//e, inst24 [indirect], loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.db8 = import_ref Main//e, inst25 [indirect], unloaded -// CHECK:STDOUT: %Main.import_ref.c85: %F.type = import_ref Main//e, inst26 [indirect], loaded [concrete = constants.%F] +// CHECK:STDOUT: %Main.import_ref.c85: %C.F.type = import_ref Main//e, inst26 [indirect], loaded [concrete = constants.%C.F] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -478,15 +478,15 @@ var x: () = D.C.F(); // CHECK:STDOUT: .F = imports.%Main.import_ref.c85 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F [from "a.carbon"]; +// CHECK:STDOUT: fn @C.F [from "a.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %D.ref: type = name_ref D, imports.%Main.D [concrete = constants.%D] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.import_ref.bf1 [concrete = constants.%C] -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%Main.import_ref.c85 [concrete = constants.%F] -// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.ref() -// CHECK:STDOUT: assign file.%x.var, %F.call +// CHECK:STDOUT: %F.ref: %C.F.type = name_ref F, imports.%Main.import_ref.c85 [concrete = constants.%C.F] +// CHECK:STDOUT: %C.F.call: init %empty_tuple.type = call %F.ref() +// CHECK:STDOUT: assign file.%x.var, %C.F.call // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -499,8 +499,8 @@ var x: () = D.C.F(); // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %C.F.type: type = fn_type @C.F [concrete] +// CHECK:STDOUT: %C.F: %C.F.type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -510,7 +510,7 @@ var x: () = D.C.F(); // CHECK:STDOUT: %Main.import_ref.bf1: type = import_ref Main//e, loc7_9, loaded [concrete = constants.%C] // CHECK:STDOUT: %Main.import_ref.8f3: = import_ref Main//e, inst24 [indirect], loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.db8 = import_ref Main//e, inst25 [indirect], unloaded -// CHECK:STDOUT: %Main.import_ref.c85: %F.type = import_ref Main//e, inst26 [indirect], loaded [concrete = constants.%F] +// CHECK:STDOUT: %Main.import_ref.c85: %C.F.type = import_ref Main//e, inst26 [indirect], loaded [concrete = constants.%C.F] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -547,15 +547,15 @@ var x: () = D.C.F(); // CHECK:STDOUT: .F = imports.%Main.import_ref.c85 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F [from "a.carbon"]; +// CHECK:STDOUT: fn @C.F [from "a.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %D.ref: type = name_ref D, imports.%Main.D [concrete = constants.%D] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.import_ref.bf1 [concrete = constants.%C] -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%Main.import_ref.c85 [concrete = constants.%F] -// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.ref() -// CHECK:STDOUT: assign file.%x.var, %F.call +// CHECK:STDOUT: %F.ref: %C.F.type = name_ref F, imports.%Main.import_ref.c85 [concrete = constants.%C.F] +// CHECK:STDOUT: %C.F.call: init %empty_tuple.type = call %F.ref() +// CHECK:STDOUT: assign file.%x.var, %C.F.call // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/inheritance_access.carbon b/toolchain/check/testdata/class/inheritance_access.carbon index 2b0a1c1eb147..37bfef04913c 100644 --- a/toolchain/check/testdata/class/inheritance_access.carbon +++ b/toolchain/check/testdata/class/inheritance_access.carbon @@ -248,8 +248,8 @@ class B { // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] // CHECK:STDOUT: %tuple.type.d07: type = tuple_type (%i32, %i32) [concrete] // CHECK:STDOUT: %pattern_type.511: type = pattern_type %tuple.type.d07 [concrete] -// CHECK:STDOUT: %GetPosition.type: type = fn_type @GetPosition [concrete] -// CHECK:STDOUT: %GetPosition: %GetPosition.type = struct_value () [concrete] +// CHECK:STDOUT: %Circle.GetPosition.type: type = fn_type @Circle.GetPosition [concrete] +// CHECK:STDOUT: %Circle.GetPosition: %Circle.GetPosition.type = struct_value () [concrete] // CHECK:STDOUT: %struct_type.base.0ed: type = struct_type {.base: %Shape} [concrete] // CHECK:STDOUT: %complete_type.a2b: = complete_type_witness %struct_type.base.0ed [concrete] // CHECK:STDOUT: } @@ -294,7 +294,7 @@ class B { // CHECK:STDOUT: class @Circle { // CHECK:STDOUT: %Shape.ref: type = name_ref Shape, file.%Shape.decl [concrete = constants.%Shape] // CHECK:STDOUT: %.loc10: %Circle.elem = base_decl %Shape.ref, element0 [concrete] -// CHECK:STDOUT: %GetPosition.decl: %GetPosition.type = fn_decl @GetPosition [concrete = constants.%GetPosition] { +// CHECK:STDOUT: %Circle.GetPosition.decl: %Circle.GetPosition.type = fn_decl @Circle.GetPosition [concrete = constants.%Circle.GetPosition] { // CHECK:STDOUT: %self.patt: %pattern_type.ce2 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.ce2 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.511 = return_slot_pattern [concrete] @@ -320,13 +320,13 @@ class B { // CHECK:STDOUT: .Self = constants.%Circle // CHECK:STDOUT: .Shape = // CHECK:STDOUT: .base = %.loc10 -// CHECK:STDOUT: .GetPosition = %GetPosition.decl +// CHECK:STDOUT: .GetPosition = %Circle.GetPosition.decl // CHECK:STDOUT: .x = // CHECK:STDOUT: .y = // CHECK:STDOUT: extend %Shape.ref // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @GetPosition(%self.param: %Circle) -> %return.param: %tuple.type.d07 { +// CHECK:STDOUT: fn @Circle.GetPosition(%self.param: %Circle) -> %return.param: %tuple.type.d07 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref.loc13_13: %Circle = name_ref self, %self // CHECK:STDOUT: %x.ref: %Shape.elem = name_ref x, @Shape.%.loc5 [concrete = @Shape.%.loc5] @@ -354,9 +354,9 @@ class B { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %A: type = class_type @A [concrete] -// CHECK:STDOUT: %F.type.649: type = fn_type @F.loc5 [concrete] +// CHECK:STDOUT: %A.F.type: type = fn_type @A.F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F.485: %F.type.649 = struct_value () [concrete] +// CHECK:STDOUT: %A.F: %A.F.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %B: type = class_type @B [concrete] @@ -366,24 +366,24 @@ class B { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %F.type.8c6: type = fn_type @F.loc10 [concrete] -// CHECK:STDOUT: %F.92a: %F.type.8c6 = struct_value () [concrete] +// CHECK:STDOUT: %B.F.type: type = fn_type @B.F [concrete] +// CHECK:STDOUT: %B.F: %B.F.type = struct_value () [concrete] // CHECK:STDOUT: %struct_type.base.953: type = struct_type {.base: %A} [concrete] // CHECK:STDOUT: %complete_type.020: = complete_type_witness %struct_type.base.953 [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %B [concrete] // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] -// CHECK:STDOUT: %G.type: type = fn_type @G [concrete] -// CHECK:STDOUT: %G: %G.type = struct_value () [concrete] +// CHECK:STDOUT: %C.G.type: type = fn_type @C.G [concrete] +// CHECK:STDOUT: %C.G: %C.G.type = struct_value () [concrete] // CHECK:STDOUT: %struct_type.base.0ff: type = struct_type {.base: %B} [concrete] // CHECK:STDOUT: %complete_type.98e: = complete_type_witness %struct_type.base.0ff [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.1, @Destroy.impl(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a63: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ea3: %T.as.Destroy.impl.Op.type.a63 = struct_value () [concrete] // CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ea3, @Op.1(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(%empty_tuple.type) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -411,20 +411,20 @@ class B { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A { -// CHECK:STDOUT: %F.decl: %F.type.649 = fn_decl @F.loc5 [concrete = constants.%F.485] {} {} +// CHECK:STDOUT: %A.F.decl: %A.F.type = fn_decl @A.F [concrete = constants.%A.F] {} {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %A.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A] // CHECK:STDOUT: %.loc9: %B.elem = base_decl %A.ref, element0 [concrete] -// CHECK:STDOUT: %F.decl: %F.type.8c6 = fn_decl @F.loc10 [concrete = constants.%F.92a] { +// CHECK:STDOUT: %B.F.decl: %B.F.type = fn_decl @B.F [concrete = constants.%B.F] { // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -441,14 +441,14 @@ class B { // CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: .A = // CHECK:STDOUT: .base = %.loc9 -// CHECK:STDOUT: .F [private] = %F.decl +// CHECK:STDOUT: .F [private] = %B.F.decl // CHECK:STDOUT: extend %A.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B] // CHECK:STDOUT: %.loc14: %C.elem = base_decl %B.ref, element0 [concrete] -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { +// CHECK:STDOUT: %C.G.decl: %C.G.type = fn_decl @C.G [concrete = constants.%C.G] { // CHECK:STDOUT: %self.patt: %pattern_type.c48 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.c48 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.cb1 = return_slot_pattern [concrete] @@ -470,29 +470,29 @@ class B { // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .B = // CHECK:STDOUT: .base = %.loc14 -// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .G = %C.G.decl // CHECK:STDOUT: .F = // CHECK:STDOUT: extend %B.ref // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc5(); +// CHECK:STDOUT: fn @A.F(); // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc10() -> %i32; +// CHECK:STDOUT: fn @B.F() -> %i32; // CHECK:STDOUT: -// CHECK:STDOUT: fn @G(%self.param: %C) -> %empty_tuple.type { +// CHECK:STDOUT: fn @C.G(%self.param: %C) -> %empty_tuple.type { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: %C = name_ref self, %self -// CHECK:STDOUT: %F.ref: %F.type.649 = name_ref F, @A.%F.decl [concrete = constants.%F.485] -// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.ref() +// CHECK:STDOUT: %F.ref: %A.F.type = name_ref F, @A.%A.F.decl [concrete = constants.%A.F] +// CHECK:STDOUT: %A.F.call: init %empty_tuple.type = call %F.ref() // CHECK:STDOUT: %.loc15_44.1: ref %empty_tuple.type = temporary_storage -// CHECK:STDOUT: %.loc15_44.2: ref %empty_tuple.type = temporary %.loc15_44.1, %F.call +// CHECK:STDOUT: %.loc15_44.2: ref %empty_tuple.type = temporary %.loc15_44.1, %A.F.call // CHECK:STDOUT: %tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc15_45: %empty_tuple.type = converted %F.call, %tuple [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %Op.bound: = bound_method %.loc15_44.1, constants.%Op.ea3 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.ea3, @Op.1(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc15_44.1, %Op.specific_fn +// CHECK:STDOUT: %.loc15_45: %empty_tuple.type = converted %A.F.call, %tuple [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc15_44.1, constants.%T.as.Destroy.impl.Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %.loc15_44.1, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.843 = addr_of %.loc15_44.1 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %.loc15_45 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -509,29 +509,29 @@ class B { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_5.64b, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_5.64b, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_5.64b, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_5.64b, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_5.0f6: %i32 = int_value 5 [concrete] -// CHECK:STDOUT: %SomeProtectedFunction.type: type = fn_type @SomeProtectedFunction [concrete] -// CHECK:STDOUT: %SomeProtectedFunction: %SomeProtectedFunction.type = struct_value () [concrete] +// CHECK:STDOUT: %A.SomeProtectedFunction.type: type = fn_type @A.SomeProtectedFunction [concrete] +// CHECK:STDOUT: %A.SomeProtectedFunction: %A.SomeProtectedFunction.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %B: type = class_type @B [concrete] // CHECK:STDOUT: %B.elem: type = unbound_element_type %B, %A [concrete] -// CHECK:STDOUT: %G.type: type = fn_type @G [concrete] -// CHECK:STDOUT: %G: %G.type = struct_value () [concrete] -// CHECK:STDOUT: %H.type: type = fn_type @H [concrete] -// CHECK:STDOUT: %H: %H.type = struct_value () [concrete] +// CHECK:STDOUT: %B.G.type: type = fn_type @B.G [concrete] +// CHECK:STDOUT: %B.G: %B.G.type = struct_value () [concrete] +// CHECK:STDOUT: %B.H.type: type = fn_type @B.H [concrete] +// CHECK:STDOUT: %B.H: %B.H.type = struct_value () [concrete] // CHECK:STDOUT: %struct_type.base: type = struct_type {.base: %A} [concrete] // CHECK:STDOUT: %complete_type.020: = complete_type_witness %struct_type.base [concrete] // CHECK:STDOUT: } @@ -545,8 +545,8 @@ class B { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -569,15 +569,15 @@ class B { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc5_38.1: = bound_method %int_5, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc5_38.1: = bound_method %int_5, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc5_38.2: = bound_method %int_5, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc5_38.2(%int_5) [concrete = constants.%int_5.0f6] -// CHECK:STDOUT: %.loc5_38.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_5.0f6] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc5_38.2(%int_5) [concrete = constants.%int_5.0f6] +// CHECK:STDOUT: %.loc5_38.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_5.0f6] // CHECK:STDOUT: %.loc5_38.2: %i32 = converted %int_5, %.loc5_38.1 [concrete = constants.%int_5.0f6] // CHECK:STDOUT: %SOME_CONSTANT: %i32 = bind_name SOME_CONSTANT, %.loc5_38.2 -// CHECK:STDOUT: %SomeProtectedFunction.decl: %SomeProtectedFunction.type = fn_decl @SomeProtectedFunction [concrete = constants.%SomeProtectedFunction] { +// CHECK:STDOUT: %A.SomeProtectedFunction.decl: %A.SomeProtectedFunction.type = fn_decl @A.SomeProtectedFunction [concrete = constants.%A.SomeProtectedFunction] { // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -593,14 +593,14 @@ class B { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A // CHECK:STDOUT: .SOME_CONSTANT [protected] = %SOME_CONSTANT -// CHECK:STDOUT: .SomeProtectedFunction [protected] = %SomeProtectedFunction.decl +// CHECK:STDOUT: .SomeProtectedFunction [protected] = %A.SomeProtectedFunction.decl // CHECK:STDOUT: .A = // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A] // CHECK:STDOUT: %.loc12: %B.elem = base_decl %A.ref, element0 [concrete] -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { +// CHECK:STDOUT: %B.G.decl: %B.G.type = fn_decl @B.G [concrete = constants.%B.G] { // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -609,7 +609,7 @@ class B { // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %H.decl: %H.type = fn_decl @H [concrete = constants.%H] { +// CHECK:STDOUT: %B.H.decl: %B.H.type = fn_decl @B.H [concrete = constants.%B.H] { // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -626,38 +626,38 @@ class B { // CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: .A = // CHECK:STDOUT: .base = %.loc12 -// CHECK:STDOUT: .G = %G.decl -// CHECK:STDOUT: .H = %H.decl +// CHECK:STDOUT: .G = %B.G.decl +// CHECK:STDOUT: .H = %B.H.decl // CHECK:STDOUT: extend %A.ref // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @SomeProtectedFunction() -> %i32 { +// CHECK:STDOUT: fn @A.SomeProtectedFunction() -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [concrete = constants.%int_5.64b] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc7_13.1: = bound_method %int_5, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc7_13.1: = bound_method %int_5, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc7_13.2: = bound_method %int_5, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc7_13.2(%int_5) [concrete = constants.%int_5.0f6] -// CHECK:STDOUT: %.loc7_13.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_5.0f6] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc7_13.2(%int_5) [concrete = constants.%int_5.0f6] +// CHECK:STDOUT: %.loc7_13.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_5.0f6] // CHECK:STDOUT: %.loc7_13.2: %i32 = converted %int_5, %.loc7_13.1 [concrete = constants.%int_5.0f6] // CHECK:STDOUT: return %.loc7_13.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G() -> %i32 { +// CHECK:STDOUT: fn @B.G() -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A] // CHECK:STDOUT: %SOME_CONSTANT.ref: %i32 = name_ref SOME_CONSTANT, @A.%SOME_CONSTANT // CHECK:STDOUT: return %SOME_CONSTANT.ref // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @H() -> %i32 { +// CHECK:STDOUT: fn @B.H() -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A] -// CHECK:STDOUT: %SomeProtectedFunction.ref: %SomeProtectedFunction.type = name_ref SomeProtectedFunction, @A.%SomeProtectedFunction.decl [concrete = constants.%SomeProtectedFunction] -// CHECK:STDOUT: %SomeProtectedFunction.call: init %i32 = call %SomeProtectedFunction.ref() -// CHECK:STDOUT: %.loc19_37.1: %i32 = value_of_initializer %SomeProtectedFunction.call -// CHECK:STDOUT: %.loc19_37.2: %i32 = converted %SomeProtectedFunction.call, %.loc19_37.1 +// CHECK:STDOUT: %SomeProtectedFunction.ref: %A.SomeProtectedFunction.type = name_ref SomeProtectedFunction, @A.%A.SomeProtectedFunction.decl [concrete = constants.%A.SomeProtectedFunction] +// CHECK:STDOUT: %A.SomeProtectedFunction.call: init %i32 = call %SomeProtectedFunction.ref() +// CHECK:STDOUT: %.loc19_37.1: %i32 = value_of_initializer %A.SomeProtectedFunction.call +// CHECK:STDOUT: %.loc19_37.2: %i32 = converted %A.SomeProtectedFunction.call, %.loc19_37.1 // CHECK:STDOUT: return %.loc19_37.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -676,8 +676,8 @@ class B { // CHECK:STDOUT: %Square.elem: type = unbound_element_type %Square, %Shape [concrete] // CHECK:STDOUT: %pattern_type.39b: type = pattern_type %Square [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %GetPosition.type: type = fn_type @GetPosition [concrete] -// CHECK:STDOUT: %GetPosition: %GetPosition.type = struct_value () [concrete] +// CHECK:STDOUT: %Square.GetPosition.type: type = fn_type @Square.GetPosition [concrete] +// CHECK:STDOUT: %Square.GetPosition: %Square.GetPosition.type = struct_value () [concrete] // CHECK:STDOUT: %struct_type.base.0ed: type = struct_type {.base: %Shape} [concrete] // CHECK:STDOUT: %complete_type.a2b: = complete_type_witness %struct_type.base.0ed [concrete] // CHECK:STDOUT: } @@ -718,7 +718,7 @@ class B { // CHECK:STDOUT: class @Square { // CHECK:STDOUT: %Shape.ref: type = name_ref Shape, file.%Shape.decl [concrete = constants.%Shape] // CHECK:STDOUT: %.loc9: %Square.elem = base_decl %Shape.ref, element0 [concrete] -// CHECK:STDOUT: %GetPosition.decl: %GetPosition.type = fn_decl @GetPosition [concrete = constants.%GetPosition] { +// CHECK:STDOUT: %Square.GetPosition.decl: %Square.GetPosition.type = fn_decl @Square.GetPosition [concrete = constants.%Square.GetPosition] { // CHECK:STDOUT: %self.patt: %pattern_type.39b = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.39b = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] @@ -740,12 +740,12 @@ class B { // CHECK:STDOUT: .Self = constants.%Square // CHECK:STDOUT: .Shape = // CHECK:STDOUT: .base = %.loc9 -// CHECK:STDOUT: .GetPosition = %GetPosition.decl +// CHECK:STDOUT: .GetPosition = %Square.GetPosition.decl // CHECK:STDOUT: .y = // CHECK:STDOUT: extend %Shape.ref // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @GetPosition(%self.param: %Square) -> %i32 { +// CHECK:STDOUT: fn @Square.GetPosition(%self.param: %Square) -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: %Square = name_ref self, %self // CHECK:STDOUT: %y.ref: = name_ref y, [concrete = ] @@ -756,11 +756,11 @@ class B { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] +// CHECK:STDOUT: %C.F.type: type = fn_type @C.F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %G.type: type = fn_type @G [concrete] -// CHECK:STDOUT: %G: %G.type = struct_value () [concrete] +// CHECK:STDOUT: %C.F: %C.F.type = struct_value () [concrete] +// CHECK:STDOUT: %C.G.type: type = fn_type @C.G [concrete] +// CHECK:STDOUT: %C.G: %C.G.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: } @@ -782,28 +782,28 @@ class B { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {} {} +// CHECK:STDOUT: %C.F.decl: %C.F.type = fn_decl @C.F [concrete = constants.%C.F] {} {} +// CHECK:STDOUT: %C.G.decl: %C.G.type = fn_decl @C.G [concrete = constants.%C.G] {} {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C -// CHECK:STDOUT: .F [private] = %F.decl -// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .F [private] = %C.F.decl +// CHECK:STDOUT: .G = %C.G.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F() { +// CHECK:STDOUT: fn @C.F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G() { +// CHECK:STDOUT: fn @C.G() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, @C.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.ref() +// CHECK:STDOUT: %F.ref: %C.F.type = name_ref F, @C.%C.F.decl [concrete = constants.%C.F] +// CHECK:STDOUT: %C.F.call: init %empty_tuple.type = call %F.ref() // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -811,11 +811,11 @@ class B { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] +// CHECK:STDOUT: %C.F.type: type = fn_type @C.F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %G.type: type = fn_type @G [concrete] -// CHECK:STDOUT: %G: %G.type = struct_value () [concrete] +// CHECK:STDOUT: %C.F: %C.F.type = struct_value () [concrete] +// CHECK:STDOUT: %C.G.type: type = fn_type @C.G [concrete] +// CHECK:STDOUT: %C.G: %C.G.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: } @@ -837,28 +837,28 @@ class B { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {} {} +// CHECK:STDOUT: %C.F.decl: %C.F.type = fn_decl @C.F [concrete = constants.%C.F] {} {} +// CHECK:STDOUT: %C.G.decl: %C.G.type = fn_decl @C.G [concrete = constants.%C.G] {} {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C -// CHECK:STDOUT: .F [protected] = %F.decl -// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .F [protected] = %C.F.decl +// CHECK:STDOUT: .G = %C.G.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F() { +// CHECK:STDOUT: fn @C.F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G() { +// CHECK:STDOUT: fn @C.G() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, @C.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.ref() +// CHECK:STDOUT: %F.ref: %C.F.type = name_ref F, @C.%C.F.decl [concrete = constants.%C.F] +// CHECK:STDOUT: %C.F.call: init %empty_tuple.type = call %F.ref() // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -866,14 +866,14 @@ class B { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %B: type = class_type @B [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %B.F.type: type = fn_type @B.F [concrete] +// CHECK:STDOUT: %B.F: %B.F.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %B [concrete] -// CHECK:STDOUT: %G.type: type = fn_type @G [concrete] -// CHECK:STDOUT: %G: %G.type = struct_value () [concrete] +// CHECK:STDOUT: %C.G.type: type = fn_type @C.G [concrete] +// CHECK:STDOUT: %C.G: %C.G.type = struct_value () [concrete] // CHECK:STDOUT: %struct_type.base.0ff: type = struct_type {.base: %B} [concrete] // CHECK:STDOUT: %complete_type.98e: = complete_type_witness %struct_type.base.0ff [concrete] // CHECK:STDOUT: } @@ -897,20 +897,20 @@ class B { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} +// CHECK:STDOUT: %B.F.decl: %B.F.type = fn_decl @B.F [concrete = constants.%B.F] {} {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B -// CHECK:STDOUT: .F [private] = %F.decl +// CHECK:STDOUT: .F [private] = %B.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B] // CHECK:STDOUT: %.loc9: %C.elem = base_decl %B.ref, element0 [concrete] -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {} {} +// CHECK:STDOUT: %C.G.decl: %C.G.type = fn_decl @C.G [concrete = constants.%C.G] {} {} // CHECK:STDOUT: %struct_type.base: type = struct_type {.base: %B} [concrete = constants.%struct_type.base.0ff] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [concrete = constants.%complete_type.98e] // CHECK:STDOUT: complete_type_witness = %complete_type @@ -919,17 +919,17 @@ class B { // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .B = // CHECK:STDOUT: .base = %.loc9 -// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .G = %C.G.decl // CHECK:STDOUT: .F = // CHECK:STDOUT: extend %B.ref // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F() { +// CHECK:STDOUT: fn @B.F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G() { +// CHECK:STDOUT: fn @C.G() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] // CHECK:STDOUT: %F.ref: = name_ref F, [concrete = ] @@ -940,15 +940,15 @@ class B { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %B: type = class_type @B [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] +// CHECK:STDOUT: %B.F.type: type = fn_type @B.F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %B.F: %B.F.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %B [concrete] -// CHECK:STDOUT: %G.type: type = fn_type @G [concrete] -// CHECK:STDOUT: %G: %G.type = struct_value () [concrete] +// CHECK:STDOUT: %C.G.type: type = fn_type @C.G [concrete] +// CHECK:STDOUT: %C.G: %C.G.type = struct_value () [concrete] // CHECK:STDOUT: %struct_type.base.0ff: type = struct_type {.base: %B} [concrete] // CHECK:STDOUT: %complete_type.98e: = complete_type_witness %struct_type.base.0ff [concrete] // CHECK:STDOUT: } @@ -972,20 +972,20 @@ class B { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} +// CHECK:STDOUT: %B.F.decl: %B.F.type = fn_decl @B.F [concrete = constants.%B.F] {} {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B -// CHECK:STDOUT: .F [protected] = %F.decl +// CHECK:STDOUT: .F [protected] = %B.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B] // CHECK:STDOUT: %.loc9: %C.elem = base_decl %B.ref, element0 [concrete] -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {} {} +// CHECK:STDOUT: %C.G.decl: %C.G.type = fn_decl @C.G [concrete = constants.%C.G] {} {} // CHECK:STDOUT: %struct_type.base: type = struct_type {.base: %B} [concrete = constants.%struct_type.base.0ff] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [concrete = constants.%complete_type.98e] // CHECK:STDOUT: complete_type_witness = %complete_type @@ -994,21 +994,21 @@ class B { // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .B = // CHECK:STDOUT: .base = %.loc9 -// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .G = %C.G.decl // CHECK:STDOUT: .F = // CHECK:STDOUT: extend %B.ref // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F() { +// CHECK:STDOUT: fn @B.F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G() { +// CHECK:STDOUT: fn @C.G() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, @B.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.ref() +// CHECK:STDOUT: %F.ref: %B.F.type = name_ref F, @B.%B.F.decl [concrete = constants.%B.F] +// CHECK:STDOUT: %B.F.call: init %empty_tuple.type = call %F.ref() // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1025,29 +1025,29 @@ class B { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_5.64b, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_5.64b, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_5.64b, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_5.64b, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_5.0f6: %i32 = int_value 5 [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %Internal: type = class_type @Internal [concrete] // CHECK:STDOUT: %B: type = class_type @B [concrete] // CHECK:STDOUT: %B.elem: type = unbound_element_type %B, %Internal [concrete] -// CHECK:STDOUT: %G.type: type = fn_type @G [concrete] -// CHECK:STDOUT: %G: %G.type = struct_value () [concrete] +// CHECK:STDOUT: %B.G.type: type = fn_type @B.G [concrete] +// CHECK:STDOUT: %B.G: %B.G.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.049: type = pattern_type %B [concrete] -// CHECK:STDOUT: %SomeFunc.type: type = fn_type @SomeFunc [concrete] -// CHECK:STDOUT: %SomeFunc: %SomeFunc.type = struct_value () [concrete] +// CHECK:STDOUT: %B.SomeFunc.type: type = fn_type @B.SomeFunc [concrete] +// CHECK:STDOUT: %B.SomeFunc: %B.SomeFunc.type = struct_value () [concrete] // CHECK:STDOUT: %struct_type.internal.6f5: type = struct_type {.internal: %Internal} [concrete] // CHECK:STDOUT: %complete_type.d77: = complete_type_witness %struct_type.internal.6f5 [concrete] // CHECK:STDOUT: } @@ -1061,8 +1061,8 @@ class B { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1087,12 +1087,12 @@ class B { // CHECK:STDOUT: %int_32.loc5: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc5: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl.elem0.loc5: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc5_48.1: = bound_method %int_5.loc5, %impl.elem0.loc5 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn.loc5: = specific_function %impl.elem0.loc5, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc5: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc5_48.1: = bound_method %int_5.loc5, %impl.elem0.loc5 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc5: = specific_function %impl.elem0.loc5, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc5_48.2: = bound_method %int_5.loc5, %specific_fn.loc5 [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked.loc5: init %i32 = call %bound_method.loc5_48.2(%int_5.loc5) [concrete = constants.%int_5.0f6] -// CHECK:STDOUT: %.loc5_48.1: %i32 = value_of_initializer %int.convert_checked.loc5 [concrete = constants.%int_5.0f6] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc5: init %i32 = call %bound_method.loc5_48.2(%int_5.loc5) [concrete = constants.%int_5.0f6] +// CHECK:STDOUT: %.loc5_48.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc5 [concrete = constants.%int_5.0f6] // CHECK:STDOUT: %.loc5_48.2: %i32 = converted %int_5.loc5, %.loc5_48.1 [concrete = constants.%int_5.0f6] // CHECK:STDOUT: %SOME_PROTECTED_CONSTANT: %i32 = bind_name SOME_PROTECTED_CONSTANT, %.loc5_48.2 // CHECK:STDOUT: name_binding_decl { @@ -1103,12 +1103,12 @@ class B { // CHECK:STDOUT: %int_32.loc6: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc6: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl.elem0.loc6: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc6_44.1: = bound_method %int_5.loc6, %impl.elem0.loc6 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn.loc6: = specific_function %impl.elem0.loc6, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc6: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc6_44.1: = bound_method %int_5.loc6, %impl.elem0.loc6 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc6: = specific_function %impl.elem0.loc6, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc6_44.2: = bound_method %int_5.loc6, %specific_fn.loc6 [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked.loc6: init %i32 = call %bound_method.loc6_44.2(%int_5.loc6) [concrete = constants.%int_5.0f6] -// CHECK:STDOUT: %.loc6_44.1: %i32 = value_of_initializer %int.convert_checked.loc6 [concrete = constants.%int_5.0f6] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6: init %i32 = call %bound_method.loc6_44.2(%int_5.loc6) [concrete = constants.%int_5.0f6] +// CHECK:STDOUT: %.loc6_44.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6 [concrete = constants.%int_5.0f6] // CHECK:STDOUT: %.loc6_44.2: %i32 = converted %int_5.loc6, %.loc6_44.1 [concrete = constants.%int_5.0f6] // CHECK:STDOUT: %SOME_PRIVATE_CONSTANT: %i32 = bind_name SOME_PRIVATE_CONSTANT, %.loc6_44.2 // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] @@ -1130,12 +1130,12 @@ class B { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc10_42.1: = bound_method %int_5, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc10_42.1: = bound_method %int_5, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc10_42.2: = bound_method %int_5, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc10_42.2(%int_5) [concrete = constants.%int_5.0f6] -// CHECK:STDOUT: %.loc10_42.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_5.0f6] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc10_42.2(%int_5) [concrete = constants.%int_5.0f6] +// CHECK:STDOUT: %.loc10_42.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_5.0f6] // CHECK:STDOUT: %.loc10_42.2: %i32 = converted %int_5, %.loc10_42.1 [concrete = constants.%int_5.0f6] // CHECK:STDOUT: %INTERNAL_CONSTANT: %i32 = bind_name INTERNAL_CONSTANT, %.loc10_42.2 // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] @@ -1150,7 +1150,7 @@ class B { // CHECK:STDOUT: class @B { // CHECK:STDOUT: %Internal.ref: type = name_ref Internal, file.%Internal.decl [concrete = constants.%Internal] // CHECK:STDOUT: %.loc14: %B.elem = field_decl internal, element0 [concrete] -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { +// CHECK:STDOUT: %B.G.decl: %B.G.type = fn_decl @B.G [concrete = constants.%B.G] { // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -1159,7 +1159,7 @@ class B { // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %SomeFunc.decl: %SomeFunc.type = fn_decl @SomeFunc [concrete = constants.%SomeFunc] { +// CHECK:STDOUT: %B.SomeFunc.decl: %B.SomeFunc.type = fn_decl @B.SomeFunc [concrete = constants.%B.SomeFunc] { // CHECK:STDOUT: %self.patt: %pattern_type.049 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.049 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] @@ -1181,12 +1181,12 @@ class B { // CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: .Internal = // CHECK:STDOUT: .internal [private] = %.loc14 -// CHECK:STDOUT: .G = %G.decl -// CHECK:STDOUT: .SomeFunc = %SomeFunc.decl +// CHECK:STDOUT: .G = %B.G.decl +// CHECK:STDOUT: .SomeFunc = %B.SomeFunc.decl // CHECK:STDOUT: .A = // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G() -> %i32 { +// CHECK:STDOUT: fn @B.G() -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %A.ref.loc24: type = name_ref A, file.%A.decl [concrete = constants.%A] // CHECK:STDOUT: %SOME_PRIVATE_CONSTANT.ref: = name_ref SOME_PRIVATE_CONSTANT, [concrete = ] @@ -1195,7 +1195,7 @@ class B { // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @SomeFunc(%self.param: %B) -> %i32 { +// CHECK:STDOUT: fn @B.SomeFunc(%self.param: %B) -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: %B = name_ref self, %self // CHECK:STDOUT: %internal.ref: %B.elem = name_ref internal, @B.%.loc14 [concrete = @B.%.loc14] @@ -1219,8 +1219,8 @@ class B { // CHECK:STDOUT: %B: type = class_type @B [concrete] // CHECK:STDOUT: %B.elem: type = unbound_element_type %B, %A [concrete] // CHECK:STDOUT: %pattern_type.049: type = pattern_type %B [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %B.F.type: type = fn_type @B.F [concrete] +// CHECK:STDOUT: %B.F: %B.F.type = struct_value () [concrete] // CHECK:STDOUT: %struct_type.base.953: type = struct_type {.base: %A} [concrete] // CHECK:STDOUT: %complete_type.020: = complete_type_witness %struct_type.base.953 [concrete] // CHECK:STDOUT: } @@ -1262,7 +1262,7 @@ class B { // CHECK:STDOUT: class @B { // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A] // CHECK:STDOUT: %.loc9: %B.elem = base_decl %A.ref, element0 [concrete] -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { +// CHECK:STDOUT: %B.F.decl: %B.F.type = fn_decl @B.F [concrete = constants.%B.F] { // CHECK:STDOUT: %self.patt: %pattern_type.049 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.049 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -1278,11 +1278,11 @@ class B { // CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: .A = // CHECK:STDOUT: .base = %.loc9 -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %B.F.decl // CHECK:STDOUT: extend %A.ref // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F(%self.param: %B) { +// CHECK:STDOUT: fn @B.F(%self.param: %B) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: %B = name_ref self, %self // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A] @@ -1304,8 +1304,8 @@ class B { // CHECK:STDOUT: %B: type = class_type @B [concrete] // CHECK:STDOUT: %B.elem: type = unbound_element_type %B, %A [concrete] // CHECK:STDOUT: %pattern_type.049: type = pattern_type %B [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %B.F.type: type = fn_type @B.F [concrete] +// CHECK:STDOUT: %B.F: %B.F.type = struct_value () [concrete] // CHECK:STDOUT: %struct_type.base.953: type = struct_type {.base: %A} [concrete] // CHECK:STDOUT: %complete_type.020: = complete_type_witness %struct_type.base.953 [concrete] // CHECK:STDOUT: } @@ -1347,7 +1347,7 @@ class B { // CHECK:STDOUT: class @B { // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A] // CHECK:STDOUT: %.loc9: %B.elem = base_decl %A.ref, element0 [concrete] -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { +// CHECK:STDOUT: %B.F.decl: %B.F.type = fn_decl @B.F [concrete = constants.%B.F] { // CHECK:STDOUT: %self.patt: %pattern_type.049 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.049 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -1363,11 +1363,11 @@ class B { // CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: .A = // CHECK:STDOUT: .base = %.loc9 -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %B.F.decl // CHECK:STDOUT: extend %A.ref // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F(%self.param: %B) { +// CHECK:STDOUT: fn @B.F(%self.param: %B) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: %B = name_ref self, %self // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A] diff --git a/toolchain/check/testdata/class/init_as.carbon b/toolchain/check/testdata/class/init_as.carbon index 941031b91618..92e35c2a7230 100644 --- a/toolchain/check/testdata/class/init_as.carbon +++ b/toolchain/check/testdata/class/init_as.carbon @@ -42,28 +42,28 @@ fn F() -> i32 { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %Class.val: %Class = struct_value (%int_1.5d2, %int_2.ef8) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.7de: type = fn_type @Op.1, @Destroy.impl(%Class) [concrete] -// CHECK:STDOUT: %Op.d64: %Op.type.7de = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.7de: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%Class) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.d64: %T.as.Destroy.impl.Op.type.7de = struct_value () [concrete] // CHECK:STDOUT: %ptr.e71: type = ptr_type %Class [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.d64, @Op.1(%Class) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.d64, @T.as.Destroy.impl.Op(%Class) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -76,8 +76,8 @@ fn F() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -123,21 +123,21 @@ fn F() -> i32 { // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %.loc21_26.1: %struct_type.a.b.cfd = struct_literal (%int_1, %int_2) // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] -// CHECK:STDOUT: %impl.elem0.loc21_26.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc21_26.1: = bound_method %int_1, %impl.elem0.loc21_26.1 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc21_26.1: = specific_function %impl.elem0.loc21_26.1, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc21_26.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc21_26.1: = bound_method %int_1, %impl.elem0.loc21_26.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc21_26.1: = specific_function %impl.elem0.loc21_26.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc21_26.2: = bound_method %int_1, %specific_fn.loc21_26.1 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc21_26.1: init %i32 = call %bound_method.loc21_26.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc21_26.2: init %i32 = converted %int_1, %int.convert_checked.loc21_26.1 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21_26.1: init %i32 = call %bound_method.loc21_26.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc21_26.2: init %i32 = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21_26.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc21_26.3: ref %Class = temporary_storage // CHECK:STDOUT: %.loc21_26.4: ref %i32 = class_element_access %.loc21_26.3, element0 // CHECK:STDOUT: %.loc21_26.5: init %i32 = initialize_from %.loc21_26.2 to %.loc21_26.4 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %impl.elem0.loc21_26.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc21_26.3: = bound_method %int_2, %impl.elem0.loc21_26.2 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc21_26.2: = specific_function %impl.elem0.loc21_26.2, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc21_26.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc21_26.3: = bound_method %int_2, %impl.elem0.loc21_26.2 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc21_26.2: = specific_function %impl.elem0.loc21_26.2, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc21_26.4: = bound_method %int_2, %specific_fn.loc21_26.2 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc21_26.2: init %i32 = call %bound_method.loc21_26.4(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc21_26.6: init %i32 = converted %int_2, %int.convert_checked.loc21_26.2 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21_26.2: init %i32 = call %bound_method.loc21_26.4(%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc21_26.6: init %i32 = converted %int_2, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21_26.2 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc21_26.7: ref %i32 = class_element_access %.loc21_26.3, element1 // CHECK:STDOUT: %.loc21_26.8: init %i32 = initialize_from %.loc21_26.6 to %.loc21_26.7 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc21_26.9: init %Class = class_init (%.loc21_26.5, %.loc21_26.8), %.loc21_26.3 [concrete = constants.%Class.val] @@ -146,11 +146,11 @@ fn F() -> i32 { // CHECK:STDOUT: %a.ref: %Class.elem = name_ref a, @Class.%.loc16 [concrete = @Class.%.loc16] // CHECK:STDOUT: %.loc21_37.1: ref %i32 = class_element_access %.loc21_28, element0 // CHECK:STDOUT: %.loc21_37.2: %i32 = bind_value %.loc21_37.1 -// CHECK:STDOUT: %Op.bound: = bound_method %.loc21_26.3, constants.%Op.d64 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.d64, @Op.1(constants.%Class) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc21_26.5: = bound_method %.loc21_26.3, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc21_26.3, constants.%T.as.Destroy.impl.Op.d64 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.d64, @T.as.Destroy.impl.Op(constants.%Class) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc21_26.5: = bound_method %.loc21_26.3, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.e71 = addr_of %.loc21_26.3 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc21_26.5(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc21_26.5(%addr) // CHECK:STDOUT: return %.loc21_37.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/init_nested.carbon b/toolchain/check/testdata/class/init_nested.carbon index 68fa871e4e79..b87425b9b4a8 100644 --- a/toolchain/check/testdata/class/init_nested.carbon +++ b/toolchain/check/testdata/class/init_nested.carbon @@ -51,10 +51,10 @@ fn MakeOuter() -> Outer { // CHECK:STDOUT: %MakeOuter.type: type = fn_type @MakeOuter [concrete] // CHECK:STDOUT: %MakeOuter: %MakeOuter.type = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.e24: type = fn_type @Op.1, @Destroy.impl(%Inner) [concrete] -// CHECK:STDOUT: %Op.7b1: %Op.type.e24 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.e24: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%Inner) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.7b1: %T.as.Destroy.impl.Op.type.e24 = struct_value () [concrete] // CHECK:STDOUT: %ptr.78b: type = ptr_type %Inner [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.7b1, @Op.1(%Inner) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.7b1, @T.as.Destroy.impl.Op(%Inner) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -143,16 +143,16 @@ fn MakeOuter() -> Outer { // CHECK:STDOUT: %.loc28_45.3: %struct_type.c.d.dce = struct_literal (%MakeInner.call.loc28_26, %MakeInner.call.loc28_44) // CHECK:STDOUT: %.loc28_45.4: init %Outer = class_init (%MakeInner.call.loc28_26, %MakeInner.call.loc28_44), %return // CHECK:STDOUT: %.loc28_46: init %Outer = converted %.loc28_45.3, %.loc28_45.4 -// CHECK:STDOUT: %Op.bound.loc28_45.1: = bound_method %.loc28_45.2, constants.%Op.7b1 -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.7b1, @Op.1(constants.%Inner) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc28_45.1: = bound_method %.loc28_45.2, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc28_45.1: = bound_method %.loc28_45.2, constants.%T.as.Destroy.impl.Op.7b1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.7b1, @T.as.Destroy.impl.Op(constants.%Inner) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc28_45.1: = bound_method %.loc28_45.2, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc28_45.1: %ptr.78b = addr_of %.loc28_45.2 -// CHECK:STDOUT: %no_op.loc28_45.1: init %empty_tuple.type = call %bound_method.loc28_45.1(%addr.loc28_45.1) -// CHECK:STDOUT: %Op.bound.loc28_45.2: = bound_method %.loc28_45.1, constants.%Op.7b1 -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.7b1, @Op.1(constants.%Inner) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc28_45.2: = bound_method %.loc28_45.1, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc28_45.1: init %empty_tuple.type = call %bound_method.loc28_45.1(%addr.loc28_45.1) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc28_45.2: = bound_method %.loc28_45.1, constants.%T.as.Destroy.impl.Op.7b1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.7b1, @T.as.Destroy.impl.Op(constants.%Inner) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc28_45.2: = bound_method %.loc28_45.1, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc28_45.2: %ptr.78b = addr_of %.loc28_45.1 -// CHECK:STDOUT: %no_op.loc28_45.2: init %empty_tuple.type = call %bound_method.loc28_45.2(%addr.loc28_45.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc28_45.2: init %empty_tuple.type = call %bound_method.loc28_45.2(%addr.loc28_45.2) // CHECK:STDOUT: return %.loc28_46 to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/local.carbon b/toolchain/check/testdata/class/local.carbon index afd628dfd9f2..0ffd81217414 100644 --- a/toolchain/check/testdata/class/local.carbon +++ b/toolchain/check/testdata/class/local.carbon @@ -37,14 +37,14 @@ class A { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %A.F.type: type = fn_type @A.F [concrete] +// CHECK:STDOUT: %A.F: %A.F.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %B: type = class_type @B [concrete] // CHECK:STDOUT: %pattern_type.971: type = pattern_type %B [concrete] -// CHECK:STDOUT: %Make.type: type = fn_type @Make [concrete] -// CHECK:STDOUT: %Make: %Make.type = struct_value () [concrete] +// CHECK:STDOUT: %B.Make.type: type = fn_type @B.Make [concrete] +// CHECK:STDOUT: %B.Make: %B.Make.type = struct_value () [concrete] // CHECK:STDOUT: %B.elem: type = unbound_element_type %B, %i32 [concrete] // CHECK:STDOUT: %struct_type.n.033: type = struct_type {.n: %i32} [concrete] // CHECK:STDOUT: %complete_type.54b: = complete_type_witness %struct_type.n.033 [concrete] @@ -53,25 +53,25 @@ class A { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %B.val: %B = struct_value (%int_1.5d2) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.96c: type = fn_type @Op.1, @Destroy.impl(%B) [concrete] -// CHECK:STDOUT: %Op.c53: %Op.type.96c = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.96c: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%B) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.c53: %T.as.Destroy.impl.Op.type.96c = struct_value () [concrete] // CHECK:STDOUT: %ptr.bac: type = ptr_type %B [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.c53, @Op.1(%B) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.c53, @T.as.Destroy.impl.Op(%B) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -84,8 +84,8 @@ class A { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -99,7 +99,7 @@ class A { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A { -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { +// CHECK:STDOUT: %A.F.decl: %A.F.type = fn_decl @A.F [concrete = constants.%A.F] { // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -114,11 +114,11 @@ class A { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %A.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { -// CHECK:STDOUT: %Make.decl: %Make.type = fn_decl @Make [concrete = constants.%Make] { +// CHECK:STDOUT: %B.Make.decl: %B.Make.type = fn_decl @B.Make [concrete = constants.%B.Make] { // CHECK:STDOUT: %return.patt: %pattern_type.971 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.971 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -135,30 +135,30 @@ class A { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B -// CHECK:STDOUT: .Make = %Make.decl +// CHECK:STDOUT: .Make = %B.Make.decl // CHECK:STDOUT: .n = %.loc23 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F() -> %i32 { +// CHECK:STDOUT: fn @A.F() -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %B.decl: type = class_decl @B [concrete = constants.%B] {} {} // CHECK:STDOUT: %B.ref: type = name_ref B, %B.decl [concrete = constants.%B] -// CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, @B.%Make.decl [concrete = constants.%Make] +// CHECK:STDOUT: %Make.ref: %B.Make.type = name_ref Make, @B.%B.Make.decl [concrete = constants.%B.Make] // CHECK:STDOUT: %.loc26_19.1: ref %B = temporary_storage -// CHECK:STDOUT: %Make.call: init %B = call %Make.ref() to %.loc26_19.1 -// CHECK:STDOUT: %.loc26_19.2: ref %B = temporary %.loc26_19.1, %Make.call +// CHECK:STDOUT: %B.Make.call: init %B = call %Make.ref() to %.loc26_19.1 +// CHECK:STDOUT: %.loc26_19.2: ref %B = temporary %.loc26_19.1, %B.Make.call // CHECK:STDOUT: %n.ref: %B.elem = name_ref n, @B.%.loc23 [concrete = @B.%.loc23] // CHECK:STDOUT: %.loc26_20.1: ref %i32 = class_element_access %.loc26_19.2, element0 // CHECK:STDOUT: %.loc26_20.2: %i32 = bind_value %.loc26_20.1 -// CHECK:STDOUT: %Op.bound: = bound_method %.loc26_19.1, constants.%Op.c53 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.c53, @Op.1(constants.%B) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc26_19.1, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc26_19.1, constants.%T.as.Destroy.impl.Op.c53 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.c53, @T.as.Destroy.impl.Op(constants.%B) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %.loc26_19.1, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.bac = addr_of %.loc26_19.1 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %.loc26_20.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Make() -> %return.param: %B { +// CHECK:STDOUT: fn @B.Make() -> %return.param: %B { // CHECK:STDOUT: !entry: // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %b.patt: %pattern_type.971 = binding_pattern b [concrete] @@ -166,12 +166,12 @@ class A { // CHECK:STDOUT: } // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %.loc19_39.1: %struct_type.n.44a = struct_literal (%int_1) -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc19_39.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc19_39.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc19_39.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc19_39.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc19_39.2: init %i32 = converted %int_1, %int.convert_checked [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc19_39.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc19_39.2: init %i32 = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc19_39.3: ref %i32 = class_element_access %return, element0 // CHECK:STDOUT: %.loc19_39.4: init %i32 = initialize_from %.loc19_39.2 to %.loc19_39.3 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc19_39.5: init %B = class_init (%.loc19_39.4), %return [concrete = constants.%B.val] diff --git a/toolchain/check/testdata/class/method.carbon b/toolchain/check/testdata/class/method.carbon index 23f206537c27..eeac5425a6c8 100644 --- a/toolchain/check/testdata/class/method.carbon +++ b/toolchain/check/testdata/class/method.carbon @@ -73,13 +73,13 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %Class.F.type: type = fn_type @Class.F [concrete] +// CHECK:STDOUT: %Class.F: %Class.F.type = struct_value () [concrete] // CHECK:STDOUT: %ptr.e71: type = ptr_type %Class [concrete] // CHECK:STDOUT: %pattern_type.796: type = pattern_type %ptr.e71 [concrete] // CHECK:STDOUT: %pattern_type.f6d: type = pattern_type auto [concrete] -// CHECK:STDOUT: %G.type: type = fn_type @G [concrete] -// CHECK:STDOUT: %G: %G.type = struct_value () [concrete] +// CHECK:STDOUT: %Class.G.type: type = fn_type @Class.G [concrete] +// CHECK:STDOUT: %Class.G: %Class.G.type = struct_value () [concrete] // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %i32 [concrete] // CHECK:STDOUT: %struct_type.k.0bf: type = struct_type {.k: %i32} [concrete] // CHECK:STDOUT: %complete_type.954: = complete_type_witness %struct_type.k.0bf [concrete] @@ -94,24 +94,24 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %Class.val: %Class = struct_value (%int_1.5d2) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.7de: type = fn_type @Op.1, @Destroy.impl(%Class) [concrete] -// CHECK:STDOUT: %Op.d64: %Op.type.7de = struct_value () [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.d64, @Op.1(%Class) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.7de: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%Class) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.d64: %T.as.Destroy.impl.Op.type.7de = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.d64, @T.as.Destroy.impl.Op(%Class) [concrete] // CHECK:STDOUT: %CallWithAddr.type: type = fn_type @CallWithAddr [concrete] // CHECK:STDOUT: %CallWithAddr: %CallWithAddr.type = struct_value () [concrete] // CHECK:STDOUT: %CallFThroughPointer.type: type = fn_type @CallFThroughPointer [concrete] @@ -136,8 +136,8 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -157,7 +157,7 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Class.decl: type = class_decl @Class [concrete = constants.%Class] {} {} -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { +// CHECK:STDOUT: %Class.F.decl: %Class.F.type = fn_decl @Class.F [concrete = constants.%Class.F] { // CHECK:STDOUT: %self.patt: %pattern_type.761 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.761 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] @@ -280,7 +280,7 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { +// CHECK:STDOUT: %Class.F.decl: %Class.F.type = fn_decl @Class.F [concrete = constants.%Class.F] { // CHECK:STDOUT: %self.patt: %pattern_type.761 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.761 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] @@ -294,7 +294,7 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %return.param.loc16: ref %i32 = out_param call_param1 // CHECK:STDOUT: %return.loc16: ref %i32 = return_slot %return.param.loc16 // CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { +// CHECK:STDOUT: %Class.G.decl: %Class.G.type = fn_decl @Class.G [concrete = constants.%Class.G] { // CHECK:STDOUT: %self.patt: %pattern_type.796 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.796 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %.loc17_8: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] @@ -312,8 +312,8 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param1 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, %F.decl [concrete = constants.%F] -// CHECK:STDOUT: %A: %F.type = bind_alias A, %F.decl [concrete = constants.%F] +// CHECK:STDOUT: %F.ref: %Class.F.type = name_ref F, %Class.F.decl [concrete = constants.%Class.F] +// CHECK:STDOUT: %A: %Class.F.type = bind_alias A, %Class.F.decl [concrete = constants.%Class.F] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %.loc21: %Class.elem = field_decl k, element0 [concrete] @@ -323,13 +323,13 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .F = %Class.F.decl +// CHECK:STDOUT: .G = %Class.G.decl // CHECK:STDOUT: .A = %A // CHECK:STDOUT: .k = %.loc21 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F(%self.param.loc24: %Class) -> %i32 { +// CHECK:STDOUT: fn @Class.F(%self.param.loc24: %Class) -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: %Class = name_ref self, %self.loc24 // CHECK:STDOUT: %k.ref: %Class.elem = name_ref k, @Class.%.loc21 [concrete = @Class.%.loc21] @@ -338,27 +338,27 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: return %.loc25_14.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G(%self.param: %ptr.e71) -> %i32; +// CHECK:STDOUT: fn @Class.G(%self.param: %ptr.e71) -> %i32; // CHECK:STDOUT: // CHECK:STDOUT: fn @Call(%c.param: %Class) -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %c.ref: %Class = name_ref c, %c -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, @Class.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %F.bound: = bound_method %c.ref, %F.ref -// CHECK:STDOUT: %F.call: init %i32 = call %F.bound(%c.ref) -// CHECK:STDOUT: %.loc31_15.1: %i32 = value_of_initializer %F.call -// CHECK:STDOUT: %.loc31_15.2: %i32 = converted %F.call, %.loc31_15.1 +// CHECK:STDOUT: %F.ref: %Class.F.type = name_ref F, @Class.%Class.F.decl [concrete = constants.%Class.F] +// CHECK:STDOUT: %Class.F.bound: = bound_method %c.ref, %F.ref +// CHECK:STDOUT: %Class.F.call: init %i32 = call %Class.F.bound(%c.ref) +// CHECK:STDOUT: %.loc31_15.1: %i32 = value_of_initializer %Class.F.call +// CHECK:STDOUT: %.loc31_15.2: %i32 = converted %Class.F.call, %.loc31_15.1 // CHECK:STDOUT: return %.loc31_15.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @CallAlias(%c.param: %Class) -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %c.ref: %Class = name_ref c, %c -// CHECK:STDOUT: %A.ref: %F.type = name_ref A, @Class.%A [concrete = constants.%F] -// CHECK:STDOUT: %F.bound: = bound_method %c.ref, %A.ref -// CHECK:STDOUT: %F.call: init %i32 = call %F.bound(%c.ref) -// CHECK:STDOUT: %.loc35_15.1: %i32 = value_of_initializer %F.call -// CHECK:STDOUT: %.loc35_15.2: %i32 = converted %F.call, %.loc35_15.1 +// CHECK:STDOUT: %A.ref: %Class.F.type = name_ref A, @Class.%A [concrete = constants.%Class.F] +// CHECK:STDOUT: %Class.F.bound: = bound_method %c.ref, %A.ref +// CHECK:STDOUT: %Class.F.call: init %i32 = call %Class.F.bound(%c.ref) +// CHECK:STDOUT: %.loc35_15.1: %i32 = value_of_initializer %Class.F.call +// CHECK:STDOUT: %.loc35_15.2: %i32 = converted %Class.F.call, %.loc35_15.1 // CHECK:STDOUT: return %.loc35_15.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -367,29 +367,29 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %.loc39_18.1: %struct_type.k.240 = struct_literal (%int_1) // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc39_18.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc39_18.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc39_18.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc39_18.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc39_18.2: init %i32 = converted %int_1, %int.convert_checked [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc39_18.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc39_18.2: init %i32 = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc39_18.3: ref %Class = temporary_storage // CHECK:STDOUT: %.loc39_18.4: ref %i32 = class_element_access %.loc39_18.3, element0 // CHECK:STDOUT: %.loc39_18.5: init %i32 = initialize_from %.loc39_18.2 to %.loc39_18.4 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc39_18.6: init %Class = class_init (%.loc39_18.5), %.loc39_18.3 [concrete = constants.%Class.val] // CHECK:STDOUT: %.loc39_18.7: ref %Class = temporary %.loc39_18.3, %.loc39_18.6 // CHECK:STDOUT: %.loc39_20.1: ref %Class = converted %.loc39_18.1, %.loc39_18.7 -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, @Class.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %F.bound: = bound_method %.loc39_20.1, %F.ref +// CHECK:STDOUT: %F.ref: %Class.F.type = name_ref F, @Class.%Class.F.decl [concrete = constants.%Class.F] +// CHECK:STDOUT: %Class.F.bound: = bound_method %.loc39_20.1, %F.ref // CHECK:STDOUT: %.loc39_20.2: %Class = bind_value %.loc39_20.1 -// CHECK:STDOUT: %F.call: init %i32 = call %F.bound(%.loc39_20.2) -// CHECK:STDOUT: %.loc39_33.1: %i32 = value_of_initializer %F.call -// CHECK:STDOUT: %.loc39_33.2: %i32 = converted %F.call, %.loc39_33.1 -// CHECK:STDOUT: %Op.bound: = bound_method %.loc39_18.3, constants.%Op.d64 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.d64, @Op.1(constants.%Class) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc39_18.3: = bound_method %.loc39_18.3, %Op.specific_fn +// CHECK:STDOUT: %Class.F.call: init %i32 = call %Class.F.bound(%.loc39_20.2) +// CHECK:STDOUT: %.loc39_33.1: %i32 = value_of_initializer %Class.F.call +// CHECK:STDOUT: %.loc39_33.2: %i32 = converted %Class.F.call, %.loc39_33.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc39_18.3, constants.%T.as.Destroy.impl.Op.d64 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.d64, @T.as.Destroy.impl.Op(constants.%Class) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc39_18.3: = bound_method %.loc39_18.3, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.e71 = addr_of %.loc39_18.3 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc39_18.3(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc39_18.3(%addr) // CHECK:STDOUT: return %.loc39_33.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -403,17 +403,17 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] // CHECK:STDOUT: %c: ref %Class = bind_name c, %c.var // CHECK:STDOUT: %c.ref: ref %Class = name_ref c, %c -// CHECK:STDOUT: %G.ref: %G.type = name_ref G, @Class.%G.decl [concrete = constants.%G] -// CHECK:STDOUT: %G.bound: = bound_method %c.ref, %G.ref +// CHECK:STDOUT: %G.ref: %Class.G.type = name_ref G, @Class.%Class.G.decl [concrete = constants.%Class.G] +// CHECK:STDOUT: %Class.G.bound: = bound_method %c.ref, %G.ref // CHECK:STDOUT: %addr.loc44: %ptr.e71 = addr_of %c.ref -// CHECK:STDOUT: %G.call: init %i32 = call %G.bound(%addr.loc44) -// CHECK:STDOUT: %.loc44_15.1: %i32 = value_of_initializer %G.call -// CHECK:STDOUT: %.loc44_15.2: %i32 = converted %G.call, %.loc44_15.1 -// CHECK:STDOUT: %Op.bound: = bound_method %c.var, constants.%Op.d64 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.d64, @Op.1(constants.%Class) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %c.var, %Op.specific_fn +// CHECK:STDOUT: %Class.G.call: init %i32 = call %Class.G.bound(%addr.loc44) +// CHECK:STDOUT: %.loc44_15.1: %i32 = value_of_initializer %Class.G.call +// CHECK:STDOUT: %.loc44_15.2: %i32 = converted %Class.G.call, %.loc44_15.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %c.var, constants.%T.as.Destroy.impl.Op.d64 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.d64, @T.as.Destroy.impl.Op(constants.%Class) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %c.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr.loc43: %ptr.e71 = addr_of %c.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr.loc43) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc43) // CHECK:STDOUT: return %.loc44_15.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -421,12 +421,12 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %p.ref: %ptr.e71 = name_ref p, %p // CHECK:STDOUT: %.loc48_11.1: ref %Class = deref %p.ref -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, @Class.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %F.bound: = bound_method %.loc48_11.1, %F.ref +// CHECK:STDOUT: %F.ref: %Class.F.type = name_ref F, @Class.%Class.F.decl [concrete = constants.%Class.F] +// CHECK:STDOUT: %Class.F.bound: = bound_method %.loc48_11.1, %F.ref // CHECK:STDOUT: %.loc48_11.2: %Class = bind_value %.loc48_11.1 -// CHECK:STDOUT: %F.call: init %i32 = call %F.bound(%.loc48_11.2) -// CHECK:STDOUT: %.loc48_18.1: %i32 = value_of_initializer %F.call -// CHECK:STDOUT: %.loc48_18.2: %i32 = converted %F.call, %.loc48_18.1 +// CHECK:STDOUT: %Class.F.call: init %i32 = call %Class.F.bound(%.loc48_11.2) +// CHECK:STDOUT: %.loc48_18.1: %i32 = value_of_initializer %Class.F.call +// CHECK:STDOUT: %.loc48_18.2: %i32 = converted %Class.F.call, %.loc48_18.1 // CHECK:STDOUT: return %.loc48_18.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -434,12 +434,12 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %p.ref: %ptr.e71 = name_ref p, %p // CHECK:STDOUT: %.loc52_11: ref %Class = deref %p.ref -// CHECK:STDOUT: %G.ref: %G.type = name_ref G, @Class.%G.decl [concrete = constants.%G] -// CHECK:STDOUT: %G.bound: = bound_method %.loc52_11, %G.ref +// CHECK:STDOUT: %G.ref: %Class.G.type = name_ref G, @Class.%Class.G.decl [concrete = constants.%Class.G] +// CHECK:STDOUT: %Class.G.bound: = bound_method %.loc52_11, %G.ref // CHECK:STDOUT: %addr: %ptr.e71 = addr_of %.loc52_11 -// CHECK:STDOUT: %G.call: init %i32 = call %G.bound(%addr) -// CHECK:STDOUT: %.loc52_18.1: %i32 = value_of_initializer %G.call -// CHECK:STDOUT: %.loc52_18.2: %i32 = converted %G.call, %.loc52_18.1 +// CHECK:STDOUT: %Class.G.call: init %i32 = call %Class.G.bound(%addr) +// CHECK:STDOUT: %.loc52_18.1: %i32 = value_of_initializer %Class.G.call +// CHECK:STDOUT: %.loc52_18.2: %i32 = converted %Class.G.call, %.loc52_18.1 // CHECK:STDOUT: return %.loc52_18.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -451,17 +451,17 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %.loc58_15.1: ref %Class = temporary_storage // CHECK:STDOUT: %Make.call: init %Class = call %Make.ref() to %.loc58_15.1 // CHECK:STDOUT: %.loc58_15.2: ref %Class = temporary %.loc58_15.1, %Make.call -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, @Class.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %F.bound: = bound_method %.loc58_15.2, %F.ref +// CHECK:STDOUT: %F.ref: %Class.F.type = name_ref F, @Class.%Class.F.decl [concrete = constants.%Class.F] +// CHECK:STDOUT: %Class.F.bound: = bound_method %.loc58_15.2, %F.ref // CHECK:STDOUT: %.loc58_15.3: %Class = bind_value %.loc58_15.2 -// CHECK:STDOUT: %F.call: init %i32 = call %F.bound(%.loc58_15.3) -// CHECK:STDOUT: %.loc58_20.1: %i32 = value_of_initializer %F.call -// CHECK:STDOUT: %.loc58_20.2: %i32 = converted %F.call, %.loc58_20.1 -// CHECK:STDOUT: %Op.bound: = bound_method %.loc58_15.1, constants.%Op.d64 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.d64, @Op.1(constants.%Class) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc58_15.1, %Op.specific_fn +// CHECK:STDOUT: %Class.F.call: init %i32 = call %Class.F.bound(%.loc58_15.3) +// CHECK:STDOUT: %.loc58_20.1: %i32 = value_of_initializer %Class.F.call +// CHECK:STDOUT: %.loc58_20.2: %i32 = converted %Class.F.call, %.loc58_20.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc58_15.1, constants.%T.as.Destroy.impl.Op.d64 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.d64, @T.as.Destroy.impl.Op(constants.%Class) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %.loc58_15.1, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.e71 = addr_of %.loc58_15.1 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %.loc58_20.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -471,17 +471,17 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %.loc62_15.1: ref %Class = temporary_storage // CHECK:STDOUT: %Make.call: init %Class = call %Make.ref() to %.loc62_15.1 // CHECK:STDOUT: %.loc62_15.2: ref %Class = temporary %.loc62_15.1, %Make.call -// CHECK:STDOUT: %G.ref: %G.type = name_ref G, @Class.%G.decl [concrete = constants.%G] -// CHECK:STDOUT: %G.bound: = bound_method %.loc62_15.2, %G.ref +// CHECK:STDOUT: %G.ref: %Class.G.type = name_ref G, @Class.%Class.G.decl [concrete = constants.%Class.G] +// CHECK:STDOUT: %Class.G.bound: = bound_method %.loc62_15.2, %G.ref // CHECK:STDOUT: %addr.loc62_15.1: %ptr.e71 = addr_of %.loc62_15.2 -// CHECK:STDOUT: %G.call: init %i32 = call %G.bound(%addr.loc62_15.1) -// CHECK:STDOUT: %.loc62_20.1: %i32 = value_of_initializer %G.call -// CHECK:STDOUT: %.loc62_20.2: %i32 = converted %G.call, %.loc62_20.1 -// CHECK:STDOUT: %Op.bound: = bound_method %.loc62_15.1, constants.%Op.d64 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.d64, @Op.1(constants.%Class) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc62_15.1, %Op.specific_fn +// CHECK:STDOUT: %Class.G.call: init %i32 = call %Class.G.bound(%addr.loc62_15.1) +// CHECK:STDOUT: %.loc62_20.1: %i32 = value_of_initializer %Class.G.call +// CHECK:STDOUT: %.loc62_20.2: %i32 = converted %Class.G.call, %.loc62_20.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc62_15.1, constants.%T.as.Destroy.impl.Op.d64 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.d64, @T.as.Destroy.impl.Op(constants.%Class) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %.loc62_15.1, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr.loc62_15.2: %ptr.e71 = addr_of %.loc62_15.1 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr.loc62_15.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc62_15.2) // CHECK:STDOUT: return %.loc62_20.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/method_access.carbon b/toolchain/check/testdata/class/method_access.carbon index dbbcc707f4a3..e04932e8ec03 100644 --- a/toolchain/check/testdata/class/method_access.carbon +++ b/toolchain/check/testdata/class/method_access.carbon @@ -32,9 +32,9 @@ fn G(x: X) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %X: type = class_type @X [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %X [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] +// CHECK:STDOUT: %X.F.type: type = fn_type @X.F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %X.F: %X.F.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] @@ -58,7 +58,7 @@ fn G(x: X) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @X { -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { +// CHECK:STDOUT: %X.F.decl: %X.F.type = fn_decl @X.F [concrete = constants.%X.F] { // CHECK:STDOUT: %self.patt: %pattern_type = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -72,18 +72,18 @@ fn G(x: X) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%X -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %X.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F(%self.param: %X); +// CHECK:STDOUT: fn @X.F(%self.param: %X); // CHECK:STDOUT: // CHECK:STDOUT: fn @G(%x.param: %X) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %x.ref.loc12_3: %X = name_ref x, %x // CHECK:STDOUT: %x.ref.loc12_6: %X = name_ref x, %x -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, @X.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %F.bound: = bound_method %x.ref.loc12_6, %F.ref -// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.bound(%x.ref.loc12_6) +// CHECK:STDOUT: %F.ref: %X.F.type = name_ref F, @X.%X.F.decl [concrete = constants.%X.F] +// CHECK:STDOUT: %X.F.bound: = bound_method %x.ref.loc12_6, %F.ref +// CHECK:STDOUT: %X.F.call: init %empty_tuple.type = call %X.F.bound(%x.ref.loc12_6) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/nested.carbon b/toolchain/check/testdata/class/nested.carbon index 8e39e3f8416e..73a998dc2e40 100644 --- a/toolchain/check/testdata/class/nested.carbon +++ b/toolchain/check/testdata/class/nested.carbon @@ -57,20 +57,20 @@ fn F(a: Outer*) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %Outer: type = class_type @Outer [concrete] -// CHECK:STDOUT: %F.type.288: type = fn_type @F.loc16 [concrete] +// CHECK:STDOUT: %Outer.F.type: type = fn_type @Outer.F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F.bd8: %F.type.288 = struct_value () [concrete] +// CHECK:STDOUT: %Outer.F: %Outer.F.type = struct_value () [concrete] // CHECK:STDOUT: %Inner: type = class_type @Inner [concrete] // CHECK:STDOUT: %ptr.36a: type = ptr_type %Inner [concrete] // CHECK:STDOUT: %Inner.elem.640: type = unbound_element_type %Inner, %ptr.36a [concrete] // CHECK:STDOUT: %ptr.5df: type = ptr_type %Outer [concrete] // CHECK:STDOUT: %Inner.elem.c30: type = unbound_element_type %Inner, %ptr.5df [concrete] -// CHECK:STDOUT: %G.type: type = fn_type @G [concrete] -// CHECK:STDOUT: %G: %G.type = struct_value () [concrete] +// CHECK:STDOUT: %Inner.G.type: type = fn_type @Inner.G [concrete] +// CHECK:STDOUT: %Inner.G: %Inner.G.type = struct_value () [concrete] // CHECK:STDOUT: %struct_type.pi.po.qi: type = struct_type {.pi: %ptr.36a, .po: %ptr.5df, .qi: %ptr.36a} [concrete] // CHECK:STDOUT: %complete_type.7ae: = complete_type_witness %struct_type.pi.po.qi [concrete] -// CHECK:STDOUT: %H.type: type = fn_type @H [concrete] -// CHECK:STDOUT: %H: %H.type = struct_value () [concrete] +// CHECK:STDOUT: %Outer.H.type: type = fn_type @Outer.H [concrete] +// CHECK:STDOUT: %Outer.H: %Outer.H.type = struct_value () [concrete] // CHECK:STDOUT: %Outer.elem.a16: type = unbound_element_type %Outer, %ptr.5df [concrete] // CHECK:STDOUT: %Outer.elem.fe9: type = unbound_element_type %Outer, %ptr.36a [concrete] // CHECK:STDOUT: %struct_type.po.qo.pi: type = struct_type {.po: %ptr.5df, .qo: %ptr.5df, .pi: %ptr.36a} [concrete] @@ -78,16 +78,16 @@ fn F(a: Outer*) { // CHECK:STDOUT: %pattern_type.e74: type = pattern_type %Outer [concrete] // CHECK:STDOUT: %pattern_type.906: type = pattern_type %Inner [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.9bc: type = fn_type @Op.1, @Destroy.impl(%Inner) [concrete] -// CHECK:STDOUT: %Op.754: %Op.type.9bc = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.9bc: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%Inner) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.754: %T.as.Destroy.impl.Op.type.9bc = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.27f: type = pattern_type %ptr.36a [concrete] -// CHECK:STDOUT: %Op.specific_fn.72f: = specific_function %Op.754, @Op.1(%Inner) [concrete] -// CHECK:STDOUT: %Op.type.50c: type = fn_type @Op.1, @Destroy.impl(%Outer) [concrete] -// CHECK:STDOUT: %Op.8d4: %Op.type.50c = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.72f: = specific_function %T.as.Destroy.impl.Op.754, @T.as.Destroy.impl.Op(%Inner) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.50c: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%Outer) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.8d4: %T.as.Destroy.impl.Op.type.50c = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.95c: type = pattern_type %ptr.5df [concrete] -// CHECK:STDOUT: %Op.specific_fn.2a1: = specific_function %Op.8d4, @Op.1(%Outer) [concrete] -// CHECK:STDOUT: %F.type.b25: type = fn_type @F.loc45 [concrete] -// CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2a1: = specific_function %T.as.Destroy.impl.Op.8d4, @T.as.Destroy.impl.Op(%Outer) [concrete] +// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] +// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -107,7 +107,7 @@ fn F(a: Outer*) { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Outer.decl: type = class_decl @Outer [concrete = constants.%Outer] {} {} -// CHECK:STDOUT: %F.decl: %F.type.b25 = fn_decl @F.loc45 [concrete = constants.%F.c41] { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { // CHECK:STDOUT: %a.patt: %pattern_type.95c = binding_pattern a [concrete] // CHECK:STDOUT: %a.param_patt: %pattern_type.95c = value_param_pattern %a.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -121,9 +121,9 @@ fn F(a: Outer*) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Outer { -// CHECK:STDOUT: %F.decl: %F.type.288 = fn_decl @F.loc16 [concrete = constants.%F.bd8] {} {} +// CHECK:STDOUT: %Outer.F.decl: %Outer.F.type = fn_decl @Outer.F [concrete = constants.%Outer.F] {} {} // CHECK:STDOUT: %Inner.decl: type = class_decl @Inner [concrete = constants.%Inner] {} {} -// CHECK:STDOUT: %H.decl: %H.type = fn_decl @H [concrete = constants.%H] {} {} +// CHECK:STDOUT: %Outer.H.decl: %Outer.H.type = fn_decl @Outer.H [concrete = constants.%Outer.H] {} {} // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Outer [concrete = constants.%Outer] // CHECK:STDOUT: %ptr.loc40: type = ptr_type %Self.ref [concrete = constants.%ptr.5df] // CHECK:STDOUT: %.loc40: %Outer.elem.a16 = field_decl po, element0 [concrete] @@ -139,10 +139,10 @@ fn F(a: Outer*) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Outer -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %Outer.F.decl // CHECK:STDOUT: .Inner = %Inner.decl // CHECK:STDOUT: .Outer = -// CHECK:STDOUT: .H = %H.decl +// CHECK:STDOUT: .H = %Outer.H.decl // CHECK:STDOUT: .po = %.loc40 // CHECK:STDOUT: .qo = %.loc41 // CHECK:STDOUT: .pi = %.loc42 @@ -158,7 +158,7 @@ fn F(a: Outer*) { // CHECK:STDOUT: %Inner.ref: type = name_ref Inner, @Outer.%Inner.decl [concrete = constants.%Inner] // CHECK:STDOUT: %ptr.loc25: type = ptr_type %Inner.ref [concrete = constants.%ptr.36a] // CHECK:STDOUT: %.loc25: %Inner.elem.640 = field_decl qi, element2 [concrete] -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {} {} +// CHECK:STDOUT: %Inner.G.decl: %Inner.G.type = fn_decl @Inner.G [concrete = constants.%Inner.G] {} {} // CHECK:STDOUT: %struct_type.pi.po.qi: type = struct_type {.pi: %ptr.36a, .po: %ptr.5df, .qi: %ptr.36a} [concrete = constants.%struct_type.pi.po.qi] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.pi.po.qi [concrete = constants.%complete_type.7ae] // CHECK:STDOUT: complete_type_witness = %complete_type @@ -170,10 +170,10 @@ fn F(a: Outer*) { // CHECK:STDOUT: .po = %.loc24 // CHECK:STDOUT: .Inner = // CHECK:STDOUT: .qi = %.loc25 -// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .G = %Inner.G.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc16() { +// CHECK:STDOUT: fn @Outer.F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %o.patt: %pattern_type.e74 = binding_pattern o [concrete] @@ -189,20 +189,20 @@ fn F(a: Outer*) { // CHECK:STDOUT: %i.var: ref %Inner = var %i.var_patt // CHECK:STDOUT: %Inner.ref: type = name_ref Inner, @Outer.%Inner.decl [concrete = constants.%Inner] // CHECK:STDOUT: %i: ref %Inner = bind_name i, %i.var -// CHECK:STDOUT: %Op.bound.loc19: = bound_method %i.var, constants.%Op.754 -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.754, @Op.1(constants.%Inner) [concrete = constants.%Op.specific_fn.72f] -// CHECK:STDOUT: %bound_method.loc19: = bound_method %i.var, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc19: = bound_method %i.var, constants.%T.as.Destroy.impl.Op.754 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.754, @T.as.Destroy.impl.Op(constants.%Inner) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.72f] +// CHECK:STDOUT: %bound_method.loc19: = bound_method %i.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc19: %ptr.36a = addr_of %i.var -// CHECK:STDOUT: %no_op.loc19: init %empty_tuple.type = call %bound_method.loc19(%addr.loc19) -// CHECK:STDOUT: %Op.bound.loc18: = bound_method %o.var, constants.%Op.8d4 -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.8d4, @Op.1(constants.%Outer) [concrete = constants.%Op.specific_fn.2a1] -// CHECK:STDOUT: %bound_method.loc18: = bound_method %o.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc19: init %empty_tuple.type = call %bound_method.loc19(%addr.loc19) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc18: = bound_method %o.var, constants.%T.as.Destroy.impl.Op.8d4 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.8d4, @T.as.Destroy.impl.Op(constants.%Outer) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.2a1] +// CHECK:STDOUT: %bound_method.loc18: = bound_method %o.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc18: %ptr.5df = addr_of %o.var -// CHECK:STDOUT: %no_op.loc18: init %empty_tuple.type = call %bound_method.loc18(%addr.loc18) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc18: init %empty_tuple.type = call %bound_method.loc18(%addr.loc18) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G() { +// CHECK:STDOUT: fn @Inner.G() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %o.patt: %pattern_type.e74 = binding_pattern o [concrete] @@ -218,20 +218,20 @@ fn F(a: Outer*) { // CHECK:STDOUT: %i.var: ref %Inner = var %i.var_patt // CHECK:STDOUT: %Inner.ref: type = name_ref Inner, @Outer.%Inner.decl [concrete = constants.%Inner] // CHECK:STDOUT: %i: ref %Inner = bind_name i, %i.var -// CHECK:STDOUT: %Op.bound.loc30: = bound_method %i.var, constants.%Op.754 -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.754, @Op.1(constants.%Inner) [concrete = constants.%Op.specific_fn.72f] -// CHECK:STDOUT: %bound_method.loc30: = bound_method %i.var, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc30: = bound_method %i.var, constants.%T.as.Destroy.impl.Op.754 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.754, @T.as.Destroy.impl.Op(constants.%Inner) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.72f] +// CHECK:STDOUT: %bound_method.loc30: = bound_method %i.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc30: %ptr.36a = addr_of %i.var -// CHECK:STDOUT: %no_op.loc30: init %empty_tuple.type = call %bound_method.loc30(%addr.loc30) -// CHECK:STDOUT: %Op.bound.loc29: = bound_method %o.var, constants.%Op.8d4 -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.8d4, @Op.1(constants.%Outer) [concrete = constants.%Op.specific_fn.2a1] -// CHECK:STDOUT: %bound_method.loc29: = bound_method %o.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc30: init %empty_tuple.type = call %bound_method.loc30(%addr.loc30) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc29: = bound_method %o.var, constants.%T.as.Destroy.impl.Op.8d4 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.8d4, @T.as.Destroy.impl.Op(constants.%Outer) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.2a1] +// CHECK:STDOUT: %bound_method.loc29: = bound_method %o.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc29: %ptr.5df = addr_of %o.var -// CHECK:STDOUT: %no_op.loc29: init %empty_tuple.type = call %bound_method.loc29(%addr.loc29) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc29: init %empty_tuple.type = call %bound_method.loc29(%addr.loc29) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @H() { +// CHECK:STDOUT: fn @Outer.H() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %o.patt: %pattern_type.e74 = binding_pattern o [concrete] @@ -247,20 +247,20 @@ fn F(a: Outer*) { // CHECK:STDOUT: %i.var: ref %Inner = var %i.var_patt // CHECK:STDOUT: %Inner.ref: type = name_ref Inner, @Outer.%Inner.decl [concrete = constants.%Inner] // CHECK:STDOUT: %i: ref %Inner = bind_name i, %i.var -// CHECK:STDOUT: %Op.bound.loc37: = bound_method %i.var, constants.%Op.754 -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.754, @Op.1(constants.%Inner) [concrete = constants.%Op.specific_fn.72f] -// CHECK:STDOUT: %bound_method.loc37: = bound_method %i.var, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc37: = bound_method %i.var, constants.%T.as.Destroy.impl.Op.754 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.754, @T.as.Destroy.impl.Op(constants.%Inner) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.72f] +// CHECK:STDOUT: %bound_method.loc37: = bound_method %i.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc37: %ptr.36a = addr_of %i.var -// CHECK:STDOUT: %no_op.loc37: init %empty_tuple.type = call %bound_method.loc37(%addr.loc37) -// CHECK:STDOUT: %Op.bound.loc36: = bound_method %o.var, constants.%Op.8d4 -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.8d4, @Op.1(constants.%Outer) [concrete = constants.%Op.specific_fn.2a1] -// CHECK:STDOUT: %bound_method.loc36: = bound_method %o.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc37: init %empty_tuple.type = call %bound_method.loc37(%addr.loc37) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc36: = bound_method %o.var, constants.%T.as.Destroy.impl.Op.8d4 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.8d4, @T.as.Destroy.impl.Op(constants.%Outer) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.2a1] +// CHECK:STDOUT: %bound_method.loc36: = bound_method %o.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc36: %ptr.5df = addr_of %o.var -// CHECK:STDOUT: %no_op.loc36: init %empty_tuple.type = call %bound_method.loc36(%addr.loc36) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc36: init %empty_tuple.type = call %bound_method.loc36(%addr.loc36) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc45(%a.param: %ptr.5df) { +// CHECK:STDOUT: fn @F(%a.param: %ptr.5df) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %b.patt: %pattern_type.27f = binding_pattern b [concrete] diff --git a/toolchain/check/testdata/class/nested_name.carbon b/toolchain/check/testdata/class/nested_name.carbon index 6693545470bd..e0534a39bad9 100644 --- a/toolchain/check/testdata/class/nested_name.carbon +++ b/toolchain/check/testdata/class/nested_name.carbon @@ -49,10 +49,10 @@ fn G(o: Outer) { // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.9bc: type = fn_type @Op.1, @Destroy.impl(%Inner) [concrete] -// CHECK:STDOUT: %Op.754: %Op.type.9bc = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.9bc: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%Inner) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.754: %T.as.Destroy.impl.Op.type.9bc = struct_value () [concrete] // CHECK:STDOUT: %ptr.36a: type = ptr_type %Inner [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.754, @Op.1(%Inner) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.754, @T.as.Destroy.impl.Op(%Inner) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -147,11 +147,11 @@ fn G(o: Outer) { // CHECK:STDOUT: %Inner.ref: type = name_ref Inner, @Outer.%Inner.decl [concrete = constants.%Inner] // CHECK:STDOUT: } // CHECK:STDOUT: %i: ref %Inner = bind_name i, %i.var -// CHECK:STDOUT: %Op.bound: = bound_method %i.var, constants.%Op.754 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.754, @Op.1(constants.%Inner) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %i.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %i.var, constants.%T.as.Destroy.impl.Op.754 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.754, @T.as.Destroy.impl.Op(constants.%Inner) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %i.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.36a = addr_of %i.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/raw_self.carbon b/toolchain/check/testdata/class/raw_self.carbon index 085b36aca138..0ce2af41e14e 100644 --- a/toolchain/check/testdata/class/raw_self.carbon +++ b/toolchain/check/testdata/class/raw_self.carbon @@ -38,14 +38,14 @@ fn Class.G[self: Self](r#self: i32) -> (i32, i32) { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %Class.F.type: type = fn_type @Class.F [concrete] +// CHECK:STDOUT: %Class.F: %Class.F.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.761: type = pattern_type %Class [concrete] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] // CHECK:STDOUT: %tuple.type.d07: type = tuple_type (%i32, %i32) [concrete] // CHECK:STDOUT: %pattern_type.511: type = pattern_type %tuple.type.d07 [concrete] -// CHECK:STDOUT: %G.type: type = fn_type @G [concrete] -// CHECK:STDOUT: %G: %G.type = struct_value () [concrete] +// CHECK:STDOUT: %Class.G.type: type = fn_type @Class.G [concrete] +// CHECK:STDOUT: %Class.G: %Class.G.type = struct_value () [concrete] // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %i32 [concrete] // CHECK:STDOUT: %struct_type.n: type = struct_type {.n: %i32} [concrete] // CHECK:STDOUT: %complete_type.54b: = complete_type_witness %struct_type.n [concrete] @@ -67,7 +67,7 @@ fn Class.G[self: Self](r#self: i32) -> (i32, i32) { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Class.decl: type = class_decl @Class [concrete = constants.%Class] {} {} -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { +// CHECK:STDOUT: %Class.F.decl: %Class.F.type = fn_decl @Class.F [concrete = constants.%Class.F] { // CHECK:STDOUT: %self.patt.loc21_17: %pattern_type.796 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt.loc21_21: %pattern_type.796 = value_param_pattern %self.patt.loc21_17, call_param0 [concrete] // CHECK:STDOUT: %.loc21_12: %pattern_type.f6d = addr_pattern %self.param_patt.loc21_21 [concrete] @@ -87,7 +87,7 @@ fn Class.G[self: Self](r#self: i32) -> (i32, i32) { // CHECK:STDOUT: } // CHECK:STDOUT: %self.loc21_30: %i32 = bind_name r#self, %self.param.loc21_36 // CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { +// CHECK:STDOUT: %Class.G.decl: %Class.G.type = fn_decl @Class.G [concrete = constants.%Class.G] { // CHECK:STDOUT: %self.patt.loc25_12: %pattern_type.761 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt.loc25_16: %pattern_type.761 = value_param_pattern %self.patt.loc25_12, call_param0 [concrete] // CHECK:STDOUT: %self.patt.loc25_24: %pattern_type.7ce = binding_pattern r#self [concrete] @@ -116,7 +116,7 @@ fn Class.G[self: Self](r#self: i32) -> (i32, i32) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { +// CHECK:STDOUT: %Class.F.decl: %Class.F.type = fn_decl @Class.F [concrete = constants.%Class.F] { // CHECK:STDOUT: %self.patt.loc21_17: %pattern_type.796 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt.loc21_21: %pattern_type.796 = value_param_pattern %self.patt.loc21_17, call_param0 [concrete] // CHECK:STDOUT: %.loc21_12: %pattern_type.f6d = addr_pattern %self.param_patt.loc21_21 [concrete] @@ -136,7 +136,7 @@ fn Class.G[self: Self](r#self: i32) -> (i32, i32) { // CHECK:STDOUT: } // CHECK:STDOUT: %self.loc16_26: %i32 = bind_name r#self, %self.param.loc16_32 // CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { +// CHECK:STDOUT: %Class.G.decl: %Class.G.type = fn_decl @Class.G [concrete = constants.%Class.G] { // CHECK:STDOUT: %self.patt.loc25_12: %pattern_type.761 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt.loc25_16: %pattern_type.761 = value_param_pattern %self.patt.loc25_12, call_param0 [concrete] // CHECK:STDOUT: %self.patt.loc25_24: %pattern_type.7ce = binding_pattern r#self [concrete] @@ -171,12 +171,12 @@ fn Class.G[self: Self](r#self: i32) -> (i32, i32) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .F = %Class.F.decl +// CHECK:STDOUT: .G = %Class.G.decl // CHECK:STDOUT: .n = %.loc18 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F(%self.param.loc21_21: %ptr.e71, %self.param.loc21_36: %i32) { +// CHECK:STDOUT: fn @Class.F(%self.param.loc21_21: %ptr.e71, %self.param.loc21_36: %i32) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref.loc22_5: %ptr.e71 = name_ref self, %self.loc21_17 // CHECK:STDOUT: %.loc22_4: ref %Class = deref %self.ref.loc22_5 @@ -187,7 +187,7 @@ fn Class.G[self: Self](r#self: i32) -> (i32, i32) { // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G(%self.param.loc25_16: %Class, %self.param.loc25_30: %i32) -> %return.param.loc25: %tuple.type.d07 { +// CHECK:STDOUT: fn @Class.G(%self.param.loc25_16: %Class, %self.param.loc25_30: %i32) -> %return.param.loc25: %tuple.type.d07 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref.loc26_11: %Class = name_ref self, %self.loc25_12 // CHECK:STDOUT: %n.ref: %Class.elem = name_ref n, @Class.%.loc18 [concrete = @Class.%.loc18] diff --git a/toolchain/check/testdata/class/raw_self_type.carbon b/toolchain/check/testdata/class/raw_self_type.carbon index d5600f74191f..1a11695dd327 100644 --- a/toolchain/check/testdata/class/raw_self_type.carbon +++ b/toolchain/check/testdata/class/raw_self_type.carbon @@ -31,24 +31,24 @@ fn MemberNamedSelf.F(x: Self, y: r#Self) {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %Class: type = class_type @Class [concrete] -// CHECK:STDOUT: %F.type.f1b: type = fn_type @F.loc16 [concrete] +// CHECK:STDOUT: %Class.F.type: type = fn_type @Class.F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F.1f2: %F.type.f1b = struct_value () [concrete] +// CHECK:STDOUT: %Class.F: %Class.F.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %ptr.e71: type = ptr_type %Class [concrete] // CHECK:STDOUT: %pattern_type.796: type = pattern_type %ptr.e71 [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.faa: type = fn_type @Op.1, @Destroy.impl(%ptr.e71) [concrete] -// CHECK:STDOUT: %Op.5a3: %Op.type.faa = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.faa: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%ptr.e71) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.5a3: %T.as.Destroy.impl.Op.type.faa = struct_value () [concrete] // CHECK:STDOUT: %ptr.0dd: type = ptr_type %ptr.e71 [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.5a3, @Op.1(%ptr.e71) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.5a3, @T.as.Destroy.impl.Op(%ptr.e71) [concrete] // CHECK:STDOUT: %MemberNamedSelf: type = class_type @MemberNamedSelf [concrete] // CHECK:STDOUT: %Self.362: type = class_type @Self [concrete] // CHECK:STDOUT: %pattern_type.356: type = pattern_type %MemberNamedSelf [concrete] // CHECK:STDOUT: %pattern_type.c06: type = pattern_type %Self.362 [concrete] -// CHECK:STDOUT: %F.type.648: type = fn_type @F.loc28 [concrete] -// CHECK:STDOUT: %F.e97: %F.type.648 = struct_value () [concrete] +// CHECK:STDOUT: %MemberNamedSelf.F.type: type = fn_type @MemberNamedSelf.F [concrete] +// CHECK:STDOUT: %MemberNamedSelf.F: %MemberNamedSelf.F.type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -69,7 +69,7 @@ fn MemberNamedSelf.F(x: Self, y: r#Self) {} // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Class.decl: type = class_decl @Class [concrete = constants.%Class] {} {} // CHECK:STDOUT: %MemberNamedSelf.decl: type = class_decl @MemberNamedSelf [concrete = constants.%MemberNamedSelf] {} {} -// CHECK:STDOUT: %F.decl: %F.type.648 = fn_decl @F.loc28 [concrete = constants.%F.e97] { +// CHECK:STDOUT: %MemberNamedSelf.F.decl: %MemberNamedSelf.F.type = fn_decl @MemberNamedSelf.F [concrete = constants.%MemberNamedSelf.F] { // CHECK:STDOUT: %x.patt: %pattern_type.356 = binding_pattern x [concrete] // CHECK:STDOUT: %x.param_patt: %pattern_type.356 = value_param_pattern %x.patt, call_param0 [concrete] // CHECK:STDOUT: %y.patt: %pattern_type.c06 = binding_pattern y [concrete] @@ -85,19 +85,19 @@ fn MemberNamedSelf.F(x: Self, y: r#Self) {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %F.decl: %F.type.f1b = fn_decl @F.loc16 [concrete = constants.%F.1f2] {} {} +// CHECK:STDOUT: %Class.F.decl: %Class.F.type = fn_decl @Class.F [concrete = constants.%Class.F] {} {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %Class.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @MemberNamedSelf { // CHECK:STDOUT: %Self.decl: type = class_decl @Self [concrete = constants.%Self.362] {} {} -// CHECK:STDOUT: %F.decl: %F.type.648 = fn_decl @F.loc28 [concrete = constants.%F.e97] { +// CHECK:STDOUT: %MemberNamedSelf.F.decl: %MemberNamedSelf.F.type = fn_decl @MemberNamedSelf.F [concrete = constants.%MemberNamedSelf.F] { // CHECK:STDOUT: %x.patt: %pattern_type.356 = binding_pattern x [concrete] // CHECK:STDOUT: %x.param_patt: %pattern_type.356 = value_param_pattern %x.patt, call_param0 [concrete] // CHECK:STDOUT: %y.patt: %pattern_type.c06 = binding_pattern y [concrete] @@ -117,7 +117,7 @@ fn MemberNamedSelf.F(x: Self, y: r#Self) {} // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%MemberNamedSelf // CHECK:STDOUT: .r#Self = %Self.decl -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %MemberNamedSelf.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Self { @@ -129,7 +129,7 @@ fn MemberNamedSelf.F(x: Self, y: r#Self) {} // CHECK:STDOUT: .Self = constants.%Self.362 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc16() { +// CHECK:STDOUT: fn @Class.F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %Self.patt: %pattern_type.796 = binding_pattern r#Self [concrete] @@ -154,20 +154,20 @@ fn MemberNamedSelf.F(x: Self, y: r#Self) {} // CHECK:STDOUT: %ptr.loc18: type = ptr_type %Self.ref.loc18_12 [concrete = constants.%ptr.e71] // CHECK:STDOUT: } // CHECK:STDOUT: %p: ref %ptr.e71 = bind_name p, %p.var -// CHECK:STDOUT: %Op.bound.loc18: = bound_method %p.var, constants.%Op.5a3 -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.5a3, @Op.1(constants.%ptr.e71) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc18: = bound_method %p.var, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc18: = bound_method %p.var, constants.%T.as.Destroy.impl.Op.5a3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.5a3, @T.as.Destroy.impl.Op(constants.%ptr.e71) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc18: = bound_method %p.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc18: %ptr.0dd = addr_of %p.var -// CHECK:STDOUT: %no_op.loc18: init %empty_tuple.type = call %bound_method.loc18(%addr.loc18) -// CHECK:STDOUT: %Op.bound.loc17: = bound_method %Self.var, constants.%Op.5a3 -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.5a3, @Op.1(constants.%ptr.e71) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc17: = bound_method %Self.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc18: init %empty_tuple.type = call %bound_method.loc18(%addr.loc18) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc17: = bound_method %Self.var, constants.%T.as.Destroy.impl.Op.5a3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.5a3, @T.as.Destroy.impl.Op(constants.%ptr.e71) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc17: = bound_method %Self.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc17: %ptr.0dd = addr_of %Self.var -// CHECK:STDOUT: %no_op.loc17: init %empty_tuple.type = call %bound_method.loc17(%addr.loc17) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc17: init %empty_tuple.type = call %bound_method.loc17(%addr.loc17) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc28(%x.param.loc28: %MemberNamedSelf, %y.param.loc28: %Self.362) { +// CHECK:STDOUT: fn @MemberNamedSelf.F(%x.param.loc28: %MemberNamedSelf, %y.param.loc28: %Self.362) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/redeclaration.carbon b/toolchain/check/testdata/class/redeclaration.carbon index 5e5dbc95e315..dc1ff75045d8 100644 --- a/toolchain/check/testdata/class/redeclaration.carbon +++ b/toolchain/check/testdata/class/redeclaration.carbon @@ -27,8 +27,8 @@ fn Class.F[self: Self](b: ()) {} // CHECK:STDOUT: %pattern_type.761: type = pattern_type %Class [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %Class.F.type: type = fn_type @Class.F [concrete] +// CHECK:STDOUT: %Class.F: %Class.F.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: } @@ -48,7 +48,7 @@ fn Class.F[self: Self](b: ()) {} // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Class.decl.loc15: type = class_decl @Class [concrete = constants.%Class] {} {} // CHECK:STDOUT: %Class.decl.loc17: type = class_decl @Class [concrete = constants.%Class] {} {} -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { +// CHECK:STDOUT: %Class.F.decl: %Class.F.type = fn_decl @Class.F [concrete = constants.%Class.F] { // CHECK:STDOUT: %self.patt: %pattern_type.761 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.761 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %b.patt: %pattern_type.cb1 = binding_pattern b [concrete] @@ -67,7 +67,7 @@ fn Class.F[self: Self](b: ()) {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { +// CHECK:STDOUT: %Class.F.decl: %Class.F.type = fn_decl @Class.F [concrete = constants.%Class.F] { // CHECK:STDOUT: %self.patt: %pattern_type.761 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.761 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %b.patt: %pattern_type.cb1 = binding_pattern b [concrete] @@ -89,10 +89,10 @@ fn Class.F[self: Self](b: ()) {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %Class.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F(%self.param.loc21: %Class, %b.param.loc21: %empty_tuple.type) { +// CHECK:STDOUT: fn @Class.F(%self.param.loc21: %Class, %b.param.loc21: %empty_tuple.type) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/reenter_scope.carbon b/toolchain/check/testdata/class/reenter_scope.carbon index 038638af2d9d..6e06abba2da9 100644 --- a/toolchain/check/testdata/class/reenter_scope.carbon +++ b/toolchain/check/testdata/class/reenter_scope.carbon @@ -31,10 +31,10 @@ fn Class.F() -> i32 { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %G.type: type = fn_type @G [concrete] -// CHECK:STDOUT: %G: %G.type = struct_value () [concrete] +// CHECK:STDOUT: %Class.F.type: type = fn_type @Class.F [concrete] +// CHECK:STDOUT: %Class.F: %Class.F.type = struct_value () [concrete] +// CHECK:STDOUT: %Class.G.type: type = fn_type @Class.G [concrete] +// CHECK:STDOUT: %Class.G: %Class.G.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: } @@ -55,7 +55,7 @@ fn Class.F() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Class.decl: type = class_decl @Class [concrete = constants.%Class] {} {} -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { +// CHECK:STDOUT: %Class.F.decl: %Class.F.type = fn_decl @Class.F [concrete = constants.%Class.F] { // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -67,7 +67,7 @@ fn Class.F() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { +// CHECK:STDOUT: %Class.F.decl: %Class.F.type = fn_decl @Class.F [concrete = constants.%Class.F] { // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -76,7 +76,7 @@ fn Class.F() -> i32 { // CHECK:STDOUT: %return.param.loc16: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return.loc16: ref %i32 = return_slot %return.param.loc16 // CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { +// CHECK:STDOUT: %Class.G.decl: %Class.G.type = fn_decl @Class.G [concrete = constants.%Class.G] { // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -91,21 +91,21 @@ fn Class.F() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .F = %Class.F.decl +// CHECK:STDOUT: .G = %Class.G.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F() -> %i32 { +// CHECK:STDOUT: fn @Class.F() -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Class [concrete = constants.%Class] -// CHECK:STDOUT: %G.ref.loc21: %G.type = name_ref G, @Class.%G.decl [concrete = constants.%G] -// CHECK:STDOUT: %G.call.loc21: init %i32 = call %G.ref.loc21() -// CHECK:STDOUT: %G.ref.loc22: %G.type = name_ref G, @Class.%G.decl [concrete = constants.%G] -// CHECK:STDOUT: %G.call.loc22: init %i32 = call %G.ref.loc22() -// CHECK:STDOUT: %.loc22_13.1: %i32 = value_of_initializer %G.call.loc22 -// CHECK:STDOUT: %.loc22_13.2: %i32 = converted %G.call.loc22, %.loc22_13.1 +// CHECK:STDOUT: %G.ref.loc21: %Class.G.type = name_ref G, @Class.%Class.G.decl [concrete = constants.%Class.G] +// CHECK:STDOUT: %Class.G.call.loc21: init %i32 = call %G.ref.loc21() +// CHECK:STDOUT: %G.ref.loc22: %Class.G.type = name_ref G, @Class.%Class.G.decl [concrete = constants.%Class.G] +// CHECK:STDOUT: %Class.G.call.loc22: init %i32 = call %G.ref.loc22() +// CHECK:STDOUT: %.loc22_13.1: %i32 = value_of_initializer %Class.G.call.loc22 +// CHECK:STDOUT: %.loc22_13.2: %i32 = converted %Class.G.call.loc22, %.loc22_13.1 // CHECK:STDOUT: return %.loc22_13.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G() -> %i32; +// CHECK:STDOUT: fn @Class.G() -> %i32; // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/reorder.carbon b/toolchain/check/testdata/class/reorder.carbon index 5fcb822fc818..ecaca4a85eb8 100644 --- a/toolchain/check/testdata/class/reorder.carbon +++ b/toolchain/check/testdata/class/reorder.carbon @@ -31,28 +31,28 @@ class Class { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %G.type: type = fn_type @G [concrete] -// CHECK:STDOUT: %G: %G.type = struct_value () [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %Class.G.type: type = fn_type @Class.G [concrete] +// CHECK:STDOUT: %Class.G: %Class.G.type = struct_value () [concrete] +// CHECK:STDOUT: %Class.F.type: type = fn_type @Class.F [concrete] +// CHECK:STDOUT: %Class.F: %Class.F.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -65,8 +65,8 @@ class Class { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -79,7 +79,7 @@ class Class { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { +// CHECK:STDOUT: %Class.G.decl: %Class.G.type = fn_decl @Class.G [concrete = constants.%Class.G] { // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -88,7 +88,7 @@ class Class { // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { +// CHECK:STDOUT: %Class.F.decl: %Class.F.type = fn_decl @Class.F [concrete = constants.%Class.F] { // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -103,30 +103,30 @@ class Class { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class -// CHECK:STDOUT: .G = %G.decl -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .G = %Class.G.decl +// CHECK:STDOUT: .F = %Class.F.decl // CHECK:STDOUT: .Class = // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G() -> %i32 { +// CHECK:STDOUT: fn @Class.G() -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, @Class.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %F.call: init %i32 = call %F.ref() -// CHECK:STDOUT: %.loc17_21.1: %i32 = value_of_initializer %F.call -// CHECK:STDOUT: %.loc17_21.2: %i32 = converted %F.call, %.loc17_21.1 +// CHECK:STDOUT: %F.ref: %Class.F.type = name_ref F, @Class.%Class.F.decl [concrete = constants.%Class.F] +// CHECK:STDOUT: %Class.F.call: init %i32 = call %F.ref() +// CHECK:STDOUT: %.loc17_21.1: %i32 = value_of_initializer %Class.F.call +// CHECK:STDOUT: %.loc17_21.2: %i32 = converted %Class.F.call, %.loc17_21.1 // CHECK:STDOUT: return %.loc17_21.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F() -> %i32 { +// CHECK:STDOUT: fn @Class.F() -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc21_13.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc21_13.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc21_13.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc21_13.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc21_13.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc21_13.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc21_13.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc21_13.2: %i32 = converted %int_1, %.loc21_13.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: return %.loc21_13.2 // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/reorder_qualified.carbon b/toolchain/check/testdata/class/reorder_qualified.carbon index ae1f49007177..86ecc67b9e84 100644 --- a/toolchain/check/testdata/class/reorder_qualified.carbon +++ b/toolchain/check/testdata/class/reorder_qualified.carbon @@ -56,9 +56,9 @@ class A { // CHECK:STDOUT: %A: type = class_type @A [concrete] // CHECK:STDOUT: %B: type = class_type @B [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] -// CHECK:STDOUT: %BF.type: type = fn_type @BF [concrete] +// CHECK:STDOUT: %B.BF.type: type = fn_type @B.BF [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %BF: %BF.type = struct_value () [concrete] +// CHECK:STDOUT: %B.BF: %B.BF.type = struct_value () [concrete] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] @@ -67,20 +67,20 @@ class A { // CHECK:STDOUT: %struct_type.b.0a3: type = struct_type {.b: %i32} [concrete] // CHECK:STDOUT: %complete_type.ba8: = complete_type_witness %struct_type.b.0a3 [concrete] // CHECK:STDOUT: %D: type = class_type @D [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %DF.type: type = fn_type @DF [concrete] -// CHECK:STDOUT: %DF: %DF.type = struct_value () [concrete] +// CHECK:STDOUT: %D.F.type: type = fn_type @D.F [concrete] +// CHECK:STDOUT: %D.F: %D.F.type = struct_value () [concrete] +// CHECK:STDOUT: %D.DF.type: type = fn_type @D.DF [concrete] +// CHECK:STDOUT: %D.DF: %D.DF.type = struct_value () [concrete] // CHECK:STDOUT: %D.elem: type = unbound_element_type %D, %i32 [concrete] // CHECK:STDOUT: %struct_type.d.b7b: type = struct_type {.d: %i32} [concrete] // CHECK:STDOUT: %complete_type.860: = complete_type_witness %struct_type.d.b7b [concrete] -// CHECK:STDOUT: %CF.type: type = fn_type @CF [concrete] -// CHECK:STDOUT: %CF: %CF.type = struct_value () [concrete] +// CHECK:STDOUT: %C.CF.type: type = fn_type @C.CF [concrete] +// CHECK:STDOUT: %C.CF: %C.CF.type = struct_value () [concrete] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %i32 [concrete] // CHECK:STDOUT: %struct_type.c.b66: type = struct_type {.c: %i32} [concrete] // CHECK:STDOUT: %complete_type.836: = complete_type_witness %struct_type.c.b66 [concrete] -// CHECK:STDOUT: %AF.type: type = fn_type @AF [concrete] -// CHECK:STDOUT: %AF: %AF.type = struct_value () [concrete] +// CHECK:STDOUT: %A.AF.type: type = fn_type @A.AF [concrete] +// CHECK:STDOUT: %A.AF: %A.AF.type = struct_value () [concrete] // CHECK:STDOUT: %A.elem: type = unbound_element_type %A, %i32 [concrete] // CHECK:STDOUT: %struct_type.a.ba9: type = struct_type {.a: %i32} [concrete] // CHECK:STDOUT: %complete_type.fd7: = complete_type_witness %struct_type.a.ba9 [concrete] @@ -90,58 +90,58 @@ class A { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %A.val: %A = struct_value (%int_1.5d2) [concrete] // CHECK:STDOUT: %pattern_type.98e: type = pattern_type %B [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %struct_type.b.a15: type = struct_type {.b: Core.IntLiteral} [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %B.val: %B = struct_value (%int_2.ef8) [concrete] // CHECK:STDOUT: %pattern_type.6d8: type = pattern_type %C [concrete] // CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [concrete] // CHECK:STDOUT: %struct_type.c.5b8: type = struct_type {.c: Core.IntLiteral} [concrete] -// CHECK:STDOUT: %Convert.bound.b30: = bound_method %int_3.1ba, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.047: = bound_method %int_3.1ba, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.b30: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.047: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_3.822: %i32 = int_value 3 [concrete] // CHECK:STDOUT: %C.val: %C = struct_value (%int_3.822) [concrete] // CHECK:STDOUT: %pattern_type.d58: type = pattern_type %D [concrete] // CHECK:STDOUT: %int_4.0c1: Core.IntLiteral = int_value 4 [concrete] // CHECK:STDOUT: %struct_type.d.3ea: type = struct_type {.d: Core.IntLiteral} [concrete] -// CHECK:STDOUT: %Convert.bound.ac3: = bound_method %int_4.0c1, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.1da: = bound_method %int_4.0c1, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ac3: = bound_method %int_4.0c1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.1da: = bound_method %int_4.0c1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_4.940: %i32 = int_value 4 [concrete] // CHECK:STDOUT: %D.val: %D = struct_value (%int_4.940) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.7e3: type = fn_type @Op.1, @Destroy.impl(%D) [concrete] -// CHECK:STDOUT: %Op.47c: %Op.type.7e3 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.7e3: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%D) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.47c: %T.as.Destroy.impl.Op.type.7e3 = struct_value () [concrete] // CHECK:STDOUT: %ptr.321: type = ptr_type %D [concrete] -// CHECK:STDOUT: %Op.specific_fn.ceb: = specific_function %Op.47c, @Op.1(%D) [concrete] -// CHECK:STDOUT: %Op.type.2eb: type = fn_type @Op.1, @Destroy.impl(%C) [concrete] -// CHECK:STDOUT: %Op.f77: %Op.type.2eb = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.ceb: = specific_function %T.as.Destroy.impl.Op.47c, @T.as.Destroy.impl.Op(%D) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.2eb: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.f77: %T.as.Destroy.impl.Op.type.2eb = struct_value () [concrete] // CHECK:STDOUT: %ptr.388: type = ptr_type %C [concrete] -// CHECK:STDOUT: %Op.specific_fn.c65: = specific_function %Op.f77, @Op.1(%C) [concrete] -// CHECK:STDOUT: %Op.type.266: type = fn_type @Op.1, @Destroy.impl(%B) [concrete] -// CHECK:STDOUT: %Op.4a4: %Op.type.266 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.c65: = specific_function %T.as.Destroy.impl.Op.f77, @T.as.Destroy.impl.Op(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.266: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%B) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.4a4: %T.as.Destroy.impl.Op.type.266 = struct_value () [concrete] // CHECK:STDOUT: %ptr.01b: type = ptr_type %B [concrete] -// CHECK:STDOUT: %Op.specific_fn.70c: = specific_function %Op.4a4, @Op.1(%B) [concrete] -// CHECK:STDOUT: %Op.type.b96: type = fn_type @Op.1, @Destroy.impl(%A) [concrete] -// CHECK:STDOUT: %Op.885: %Op.type.b96 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.70c: = specific_function %T.as.Destroy.impl.Op.4a4, @T.as.Destroy.impl.Op(%B) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.b96: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%A) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.885: %T.as.Destroy.impl.Op.type.b96 = struct_value () [concrete] // CHECK:STDOUT: %ptr.6db: type = ptr_type %A [concrete] -// CHECK:STDOUT: %Op.specific_fn.716: = specific_function %Op.885, @Op.1(%A) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.716: = specific_function %T.as.Destroy.impl.Op.885, @T.as.Destroy.impl.Op(%A) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -154,8 +154,8 @@ class A { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -171,7 +171,7 @@ class A { // CHECK:STDOUT: class @A { // CHECK:STDOUT: %B.decl: type = class_decl @B [concrete = constants.%B] {} {} // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} -// CHECK:STDOUT: %AF.decl: %AF.type = fn_decl @AF [concrete = constants.%AF] {} {} +// CHECK:STDOUT: %A.AF.decl: %A.AF.type = fn_decl @A.AF [concrete = constants.%A.AF] {} {} // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %.loc50: %A.elem = field_decl a, element0 [concrete] @@ -182,14 +182,14 @@ class A { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A // CHECK:STDOUT: .B = %B.decl -// CHECK:STDOUT: .AF = %AF.decl +// CHECK:STDOUT: .AF = %A.AF.decl // CHECK:STDOUT: .a = %.loc50 // CHECK:STDOUT: .A = // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} -// CHECK:STDOUT: %BF.decl: %BF.type = fn_decl @BF [concrete = constants.%BF] {} {} +// CHECK:STDOUT: %B.BF.decl: %B.BF.type = fn_decl @B.BF [concrete = constants.%B.BF] {} {} // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %.loc20: %B.elem = field_decl b, element0 [concrete] @@ -200,7 +200,7 @@ class A { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: .C = %C.decl -// CHECK:STDOUT: .BF = %BF.decl +// CHECK:STDOUT: .BF = %B.BF.decl // CHECK:STDOUT: .b = %.loc20 // CHECK:STDOUT: .A = // CHECK:STDOUT: .B = @@ -209,8 +209,8 @@ class A { // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: %D.decl: type = class_decl @D [concrete = constants.%D] {} {} -// CHECK:STDOUT: %DF.decl: %DF.type = fn_decl @DF [concrete = constants.%DF] {} {} -// CHECK:STDOUT: %CF.decl: %CF.type = fn_decl @CF [concrete = constants.%CF] {} {} +// CHECK:STDOUT: %D.DF.decl: %D.DF.type = fn_decl @D.DF [concrete = constants.%D.DF] {} {} +// CHECK:STDOUT: %C.CF.decl: %C.CF.type = fn_decl @C.CF [concrete = constants.%C.CF] {} {} // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %.loc46: %C.elem = field_decl c, element0 [concrete] @@ -221,7 +221,7 @@ class A { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .D = %D.decl -// CHECK:STDOUT: .CF = %CF.decl +// CHECK:STDOUT: .CF = %C.CF.decl // CHECK:STDOUT: .c = %.loc46 // CHECK:STDOUT: .A = // CHECK:STDOUT: .B = @@ -231,8 +231,8 @@ class A { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} -// CHECK:STDOUT: %DF.decl: %DF.type = fn_decl @DF [concrete = constants.%DF] {} {} +// CHECK:STDOUT: %D.F.decl: %D.F.type = fn_decl @D.F [concrete = constants.%D.F] {} {} +// CHECK:STDOUT: %D.DF.decl: %D.DF.type = fn_decl @D.DF [concrete = constants.%D.DF] {} {} // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %.loc28: %D.elem = field_decl d, element0 [concrete] @@ -242,8 +242,8 @@ class A { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%D -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: .DF = %DF.decl +// CHECK:STDOUT: .F = %D.F.decl +// CHECK:STDOUT: .DF = %D.DF.decl // CHECK:STDOUT: .d = %.loc28 // CHECK:STDOUT: .A = // CHECK:STDOUT: .B = @@ -254,11 +254,11 @@ class A { // CHECK:STDOUT: .CF = // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @BF(); +// CHECK:STDOUT: fn @B.BF(); // CHECK:STDOUT: -// CHECK:STDOUT: fn @F(); +// CHECK:STDOUT: fn @D.F(); // CHECK:STDOUT: -// CHECK:STDOUT: fn @DF() { +// CHECK:STDOUT: fn @D.DF() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %a.patt: %pattern_type.c10 = binding_pattern a [concrete] @@ -267,12 +267,12 @@ class A { // CHECK:STDOUT: %a.var: ref %A = var %a.var_patt // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %.loc33_25.1: %struct_type.a.a6c = struct_literal (%int_1) -// CHECK:STDOUT: %impl.elem0.loc33: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc33_25.1: = bound_method %int_1, %impl.elem0.loc33 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc33: = specific_function %impl.elem0.loc33, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc33: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc33_25.1: = bound_method %int_1, %impl.elem0.loc33 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc33: = specific_function %impl.elem0.loc33, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc33_25.2: = bound_method %int_1, %specific_fn.loc33 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc33: init %i32 = call %bound_method.loc33_25.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc33_25.2: init %i32 = converted %int_1, %int.convert_checked.loc33 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc33: init %i32 = call %bound_method.loc33_25.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc33_25.2: init %i32 = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc33 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc33_25.3: ref %i32 = class_element_access %a.var, element0 // CHECK:STDOUT: %.loc33_25.4: init %i32 = initialize_from %.loc33_25.2 to %.loc33_25.3 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc33_25.5: init %A = class_init (%.loc33_25.4), %a.var [concrete = constants.%A.val] @@ -287,12 +287,12 @@ class A { // CHECK:STDOUT: %b.var: ref %B = var %b.var_patt // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %.loc34_25.1: %struct_type.b.a15 = struct_literal (%int_2) -// CHECK:STDOUT: %impl.elem0.loc34: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc34_25.1: = bound_method %int_2, %impl.elem0.loc34 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc34: = specific_function %impl.elem0.loc34, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc34: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc34_25.1: = bound_method %int_2, %impl.elem0.loc34 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc34: = specific_function %impl.elem0.loc34, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc34_25.2: = bound_method %int_2, %specific_fn.loc34 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc34: init %i32 = call %bound_method.loc34_25.2(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc34_25.2: init %i32 = converted %int_2, %int.convert_checked.loc34 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc34: init %i32 = call %bound_method.loc34_25.2(%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc34_25.2: init %i32 = converted %int_2, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc34 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc34_25.3: ref %i32 = class_element_access %b.var, element0 // CHECK:STDOUT: %.loc34_25.4: init %i32 = initialize_from %.loc34_25.2 to %.loc34_25.3 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc34_25.5: init %B = class_init (%.loc34_25.4), %b.var [concrete = constants.%B.val] @@ -307,12 +307,12 @@ class A { // CHECK:STDOUT: %c.var: ref %C = var %c.var_patt // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] // CHECK:STDOUT: %.loc35_25.1: %struct_type.c.5b8 = struct_literal (%int_3) -// CHECK:STDOUT: %impl.elem0.loc35: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc35_25.1: = bound_method %int_3, %impl.elem0.loc35 [concrete = constants.%Convert.bound.b30] -// CHECK:STDOUT: %specific_fn.loc35: = specific_function %impl.elem0.loc35, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc35: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc35_25.1: = bound_method %int_3, %impl.elem0.loc35 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.b30] +// CHECK:STDOUT: %specific_fn.loc35: = specific_function %impl.elem0.loc35, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc35_25.2: = bound_method %int_3, %specific_fn.loc35 [concrete = constants.%bound_method.047] -// CHECK:STDOUT: %int.convert_checked.loc35: init %i32 = call %bound_method.loc35_25.2(%int_3) [concrete = constants.%int_3.822] -// CHECK:STDOUT: %.loc35_25.2: init %i32 = converted %int_3, %int.convert_checked.loc35 [concrete = constants.%int_3.822] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc35: init %i32 = call %bound_method.loc35_25.2(%int_3) [concrete = constants.%int_3.822] +// CHECK:STDOUT: %.loc35_25.2: init %i32 = converted %int_3, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc35 [concrete = constants.%int_3.822] // CHECK:STDOUT: %.loc35_25.3: ref %i32 = class_element_access %c.var, element0 // CHECK:STDOUT: %.loc35_25.4: init %i32 = initialize_from %.loc35_25.2 to %.loc35_25.3 [concrete = constants.%int_3.822] // CHECK:STDOUT: %.loc35_25.5: init %C = class_init (%.loc35_25.4), %c.var [concrete = constants.%C.val] @@ -327,12 +327,12 @@ class A { // CHECK:STDOUT: %d.var: ref %D = var %d.var_patt // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete = constants.%int_4.0c1] // CHECK:STDOUT: %.loc36_25.1: %struct_type.d.3ea = struct_literal (%int_4) -// CHECK:STDOUT: %impl.elem0.loc36: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc36_25.1: = bound_method %int_4, %impl.elem0.loc36 [concrete = constants.%Convert.bound.ac3] -// CHECK:STDOUT: %specific_fn.loc36: = specific_function %impl.elem0.loc36, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc36: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc36_25.1: = bound_method %int_4, %impl.elem0.loc36 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ac3] +// CHECK:STDOUT: %specific_fn.loc36: = specific_function %impl.elem0.loc36, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc36_25.2: = bound_method %int_4, %specific_fn.loc36 [concrete = constants.%bound_method.1da] -// CHECK:STDOUT: %int.convert_checked.loc36: init %i32 = call %bound_method.loc36_25.2(%int_4) [concrete = constants.%int_4.940] -// CHECK:STDOUT: %.loc36_25.2: init %i32 = converted %int_4, %int.convert_checked.loc36 [concrete = constants.%int_4.940] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc36: init %i32 = call %bound_method.loc36_25.2(%int_4) [concrete = constants.%int_4.940] +// CHECK:STDOUT: %.loc36_25.2: init %i32 = converted %int_4, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc36 [concrete = constants.%int_4.940] // CHECK:STDOUT: %.loc36_25.3: ref %i32 = class_element_access %d.var, element0 // CHECK:STDOUT: %.loc36_25.4: init %i32 = initialize_from %.loc36_25.2 to %.loc36_25.3 [concrete = constants.%int_4.940] // CHECK:STDOUT: %.loc36_25.5: init %D = class_init (%.loc36_25.4), %d.var [concrete = constants.%D.val] @@ -340,38 +340,38 @@ class A { // CHECK:STDOUT: assign %d.var, %.loc36_7 // CHECK:STDOUT: %D.ref: type = name_ref D, @C.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %d: ref %D = bind_name d, %d.var -// CHECK:STDOUT: %AF.ref: %AF.type = name_ref AF, @A.%AF.decl [concrete = constants.%AF] -// CHECK:STDOUT: %AF.call: init %empty_tuple.type = call %AF.ref() -// CHECK:STDOUT: %BF.ref: %BF.type = name_ref BF, @B.%BF.decl [concrete = constants.%BF] -// CHECK:STDOUT: %BF.call: init %empty_tuple.type = call %BF.ref() -// CHECK:STDOUT: %CF.ref: %CF.type = name_ref CF, @C.%CF.decl [concrete = constants.%CF] -// CHECK:STDOUT: %CF.call: init %empty_tuple.type = call %CF.ref() -// CHECK:STDOUT: %DF.ref: %DF.type = name_ref DF, @D.%DF.decl [concrete = constants.%DF] -// CHECK:STDOUT: %DF.call: init %empty_tuple.type = call %DF.ref() -// CHECK:STDOUT: %Op.bound.loc36: = bound_method %d.var, constants.%Op.47c -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.47c, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.ceb] -// CHECK:STDOUT: %bound_method.loc36_7: = bound_method %d.var, %Op.specific_fn.1 +// CHECK:STDOUT: %AF.ref: %A.AF.type = name_ref AF, @A.%A.AF.decl [concrete = constants.%A.AF] +// CHECK:STDOUT: %A.AF.call: init %empty_tuple.type = call %AF.ref() +// CHECK:STDOUT: %BF.ref: %B.BF.type = name_ref BF, @B.%B.BF.decl [concrete = constants.%B.BF] +// CHECK:STDOUT: %B.BF.call: init %empty_tuple.type = call %BF.ref() +// CHECK:STDOUT: %CF.ref: %C.CF.type = name_ref CF, @C.%C.CF.decl [concrete = constants.%C.CF] +// CHECK:STDOUT: %C.CF.call: init %empty_tuple.type = call %CF.ref() +// CHECK:STDOUT: %DF.ref: %D.DF.type = name_ref DF, @D.%D.DF.decl [concrete = constants.%D.DF] +// CHECK:STDOUT: %D.DF.call: init %empty_tuple.type = call %DF.ref() +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc36: = bound_method %d.var, constants.%T.as.Destroy.impl.Op.47c +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.47c, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.ceb] +// CHECK:STDOUT: %bound_method.loc36_7: = bound_method %d.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc36: %ptr.321 = addr_of %d.var -// CHECK:STDOUT: %no_op.loc36: init %empty_tuple.type = call %bound_method.loc36_7(%addr.loc36) -// CHECK:STDOUT: %Op.bound.loc35: = bound_method %c.var, constants.%Op.f77 -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.f77, @Op.1(constants.%C) [concrete = constants.%Op.specific_fn.c65] -// CHECK:STDOUT: %bound_method.loc35_7: = bound_method %c.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc36: init %empty_tuple.type = call %bound_method.loc36_7(%addr.loc36) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc35: = bound_method %c.var, constants.%T.as.Destroy.impl.Op.f77 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.f77, @T.as.Destroy.impl.Op(constants.%C) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.c65] +// CHECK:STDOUT: %bound_method.loc35_7: = bound_method %c.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc35: %ptr.388 = addr_of %c.var -// CHECK:STDOUT: %no_op.loc35: init %empty_tuple.type = call %bound_method.loc35_7(%addr.loc35) -// CHECK:STDOUT: %Op.bound.loc34: = bound_method %b.var, constants.%Op.4a4 -// CHECK:STDOUT: %Op.specific_fn.3: = specific_function constants.%Op.4a4, @Op.1(constants.%B) [concrete = constants.%Op.specific_fn.70c] -// CHECK:STDOUT: %bound_method.loc34_7: = bound_method %b.var, %Op.specific_fn.3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc35: init %empty_tuple.type = call %bound_method.loc35_7(%addr.loc35) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc34: = bound_method %b.var, constants.%T.as.Destroy.impl.Op.4a4 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.3: = specific_function constants.%T.as.Destroy.impl.Op.4a4, @T.as.Destroy.impl.Op(constants.%B) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.70c] +// CHECK:STDOUT: %bound_method.loc34_7: = bound_method %b.var, %T.as.Destroy.impl.Op.specific_fn.3 // CHECK:STDOUT: %addr.loc34: %ptr.01b = addr_of %b.var -// CHECK:STDOUT: %no_op.loc34: init %empty_tuple.type = call %bound_method.loc34_7(%addr.loc34) -// CHECK:STDOUT: %Op.bound.loc33: = bound_method %a.var, constants.%Op.885 -// CHECK:STDOUT: %Op.specific_fn.4: = specific_function constants.%Op.885, @Op.1(constants.%A) [concrete = constants.%Op.specific_fn.716] -// CHECK:STDOUT: %bound_method.loc33_7: = bound_method %a.var, %Op.specific_fn.4 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc34: init %empty_tuple.type = call %bound_method.loc34_7(%addr.loc34) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc33: = bound_method %a.var, constants.%T.as.Destroy.impl.Op.885 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.4: = specific_function constants.%T.as.Destroy.impl.Op.885, @T.as.Destroy.impl.Op(constants.%A) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.716] +// CHECK:STDOUT: %bound_method.loc33_7: = bound_method %a.var, %T.as.Destroy.impl.Op.specific_fn.4 // CHECK:STDOUT: %addr.loc33: %ptr.6db = addr_of %a.var -// CHECK:STDOUT: %no_op.loc33: init %empty_tuple.type = call %bound_method.loc33_7(%addr.loc33) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc33: init %empty_tuple.type = call %bound_method.loc33_7(%addr.loc33) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @CF(); +// CHECK:STDOUT: fn @C.CF(); // CHECK:STDOUT: -// CHECK:STDOUT: fn @AF(); +// CHECK:STDOUT: fn @A.AF(); // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/scope.carbon b/toolchain/check/testdata/class/scope.carbon index 7546258e5310..9a97ed988b6f 100644 --- a/toolchain/check/testdata/class/scope.carbon +++ b/toolchain/check/testdata/class/scope.carbon @@ -41,42 +41,42 @@ fn Run() { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %F.type.f1b: type = fn_type @F.loc16 [concrete] -// CHECK:STDOUT: %F.1f2: %F.type.f1b = struct_value () [concrete] -// CHECK:STDOUT: %G.type: type = fn_type @G [concrete] -// CHECK:STDOUT: %G: %G.type = struct_value () [concrete] +// CHECK:STDOUT: %Class.F.type: type = fn_type @Class.F [concrete] +// CHECK:STDOUT: %Class.F: %Class.F.type = struct_value () [concrete] +// CHECK:STDOUT: %Class.G.type: type = fn_type @Class.G [concrete] +// CHECK:STDOUT: %Class.G: %Class.G.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] -// CHECK:STDOUT: %F.type.b25: type = fn_type @F.loc25 [concrete] -// CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [concrete] +// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] +// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %Run.type: type = fn_type @Run [concrete] // CHECK:STDOUT: %Run: %Run.type = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.2, @Destroy.impl(%i32) [concrete] -// CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a17: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.e6a: %T.as.Destroy.impl.Op.type.a17 = struct_value () [concrete] // CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.e6a, @Op.2(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(%i32) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -89,8 +89,8 @@ fn Run() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -103,7 +103,7 @@ fn Run() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Class.decl: type = class_decl @Class [concrete = constants.%Class] {} {} -// CHECK:STDOUT: %F.decl: %F.type.b25 = fn_decl @F.loc25 [concrete = constants.%F.c41] { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -116,7 +116,7 @@ fn Run() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %F.decl: %F.type.f1b = fn_decl @F.loc16 [concrete = constants.%F.1f2] { +// CHECK:STDOUT: %Class.F.decl: %Class.F.type = fn_decl @Class.F [concrete = constants.%Class.F] { // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -125,7 +125,7 @@ fn Run() { // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { +// CHECK:STDOUT: %Class.G.decl: %Class.G.type = fn_decl @Class.G [concrete = constants.%Class.G] { // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -140,41 +140,41 @@ fn Run() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .F = %Class.F.decl +// CHECK:STDOUT: .G = %Class.G.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc16() -> %i32 { +// CHECK:STDOUT: fn @Class.F() -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc17_13.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc17_13.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc17_13.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc17_13.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc17_13.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc17_13.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc17_13.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc17_13.2: %i32 = converted %int_1, %.loc17_13.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: return %.loc17_13.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G() -> %i32 { +// CHECK:STDOUT: fn @Class.G() -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %F.ref: %F.type.f1b = name_ref F, @Class.%F.decl [concrete = constants.%F.1f2] -// CHECK:STDOUT: %F.call: init %i32 = call %F.ref() -// CHECK:STDOUT: %.loc21_15.1: %i32 = value_of_initializer %F.call -// CHECK:STDOUT: %.loc21_15.2: %i32 = converted %F.call, %.loc21_15.1 +// CHECK:STDOUT: %F.ref: %Class.F.type = name_ref F, @Class.%Class.F.decl [concrete = constants.%Class.F] +// CHECK:STDOUT: %Class.F.call: init %i32 = call %F.ref() +// CHECK:STDOUT: %.loc21_15.1: %i32 = value_of_initializer %Class.F.call +// CHECK:STDOUT: %.loc21_15.2: %i32 = converted %Class.F.call, %.loc21_15.1 // CHECK:STDOUT: return %.loc21_15.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc25() -> %i32 { +// CHECK:STDOUT: fn @F() -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc26_11.1: = bound_method %int_2, %impl.elem0 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc26_11.1: = bound_method %int_2, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc26_11.2: = bound_method %int_2, %specific_fn [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc26_11.2(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc26_11.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc26_11.2(%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc26_11.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc26_11.2: %i32 = converted %int_2, %.loc26_11.1 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: return %.loc26_11.2 // CHECK:STDOUT: } @@ -186,9 +186,9 @@ fn Run() { // CHECK:STDOUT: %a.var_patt: %pattern_type.7ce = var_pattern %a.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref %i32 = var %a.var_patt -// CHECK:STDOUT: %F.ref.loc30: %F.type.b25 = name_ref F, file.%F.decl [concrete = constants.%F.c41] -// CHECK:STDOUT: %F.call.loc30: init %i32 = call %F.ref.loc30() -// CHECK:STDOUT: assign %a.var, %F.call.loc30 +// CHECK:STDOUT: %F.ref.loc30: %F.type = name_ref F, file.%F.decl [concrete = constants.%F] +// CHECK:STDOUT: %F.call: init %i32 = call %F.ref.loc30() +// CHECK:STDOUT: assign %a.var, %F.call // CHECK:STDOUT: %.loc30: type = splice_block %i32.loc30 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc30: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc30: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] @@ -200,24 +200,24 @@ fn Run() { // CHECK:STDOUT: } // CHECK:STDOUT: %b.var: ref %i32 = var %b.var_patt // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] -// CHECK:STDOUT: %F.ref.loc31: %F.type.f1b = name_ref F, @Class.%F.decl [concrete = constants.%F.1f2] -// CHECK:STDOUT: %F.call.loc31: init %i32 = call %F.ref.loc31() -// CHECK:STDOUT: assign %b.var, %F.call.loc31 +// CHECK:STDOUT: %F.ref.loc31: %Class.F.type = name_ref F, @Class.%Class.F.decl [concrete = constants.%Class.F] +// CHECK:STDOUT: %Class.F.call: init %i32 = call %F.ref.loc31() +// CHECK:STDOUT: assign %b.var, %Class.F.call // CHECK:STDOUT: %.loc31: type = splice_block %i32.loc31 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc31: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc31: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var -// CHECK:STDOUT: %Op.bound.loc31: = bound_method %b.var, constants.%Op.e6a -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.e6a, @Op.2(constants.%i32) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc31: = bound_method %b.var, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc31: = bound_method %b.var, constants.%T.as.Destroy.impl.Op.e6a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc31: = bound_method %b.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc31: %ptr.235 = addr_of %b.var -// CHECK:STDOUT: %no_op.loc31: init %empty_tuple.type = call %bound_method.loc31(%addr.loc31) -// CHECK:STDOUT: %Op.bound.loc30: = bound_method %a.var, constants.%Op.e6a -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.e6a, @Op.2(constants.%i32) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc30: = bound_method %a.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc31: init %empty_tuple.type = call %bound_method.loc31(%addr.loc31) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc30: = bound_method %a.var, constants.%T.as.Destroy.impl.Op.e6a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc30: = bound_method %a.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc30: %ptr.235 = addr_of %a.var -// CHECK:STDOUT: %no_op.loc30: init %empty_tuple.type = call %bound_method.loc30(%addr.loc30) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc30: init %empty_tuple.type = call %bound_method.loc30(%addr.loc30) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/self.carbon b/toolchain/check/testdata/class/self.carbon index 021c3751df5c..8a9c979377a0 100644 --- a/toolchain/check/testdata/class/self.carbon +++ b/toolchain/check/testdata/class/self.carbon @@ -56,13 +56,13 @@ class Class { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %Class.F.type: type = fn_type @Class.F [concrete] +// CHECK:STDOUT: %Class.F: %Class.F.type = struct_value () [concrete] // CHECK:STDOUT: %ptr.e71: type = ptr_type %Class [concrete] // CHECK:STDOUT: %pattern_type.796: type = pattern_type %ptr.e71 [concrete] // CHECK:STDOUT: %pattern_type.f6d: type = pattern_type auto [concrete] -// CHECK:STDOUT: %G.type: type = fn_type @G [concrete] -// CHECK:STDOUT: %G: %G.type = struct_value () [concrete] +// CHECK:STDOUT: %Class.G.type: type = fn_type @Class.G [concrete] +// CHECK:STDOUT: %Class.G: %Class.G.type = struct_value () [concrete] // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %i32 [concrete] // CHECK:STDOUT: %struct_type.n: type = struct_type {.n: %i32} [concrete] // CHECK:STDOUT: %complete_type.54b: = complete_type_witness %struct_type.n [concrete] @@ -84,7 +84,7 @@ class Class { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Class.decl: type = class_decl @Class [concrete = constants.%Class] {} {} -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { +// CHECK:STDOUT: %Class.F.decl: %Class.F.type = fn_decl @Class.F [concrete = constants.%Class.F] { // CHECK:STDOUT: %self.patt: %pattern_type.761 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.761 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] @@ -98,7 +98,7 @@ class Class { // CHECK:STDOUT: %return.param.loc11: ref %i32 = out_param call_param1 // CHECK:STDOUT: %return.loc11: ref %i32 = return_slot %return.param.loc11 // CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { +// CHECK:STDOUT: %Class.G.decl: %Class.G.type = fn_decl @Class.G [concrete = constants.%Class.G] { // CHECK:STDOUT: %self.patt: %pattern_type.796 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.796 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %.loc15_12: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] @@ -119,7 +119,7 @@ class Class { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { +// CHECK:STDOUT: %Class.F.decl: %Class.F.type = fn_decl @Class.F [concrete = constants.%Class.F] { // CHECK:STDOUT: %self.patt: %pattern_type.761 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.761 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] @@ -133,7 +133,7 @@ class Class { // CHECK:STDOUT: %return.param.loc5: ref %i32 = out_param call_param1 // CHECK:STDOUT: %return.loc5: ref %i32 = return_slot %return.param.loc5 // CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { +// CHECK:STDOUT: %Class.G.decl: %Class.G.type = fn_decl @Class.G [concrete = constants.%Class.G] { // CHECK:STDOUT: %self.patt: %pattern_type.796 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.796 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %.loc15_12: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] @@ -160,12 +160,12 @@ class Class { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .F = %Class.F.decl +// CHECK:STDOUT: .G = %Class.G.decl // CHECK:STDOUT: .n = %.loc8 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F(%self.param.loc11: %Class) -> %i32 { +// CHECK:STDOUT: fn @Class.F(%self.param.loc11: %Class) -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: %Class = name_ref self, %self.loc11 // CHECK:STDOUT: %n.ref: %Class.elem = name_ref n, @Class.%.loc8 [concrete = @Class.%.loc8] @@ -174,7 +174,7 @@ class Class { // CHECK:STDOUT: return %.loc12_14.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G(%self.param.loc15: %ptr.e71) -> %i32 { +// CHECK:STDOUT: fn @Class.G(%self.param.loc15: %ptr.e71) -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: %ptr.e71 = name_ref self, %self.loc15 // CHECK:STDOUT: %.loc16_11: ref %Class = deref %self.ref @@ -191,8 +191,8 @@ class Class { // CHECK:STDOUT: %pattern_type.761: type = pattern_type %Class [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %Class.F.type: type = fn_type @Class.F [concrete] +// CHECK:STDOUT: %Class.F: %Class.F.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: } @@ -216,7 +216,7 @@ class Class { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { +// CHECK:STDOUT: %Class.F.decl: %Class.F.type = fn_decl @Class.F [concrete = constants.%Class.F] { // CHECK:STDOUT: %self.patt: %pattern_type.761 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.761 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: = return_slot_pattern [concrete] @@ -236,8 +236,8 @@ class Class { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %Class.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F(%self.param: %Class) -> ; +// CHECK:STDOUT: fn @Class.F(%self.param: %Class) -> ; // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/self_conversion.carbon b/toolchain/check/testdata/class/self_conversion.carbon index 9318023e2455..40744fbee978 100644 --- a/toolchain/check/testdata/class/self_conversion.carbon +++ b/toolchain/check/testdata/class/self_conversion.carbon @@ -52,31 +52,31 @@ fn Call(p: Derived*) -> i32 { // CHECK:STDOUT: %Derived.elem: type = unbound_element_type %Derived, %Base [concrete] // CHECK:STDOUT: %pattern_type.bcc: type = pattern_type %Base [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %SelfBase.type: type = fn_type @SelfBase [concrete] -// CHECK:STDOUT: %SelfBase: %SelfBase.type = struct_value () [concrete] +// CHECK:STDOUT: %Derived.SelfBase.type: type = fn_type @Derived.SelfBase [concrete] +// CHECK:STDOUT: %Derived.SelfBase: %Derived.SelfBase.type = struct_value () [concrete] // CHECK:STDOUT: %ptr.11f: type = ptr_type %Base [concrete] // CHECK:STDOUT: %pattern_type.1b9: type = pattern_type %ptr.11f [concrete] // CHECK:STDOUT: %pattern_type.f6d: type = pattern_type auto [concrete] -// CHECK:STDOUT: %AddrSelfBase.type: type = fn_type @AddrSelfBase [concrete] -// CHECK:STDOUT: %AddrSelfBase: %AddrSelfBase.type = struct_value () [concrete] +// CHECK:STDOUT: %Derived.AddrSelfBase.type: type = fn_type @Derived.AddrSelfBase [concrete] +// CHECK:STDOUT: %Derived.AddrSelfBase: %Derived.AddrSelfBase.type = struct_value () [concrete] // CHECK:STDOUT: %struct_type.base.b1e: type = struct_type {.base: %Base} [concrete] // CHECK:STDOUT: %complete_type.15c: = complete_type_witness %struct_type.base.b1e [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %ptr.404: type = ptr_type %Derived [concrete] // CHECK:STDOUT: %pattern_type.605: type = pattern_type %ptr.404 [concrete] @@ -93,8 +93,8 @@ fn Call(p: Derived*) -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -107,7 +107,7 @@ fn Call(p: Derived*) -> i32 { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Base.decl: type = class_decl @Base [concrete = constants.%Base] {} {} // CHECK:STDOUT: %Derived.decl: type = class_decl @Derived [concrete = constants.%Derived] {} {} -// CHECK:STDOUT: %SelfBase.decl: %SelfBase.type = fn_decl @SelfBase [concrete = constants.%SelfBase] { +// CHECK:STDOUT: %Derived.SelfBase.decl: %Derived.SelfBase.type = fn_decl @Derived.SelfBase [concrete = constants.%Derived.SelfBase] { // CHECK:STDOUT: %self.patt: %pattern_type.bcc = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.bcc = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] @@ -121,7 +121,7 @@ fn Call(p: Derived*) -> i32 { // CHECK:STDOUT: %return.param.loc26: ref %i32 = out_param call_param1 // CHECK:STDOUT: %return.loc26: ref %i32 = return_slot %return.param.loc26 // CHECK:STDOUT: } -// CHECK:STDOUT: %AddrSelfBase.decl: %AddrSelfBase.type = fn_decl @AddrSelfBase [concrete = constants.%AddrSelfBase] { +// CHECK:STDOUT: %Derived.AddrSelfBase.decl: %Derived.AddrSelfBase.type = fn_decl @Derived.AddrSelfBase [concrete = constants.%Derived.AddrSelfBase] { // CHECK:STDOUT: %self.patt: %pattern_type.1b9 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.1b9 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %.loc30_25: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] @@ -169,7 +169,7 @@ fn Call(p: Derived*) -> i32 { // CHECK:STDOUT: class @Derived { // CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [concrete = constants.%Base] // CHECK:STDOUT: %.loc20: %Derived.elem = base_decl %Base.ref, element0 [concrete] -// CHECK:STDOUT: %SelfBase.decl: %SelfBase.type = fn_decl @SelfBase [concrete = constants.%SelfBase] { +// CHECK:STDOUT: %Derived.SelfBase.decl: %Derived.SelfBase.type = fn_decl @Derived.SelfBase [concrete = constants.%Derived.SelfBase] { // CHECK:STDOUT: %self.patt: %pattern_type.bcc = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.bcc = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] @@ -183,7 +183,7 @@ fn Call(p: Derived*) -> i32 { // CHECK:STDOUT: %return.param.loc22: ref %i32 = out_param call_param1 // CHECK:STDOUT: %return.loc22: ref %i32 = return_slot %return.param.loc22 // CHECK:STDOUT: } -// CHECK:STDOUT: %AddrSelfBase.decl: %AddrSelfBase.type = fn_decl @AddrSelfBase [concrete = constants.%AddrSelfBase] { +// CHECK:STDOUT: %Derived.AddrSelfBase.decl: %Derived.AddrSelfBase.type = fn_decl @Derived.AddrSelfBase [concrete = constants.%Derived.AddrSelfBase] { // CHECK:STDOUT: %self.patt: %pattern_type.1b9 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.1b9 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %.loc30_25: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] @@ -203,12 +203,12 @@ fn Call(p: Derived*) -> i32 { // CHECK:STDOUT: .Self = constants.%Derived // CHECK:STDOUT: .Base = // CHECK:STDOUT: .base = %.loc20 -// CHECK:STDOUT: .SelfBase = %SelfBase.decl -// CHECK:STDOUT: .AddrSelfBase = %AddrSelfBase.decl +// CHECK:STDOUT: .SelfBase = %Derived.SelfBase.decl +// CHECK:STDOUT: .AddrSelfBase = %Derived.AddrSelfBase.decl // CHECK:STDOUT: extend %Base.ref // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @SelfBase(%self.param.loc26: %Base) -> %i32 { +// CHECK:STDOUT: fn @Derived.SelfBase(%self.param.loc26: %Base) -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: %Base = name_ref self, %self.loc26 // CHECK:STDOUT: %a.ref: %Base.elem = name_ref a, @Base.%.loc16 [concrete = @Base.%.loc16] @@ -217,19 +217,19 @@ fn Call(p: Derived*) -> i32 { // CHECK:STDOUT: return %.loc27_14.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @AddrSelfBase(%self.param.loc30: %ptr.11f) { +// CHECK:STDOUT: fn @Derived.AddrSelfBase(%self.param.loc30: %ptr.11f) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: %ptr.11f = name_ref self, %self.loc30 // CHECK:STDOUT: %.loc31_4: ref %Base = deref %self.ref // CHECK:STDOUT: %a.ref: %Base.elem = name_ref a, @Base.%.loc16 [concrete = @Base.%.loc16] // CHECK:STDOUT: %.loc31_10: ref %i32 = class_element_access %.loc31_4, element0 // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc31_13.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc31_13.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc31_13.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc31_13.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc31_13: init %i32 = converted %int_1, %int.convert_checked [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc31_13.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc31_13: init %i32 = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_1.5d2] // CHECK:STDOUT: assign %.loc31_10, %.loc31_13 // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -238,24 +238,24 @@ fn Call(p: Derived*) -> i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %p.ref.loc35: %ptr.404 = name_ref p, %p // CHECK:STDOUT: %.loc35_4.1: ref %Derived = deref %p.ref.loc35 -// CHECK:STDOUT: %AddrSelfBase.ref: %AddrSelfBase.type = name_ref AddrSelfBase, @Derived.%AddrSelfBase.decl [concrete = constants.%AddrSelfBase] -// CHECK:STDOUT: %AddrSelfBase.bound: = bound_method %.loc35_4.1, %AddrSelfBase.ref +// CHECK:STDOUT: %AddrSelfBase.ref: %Derived.AddrSelfBase.type = name_ref AddrSelfBase, @Derived.%Derived.AddrSelfBase.decl [concrete = constants.%Derived.AddrSelfBase] +// CHECK:STDOUT: %Derived.AddrSelfBase.bound: = bound_method %.loc35_4.1, %AddrSelfBase.ref // CHECK:STDOUT: %addr.loc35_4.1: %ptr.404 = addr_of %.loc35_4.1 // CHECK:STDOUT: %.loc35_4.2: ref %Derived = deref %addr.loc35_4.1 // CHECK:STDOUT: %.loc35_4.3: ref %Base = class_element_access %.loc35_4.2, element0 // CHECK:STDOUT: %addr.loc35_4.2: %ptr.11f = addr_of %.loc35_4.3 // CHECK:STDOUT: %.loc35_4.4: %ptr.11f = converted %addr.loc35_4.1, %addr.loc35_4.2 -// CHECK:STDOUT: %AddrSelfBase.call: init %empty_tuple.type = call %AddrSelfBase.bound(%.loc35_4.4) +// CHECK:STDOUT: %Derived.AddrSelfBase.call: init %empty_tuple.type = call %Derived.AddrSelfBase.bound(%.loc35_4.4) // CHECK:STDOUT: %p.ref.loc36: %ptr.404 = name_ref p, %p // CHECK:STDOUT: %.loc36_11.1: ref %Derived = deref %p.ref.loc36 -// CHECK:STDOUT: %SelfBase.ref: %SelfBase.type = name_ref SelfBase, @Derived.%SelfBase.decl [concrete = constants.%SelfBase] -// CHECK:STDOUT: %SelfBase.bound: = bound_method %.loc36_11.1, %SelfBase.ref +// CHECK:STDOUT: %SelfBase.ref: %Derived.SelfBase.type = name_ref SelfBase, @Derived.%Derived.SelfBase.decl [concrete = constants.%Derived.SelfBase] +// CHECK:STDOUT: %Derived.SelfBase.bound: = bound_method %.loc36_11.1, %SelfBase.ref // CHECK:STDOUT: %.loc36_11.2: ref %Base = class_element_access %.loc36_11.1, element0 // CHECK:STDOUT: %.loc36_11.3: ref %Base = converted %.loc36_11.1, %.loc36_11.2 // CHECK:STDOUT: %.loc36_11.4: %Base = bind_value %.loc36_11.3 -// CHECK:STDOUT: %SelfBase.call: init %i32 = call %SelfBase.bound(%.loc36_11.4) -// CHECK:STDOUT: %.loc36_25.1: %i32 = value_of_initializer %SelfBase.call -// CHECK:STDOUT: %.loc36_25.2: %i32 = converted %SelfBase.call, %.loc36_25.1 +// CHECK:STDOUT: %Derived.SelfBase.call: init %i32 = call %Derived.SelfBase.bound(%.loc36_11.4) +// CHECK:STDOUT: %.loc36_25.1: %i32 = value_of_initializer %Derived.SelfBase.call +// CHECK:STDOUT: %.loc36_25.2: %i32 = converted %Derived.SelfBase.call, %.loc36_25.1 // CHECK:STDOUT: return %.loc36_25.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/self_type.carbon b/toolchain/check/testdata/class/self_type.carbon index e94514329356..93f136894164 100644 --- a/toolchain/check/testdata/class/self_type.carbon +++ b/toolchain/check/testdata/class/self_type.carbon @@ -36,10 +36,10 @@ fn Class.F[self: Self]() -> i32 { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %Make.type: type = fn_type @Make [concrete] -// CHECK:STDOUT: %Make: %Make.type = struct_value () [concrete] +// CHECK:STDOUT: %Class.F.type: type = fn_type @Class.F [concrete] +// CHECK:STDOUT: %Class.F: %Class.F.type = struct_value () [concrete] +// CHECK:STDOUT: %Class.Make.type: type = fn_type @Class.Make [concrete] +// CHECK:STDOUT: %Class.Make: %Class.Make.type = struct_value () [concrete] // CHECK:STDOUT: %ptr.e71: type = ptr_type %Class [concrete] // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %ptr.e71 [concrete] // CHECK:STDOUT: %struct_type.p: type = struct_type {.p: %ptr.e71} [concrete] @@ -62,7 +62,7 @@ fn Class.F[self: Self]() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Class.decl: type = class_decl @Class [concrete = constants.%Class] {} {} -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { +// CHECK:STDOUT: %Class.F.decl: %Class.F.type = fn_decl @Class.F [concrete = constants.%Class.F] { // CHECK:STDOUT: %self.patt: %pattern_type.761 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.761 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] @@ -79,7 +79,7 @@ fn Class.F[self: Self]() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { +// CHECK:STDOUT: %Class.F.decl: %Class.F.type = fn_decl @Class.F [concrete = constants.%Class.F] { // CHECK:STDOUT: %self.patt: %pattern_type.761 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.761 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] @@ -93,7 +93,7 @@ fn Class.F[self: Self]() -> i32 { // CHECK:STDOUT: %return.param.loc16: ref %i32 = out_param call_param1 // CHECK:STDOUT: %return.loc16: ref %i32 = return_slot %return.param.loc16 // CHECK:STDOUT: } -// CHECK:STDOUT: %Make.decl: %Make.type = fn_decl @Make [concrete = constants.%Make] { +// CHECK:STDOUT: %Class.Make.decl: %Class.Make.type = fn_decl @Class.Make [concrete = constants.%Class.Make] { // CHECK:STDOUT: %return.patt: %pattern_type.761 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.761 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -110,28 +110,28 @@ fn Class.F[self: Self]() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: .Make = %Make.decl +// CHECK:STDOUT: .F = %Class.F.decl +// CHECK:STDOUT: .Make = %Class.Make.decl // CHECK:STDOUT: .p = %.loc22 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F(%self.param.loc25: %Class) -> %i32 { +// CHECK:STDOUT: fn @Class.F(%self.param.loc25: %Class) -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: %Class = name_ref self, %self.loc25 // CHECK:STDOUT: %p.ref: %Class.elem = name_ref p, @Class.%.loc22 [concrete = @Class.%.loc22] // CHECK:STDOUT: %.loc26_16.1: ref %ptr.e71 = class_element_access %self.ref, element0 // CHECK:STDOUT: %.loc26_16.2: %ptr.e71 = bind_value %.loc26_16.1 // CHECK:STDOUT: %.loc26_11.1: ref %Class = deref %.loc26_16.2 -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, @Class.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %F.bound: = bound_method %.loc26_11.1, %F.ref +// CHECK:STDOUT: %F.ref: %Class.F.type = name_ref F, @Class.%Class.F.decl [concrete = constants.%Class.F] +// CHECK:STDOUT: %Class.F.bound: = bound_method %.loc26_11.1, %F.ref // CHECK:STDOUT: %.loc26_11.2: %Class = bind_value %.loc26_11.1 -// CHECK:STDOUT: %F.call: init %i32 = call %F.bound(%.loc26_11.2) -// CHECK:STDOUT: %.loc26_23.1: %i32 = value_of_initializer %F.call -// CHECK:STDOUT: %.loc26_23.2: %i32 = converted %F.call, %.loc26_23.1 +// CHECK:STDOUT: %Class.F.call: init %i32 = call %Class.F.bound(%.loc26_11.2) +// CHECK:STDOUT: %.loc26_23.1: %i32 = value_of_initializer %Class.F.call +// CHECK:STDOUT: %.loc26_23.2: %i32 = converted %Class.F.call, %.loc26_23.1 // CHECK:STDOUT: return %.loc26_23.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Make() -> %return.param: %Class { +// CHECK:STDOUT: fn @Class.Make() -> %return.param: %Class { // CHECK:STDOUT: !entry: // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %s.patt: %pattern_type.761 = binding_pattern s [concrete] diff --git a/toolchain/check/testdata/class/static_method.carbon b/toolchain/check/testdata/class/static_method.carbon index 547395207edb..6d01ae60ebe4 100644 --- a/toolchain/check/testdata/class/static_method.carbon +++ b/toolchain/check/testdata/class/static_method.carbon @@ -31,18 +31,18 @@ fn Run() -> i32 { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %Class.F.type: type = fn_type @Class.F [concrete] +// CHECK:STDOUT: %Class.F: %Class.F.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %Run.type: type = fn_type @Run [concrete] // CHECK:STDOUT: %Run: %Run.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.761: type = pattern_type %Class [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.7de: type = fn_type @Op.1, @Destroy.impl(%Class) [concrete] -// CHECK:STDOUT: %Op.d64: %Op.type.7de = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.7de: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%Class) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.d64: %T.as.Destroy.impl.Op.type.7de = struct_value () [concrete] // CHECK:STDOUT: %ptr.e71: type = ptr_type %Class [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.d64, @Op.1(%Class) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.d64, @T.as.Destroy.impl.Op(%Class) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -78,7 +78,7 @@ fn Run() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { +// CHECK:STDOUT: %Class.F.decl: %Class.F.type = fn_decl @Class.F [concrete = constants.%Class.F] { // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -93,10 +93,10 @@ fn Run() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %Class.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F() -> %i32; +// CHECK:STDOUT: fn @Class.F() -> %i32; // CHECK:STDOUT: // CHECK:STDOUT: fn @Run() -> %i32 { // CHECK:STDOUT: !entry: @@ -108,15 +108,15 @@ fn Run() -> i32 { // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] // CHECK:STDOUT: %c: ref %Class = bind_name c, %c.var // CHECK:STDOUT: %c.ref: ref %Class = name_ref c, %c -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, @Class.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %F.call: init %i32 = call %F.ref() -// CHECK:STDOUT: %.loc21_15.1: %i32 = value_of_initializer %F.call -// CHECK:STDOUT: %.loc21_15.2: %i32 = converted %F.call, %.loc21_15.1 -// CHECK:STDOUT: %Op.bound: = bound_method %c.var, constants.%Op.d64 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.d64, @Op.1(constants.%Class) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %c.var, %Op.specific_fn +// CHECK:STDOUT: %F.ref: %Class.F.type = name_ref F, @Class.%Class.F.decl [concrete = constants.%Class.F] +// CHECK:STDOUT: %Class.F.call: init %i32 = call %F.ref() +// CHECK:STDOUT: %.loc21_15.1: %i32 = value_of_initializer %Class.F.call +// CHECK:STDOUT: %.loc21_15.2: %i32 = converted %Class.F.call, %.loc21_15.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %c.var, constants.%T.as.Destroy.impl.Op.d64 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.d64, @T.as.Destroy.impl.Op(constants.%Class) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %c.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.e71 = addr_of %c.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %.loc21_15.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/syntactic_merge.carbon b/toolchain/check/testdata/class/syntactic_merge.carbon index 2c0560ccb925..ef29047f36f6 100644 --- a/toolchain/check/testdata/class/syntactic_merge.carbon +++ b/toolchain/check/testdata/class/syntactic_merge.carbon @@ -1066,12 +1066,12 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: %ptr.11f: type = ptr_type %Base [concrete] // CHECK:STDOUT: %pattern_type.1b9: type = pattern_type %ptr.11f [concrete] // CHECK:STDOUT: %pattern_type.f6d: type = pattern_type auto [concrete] -// CHECK:STDOUT: %F.type.7c6384.1: type = fn_type @F.loc7 [concrete] -// CHECK:STDOUT: %F.d17bbc.1: %F.type.7c6384.1 = struct_value () [concrete] +// CHECK:STDOUT: %Base.F.type.7c6384.1: type = fn_type @Base.F.loc7 [concrete] +// CHECK:STDOUT: %Base.F.d17bbc.1: %Base.F.type.7c6384.1 = struct_value () [concrete] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %empty_tuple.type} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a [concrete] -// CHECK:STDOUT: %F.type.7c6384.2: type = fn_type @F.loc17 [concrete] -// CHECK:STDOUT: %F.d17bbc.2: %F.type.7c6384.2 = struct_value () [concrete] +// CHECK:STDOUT: %Base.F.type.7c6384.2: type = fn_type @Base.F.loc17 [concrete] +// CHECK:STDOUT: %Base.F.d17bbc.2: %Base.F.type.7c6384.2 = struct_value () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1080,7 +1080,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: .Base = %Base.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Base.decl: type = class_decl @Base [concrete = constants.%Base] {} {} -// CHECK:STDOUT: %F.decl: %F.type.7c6384.2 = fn_decl @F.loc17 [concrete = constants.%F.d17bbc.2] { +// CHECK:STDOUT: %Base.F.decl: %Base.F.type.7c6384.2 = fn_decl @Base.F.loc17 [concrete = constants.%Base.F.d17bbc.2] { // CHECK:STDOUT: %self.patt: %pattern_type.1b9 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.1b9 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %.loc17_11: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] @@ -1098,7 +1098,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: %.loc5_11.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc5_11.2: type = converted %.loc5_11.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc5_8: %Base.elem = field_decl a, element0 [concrete] -// CHECK:STDOUT: %F.decl: %F.type.7c6384.1 = fn_decl @F.loc7 [concrete = constants.%F.d17bbc.1] { +// CHECK:STDOUT: %Base.F.decl: %Base.F.type.7c6384.1 = fn_decl @Base.F.loc7 [concrete = constants.%Base.F.d17bbc.1] { // CHECK:STDOUT: %self.patt: %pattern_type.1b9 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.1b9 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %.loc7_8: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] @@ -1117,13 +1117,13 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base // CHECK:STDOUT: .a = %.loc5_8 -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %Base.F.decl // CHECK:STDOUT: .Base = // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc7(%self.param: %ptr.11f); +// CHECK:STDOUT: fn @Base.F.loc7(%self.param: %ptr.11f); // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc17(%self.param: %ptr.11f) { +// CHECK:STDOUT: fn @Base.F.loc17(%self.param: %ptr.11f) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: %ptr.11f = name_ref self, %self // CHECK:STDOUT: %.loc18_4: ref %Base = deref %self.ref diff --git a/toolchain/check/testdata/class/syntactic_merge_literal.carbon b/toolchain/check/testdata/class/syntactic_merge_literal.carbon index d2e1e821faf4..80f2dd04b6d1 100644 --- a/toolchain/check/testdata/class/syntactic_merge_literal.carbon +++ b/toolchain/check/testdata/class/syntactic_merge_literal.carbon @@ -53,18 +53,18 @@ class D(b:! C(1_000)) {} // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1000.ff9, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1000.ff9, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_1000.ff9, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_1000.ff9, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1000.1b6: %i32 = int_value 1000 [concrete] // CHECK:STDOUT: %C.262: type = class_type @C, @C(%int_1000.1b6) [concrete] // CHECK:STDOUT: %b: %C.262 = bind_symbolic_name b, 0 [symbolic] @@ -83,8 +83,8 @@ class D(b:! C(1_000)) {} // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -109,12 +109,12 @@ class D(b:! C(1_000)) {} // CHECK:STDOUT: %.loc5_20.1: type = splice_block %C.loc5 [concrete = constants.%C.262] { // CHECK:STDOUT: %C.ref.loc5: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] // CHECK:STDOUT: %int_1000.loc5: Core.IntLiteral = int_value 1000 [concrete = constants.%int_1000.ff9] -// CHECK:STDOUT: %impl.elem0.loc5: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc5_20.1: = bound_method %int_1000.loc5, %impl.elem0.loc5 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn.loc5: = specific_function %impl.elem0.loc5, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc5: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc5_20.1: = bound_method %int_1000.loc5, %impl.elem0.loc5 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc5: = specific_function %impl.elem0.loc5, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc5_20.2: = bound_method %int_1000.loc5, %specific_fn.loc5 [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked.loc5: init %i32 = call %bound_method.loc5_20.2(%int_1000.loc5) [concrete = constants.%int_1000.1b6] -// CHECK:STDOUT: %.loc5_20.2: %i32 = value_of_initializer %int.convert_checked.loc5 [concrete = constants.%int_1000.1b6] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc5: init %i32 = call %bound_method.loc5_20.2(%int_1000.loc5) [concrete = constants.%int_1000.1b6] +// CHECK:STDOUT: %.loc5_20.2: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc5 [concrete = constants.%int_1000.1b6] // CHECK:STDOUT: %.loc5_20.3: %i32 = converted %int_1000.loc5, %.loc5_20.2 [concrete = constants.%int_1000.1b6] // CHECK:STDOUT: %C.loc5: type = class_type @C, @C(constants.%int_1000.1b6) [concrete = constants.%C.262] // CHECK:STDOUT: } @@ -126,12 +126,12 @@ class D(b:! C(1_000)) {} // CHECK:STDOUT: %.loc6_20.1: type = splice_block %C.loc6 [concrete = constants.%C.262] { // CHECK:STDOUT: %C.ref.loc6: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] // CHECK:STDOUT: %int_1000.loc6: Core.IntLiteral = int_value 1000 [concrete = constants.%int_1000.ff9] -// CHECK:STDOUT: %impl.elem0.loc6: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc6_20.1: = bound_method %int_1000.loc6, %impl.elem0.loc6 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn.loc6: = specific_function %impl.elem0.loc6, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc6: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc6_20.1: = bound_method %int_1000.loc6, %impl.elem0.loc6 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc6: = specific_function %impl.elem0.loc6, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc6_20.2: = bound_method %int_1000.loc6, %specific_fn.loc6 [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked.loc6: init %i32 = call %bound_method.loc6_20.2(%int_1000.loc6) [concrete = constants.%int_1000.1b6] -// CHECK:STDOUT: %.loc6_20.2: %i32 = value_of_initializer %int.convert_checked.loc6 [concrete = constants.%int_1000.1b6] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6: init %i32 = call %bound_method.loc6_20.2(%int_1000.loc6) [concrete = constants.%int_1000.1b6] +// CHECK:STDOUT: %.loc6_20.2: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6 [concrete = constants.%int_1000.1b6] // CHECK:STDOUT: %.loc6_20.3: %i32 = converted %int_1000.loc6, %.loc6_20.2 [concrete = constants.%int_1000.1b6] // CHECK:STDOUT: %C.loc6: type = class_type @C, @C(constants.%int_1000.1b6) [concrete = constants.%C.262] // CHECK:STDOUT: } @@ -199,18 +199,18 @@ class D(b:! C(1_000)) {} // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1000.ff9, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1000.ff9, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_1000.ff9, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_1000.ff9, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1000.1b6: %i32 = int_value 1000 [concrete] // CHECK:STDOUT: %C.262: type = class_type @C, @C(%int_1000.1b6) [concrete] // CHECK:STDOUT: %b: %C.262 = bind_symbolic_name b, 0 [symbolic] @@ -231,8 +231,8 @@ class D(b:! C(1_000)) {} // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -257,12 +257,12 @@ class D(b:! C(1_000)) {} // CHECK:STDOUT: %.loc5_19.1: type = splice_block %C [concrete = constants.%C.262] { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] // CHECK:STDOUT: %int_1000: Core.IntLiteral = int_value 1000 [concrete = constants.%int_1000.ff9] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc5_19.1: = bound_method %int_1000, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc5_19.1: = bound_method %int_1000, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc5_19.2: = bound_method %int_1000, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc5_19.2(%int_1000) [concrete = constants.%int_1000.1b6] -// CHECK:STDOUT: %.loc5_19.2: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_1000.1b6] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc5_19.2(%int_1000) [concrete = constants.%int_1000.1b6] +// CHECK:STDOUT: %.loc5_19.2: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_1000.1b6] // CHECK:STDOUT: %.loc5_19.3: %i32 = converted %int_1000, %.loc5_19.2 [concrete = constants.%int_1000.1b6] // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%int_1000.1b6) [concrete = constants.%C.262] // CHECK:STDOUT: } @@ -274,12 +274,12 @@ class D(b:! C(1_000)) {} // CHECK:STDOUT: %.loc13_20.1: type = splice_block %C [concrete = constants.%C.262] { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] // CHECK:STDOUT: %int_1000: Core.IntLiteral = int_value 1000 [concrete = constants.%int_1000.ff9] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc13_20.1: = bound_method %int_1000, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc13_20.1: = bound_method %int_1000, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc13_20.2: = bound_method %int_1000, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc13_20.2(%int_1000) [concrete = constants.%int_1000.1b6] -// CHECK:STDOUT: %.loc13_20.2: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_1000.1b6] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc13_20.2(%int_1000) [concrete = constants.%int_1000.1b6] +// CHECK:STDOUT: %.loc13_20.2: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_1000.1b6] // CHECK:STDOUT: %.loc13_20.3: %i32 = converted %int_1000, %.loc13_20.2 [concrete = constants.%int_1000.1b6] // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%int_1000.1b6) [concrete = constants.%C.262] // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/todo_access_modifiers.carbon b/toolchain/check/testdata/class/todo_access_modifiers.carbon index b06654880815..15eba971f4f6 100644 --- a/toolchain/check/testdata/class/todo_access_modifiers.carbon +++ b/toolchain/check/testdata/class/todo_access_modifiers.carbon @@ -27,10 +27,10 @@ class Access { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %Access: type = class_type @Access [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %G.type: type = fn_type @G [concrete] -// CHECK:STDOUT: %G: %G.type = struct_value () [concrete] +// CHECK:STDOUT: %Access.F.type: type = fn_type @Access.F [concrete] +// CHECK:STDOUT: %Access.F: %Access.F.type = struct_value () [concrete] +// CHECK:STDOUT: %Access.G.type: type = fn_type @Access.G [concrete] +// CHECK:STDOUT: %Access.G: %Access.G.type = struct_value () [concrete] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] @@ -59,8 +59,8 @@ class Access { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Access { -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {} {} +// CHECK:STDOUT: %Access.F.decl: %Access.F.type = fn_decl @Access.F [concrete = constants.%Access.F] {} {} +// CHECK:STDOUT: %Access.G.decl: %Access.G.type = fn_decl @Access.G [concrete = constants.%Access.G] {} {} // CHECK:STDOUT: %int_32.loc21: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc21: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %.loc21: %Access.elem = field_decl k, element0 [concrete] @@ -73,13 +73,13 @@ class Access { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Access -// CHECK:STDOUT: .F [private] = %F.decl -// CHECK:STDOUT: .G [protected] = %G.decl +// CHECK:STDOUT: .F [private] = %Access.F.decl +// CHECK:STDOUT: .G [protected] = %Access.G.decl // CHECK:STDOUT: .k [private] = %.loc21 // CHECK:STDOUT: .l [protected] = %.loc23 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F(); +// CHECK:STDOUT: fn @Access.F(); // CHECK:STDOUT: -// CHECK:STDOUT: fn @G(); +// CHECK:STDOUT: fn @Access.G(); // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/virtual_modifiers.carbon b/toolchain/check/testdata/class/virtual_modifiers.carbon index fc2b1bc14d29..15ad0c6ad0eb 100644 --- a/toolchain/check/testdata/class/virtual_modifiers.carbon +++ b/toolchain/check/testdata/class/virtual_modifiers.carbon @@ -494,18 +494,18 @@ var v: Base(T1) = {}; // CHECK:STDOUT: constants { // CHECK:STDOUT: %Base: type = class_type @Base [concrete] // CHECK:STDOUT: %pattern_type.bcc: type = pattern_type %Base [concrete] -// CHECK:STDOUT: %H.type: type = fn_type @H [concrete] -// CHECK:STDOUT: %H: %H.type = struct_value () [concrete] +// CHECK:STDOUT: %Base.H.type: type = fn_type @Base.H [concrete] +// CHECK:STDOUT: %Base.H: %Base.H.type = struct_value () [concrete] // CHECK:STDOUT: %ptr: type = ptr_type [concrete] // CHECK:STDOUT: %Base.vtable_ptr: ref %ptr = vtable_ptr @Base.vtable [concrete] // CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.vptr [concrete] // CHECK:STDOUT: %Abstract: type = class_type @Abstract [concrete] // CHECK:STDOUT: %pattern_type.41e: type = pattern_type %Abstract [concrete] -// CHECK:STDOUT: %J.type: type = fn_type @J [concrete] -// CHECK:STDOUT: %J: %J.type = struct_value () [concrete] -// CHECK:STDOUT: %K.type: type = fn_type @K [concrete] -// CHECK:STDOUT: %K: %K.type = struct_value () [concrete] +// CHECK:STDOUT: %Abstract.J.type: type = fn_type @Abstract.J [concrete] +// CHECK:STDOUT: %Abstract.J: %Abstract.J.type = struct_value () [concrete] +// CHECK:STDOUT: %Abstract.K.type: type = fn_type @Abstract.K [concrete] +// CHECK:STDOUT: %Abstract.K: %Abstract.K.type = struct_value () [concrete] // CHECK:STDOUT: %Abstract.vtable_ptr: ref %ptr = vtable_ptr @Abstract.vtable [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -528,7 +528,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Base { -// CHECK:STDOUT: %H.decl: %H.type = fn_decl @H [concrete = constants.%H] { +// CHECK:STDOUT: %Base.H.decl: %Base.H.type = fn_decl @Base.H [concrete = constants.%Base.H] { // CHECK:STDOUT: %self.patt: %pattern_type.bcc = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.bcc = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -544,11 +544,11 @@ var v: Base(T1) = {}; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base -// CHECK:STDOUT: .H = %H.decl +// CHECK:STDOUT: .H = %Base.H.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Abstract { -// CHECK:STDOUT: %J.decl: %J.type = fn_decl @J [concrete = constants.%J] { +// CHECK:STDOUT: %Abstract.J.decl: %Abstract.J.type = fn_decl @Abstract.J [concrete = constants.%Abstract.J] { // CHECK:STDOUT: %self.patt: %pattern_type.41e = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.41e = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -556,7 +556,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Abstract [concrete = constants.%Abstract] // CHECK:STDOUT: %self: %Abstract = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %K.decl: %K.type = fn_decl @K [concrete = constants.%K] { +// CHECK:STDOUT: %Abstract.K.decl: %Abstract.K.type = fn_decl @Abstract.K [concrete = constants.%Abstract.K] { // CHECK:STDOUT: %self.patt: %pattern_type.41e = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.41e = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -572,24 +572,24 @@ var v: Base(T1) = {}; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Abstract -// CHECK:STDOUT: .J = %J.decl -// CHECK:STDOUT: .K = %K.decl +// CHECK:STDOUT: .J = %Abstract.J.decl +// CHECK:STDOUT: .K = %Abstract.K.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @Base.vtable { -// CHECK:STDOUT: @Base.%H.decl +// CHECK:STDOUT: @Base.%Base.H.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @Abstract.vtable { -// CHECK:STDOUT: @Abstract.%J.decl -// CHECK:STDOUT: @Abstract.%K.decl +// CHECK:STDOUT: @Abstract.%Abstract.J.decl +// CHECK:STDOUT: @Abstract.%Abstract.K.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: virtual fn @H(%self.param: %Base); +// CHECK:STDOUT: virtual fn @Base.H(%self.param: %Base); // CHECK:STDOUT: -// CHECK:STDOUT: abstract fn @J(%self.param: %Abstract); +// CHECK:STDOUT: abstract fn @Abstract.J(%self.param: %Abstract); // CHECK:STDOUT: -// CHECK:STDOUT: virtual fn @K(%self.param: %Abstract); +// CHECK:STDOUT: virtual fn @Abstract.K(%self.param: %Abstract); // CHECK:STDOUT: // CHECK:STDOUT: --- override_import.carbon // CHECK:STDOUT: @@ -601,11 +601,11 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %complete_type.513: = complete_type_witness %struct_type.vptr [concrete] // CHECK:STDOUT: %Derived.elem: type = unbound_element_type %Derived, %Base [concrete] // CHECK:STDOUT: %pattern_type.fb9: type = pattern_type %Derived [concrete] -// CHECK:STDOUT: %H.type.dba: type = fn_type @H.loc8 [concrete] +// CHECK:STDOUT: %Derived.H.type: type = fn_type @Derived.H [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %H.bce: %H.type.dba = struct_value () [concrete] -// CHECK:STDOUT: %H.type.09e: type = fn_type @H.1 [concrete] -// CHECK:STDOUT: %H.c1b: %H.type.09e = struct_value () [concrete] +// CHECK:STDOUT: %Derived.H: %Derived.H.type = struct_value () [concrete] +// CHECK:STDOUT: %Base.H.type: type = fn_type @Base.H [concrete] +// CHECK:STDOUT: %Base.H: %Base.H.type = struct_value () [concrete] // CHECK:STDOUT: %Base.vtable_ptr: ref %ptr.454 = vtable_ptr @Base.vtable [concrete] // CHECK:STDOUT: %Derived.vtable_ptr: ref %ptr.454 = vtable_ptr @Derived.vtable [concrete] // CHECK:STDOUT: %struct_type.base.96c: type = struct_type {.base: %Base} [concrete] @@ -617,10 +617,10 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %Base.val: %Base = struct_value (%Derived.vtable_ptr) [concrete] // CHECK:STDOUT: %Derived.val: %Derived = struct_value (%Base.val) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.102: type = fn_type @Op.1, @Destroy.impl(%Derived) [concrete] -// CHECK:STDOUT: %Op.539: %Op.type.102 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.102: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%Derived) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.539: %T.as.Destroy.impl.Op.type.102 = struct_value () [concrete] // CHECK:STDOUT: %ptr.404: type = ptr_type %Derived [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.539, @Op.1(%Derived) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.539, @T.as.Destroy.impl.Op(%Derived) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -658,7 +658,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %Modifiers.ref: = name_ref Modifiers, imports.%Modifiers [concrete = imports.%Modifiers] // CHECK:STDOUT: %Base.ref: type = name_ref Base, imports.%Modifiers.Base [concrete = constants.%Base] // CHECK:STDOUT: %.loc7: %Derived.elem = base_decl %Base.ref, element0 [concrete] -// CHECK:STDOUT: %H.decl: %H.type.dba = fn_decl @H.loc8 [concrete = constants.%H.bce] { +// CHECK:STDOUT: %Derived.H.decl: %Derived.H.type = fn_decl @Derived.H [concrete = constants.%Derived.H] { // CHECK:STDOUT: %self.patt: %pattern_type.fb9 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.fb9 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -676,7 +676,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: .Self = constants.%Derived // CHECK:STDOUT: .Modifiers = // CHECK:STDOUT: .base = %.loc7 -// CHECK:STDOUT: .H = %H.decl +// CHECK:STDOUT: .H = %Derived.H.decl // CHECK:STDOUT: extend %Base.ref // CHECK:STDOUT: } // CHECK:STDOUT: @@ -690,16 +690,16 @@ var v: Base(T1) = {}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @Base.vtable { -// CHECK:STDOUT: constants.%H.c1b +// CHECK:STDOUT: constants.%Base.H // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @Derived.vtable { -// CHECK:STDOUT: @Derived.%H.decl +// CHECK:STDOUT: @Derived.%Derived.H.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl fn @H.loc8(%self.param: %Derived); +// CHECK:STDOUT: impl fn @Derived.H(%self.param: %Derived); // CHECK:STDOUT: -// CHECK:STDOUT: fn @H.1 [from "modifiers.carbon"]; +// CHECK:STDOUT: fn @Base.H [from "modifiers.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: fn @Use() { // CHECK:STDOUT: !entry: @@ -720,11 +720,11 @@ var v: Base(T1) = {}; // CHECK:STDOUT: assign %d.var, %.loc12_3 // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl [concrete = constants.%Derived] // CHECK:STDOUT: %d: ref %Derived = bind_name d, %d.var -// CHECK:STDOUT: %Op.bound: = bound_method %d.var, constants.%Op.539 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.539, @Op.1(constants.%Derived) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %d.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %d.var, constants.%T.as.Destroy.impl.Op.539 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.539, @T.as.Destroy.impl.Op(constants.%Derived) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %d.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.404 = addr_of %d.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -733,15 +733,15 @@ var v: Base(T1) = {}; // CHECK:STDOUT: constants { // CHECK:STDOUT: %Derived: type = class_type @Derived [concrete] // CHECK:STDOUT: %pattern_type.fb9: type = pattern_type %Derived [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %Derived.F.type: type = fn_type @Derived.F [concrete] +// CHECK:STDOUT: %Derived.F: %Derived.F.type = struct_value () [concrete] // CHECK:STDOUT: %Base: type = class_type @Base [concrete] // CHECK:STDOUT: %ptr.454: type = ptr_type [concrete] // CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr.454} [concrete] // CHECK:STDOUT: %complete_type.513: = complete_type_witness %struct_type.vptr [concrete] // CHECK:STDOUT: %Derived.elem: type = unbound_element_type %Derived, %Base [concrete] -// CHECK:STDOUT: %H.type: type = fn_type @H [concrete] -// CHECK:STDOUT: %H: %H.type = struct_value () [concrete] +// CHECK:STDOUT: %Base.H.type: type = fn_type @Base.H [concrete] +// CHECK:STDOUT: %Base.H: %Base.H.type = struct_value () [concrete] // CHECK:STDOUT: %Base.vtable_ptr: ref %ptr.454 = vtable_ptr @Base.vtable [concrete] // CHECK:STDOUT: %Derived.vtable_ptr: ref %ptr.454 = vtable_ptr @Derived.vtable [concrete] // CHECK:STDOUT: %struct_type.base: type = struct_type {.base: %Base} [concrete] @@ -776,7 +776,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { +// CHECK:STDOUT: %Derived.F.decl: %Derived.F.type = fn_decl @Derived.F [concrete = constants.%Derived.F] { // CHECK:STDOUT: %self.patt: %pattern_type.fb9 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.fb9 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -795,7 +795,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Derived -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %Derived.F.decl // CHECK:STDOUT: .Modifiers = // CHECK:STDOUT: .base = %.loc8 // CHECK:STDOUT: extend %Base.ref @@ -811,17 +811,17 @@ var v: Base(T1) = {}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @Base.vtable { -// CHECK:STDOUT: constants.%H +// CHECK:STDOUT: constants.%Base.H // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @Derived.vtable { -// CHECK:STDOUT: constants.%H -// CHECK:STDOUT: @Derived.%F.decl +// CHECK:STDOUT: constants.%Base.H +// CHECK:STDOUT: @Derived.%Derived.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: virtual fn @F(%self.param: %Derived); +// CHECK:STDOUT: virtual fn @Derived.F(%self.param: %Derived); // CHECK:STDOUT: -// CHECK:STDOUT: fn @H [from "modifiers.carbon"]; +// CHECK:STDOUT: fn @Base.H [from "modifiers.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: --- init.carbon // CHECK:STDOUT: @@ -835,15 +835,15 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %complete_type.513: = complete_type_witness %struct_type.vptr [concrete] // CHECK:STDOUT: %pattern_type.80f: type = pattern_type %Base [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %H.type: type = fn_type @H [concrete] -// CHECK:STDOUT: %H: %H.type = struct_value () [concrete] +// CHECK:STDOUT: %Base.H.type: type = fn_type @Base.H [concrete] +// CHECK:STDOUT: %Base.H: %Base.H.type = struct_value () [concrete] // CHECK:STDOUT: %Base.vtable_ptr: ref %ptr.454 = vtable_ptr @Base.vtable [concrete] // CHECK:STDOUT: %Base.val: %Base = struct_value (%Base.vtable_ptr) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.47e: type = fn_type @Op.1, @Destroy.impl(%Base) [concrete] -// CHECK:STDOUT: %Op.033: %Op.type.47e = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.47e: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%Base) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.033: %T.as.Destroy.impl.Op.type.47e = struct_value () [concrete] // CHECK:STDOUT: %ptr.f03: type = ptr_type %Base [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.033, @Op.1(%Base) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.033, @T.as.Destroy.impl.Op(%Base) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -885,7 +885,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @Base.vtable { -// CHECK:STDOUT: constants.%H +// CHECK:STDOUT: constants.%Base.H // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { @@ -906,23 +906,23 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %Base.ref: type = name_ref Base, imports.%Modifiers.Base [concrete = constants.%Base] // CHECK:STDOUT: } // CHECK:STDOUT: %v: ref %Base = bind_name v, %v.var -// CHECK:STDOUT: %Op.bound: = bound_method %v.var, constants.%Op.033 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.033, @Op.1(constants.%Base) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %v.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %v.var, constants.%T.as.Destroy.impl.Op.033 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.033, @T.as.Destroy.impl.Op(constants.%Base) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %v.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.f03 = addr_of %v.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @H [from "modifiers.carbon"]; +// CHECK:STDOUT: fn @Base.H [from "modifiers.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: --- impl_abstract.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %A1: type = class_type @A1 [concrete] // CHECK:STDOUT: %pattern_type.ddb: type = pattern_type %A1 [concrete] -// CHECK:STDOUT: %F.type.13a: type = fn_type @F.loc5 [concrete] -// CHECK:STDOUT: %F.df5: %F.type.13a = struct_value () [concrete] +// CHECK:STDOUT: %A1.F.type: type = fn_type @A1.F [concrete] +// CHECK:STDOUT: %A1.F: %A1.F.type = struct_value () [concrete] // CHECK:STDOUT: %ptr.454: type = ptr_type [concrete] // CHECK:STDOUT: %A1.vtable_ptr: ref %ptr.454 = vtable_ptr @A1.vtable [concrete] // CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr.454} [concrete] @@ -930,8 +930,8 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %A2: type = class_type @A2 [concrete] // CHECK:STDOUT: %A2.elem: type = unbound_element_type %A2, %A1 [concrete] // CHECK:STDOUT: %pattern_type.b21: type = pattern_type %A2 [concrete] -// CHECK:STDOUT: %F.type.4ae: type = fn_type @F.loc10 [concrete] -// CHECK:STDOUT: %F.1d5: %F.type.4ae = struct_value () [concrete] +// CHECK:STDOUT: %A2.F.type: type = fn_type @A2.F [concrete] +// CHECK:STDOUT: %A2.F: %A2.F.type = struct_value () [concrete] // CHECK:STDOUT: %A2.vtable_ptr: ref %ptr.454 = vtable_ptr @A2.vtable [concrete] // CHECK:STDOUT: %struct_type.base: type = struct_type {.base: %A1} [concrete] // CHECK:STDOUT: %complete_type.a6f: = complete_type_witness %struct_type.base [concrete] @@ -956,7 +956,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A1 { -// CHECK:STDOUT: %F.decl: %F.type.13a = fn_decl @F.loc5 [concrete = constants.%F.df5] { +// CHECK:STDOUT: %A1.F.decl: %A1.F.type = fn_decl @A1.F [concrete = constants.%A1.F] { // CHECK:STDOUT: %self.patt: %pattern_type.ddb = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.ddb = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -972,13 +972,13 @@ var v: Base(T1) = {}; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A1 -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %A1.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A2 { // CHECK:STDOUT: %A1.ref: type = name_ref A1, file.%A1.decl [concrete = constants.%A1] // CHECK:STDOUT: %.loc9: %A2.elem = base_decl %A1.ref, element0 [concrete] -// CHECK:STDOUT: %F.decl: %F.type.4ae = fn_decl @F.loc10 [concrete = constants.%F.1d5] { +// CHECK:STDOUT: %A2.F.decl: %A2.F.type = fn_decl @A2.F [concrete = constants.%A2.F] { // CHECK:STDOUT: %self.patt: %pattern_type.b21 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.b21 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -996,30 +996,30 @@ var v: Base(T1) = {}; // CHECK:STDOUT: .Self = constants.%A2 // CHECK:STDOUT: .A1 = // CHECK:STDOUT: .base = %.loc9 -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %A2.F.decl // CHECK:STDOUT: extend %A1.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @A1.vtable { -// CHECK:STDOUT: @A1.%F.decl +// CHECK:STDOUT: @A1.%A1.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @A2.vtable { -// CHECK:STDOUT: @A2.%F.decl +// CHECK:STDOUT: @A2.%A2.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: virtual fn @F.loc5(%self.param: %A1); +// CHECK:STDOUT: virtual fn @A1.F(%self.param: %A1); // CHECK:STDOUT: -// CHECK:STDOUT: impl fn @F.loc10(%self.param: %A2); +// CHECK:STDOUT: impl fn @A2.F(%self.param: %A2); // CHECK:STDOUT: // CHECK:STDOUT: --- impl_base.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %B1: type = class_type @B1 [concrete] // CHECK:STDOUT: %pattern_type.e47: type = pattern_type %B1 [concrete] -// CHECK:STDOUT: %F.type.e4c: type = fn_type @F.loc5 [concrete] +// CHECK:STDOUT: %B1.F.type: type = fn_type @B1.F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F.8f5: %F.type.e4c = struct_value () [concrete] +// CHECK:STDOUT: %B1.F: %B1.F.type = struct_value () [concrete] // CHECK:STDOUT: %ptr.454: type = ptr_type [concrete] // CHECK:STDOUT: %B1.vtable_ptr: ref %ptr.454 = vtable_ptr @B1.vtable [concrete] // CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr.454} [concrete] @@ -1027,16 +1027,16 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %B2: type = class_type @B2 [concrete] // CHECK:STDOUT: %B2.elem: type = unbound_element_type %B2, %B1 [concrete] // CHECK:STDOUT: %pattern_type.b19: type = pattern_type %B2 [concrete] -// CHECK:STDOUT: %F.type.b26: type = fn_type @F.loc10 [concrete] -// CHECK:STDOUT: %F.d48: %F.type.b26 = struct_value () [concrete] +// CHECK:STDOUT: %B2.F.type: type = fn_type @B2.F [concrete] +// CHECK:STDOUT: %B2.F: %B2.F.type = struct_value () [concrete] // CHECK:STDOUT: %B2.vtable_ptr: ref %ptr.454 = vtable_ptr @B2.vtable [concrete] // CHECK:STDOUT: %struct_type.base.508: type = struct_type {.base: %B1} [concrete] // CHECK:STDOUT: %complete_type.5ac: = complete_type_witness %struct_type.base.508 [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %B2 [concrete] // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] -// CHECK:STDOUT: %F.type.c29: type = fn_type @F.loc15 [concrete] -// CHECK:STDOUT: %F.437: %F.type.c29 = struct_value () [concrete] +// CHECK:STDOUT: %C.F.type: type = fn_type @C.F [concrete] +// CHECK:STDOUT: %C.F: %C.F.type = struct_value () [concrete] // CHECK:STDOUT: %C.vtable_ptr: ref %ptr.454 = vtable_ptr @C.vtable [concrete] // CHECK:STDOUT: %struct_type.base.421: type = struct_type {.base: %B2} [concrete] // CHECK:STDOUT: %complete_type.066: = complete_type_witness %struct_type.base.421 [concrete] @@ -1052,18 +1052,18 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %B2.val.426: %B2 = struct_value (%B1.val.b9d) [concrete] // CHECK:STDOUT: %C.val: %C = struct_value (%B2.val.426) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.153: type = fn_type @Op.1, @Destroy.impl(%C) [concrete] -// CHECK:STDOUT: %Op.5d7: %Op.type.153 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.153: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.5d7: %T.as.Destroy.impl.Op.type.153 = struct_value () [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] -// CHECK:STDOUT: %Op.specific_fn.6eb: = specific_function %Op.5d7, @Op.1(%C) [concrete] -// CHECK:STDOUT: %Op.type.49c: type = fn_type @Op.1, @Destroy.impl(%B2) [concrete] -// CHECK:STDOUT: %Op.bb0: %Op.type.49c = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.6eb: = specific_function %T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.49c: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%B2) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bb0: %T.as.Destroy.impl.Op.type.49c = struct_value () [concrete] // CHECK:STDOUT: %ptr.afe: type = ptr_type %B2 [concrete] -// CHECK:STDOUT: %Op.specific_fn.a6f: = specific_function %Op.bb0, @Op.1(%B2) [concrete] -// CHECK:STDOUT: %Op.type.5ba: type = fn_type @Op.1, @Destroy.impl(%B1) [concrete] -// CHECK:STDOUT: %Op.a5c: %Op.type.5ba = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.a6f: = specific_function %T.as.Destroy.impl.Op.bb0, @T.as.Destroy.impl.Op(%B2) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.5ba: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%B1) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.a5c: %T.as.Destroy.impl.Op.type.5ba = struct_value () [concrete] // CHECK:STDOUT: %ptr.890: type = ptr_type %B1 [concrete] -// CHECK:STDOUT: %Op.specific_fn.075: = specific_function %Op.a5c, @Op.1(%B1) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.075: = specific_function %T.as.Destroy.impl.Op.a5c, @T.as.Destroy.impl.Op(%B1) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -1091,7 +1091,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B1 { -// CHECK:STDOUT: %F.decl: %F.type.e4c = fn_decl @F.loc5 [concrete = constants.%F.8f5] { +// CHECK:STDOUT: %B1.F.decl: %B1.F.type = fn_decl @B1.F [concrete = constants.%B1.F] { // CHECK:STDOUT: %self.patt: %pattern_type.e47 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.e47 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -1107,13 +1107,13 @@ var v: Base(T1) = {}; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B1 -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %B1.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B2 { // CHECK:STDOUT: %B1.ref: type = name_ref B1, file.%B1.decl [concrete = constants.%B1] // CHECK:STDOUT: %.loc9: %B2.elem = base_decl %B1.ref, element0 [concrete] -// CHECK:STDOUT: %F.decl: %F.type.b26 = fn_decl @F.loc10 [concrete = constants.%F.d48] { +// CHECK:STDOUT: %B2.F.decl: %B2.F.type = fn_decl @B2.F [concrete = constants.%B2.F] { // CHECK:STDOUT: %self.patt: %pattern_type.b19 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.b19 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -1131,14 +1131,14 @@ var v: Base(T1) = {}; // CHECK:STDOUT: .Self = constants.%B2 // CHECK:STDOUT: .B1 = // CHECK:STDOUT: .base = %.loc9 -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %B2.F.decl // CHECK:STDOUT: extend %B1.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: %B2.ref: type = name_ref B2, file.%B2.decl [concrete = constants.%B2] // CHECK:STDOUT: %.loc14: %C.elem = base_decl %B2.ref, element0 [concrete] -// CHECK:STDOUT: %F.decl: %F.type.c29 = fn_decl @F.loc15 [concrete = constants.%F.437] { +// CHECK:STDOUT: %C.F.decl: %C.F.type = fn_decl @C.F [concrete = constants.%C.F] { // CHECK:STDOUT: %self.patt: %pattern_type.c48 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.c48 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -1156,27 +1156,27 @@ var v: Base(T1) = {}; // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .B2 = // CHECK:STDOUT: .base = %.loc14 -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %C.F.decl // CHECK:STDOUT: extend %B2.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @B1.vtable { -// CHECK:STDOUT: @B1.%F.decl +// CHECK:STDOUT: @B1.%B1.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @B2.vtable { -// CHECK:STDOUT: @B2.%F.decl +// CHECK:STDOUT: @B2.%B2.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @C.vtable { -// CHECK:STDOUT: @C.%F.decl +// CHECK:STDOUT: @C.%C.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: virtual fn @F.loc5(%self.param: %B1); +// CHECK:STDOUT: virtual fn @B1.F(%self.param: %B1); // CHECK:STDOUT: -// CHECK:STDOUT: impl fn @F.loc10(%self.param: %B2); +// CHECK:STDOUT: impl fn @B2.F(%self.param: %B2); // CHECK:STDOUT: -// CHECK:STDOUT: impl fn @F.loc15(%self.param: %C); +// CHECK:STDOUT: impl fn @C.F(%self.param: %C); // CHECK:STDOUT: // CHECK:STDOUT: fn @Use() { // CHECK:STDOUT: !entry: @@ -1231,21 +1231,21 @@ var v: Base(T1) = {}; // CHECK:STDOUT: assign %c.var, %.loc21_3 // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %c: ref %C = bind_name c, %c.var -// CHECK:STDOUT: %Op.bound.loc21: = bound_method %c.var, constants.%Op.5d7 -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.5d7, @Op.1(constants.%C) [concrete = constants.%Op.specific_fn.6eb] -// CHECK:STDOUT: %bound_method.loc21: = bound_method %c.var, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc21: = bound_method %c.var, constants.%T.as.Destroy.impl.Op.5d7 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(constants.%C) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.6eb] +// CHECK:STDOUT: %bound_method.loc21: = bound_method %c.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc21: %ptr.019 = addr_of %c.var -// CHECK:STDOUT: %no_op.loc21: init %empty_tuple.type = call %bound_method.loc21(%addr.loc21) -// CHECK:STDOUT: %Op.bound.loc20: = bound_method %b2.var, constants.%Op.bb0 -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.bb0, @Op.1(constants.%B2) [concrete = constants.%Op.specific_fn.a6f] -// CHECK:STDOUT: %bound_method.loc20: = bound_method %b2.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc21: init %empty_tuple.type = call %bound_method.loc21(%addr.loc21) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc20: = bound_method %b2.var, constants.%T.as.Destroy.impl.Op.bb0 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.bb0, @T.as.Destroy.impl.Op(constants.%B2) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.a6f] +// CHECK:STDOUT: %bound_method.loc20: = bound_method %b2.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc20: %ptr.afe = addr_of %b2.var -// CHECK:STDOUT: %no_op.loc20: init %empty_tuple.type = call %bound_method.loc20(%addr.loc20) -// CHECK:STDOUT: %Op.bound.loc19: = bound_method %b1.var, constants.%Op.a5c -// CHECK:STDOUT: %Op.specific_fn.3: = specific_function constants.%Op.a5c, @Op.1(constants.%B1) [concrete = constants.%Op.specific_fn.075] -// CHECK:STDOUT: %bound_method.loc19: = bound_method %b1.var, %Op.specific_fn.3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc20: init %empty_tuple.type = call %bound_method.loc20(%addr.loc20) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc19: = bound_method %b1.var, constants.%T.as.Destroy.impl.Op.a5c +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.3: = specific_function constants.%T.as.Destroy.impl.Op.a5c, @T.as.Destroy.impl.Op(constants.%B1) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.075] +// CHECK:STDOUT: %bound_method.loc19: = bound_method %b1.var, %T.as.Destroy.impl.Op.specific_fn.3 // CHECK:STDOUT: %addr.loc19: %ptr.890 = addr_of %b1.var -// CHECK:STDOUT: %no_op.loc19: init %empty_tuple.type = call %bound_method.loc19(%addr.loc19) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc19: init %empty_tuple.type = call %bound_method.loc19(%addr.loc19) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1254,8 +1254,8 @@ var v: Base(T1) = {}; // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %C.F.type: type = fn_type @C.F [concrete] +// CHECK:STDOUT: %C.F: %C.F.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: } @@ -1277,7 +1277,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { +// CHECK:STDOUT: %C.F.decl: %C.F.type = fn_decl @C.F [concrete = constants.%C.F] { // CHECK:STDOUT: %self.patt: %pattern_type = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -1291,10 +1291,10 @@ var v: Base(T1) = {}; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %C.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl fn @F(%self.param: %C); +// CHECK:STDOUT: impl fn @C.F(%self.param: %C); // CHECK:STDOUT: // CHECK:STDOUT: --- init_members.carbon // CHECK:STDOUT: @@ -1307,52 +1307,52 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %Base.elem: type = unbound_element_type %Base, %i32 [concrete] // CHECK:STDOUT: %pattern_type.bcc: type = pattern_type %Base [concrete] -// CHECK:STDOUT: %F.type.7c6: type = fn_type @F.loc8 [concrete] -// CHECK:STDOUT: %F.d17: %F.type.7c6 = struct_value () [concrete] +// CHECK:STDOUT: %Base.F.type: type = fn_type @Base.F [concrete] +// CHECK:STDOUT: %Base.F: %Base.F.type = struct_value () [concrete] // CHECK:STDOUT: %ptr.454: type = ptr_type [concrete] // CHECK:STDOUT: %Base.vtable_ptr: ref %ptr.454 = vtable_ptr @Base.vtable [concrete] // CHECK:STDOUT: %struct_type.vptr.m1.m2: type = struct_type {.: %ptr.454, .m1: %i32, .m2: %i32} [concrete] // CHECK:STDOUT: %complete_type.cf7: = complete_type_witness %struct_type.vptr.m1.m2 [concrete] -// CHECK:STDOUT: %F.type.b25: type = fn_type @F.loc11 [concrete] -// CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [concrete] +// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] +// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.b30: = bound_method %int_3.1ba, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.047: = bound_method %int_3.1ba, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.b30: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.047: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_3.822: %i32 = int_value 3 [concrete] // CHECK:STDOUT: %struct_type.m2.m1.68c: type = struct_type {.m2: %i32, .m1: %i32} [concrete] // CHECK:STDOUT: %int_5.64b: Core.IntLiteral = int_value 5 [concrete] // CHECK:STDOUT: %struct_type.m2.m1.5f2: type = struct_type {.m2: Core.IntLiteral, .m1: Core.IntLiteral} [concrete] -// CHECK:STDOUT: %Convert.bound.4e6: = bound_method %int_5.64b, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.a25: = bound_method %int_5.64b, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.4e6: = bound_method %int_5.64b, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.a25: = bound_method %int_5.64b, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_5.0f6: %i32 = int_value 5 [concrete] // CHECK:STDOUT: %Base.val: %Base = struct_value (%Base.vtable_ptr, %int_5.0f6, %int_3.822) [concrete] // CHECK:STDOUT: %int_4.0c1: Core.IntLiteral = int_value 4 [concrete] -// CHECK:STDOUT: %Convert.bound.ac3: = bound_method %int_4.0c1, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.1da: = bound_method %int_4.0c1, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ac3: = bound_method %int_4.0c1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.1da: = bound_method %int_4.0c1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_4.940: %i32 = int_value 4 [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.193: type = fn_type @Op.1, @Destroy.impl(%Base) [concrete] -// CHECK:STDOUT: %Op.345: %Op.type.193 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.193: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%Base) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.345: %T.as.Destroy.impl.Op.type.193 = struct_value () [concrete] // CHECK:STDOUT: %ptr.11f: type = ptr_type %Base [concrete] -// CHECK:STDOUT: %Op.specific_fn.083: = specific_function %Op.345, @Op.1(%Base) [concrete] -// CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.1, @Destroy.impl(%i32) [concrete] -// CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.083: = specific_function %T.as.Destroy.impl.Op.345, @T.as.Destroy.impl.Op(%Base) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a17: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.e6a: %T.as.Destroy.impl.Op.type.a17 = struct_value () [concrete] // CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] -// CHECK:STDOUT: %Op.specific_fn.014: = specific_function %Op.e6a, @Op.1(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.014: = specific_function %T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(%i32) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -1365,8 +1365,8 @@ var v: Base(T1) = {}; // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1378,7 +1378,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Base.decl: type = class_decl @Base [concrete = constants.%Base] {} {} -// CHECK:STDOUT: %F.decl: %F.type.b25 = fn_decl @F.loc11 [concrete = constants.%F.c41] {} {} +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Base { @@ -1388,7 +1388,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %int_32.loc6: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc6: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %.loc6: %Base.elem = field_decl m2, element2 [concrete] -// CHECK:STDOUT: %F.decl: %F.type.7c6 = fn_decl @F.loc8 [concrete = constants.%F.d17] { +// CHECK:STDOUT: %Base.F.decl: %Base.F.type = fn_decl @Base.F [concrete = constants.%Base.F] { // CHECK:STDOUT: %self.patt: %pattern_type.bcc = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.bcc = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -1406,16 +1406,16 @@ var v: Base(T1) = {}; // CHECK:STDOUT: .Self = constants.%Base // CHECK:STDOUT: .m1 = %.loc5 // CHECK:STDOUT: .m2 = %.loc6 -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %Base.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @Base.vtable { -// CHECK:STDOUT: @Base.%F.decl +// CHECK:STDOUT: @Base.%Base.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: virtual fn @F.loc8(%self.param: %Base); +// CHECK:STDOUT: virtual fn @Base.F(%self.param: %Base); // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc11() { +// CHECK:STDOUT: fn @F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %i.patt: %pattern_type.7ce = binding_pattern i [concrete] @@ -1423,12 +1423,12 @@ var v: Base(T1) = {}; // CHECK:STDOUT: } // CHECK:STDOUT: %i.var: ref %i32 = var %i.var_patt // CHECK:STDOUT: %int_3.loc12: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] -// CHECK:STDOUT: %impl.elem0.loc12: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc12_3.1: = bound_method %int_3.loc12, %impl.elem0.loc12 [concrete = constants.%Convert.bound.b30] -// CHECK:STDOUT: %specific_fn.loc12: = specific_function %impl.elem0.loc12, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc12: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc12_3.1: = bound_method %int_3.loc12, %impl.elem0.loc12 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.b30] +// CHECK:STDOUT: %specific_fn.loc12: = specific_function %impl.elem0.loc12, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc12_3.2: = bound_method %int_3.loc12, %specific_fn.loc12 [concrete = constants.%bound_method.047] -// CHECK:STDOUT: %int.convert_checked.loc12: init %i32 = call %bound_method.loc12_3.2(%int_3.loc12) [concrete = constants.%int_3.822] -// CHECK:STDOUT: %.loc12_3: init %i32 = converted %int_3.loc12, %int.convert_checked.loc12 [concrete = constants.%int_3.822] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc12: init %i32 = call %bound_method.loc12_3.2(%int_3.loc12) [concrete = constants.%int_3.822] +// CHECK:STDOUT: %.loc12_3: init %i32 = converted %int_3.loc12, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc12 [concrete = constants.%int_3.822] // CHECK:STDOUT: assign %i.var, %.loc12_3 // CHECK:STDOUT: %.loc12_10: type = splice_block %i32 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -1466,20 +1466,20 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %.loc14_35.1: %struct_type.m2.m1.5f2 = struct_literal (%int_3.loc14, %int_5) // CHECK:STDOUT: %.loc14_35.2: ref %ptr.454 = class_element_access %b2.var, element0 // CHECK:STDOUT: %.loc14_35.3: init %ptr.454 = initialize_from @Base.%vtable_ptr to %.loc14_35.2 [concrete = constants.%Base.vtable_ptr] -// CHECK:STDOUT: %impl.elem0.loc14_35.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc14_35.1: = bound_method %int_5, %impl.elem0.loc14_35.1 [concrete = constants.%Convert.bound.4e6] -// CHECK:STDOUT: %specific_fn.loc14_35.1: = specific_function %impl.elem0.loc14_35.1, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc14_35.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc14_35.1: = bound_method %int_5, %impl.elem0.loc14_35.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.4e6] +// CHECK:STDOUT: %specific_fn.loc14_35.1: = specific_function %impl.elem0.loc14_35.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc14_35.2: = bound_method %int_5, %specific_fn.loc14_35.1 [concrete = constants.%bound_method.a25] -// CHECK:STDOUT: %int.convert_checked.loc14_35.1: init %i32 = call %bound_method.loc14_35.2(%int_5) [concrete = constants.%int_5.0f6] -// CHECK:STDOUT: %.loc14_35.4: init %i32 = converted %int_5, %int.convert_checked.loc14_35.1 [concrete = constants.%int_5.0f6] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc14_35.1: init %i32 = call %bound_method.loc14_35.2(%int_5) [concrete = constants.%int_5.0f6] +// CHECK:STDOUT: %.loc14_35.4: init %i32 = converted %int_5, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc14_35.1 [concrete = constants.%int_5.0f6] // CHECK:STDOUT: %.loc14_35.5: ref %i32 = class_element_access %b2.var, element2 // CHECK:STDOUT: %.loc14_35.6: init %i32 = initialize_from %.loc14_35.4 to %.loc14_35.5 [concrete = constants.%int_5.0f6] -// CHECK:STDOUT: %impl.elem0.loc14_35.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc14_35.3: = bound_method %int_3.loc14, %impl.elem0.loc14_35.2 [concrete = constants.%Convert.bound.b30] -// CHECK:STDOUT: %specific_fn.loc14_35.2: = specific_function %impl.elem0.loc14_35.2, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc14_35.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc14_35.3: = bound_method %int_3.loc14, %impl.elem0.loc14_35.2 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.b30] +// CHECK:STDOUT: %specific_fn.loc14_35.2: = specific_function %impl.elem0.loc14_35.2, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc14_35.4: = bound_method %int_3.loc14, %specific_fn.loc14_35.2 [concrete = constants.%bound_method.047] -// CHECK:STDOUT: %int.convert_checked.loc14_35.2: init %i32 = call %bound_method.loc14_35.4(%int_3.loc14) [concrete = constants.%int_3.822] -// CHECK:STDOUT: %.loc14_35.7: init %i32 = converted %int_3.loc14, %int.convert_checked.loc14_35.2 [concrete = constants.%int_3.822] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc14_35.2: init %i32 = call %bound_method.loc14_35.4(%int_3.loc14) [concrete = constants.%int_3.822] +// CHECK:STDOUT: %.loc14_35.7: init %i32 = converted %int_3.loc14, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc14_35.2 [concrete = constants.%int_3.822] // CHECK:STDOUT: %.loc14_35.8: ref %i32 = class_element_access %b2.var, element1 // CHECK:STDOUT: %.loc14_35.9: init %i32 = initialize_from %.loc14_35.7 to %.loc14_35.8 [concrete = constants.%int_3.822] // CHECK:STDOUT: %.loc14_35.10: init %Base = class_init (%.loc14_35.3, %.loc14_35.6, %.loc14_35.9), %b2.var [concrete = constants.%Base.val] @@ -1491,28 +1491,28 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %m2.ref: %Base.elem = name_ref m2, @Base.%.loc6 [concrete = @Base.%.loc6] // CHECK:STDOUT: %.loc16_5: ref %i32 = class_element_access %b1.ref, element2 // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete = constants.%int_4.0c1] -// CHECK:STDOUT: %impl.elem0.loc16: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc16_9.1: = bound_method %int_4, %impl.elem0.loc16 [concrete = constants.%Convert.bound.ac3] -// CHECK:STDOUT: %specific_fn.loc16: = specific_function %impl.elem0.loc16, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc16: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc16_9.1: = bound_method %int_4, %impl.elem0.loc16 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ac3] +// CHECK:STDOUT: %specific_fn.loc16: = specific_function %impl.elem0.loc16, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc16_9.2: = bound_method %int_4, %specific_fn.loc16 [concrete = constants.%bound_method.1da] -// CHECK:STDOUT: %int.convert_checked.loc16: init %i32 = call %bound_method.loc16_9.2(%int_4) [concrete = constants.%int_4.940] -// CHECK:STDOUT: %.loc16_9: init %i32 = converted %int_4, %int.convert_checked.loc16 [concrete = constants.%int_4.940] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc16: init %i32 = call %bound_method.loc16_9.2(%int_4) [concrete = constants.%int_4.940] +// CHECK:STDOUT: %.loc16_9: init %i32 = converted %int_4, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc16 [concrete = constants.%int_4.940] // CHECK:STDOUT: assign %.loc16_5, %.loc16_9 -// CHECK:STDOUT: %Op.bound.loc14: = bound_method %b2.var, constants.%Op.345 -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.345, @Op.1(constants.%Base) [concrete = constants.%Op.specific_fn.083] -// CHECK:STDOUT: %bound_method.loc14_3: = bound_method %b2.var, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc14: = bound_method %b2.var, constants.%T.as.Destroy.impl.Op.345 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.345, @T.as.Destroy.impl.Op(constants.%Base) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.083] +// CHECK:STDOUT: %bound_method.loc14_3: = bound_method %b2.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc14: %ptr.11f = addr_of %b2.var -// CHECK:STDOUT: %no_op.loc14: init %empty_tuple.type = call %bound_method.loc14_3(%addr.loc14) -// CHECK:STDOUT: %Op.bound.loc13: = bound_method %b1.var, constants.%Op.345 -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.345, @Op.1(constants.%Base) [concrete = constants.%Op.specific_fn.083] -// CHECK:STDOUT: %bound_method.loc13: = bound_method %b1.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc14: init %empty_tuple.type = call %bound_method.loc14_3(%addr.loc14) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc13: = bound_method %b1.var, constants.%T.as.Destroy.impl.Op.345 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.345, @T.as.Destroy.impl.Op(constants.%Base) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.083] +// CHECK:STDOUT: %bound_method.loc13: = bound_method %b1.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc13: %ptr.11f = addr_of %b1.var -// CHECK:STDOUT: %no_op.loc13: init %empty_tuple.type = call %bound_method.loc13(%addr.loc13) -// CHECK:STDOUT: %Op.bound.loc12: = bound_method %i.var, constants.%Op.e6a -// CHECK:STDOUT: %Op.specific_fn.3: = specific_function constants.%Op.e6a, @Op.1(constants.%i32) [concrete = constants.%Op.specific_fn.014] -// CHECK:STDOUT: %bound_method.loc12_3.3: = bound_method %i.var, %Op.specific_fn.3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc13: init %empty_tuple.type = call %bound_method.loc13(%addr.loc13) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc12: = bound_method %i.var, constants.%T.as.Destroy.impl.Op.e6a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.3: = specific_function constants.%T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.014] +// CHECK:STDOUT: %bound_method.loc12_3.3: = bound_method %i.var, %T.as.Destroy.impl.Op.specific_fn.3 // CHECK:STDOUT: %addr.loc12: %ptr.235 = addr_of %i.var -// CHECK:STDOUT: %no_op.loc12: init %empty_tuple.type = call %bound_method.loc12_3.3(%addr.loc12) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc12: init %empty_tuple.type = call %bound_method.loc12_3.3(%addr.loc12) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1525,8 +1525,8 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %Derived: type = class_type @Derived [concrete] // CHECK:STDOUT: %Derived.elem: type = unbound_element_type %Derived, %Base [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %Derived [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %Derived.F.type: type = fn_type @Derived.F [concrete] +// CHECK:STDOUT: %Derived.F: %Derived.F.type = struct_value () [concrete] // CHECK:STDOUT: %ptr.454: type = ptr_type [concrete] // CHECK:STDOUT: %Derived.vtable_ptr: ref %ptr.454 = vtable_ptr @Derived.vtable [concrete] // CHECK:STDOUT: %struct_type.vptr.base: type = struct_type {.: %ptr.454, .base: %Base} [concrete] @@ -1563,7 +1563,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: class @Derived { // CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [concrete = constants.%Base] // CHECK:STDOUT: %.loc8: %Derived.elem = base_decl %Base.ref, element1 [concrete] -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { +// CHECK:STDOUT: %Derived.F.decl: %Derived.F.type = fn_decl @Derived.F [concrete = constants.%Derived.F] { // CHECK:STDOUT: %self.patt: %pattern_type = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -1581,21 +1581,21 @@ var v: Base(T1) = {}; // CHECK:STDOUT: .Self = constants.%Derived // CHECK:STDOUT: .Base = // CHECK:STDOUT: .base = %.loc8 -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %Derived.F.decl // CHECK:STDOUT: extend %Base.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @Derived.vtable {} // CHECK:STDOUT: -// CHECK:STDOUT: impl fn @F(%self.param: %Derived); +// CHECK:STDOUT: impl fn @Derived.F(%self.param: %Derived); // CHECK:STDOUT: // CHECK:STDOUT: --- abstract_impl.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %AbstractBase: type = class_type @AbstractBase [concrete] // CHECK:STDOUT: %pattern_type.27c: type = pattern_type %AbstractBase [concrete] -// CHECK:STDOUT: %F.type.85b: type = fn_type @F.loc5 [concrete] -// CHECK:STDOUT: %F.6e9: %F.type.85b = struct_value () [concrete] +// CHECK:STDOUT: %AbstractBase.F.type: type = fn_type @AbstractBase.F [concrete] +// CHECK:STDOUT: %AbstractBase.F: %AbstractBase.F.type = struct_value () [concrete] // CHECK:STDOUT: %ptr.454: type = ptr_type [concrete] // CHECK:STDOUT: %AbstractBase.vtable_ptr: ref %ptr.454 = vtable_ptr @AbstractBase.vtable [concrete] // CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr.454} [concrete] @@ -1608,8 +1608,8 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %Derived: type = class_type @Derived [concrete] // CHECK:STDOUT: %Derived.elem: type = unbound_element_type %Derived, %AbstractIntermediate [concrete] // CHECK:STDOUT: %pattern_type.fb9: type = pattern_type %Derived [concrete] -// CHECK:STDOUT: %F.type.5da: type = fn_type @F.loc14 [concrete] -// CHECK:STDOUT: %F.fa3: %F.type.5da = struct_value () [concrete] +// CHECK:STDOUT: %Derived.F.type: type = fn_type @Derived.F [concrete] +// CHECK:STDOUT: %Derived.F: %Derived.F.type = struct_value () [concrete] // CHECK:STDOUT: %Derived.vtable_ptr: ref %ptr.454 = vtable_ptr @Derived.vtable [concrete] // CHECK:STDOUT: %struct_type.base.da5: type = struct_type {.base: %AbstractIntermediate} [concrete] // CHECK:STDOUT: %complete_type.f8c: = complete_type_witness %struct_type.base.da5 [concrete] @@ -1636,7 +1636,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @AbstractBase { -// CHECK:STDOUT: %F.decl: %F.type.85b = fn_decl @F.loc5 [concrete = constants.%F.6e9] { +// CHECK:STDOUT: %AbstractBase.F.decl: %AbstractBase.F.type = fn_decl @AbstractBase.F [concrete = constants.%AbstractBase.F] { // CHECK:STDOUT: %self.patt: %pattern_type.27c = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.27c = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -1652,7 +1652,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%AbstractBase -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %AbstractBase.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @AbstractIntermediate { @@ -1674,7 +1674,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: class @Derived { // CHECK:STDOUT: %AbstractIntermediate.ref: type = name_ref AbstractIntermediate, file.%AbstractIntermediate.decl [concrete = constants.%AbstractIntermediate] // CHECK:STDOUT: %.loc13: %Derived.elem = base_decl %AbstractIntermediate.ref, element0 [concrete] -// CHECK:STDOUT: %F.decl: %F.type.5da = fn_decl @F.loc14 [concrete = constants.%F.fa3] { +// CHECK:STDOUT: %Derived.F.decl: %Derived.F.type = fn_decl @Derived.F [concrete = constants.%Derived.F] { // CHECK:STDOUT: %self.patt: %pattern_type.fb9 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.fb9 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -1692,33 +1692,33 @@ var v: Base(T1) = {}; // CHECK:STDOUT: .Self = constants.%Derived // CHECK:STDOUT: .AbstractIntermediate = // CHECK:STDOUT: .base = %.loc13 -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %Derived.F.decl // CHECK:STDOUT: extend %AbstractIntermediate.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @AbstractBase.vtable { -// CHECK:STDOUT: @AbstractBase.%F.decl +// CHECK:STDOUT: @AbstractBase.%AbstractBase.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @AbstractIntermediate.vtable { -// CHECK:STDOUT: constants.%F.6e9 +// CHECK:STDOUT: constants.%AbstractBase.F // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @Derived.vtable { -// CHECK:STDOUT: @Derived.%F.decl +// CHECK:STDOUT: @Derived.%Derived.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: abstract fn @F.loc5(%self.param: %AbstractBase); +// CHECK:STDOUT: abstract fn @AbstractBase.F(%self.param: %AbstractBase); // CHECK:STDOUT: -// CHECK:STDOUT: impl fn @F.loc14(%self.param: %Derived); +// CHECK:STDOUT: impl fn @Derived.F(%self.param: %Derived); // CHECK:STDOUT: // CHECK:STDOUT: --- virtual_impl.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %VirtualBase: type = class_type @VirtualBase [concrete] // CHECK:STDOUT: %pattern_type.ad4: type = pattern_type %VirtualBase [concrete] -// CHECK:STDOUT: %F.type.e62: type = fn_type @F.loc5 [concrete] -// CHECK:STDOUT: %F.3e7: %F.type.e62 = struct_value () [concrete] +// CHECK:STDOUT: %VirtualBase.F.type: type = fn_type @VirtualBase.F [concrete] +// CHECK:STDOUT: %VirtualBase.F: %VirtualBase.F.type = struct_value () [concrete] // CHECK:STDOUT: %ptr.454: type = ptr_type [concrete] // CHECK:STDOUT: %VirtualBase.vtable_ptr: ref %ptr.454 = vtable_ptr @VirtualBase.vtable [concrete] // CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr.454} [concrete] @@ -1731,8 +1731,8 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %Derived: type = class_type @Derived [concrete] // CHECK:STDOUT: %Derived.elem: type = unbound_element_type %Derived, %VirtualIntermediate [concrete] // CHECK:STDOUT: %pattern_type.fb9: type = pattern_type %Derived [concrete] -// CHECK:STDOUT: %F.type.5da: type = fn_type @F.loc14 [concrete] -// CHECK:STDOUT: %F.fa3: %F.type.5da = struct_value () [concrete] +// CHECK:STDOUT: %Derived.F.type: type = fn_type @Derived.F [concrete] +// CHECK:STDOUT: %Derived.F: %Derived.F.type = struct_value () [concrete] // CHECK:STDOUT: %Derived.vtable_ptr: ref %ptr.454 = vtable_ptr @Derived.vtable [concrete] // CHECK:STDOUT: %struct_type.base.43c: type = struct_type {.base: %VirtualIntermediate} [concrete] // CHECK:STDOUT: %complete_type.fa6: = complete_type_witness %struct_type.base.43c [concrete] @@ -1759,7 +1759,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @VirtualBase { -// CHECK:STDOUT: %F.decl: %F.type.e62 = fn_decl @F.loc5 [concrete = constants.%F.3e7] { +// CHECK:STDOUT: %VirtualBase.F.decl: %VirtualBase.F.type = fn_decl @VirtualBase.F [concrete = constants.%VirtualBase.F] { // CHECK:STDOUT: %self.patt: %pattern_type.ad4 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.ad4 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -1775,7 +1775,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%VirtualBase -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %VirtualBase.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @VirtualIntermediate { @@ -1797,7 +1797,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: class @Derived { // CHECK:STDOUT: %VirtualIntermediate.ref: type = name_ref VirtualIntermediate, file.%VirtualIntermediate.decl [concrete = constants.%VirtualIntermediate] // CHECK:STDOUT: %.loc13: %Derived.elem = base_decl %VirtualIntermediate.ref, element0 [concrete] -// CHECK:STDOUT: %F.decl: %F.type.5da = fn_decl @F.loc14 [concrete = constants.%F.fa3] { +// CHECK:STDOUT: %Derived.F.decl: %Derived.F.type = fn_decl @Derived.F [concrete = constants.%Derived.F] { // CHECK:STDOUT: %self.patt: %pattern_type.fb9 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.fb9 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -1815,33 +1815,33 @@ var v: Base(T1) = {}; // CHECK:STDOUT: .Self = constants.%Derived // CHECK:STDOUT: .VirtualIntermediate = // CHECK:STDOUT: .base = %.loc13 -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %Derived.F.decl // CHECK:STDOUT: extend %VirtualIntermediate.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @VirtualBase.vtable { -// CHECK:STDOUT: @VirtualBase.%F.decl +// CHECK:STDOUT: @VirtualBase.%VirtualBase.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @VirtualIntermediate.vtable { -// CHECK:STDOUT: constants.%F.3e7 +// CHECK:STDOUT: constants.%VirtualBase.F // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @Derived.vtable { -// CHECK:STDOUT: @Derived.%F.decl +// CHECK:STDOUT: @Derived.%Derived.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: virtual fn @F.loc5(%self.param: %VirtualBase); +// CHECK:STDOUT: virtual fn @VirtualBase.F(%self.param: %VirtualBase); // CHECK:STDOUT: -// CHECK:STDOUT: impl fn @F.loc14(%self.param: %Derived); +// CHECK:STDOUT: impl fn @Derived.F(%self.param: %Derived); // CHECK:STDOUT: // CHECK:STDOUT: --- fail_impl_mismatch.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %Base: type = class_type @Base [concrete] // CHECK:STDOUT: %pattern_type.bcc: type = pattern_type %Base [concrete] -// CHECK:STDOUT: %F.type.7c6: type = fn_type @F.loc5 [concrete] -// CHECK:STDOUT: %F.d17: %F.type.7c6 = struct_value () [concrete] +// CHECK:STDOUT: %Base.F.type: type = fn_type @Base.F [concrete] +// CHECK:STDOUT: %Base.F: %Base.F.type = struct_value () [concrete] // CHECK:STDOUT: %ptr.454: type = ptr_type [concrete] // CHECK:STDOUT: %Base.vtable_ptr: ref %ptr.454 = vtable_ptr @Base.vtable [concrete] // CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr.454} [concrete] @@ -1854,8 +1854,8 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %F.type.5da: type = fn_type @F.loc17 [concrete] -// CHECK:STDOUT: %F.fa3: %F.type.5da = struct_value () [concrete] +// CHECK:STDOUT: %Derived.F.type: type = fn_type @Derived.F [concrete] +// CHECK:STDOUT: %Derived.F: %Derived.F.type = struct_value () [concrete] // CHECK:STDOUT: %Derived.vtable_ptr: ref %ptr.454 = vtable_ptr @Derived.vtable [concrete] // CHECK:STDOUT: %struct_type.base: type = struct_type {.base: %Base} [concrete] // CHECK:STDOUT: %complete_type.15c: = complete_type_witness %struct_type.base [concrete] @@ -1882,7 +1882,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Base { -// CHECK:STDOUT: %F.decl: %F.type.7c6 = fn_decl @F.loc5 [concrete = constants.%F.d17] { +// CHECK:STDOUT: %Base.F.decl: %Base.F.type = fn_decl @Base.F [concrete = constants.%Base.F] { // CHECK:STDOUT: %self.patt: %pattern_type.bcc = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.bcc = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -1898,13 +1898,13 @@ var v: Base(T1) = {}; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %Base.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { // CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [concrete = constants.%Base] // CHECK:STDOUT: %.loc9: %Derived.elem = base_decl %Base.ref, element0 [concrete] -// CHECK:STDOUT: %F.decl: %F.type.5da = fn_decl @F.loc17 [concrete = constants.%F.fa3] { +// CHECK:STDOUT: %Derived.F.decl: %Derived.F.type = fn_decl @Derived.F [concrete = constants.%Derived.F] { // CHECK:STDOUT: %self.patt: %pattern_type.fb9 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.fb9 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %v.patt: %pattern_type.7ce = binding_pattern v [concrete] @@ -1930,21 +1930,21 @@ var v: Base(T1) = {}; // CHECK:STDOUT: .Self = constants.%Derived // CHECK:STDOUT: .Base = // CHECK:STDOUT: .base = %.loc9 -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %Derived.F.decl // CHECK:STDOUT: extend %Base.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @Base.vtable { -// CHECK:STDOUT: @Base.%F.decl +// CHECK:STDOUT: @Base.%Base.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @Derived.vtable { -// CHECK:STDOUT: @Derived.%F.decl +// CHECK:STDOUT: @Derived.%Derived.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: virtual fn @F.loc5(%self.param: %Base); +// CHECK:STDOUT: virtual fn @Base.F(%self.param: %Base); // CHECK:STDOUT: -// CHECK:STDOUT: impl fn @F.loc17(%self.param: %Derived, %v.param: %i32); +// CHECK:STDOUT: impl fn @Derived.F(%self.param: %Derived, %v.param: %i32); // CHECK:STDOUT: // CHECK:STDOUT: --- fail_todo_impl_conversion.carbon // CHECK:STDOUT: @@ -1959,13 +1959,13 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %ImplicitAs.impl_witness: = impl_witness file.%ImplicitAs.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.682: type = pattern_type %T2 [concrete] // CHECK:STDOUT: %pattern_type.28b: type = pattern_type %T1 [concrete] -// CHECK:STDOUT: %Convert.type.c41: type = fn_type @Convert.loc11 [concrete] -// CHECK:STDOUT: %Convert.f35: %Convert.type.c41 = struct_value () [concrete] +// CHECK:STDOUT: %T2.as.ImplicitAs.impl.Convert.type: type = fn_type @T2.as.ImplicitAs.impl.Convert [concrete] +// CHECK:STDOUT: %T2.as.ImplicitAs.impl.Convert: %T2.as.ImplicitAs.impl.Convert.type = struct_value () [concrete] // CHECK:STDOUT: %T1.val: %T1 = struct_value () [concrete] // CHECK:STDOUT: %Base: type = class_type @Base [concrete] // CHECK:STDOUT: %pattern_type.bcc: type = pattern_type %Base [concrete] -// CHECK:STDOUT: %F.type.7c6: type = fn_type @F.loc17 [concrete] -// CHECK:STDOUT: %F.d17: %F.type.7c6 = struct_value () [concrete] +// CHECK:STDOUT: %Base.F.type: type = fn_type @Base.F [concrete] +// CHECK:STDOUT: %Base.F: %Base.F.type = struct_value () [concrete] // CHECK:STDOUT: %ptr.454: type = ptr_type [concrete] // CHECK:STDOUT: %Base.vtable_ptr: ref %ptr.454 = vtable_ptr @Base.vtable [concrete] // CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr.454} [concrete] @@ -1973,8 +1973,8 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %Derived: type = class_type @Derived [concrete] // CHECK:STDOUT: %Derived.elem: type = unbound_element_type %Derived, %Base [concrete] // CHECK:STDOUT: %pattern_type.fb9: type = pattern_type %Derived [concrete] -// CHECK:STDOUT: %F.type.5da: type = fn_type @F.loc29 [concrete] -// CHECK:STDOUT: %F.fa3: %F.type.5da = struct_value () [concrete] +// CHECK:STDOUT: %Derived.F.type: type = fn_type @Derived.F [concrete] +// CHECK:STDOUT: %Derived.F: %Derived.F.type = struct_value () [concrete] // CHECK:STDOUT: %Derived.vtable_ptr: ref %ptr.454 = vtable_ptr @Derived.vtable [concrete] // CHECK:STDOUT: %struct_type.base: type = struct_type {.base: %Base} [concrete] // CHECK:STDOUT: %complete_type.15c: = complete_type_witness %struct_type.base [concrete] @@ -2000,21 +2000,21 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %T1.decl: type = class_decl @T1 [concrete = constants.%T1] {} {} // CHECK:STDOUT: %T2.decl: type = class_decl @T2 [concrete = constants.%T2] {} {} -// CHECK:STDOUT: impl_decl @ImplicitAs.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @T2.as.ImplicitAs.impl [concrete] {} { // CHECK:STDOUT: %T2.ref: type = name_ref T2, file.%T2.decl [concrete = constants.%T2] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %ImplicitAs.ref: %ImplicitAs.type.cc7 = name_ref ImplicitAs, imports.%Core.ImplicitAs [concrete = constants.%ImplicitAs.generic] // CHECK:STDOUT: %T1.ref: type = name_ref T1, file.%T1.decl [concrete = constants.%T1] // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%T1)> [concrete = constants.%ImplicitAs.type.e40] // CHECK:STDOUT: } -// CHECK:STDOUT: %ImplicitAs.impl_witness_table = impl_witness_table (@ImplicitAs.impl.%Convert.decl), @ImplicitAs.impl [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table = impl_witness_table (@T2.as.ImplicitAs.impl.%T2.as.ImplicitAs.impl.Convert.decl), @T2.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness: = impl_witness %ImplicitAs.impl_witness_table [concrete = constants.%ImplicitAs.impl_witness] // CHECK:STDOUT: %Base.decl: type = class_decl @Base [concrete = constants.%Base] {} {} // CHECK:STDOUT: %Derived.decl: type = class_decl @Derived [concrete = constants.%Derived] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @ImplicitAs.impl: %T2.ref as %ImplicitAs.type { -// CHECK:STDOUT: %Convert.decl: %Convert.type.c41 = fn_decl @Convert.loc11 [concrete = constants.%Convert.f35] { +// CHECK:STDOUT: impl @T2.as.ImplicitAs.impl: %T2.ref as %ImplicitAs.type { +// CHECK:STDOUT: %T2.as.ImplicitAs.impl.Convert.decl: %T2.as.ImplicitAs.impl.Convert.type = fn_decl @T2.as.ImplicitAs.impl.Convert [concrete = constants.%T2.as.ImplicitAs.impl.Convert] { // CHECK:STDOUT: %self.patt: %pattern_type.682 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.682 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.28b = return_slot_pattern [concrete] @@ -2022,7 +2022,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: } { // CHECK:STDOUT: %T1.ref: type = name_ref T1, file.%T1.decl [concrete = constants.%T1] // CHECK:STDOUT: %self.param: %T2 = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @ImplicitAs.impl.%T2.ref [concrete = constants.%T2] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @T2.as.ImplicitAs.impl.%T2.ref [concrete = constants.%T2] // CHECK:STDOUT: %self: %T2 = bind_name self, %self.param // CHECK:STDOUT: %return.param: ref %T1 = out_param call_param1 // CHECK:STDOUT: %return: ref %T1 = return_slot %return.param @@ -2030,7 +2030,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .T1 = -// CHECK:STDOUT: .Convert = %Convert.decl +// CHECK:STDOUT: .Convert = %T2.as.ImplicitAs.impl.Convert.decl // CHECK:STDOUT: witness = file.%ImplicitAs.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: @@ -2053,7 +2053,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Base { -// CHECK:STDOUT: %F.decl: %F.type.7c6 = fn_decl @F.loc17 [concrete = constants.%F.d17] { +// CHECK:STDOUT: %Base.F.decl: %Base.F.type = fn_decl @Base.F [concrete = constants.%Base.F] { // CHECK:STDOUT: %self.patt: %pattern_type.bcc = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.bcc = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.28b = return_slot_pattern [concrete] @@ -2075,14 +2075,14 @@ var v: Base(T1) = {}; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base // CHECK:STDOUT: .T1 = -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %Base.F.decl // CHECK:STDOUT: .T2 = // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { // CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [concrete = constants.%Base] // CHECK:STDOUT: %.loc21: %Derived.elem = base_decl %Base.ref, element0 [concrete] -// CHECK:STDOUT: %F.decl: %F.type.5da = fn_decl @F.loc29 [concrete = constants.%F.fa3] { +// CHECK:STDOUT: %Derived.F.decl: %Derived.F.type = fn_decl @Derived.F [concrete = constants.%Derived.F] { // CHECK:STDOUT: %self.patt: %pattern_type.fb9 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.fb9 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.682 = return_slot_pattern [concrete] @@ -2106,19 +2106,19 @@ var v: Base(T1) = {}; // CHECK:STDOUT: .Base = // CHECK:STDOUT: .base = %.loc21 // CHECK:STDOUT: .T2 = -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %Derived.F.decl // CHECK:STDOUT: extend %Base.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @Base.vtable { -// CHECK:STDOUT: @Base.%F.decl +// CHECK:STDOUT: @Base.%Base.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @Derived.vtable { -// CHECK:STDOUT: @Derived.%F.decl +// CHECK:STDOUT: @Derived.%Derived.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert.loc11(%self.param: %T2) -> %return.param: %T1 { +// CHECK:STDOUT: fn @T2.as.ImplicitAs.impl.Convert(%self.param: %T2) -> %return.param: %T1 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %.loc12_13.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc12_13.2: init %T1 = class_init (), %return [concrete = constants.%T1.val] @@ -2126,9 +2126,9 @@ var v: Base(T1) = {}; // CHECK:STDOUT: return %.loc12_14 to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: virtual fn @F.loc17(%self.param: %Base) -> %return.param: %T1; +// CHECK:STDOUT: virtual fn @Base.F(%self.param: %Base) -> %return.param: %T1; // CHECK:STDOUT: -// CHECK:STDOUT: impl fn @F.loc29(%self.param: %Derived) -> %return.param: %T2; +// CHECK:STDOUT: impl fn @Derived.F(%self.param: %Derived) -> %return.param: %T2; // CHECK:STDOUT: // CHECK:STDOUT: --- fail_generic_virtual_decl.carbon // CHECK:STDOUT: @@ -2139,10 +2139,10 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %Base.generic: %Base.type = struct_value () [concrete] // CHECK:STDOUT: %Base: type = class_type @Base, @Base(%T) [symbolic] // CHECK:STDOUT: %pattern_type.9f7: type = pattern_type %Base [symbolic] -// CHECK:STDOUT: %F.type: type = fn_type @F, @Base(%T) [symbolic] -// CHECK:STDOUT: %F: %F.type = struct_value () [symbolic] +// CHECK:STDOUT: %Base.F.type: type = fn_type @Base.F, @Base(%T) [symbolic] +// CHECK:STDOUT: %Base.F: %Base.F.type = struct_value () [symbolic] // CHECK:STDOUT: %ptr: type = ptr_type [concrete] -// CHECK:STDOUT: %F.specific_fn: = specific_function %F, @F(%T) [symbolic] +// CHECK:STDOUT: %Base.F.specific_fn: = specific_function %Base.F, @Base.F(%T) [symbolic] // CHECK:STDOUT: %Base.vtable_ptr: ref %ptr = vtable_ptr @Base.vtable, @Base(%T) [symbolic] // CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.vptr [concrete] @@ -2172,24 +2172,24 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %T.loc7_17.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc7_17.1 (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type: type = fn_type @F, @Base(%T.loc7_17.1) [symbolic = %F.type (constants.%F.type)] -// CHECK:STDOUT: %F: @Base.%F.type (%F.type) = struct_value () [symbolic = %F (constants.%F)] -// CHECK:STDOUT: %F.specific_fn.loc13_1.2: = specific_function %F, @F(%T.loc7_17.1) [symbolic = %F.specific_fn.loc13_1.2 (constants.%F.specific_fn)] +// CHECK:STDOUT: %Base.F.type: type = fn_type @Base.F, @Base(%T.loc7_17.1) [symbolic = %Base.F.type (constants.%Base.F.type)] +// CHECK:STDOUT: %Base.F: @Base.%Base.F.type (%Base.F.type) = struct_value () [symbolic = %Base.F (constants.%Base.F)] +// CHECK:STDOUT: %Base.F.specific_fn.loc13_1.2: = specific_function %Base.F, @Base.F(%T.loc7_17.1) [symbolic = %Base.F.specific_fn.loc13_1.2 (constants.%Base.F.specific_fn)] // CHECK:STDOUT: %vtable_ptr.loc13_1.2: ref %ptr = vtable_ptr @Base.vtable, @Base(%T.loc7_17.1) [symbolic = %vtable_ptr.loc13_1.2 (constants.%Base.vtable_ptr)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %F.decl: @Base.%F.type (%F.type) = fn_decl @F [symbolic = @Base.%F (constants.%F)] { -// CHECK:STDOUT: %self.patt: @F.%pattern_type (%pattern_type.9f7) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.%pattern_type (%pattern_type.9f7) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %Base.F.decl: @Base.%Base.F.type (%Base.F.type) = fn_decl @Base.F [symbolic = @Base.%Base.F (constants.%Base.F)] { +// CHECK:STDOUT: %self.patt: @Base.F.%pattern_type (%pattern_type.9f7) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @Base.F.%pattern_type (%pattern_type.9f7) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @F.%Base (%Base) = value_param call_param0 +// CHECK:STDOUT: %self.param: @Base.F.%Base (%Base) = value_param call_param0 // CHECK:STDOUT: %.loc12_22.1: type = splice_block %Self.ref [symbolic = %Base (constants.%Base)] { // CHECK:STDOUT: %.loc12_22.2: type = specific_constant constants.%Base, @Base(constants.%T) [symbolic = %Base (constants.%Base)] // CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc12_22.2 [symbolic = %Base (constants.%Base)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.%Base (%Base) = bind_name self, %self.param +// CHECK:STDOUT: %self: @Base.F.%Base (%Base) = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F.specific_fn.loc13_1.1: = specific_function %F.decl, @F(constants.%T) [symbolic = %F.specific_fn.loc13_1.2 (constants.%F.specific_fn)] +// CHECK:STDOUT: %Base.F.specific_fn.loc13_1.1: = specific_function %Base.F.decl, @Base.F(constants.%T) [symbolic = %Base.F.specific_fn.loc13_1.2 (constants.%Base.F.specific_fn)] // CHECK:STDOUT: %vtable_ptr.loc13_1.1: ref %ptr = vtable_ptr @Base.vtable, @Base(constants.%T) [symbolic = %vtable_ptr.loc13_1.2 (constants.%Base.vtable_ptr)] // CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr} [concrete = constants.%struct_type.vptr] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.vptr [concrete = constants.%complete_type] @@ -2198,27 +2198,27 @@ var v: Base(T1) = {}; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %Base.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @Base.vtable { -// CHECK:STDOUT: @Base.%F.specific_fn.loc13_1.1 +// CHECK:STDOUT: @Base.%Base.F.specific_fn.loc13_1.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic virtual fn @F(@Base.%T.loc7_17.2: type) { +// CHECK:STDOUT: generic virtual fn @Base.F(@Base.%T.loc7_17.2: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Base: type = class_type @Base, @Base(%T) [symbolic = %Base (constants.%Base)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Base [symbolic = %pattern_type (constants.%pattern_type.9f7)] // CHECK:STDOUT: -// CHECK:STDOUT: virtual fn(%self.param: @F.%Base (%Base)); +// CHECK:STDOUT: virtual fn(%self.param: @Base.F.%Base (%Base)); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Base(constants.%T) { // CHECK:STDOUT: %T.loc7_17.1 => constants.%T // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%T) { +// CHECK:STDOUT: specific @Base.F(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %Base => constants.%Base // CHECK:STDOUT: %pattern_type => constants.%pattern_type.9f7 @@ -2237,10 +2237,10 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %Base.370: type = class_type @Base, @Base(%T) [symbolic] // CHECK:STDOUT: %pattern_type.9f7: type = pattern_type %Base.370 [symbolic] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %T [symbolic] -// CHECK:STDOUT: %F.type.f17: type = fn_type @F.loc8, @Base(%T) [symbolic] -// CHECK:STDOUT: %F.e26: %F.type.f17 = struct_value () [symbolic] +// CHECK:STDOUT: %Base.F.type.f17: type = fn_type @Base.F, @Base(%T) [symbolic] +// CHECK:STDOUT: %Base.F.e26: %Base.F.type.f17 = struct_value () [symbolic] // CHECK:STDOUT: %ptr.454: type = ptr_type [concrete] -// CHECK:STDOUT: %F.specific_fn.892: = specific_function %F.e26, @F.loc8(%T) [symbolic] +// CHECK:STDOUT: %Base.F.specific_fn.892: = specific_function %Base.F.e26, @Base.F(%T) [symbolic] // CHECK:STDOUT: %Base.vtable_ptr.573: ref %ptr.454 = vtable_ptr @Base.vtable, @Base(%T) [symbolic] // CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr.454} [concrete] // CHECK:STDOUT: %complete_type.513: = complete_type_witness %struct_type.vptr [concrete] @@ -2248,16 +2248,16 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %require_complete.4ae: = require_complete_type %T [symbolic] // CHECK:STDOUT: %Derived: type = class_type @Derived [concrete] // CHECK:STDOUT: %Base.ea5: type = class_type @Base, @Base(%T1) [concrete] -// CHECK:STDOUT: %F.type.d82: type = fn_type @F.loc8, @Base(%T1) [concrete] -// CHECK:STDOUT: %F.d25: %F.type.d82 = struct_value () [concrete] +// CHECK:STDOUT: %Base.F.type.d82: type = fn_type @Base.F, @Base(%T1) [concrete] +// CHECK:STDOUT: %Base.F.d25: %Base.F.type.d82 = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.3bf: type = pattern_type %Base.ea5 [concrete] // CHECK:STDOUT: %pattern_type.28b: type = pattern_type %T1 [concrete] -// CHECK:STDOUT: %F.specific_fn.210: = specific_function %F.d25, @F.loc8(%T1) [concrete] +// CHECK:STDOUT: %Base.F.specific_fn.210: = specific_function %Base.F.d25, @Base.F(%T1) [concrete] // CHECK:STDOUT: %Base.vtable_ptr.bfe: ref %ptr.454 = vtable_ptr @Base.vtable, @Base(%T1) [concrete] // CHECK:STDOUT: %Derived.elem: type = unbound_element_type %Derived, %Base.ea5 [concrete] // CHECK:STDOUT: %pattern_type.fb9: type = pattern_type %Derived [concrete] -// CHECK:STDOUT: %F.type.5da: type = fn_type @F.loc13 [concrete] -// CHECK:STDOUT: %F.fa3: %F.type.5da = struct_value () [concrete] +// CHECK:STDOUT: %Derived.F.type: type = fn_type @Derived.F [concrete] +// CHECK:STDOUT: %Derived.F: %Derived.F.type = struct_value () [concrete] // CHECK:STDOUT: %Derived.vtable_ptr: ref %ptr.454 = vtable_ptr @Derived.vtable [concrete] // CHECK:STDOUT: %struct_type.base.fda: type = struct_type {.base: %Base.ea5} [concrete] // CHECK:STDOUT: %complete_type.65a: = complete_type_witness %struct_type.base.fda [concrete] @@ -2300,29 +2300,29 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %T.loc7_17.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc7_17.1 (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type: type = fn_type @F.loc8, @Base(%T.loc7_17.1) [symbolic = %F.type (constants.%F.type.f17)] -// CHECK:STDOUT: %F: @Base.%F.type (%F.type.f17) = struct_value () [symbolic = %F (constants.%F.e26)] -// CHECK:STDOUT: %F.specific_fn.loc9_1.2: = specific_function %F, @F.loc8(%T.loc7_17.1) [symbolic = %F.specific_fn.loc9_1.2 (constants.%F.specific_fn.892)] +// CHECK:STDOUT: %Base.F.type: type = fn_type @Base.F, @Base(%T.loc7_17.1) [symbolic = %Base.F.type (constants.%Base.F.type.f17)] +// CHECK:STDOUT: %Base.F: @Base.%Base.F.type (%Base.F.type.f17) = struct_value () [symbolic = %Base.F (constants.%Base.F.e26)] +// CHECK:STDOUT: %Base.F.specific_fn.loc9_1.2: = specific_function %Base.F, @Base.F(%T.loc7_17.1) [symbolic = %Base.F.specific_fn.loc9_1.2 (constants.%Base.F.specific_fn.892)] // CHECK:STDOUT: %vtable_ptr.loc9_1.2: ref %ptr.454 = vtable_ptr @Base.vtable, @Base(%T.loc7_17.1) [symbolic = %vtable_ptr.loc9_1.2 (constants.%Base.vtable_ptr.573)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %F.decl: @Base.%F.type (%F.type.f17) = fn_decl @F.loc8 [symbolic = @Base.%F (constants.%F.e26)] { -// CHECK:STDOUT: %self.patt: @F.loc8.%pattern_type.loc8_16 (%pattern_type.9f7) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.loc8.%pattern_type.loc8_16 (%pattern_type.9f7) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %t.patt: @F.loc8.%pattern_type.loc8_28 (%pattern_type.7dc) = binding_pattern t [concrete] -// CHECK:STDOUT: %t.param_patt: @F.loc8.%pattern_type.loc8_28 (%pattern_type.7dc) = value_param_pattern %t.patt, call_param1 [concrete] +// CHECK:STDOUT: %Base.F.decl: @Base.%Base.F.type (%Base.F.type.f17) = fn_decl @Base.F [symbolic = @Base.%Base.F (constants.%Base.F.e26)] { +// CHECK:STDOUT: %self.patt: @Base.F.%pattern_type.loc8_16 (%pattern_type.9f7) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @Base.F.%pattern_type.loc8_16 (%pattern_type.9f7) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %t.patt: @Base.F.%pattern_type.loc8_28 (%pattern_type.7dc) = binding_pattern t [concrete] +// CHECK:STDOUT: %t.param_patt: @Base.F.%pattern_type.loc8_28 (%pattern_type.7dc) = value_param_pattern %t.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @F.loc8.%Base (%Base.370) = value_param call_param0 +// CHECK:STDOUT: %self.param: @Base.F.%Base (%Base.370) = value_param call_param0 // CHECK:STDOUT: %.loc8_22.1: type = splice_block %Self.ref [symbolic = %Base (constants.%Base.370)] { // CHECK:STDOUT: %.loc8_22.2: type = specific_constant constants.%Base.370, @Base(constants.%T) [symbolic = %Base (constants.%Base.370)] // CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc8_22.2 [symbolic = %Base (constants.%Base.370)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.loc8.%Base (%Base.370) = bind_name self, %self.param -// CHECK:STDOUT: %t.param: @F.loc8.%T (%T) = value_param call_param1 +// CHECK:STDOUT: %self: @Base.F.%Base (%Base.370) = bind_name self, %self.param +// CHECK:STDOUT: %t.param: @Base.F.%T (%T) = value_param call_param1 // CHECK:STDOUT: %T.ref: type = name_ref T, @Base.%T.loc7_17.2 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %t: @F.loc8.%T (%T) = bind_name t, %t.param +// CHECK:STDOUT: %t: @Base.F.%T (%T) = bind_name t, %t.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F.specific_fn.loc9_1.1: = specific_function %F.decl, @F.loc8(constants.%T) [symbolic = %F.specific_fn.loc9_1.2 (constants.%F.specific_fn.892)] +// CHECK:STDOUT: %Base.F.specific_fn.loc9_1.1: = specific_function %Base.F.decl, @Base.F(constants.%T) [symbolic = %Base.F.specific_fn.loc9_1.2 (constants.%Base.F.specific_fn.892)] // CHECK:STDOUT: %vtable_ptr.loc9_1.1: ref %ptr.454 = vtable_ptr @Base.vtable, @Base(constants.%T) [symbolic = %vtable_ptr.loc9_1.2 (constants.%Base.vtable_ptr.573)] // CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr.454} [concrete = constants.%struct_type.vptr] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.vptr [concrete = constants.%complete_type.513] @@ -2332,7 +2332,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base.370 // CHECK:STDOUT: .T = -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %Base.F.decl // CHECK:STDOUT: .T1 = // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -2342,7 +2342,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %T1.ref: type = name_ref T1, file.%T1.decl [concrete = constants.%T1] // CHECK:STDOUT: %Base: type = class_type @Base, @Base(constants.%T1) [concrete = constants.%Base.ea5] // CHECK:STDOUT: %.loc12: %Derived.elem = base_decl %Base, element0 [concrete] -// CHECK:STDOUT: %F.decl: %F.type.5da = fn_decl @F.loc13 [concrete = constants.%F.fa3] { +// CHECK:STDOUT: %Derived.F.decl: %Derived.F.type = fn_decl @Derived.F [concrete = constants.%Derived.F] { // CHECK:STDOUT: %self.patt: %pattern_type.fb9 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.fb9 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %t.patt: %pattern_type.28b = binding_pattern t [concrete] @@ -2366,19 +2366,19 @@ var v: Base(T1) = {}; // CHECK:STDOUT: .Base = // CHECK:STDOUT: .T1 = // CHECK:STDOUT: .base = %.loc12 -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %Derived.F.decl // CHECK:STDOUT: extend %Base // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @Base.vtable { -// CHECK:STDOUT: @Base.%F.specific_fn.loc9_1.1 +// CHECK:STDOUT: @Base.%Base.F.specific_fn.loc9_1.1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @Derived.vtable { -// CHECK:STDOUT: @Derived.%F.decl +// CHECK:STDOUT: @Derived.%Derived.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic virtual fn @F.loc8(@Base.%T.loc7_17.2: type) { +// CHECK:STDOUT: generic virtual fn @Base.F(@Base.%T.loc7_17.2: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Base: type = class_type @Base, @Base(%T) [symbolic = %Base (constants.%Base.370)] // CHECK:STDOUT: %pattern_type.loc8_16: type = pattern_type %Base [symbolic = %pattern_type.loc8_16 (constants.%pattern_type.9f7)] @@ -2388,13 +2388,13 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %require_complete.loc8_20: = require_complete_type %Base [symbolic = %require_complete.loc8_20 (constants.%require_complete.97d)] // CHECK:STDOUT: %require_complete.loc8_29: = require_complete_type %T [symbolic = %require_complete.loc8_29 (constants.%require_complete.4ae)] // CHECK:STDOUT: -// CHECK:STDOUT: virtual fn(%self.param: @F.loc8.%Base (%Base.370), %t.param: @F.loc8.%T (%T)) { +// CHECK:STDOUT: virtual fn(%self.param: @Base.F.%Base (%Base.370), %t.param: @Base.F.%T (%T)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl fn @F.loc13(%self.param: %Derived, %t.param: %T1) { +// CHECK:STDOUT: impl fn @Derived.F(%self.param: %Derived, %t.param: %T1) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -2403,13 +2403,13 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %T.loc7_17.1 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.f17 -// CHECK:STDOUT: %F => constants.%F.e26 -// CHECK:STDOUT: %F.specific_fn.loc9_1.2 => constants.%F.specific_fn.892 +// CHECK:STDOUT: %Base.F.type => constants.%Base.F.type.f17 +// CHECK:STDOUT: %Base.F => constants.%Base.F.e26 +// CHECK:STDOUT: %Base.F.specific_fn.loc9_1.2 => constants.%Base.F.specific_fn.892 // CHECK:STDOUT: %vtable_ptr.loc9_1.2 => constants.%Base.vtable_ptr.573 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc8(constants.%T) { +// CHECK:STDOUT: specific @Base.F(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %Base => constants.%Base.370 // CHECK:STDOUT: %pattern_type.loc8_16 => constants.%pattern_type.9f7 @@ -2424,13 +2424,13 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %T.loc7_17.1 => constants.%T1 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.d82 -// CHECK:STDOUT: %F => constants.%F.d25 -// CHECK:STDOUT: %F.specific_fn.loc9_1.2 => constants.%F.specific_fn.210 +// CHECK:STDOUT: %Base.F.type => constants.%Base.F.type.d82 +// CHECK:STDOUT: %Base.F => constants.%Base.F.d25 +// CHECK:STDOUT: %Base.F.specific_fn.loc9_1.2 => constants.%Base.F.specific_fn.210 // CHECK:STDOUT: %vtable_ptr.loc9_1.2 => constants.%Base.vtable_ptr.bfe // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc8(constants.%T1) { +// CHECK:STDOUT: specific @Base.F(constants.%T1) { // CHECK:STDOUT: %T => constants.%T1 // CHECK:STDOUT: %Base => constants.%Base.ea5 // CHECK:STDOUT: %pattern_type.loc8_16 => constants.%pattern_type.3bf @@ -2445,16 +2445,16 @@ var v: Base(T1) = {}; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %T1: type = class_type @T1 [concrete] -// CHECK:STDOUT: %F.type.ba7: type = fn_type @F.loc9 [concrete] -// CHECK:STDOUT: %F.1a5: %F.type.ba7 = struct_value () [concrete] -// CHECK:STDOUT: %G.type: type = fn_type @G [concrete] -// CHECK:STDOUT: %G: %G.type = struct_value () [concrete] +// CHECK:STDOUT: %T1.F.type: type = fn_type @T1.F [concrete] +// CHECK:STDOUT: %T1.F: %T1.F.type = struct_value () [concrete] +// CHECK:STDOUT: %T1.G.type: type = fn_type @T1.G [concrete] +// CHECK:STDOUT: %T1.G: %T1.G.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %T2: type = class_type @T2 [concrete] // CHECK:STDOUT: %T2.elem: type = unbound_element_type %T2, %T1 [concrete] -// CHECK:STDOUT: %F.type.834: type = fn_type @F.loc23 [concrete] -// CHECK:STDOUT: %F.a48: %F.type.834 = struct_value () [concrete] +// CHECK:STDOUT: %T2.F.type: type = fn_type @T2.F [concrete] +// CHECK:STDOUT: %T2.F: %T2.F.type = struct_value () [concrete] // CHECK:STDOUT: %struct_type.base: type = struct_type {.base: %T1} [concrete] // CHECK:STDOUT: %complete_type.e14: = complete_type_witness %struct_type.base [concrete] // CHECK:STDOUT: } @@ -2478,22 +2478,22 @@ var v: Base(T1) = {}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @T1 { -// CHECK:STDOUT: %F.decl: %F.type.ba7 = fn_decl @F.loc9 [concrete = constants.%F.1a5] {} {} -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {} {} +// CHECK:STDOUT: %T1.F.decl: %T1.F.type = fn_decl @T1.F [concrete = constants.%T1.F] {} {} +// CHECK:STDOUT: %T1.G.decl: %T1.G.type = fn_decl @T1.G [concrete = constants.%T1.G] {} {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%T1 -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .F = %T1.F.decl +// CHECK:STDOUT: .G = %T1.G.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @T2 { // CHECK:STDOUT: %T1.ref: type = name_ref T1, file.%T1.decl [concrete = constants.%T1] // CHECK:STDOUT: %.loc18: %T2.elem = base_decl %T1.ref, element0 [concrete] -// CHECK:STDOUT: %F.decl: %F.type.834 = fn_decl @F.loc23 [concrete = constants.%F.a48] {} {} +// CHECK:STDOUT: %T2.F.decl: %T2.F.type = fn_decl @T2.F [concrete = constants.%T2.F] {} {} // CHECK:STDOUT: %struct_type.base: type = struct_type {.base: %T1} [concrete = constants.%struct_type.base] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [concrete = constants.%complete_type.e14] // CHECK:STDOUT: complete_type_witness = %complete_type @@ -2502,15 +2502,15 @@ var v: Base(T1) = {}; // CHECK:STDOUT: .Self = constants.%T2 // CHECK:STDOUT: .T1 = // CHECK:STDOUT: .base = %.loc18 -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %T2.F.decl // CHECK:STDOUT: extend %T1.ref // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc9(); +// CHECK:STDOUT: fn @T1.F(); // CHECK:STDOUT: -// CHECK:STDOUT: fn @G(); +// CHECK:STDOUT: fn @T1.G(); // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc23(); +// CHECK:STDOUT: fn @T2.F(); // CHECK:STDOUT: // CHECK:STDOUT: --- fail_addr_self_mismatch.carbon // CHECK:STDOUT: @@ -2518,8 +2518,8 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %T1: type = class_type @T1 [concrete] // CHECK:STDOUT: %ptr.87b: type = ptr_type %T1 [concrete] // CHECK:STDOUT: %pattern_type.a36: type = pattern_type %ptr.87b [concrete] -// CHECK:STDOUT: %F1.type.b96: type = fn_type @F1.loc5 [concrete] -// CHECK:STDOUT: %F1.765: %F1.type.b96 = struct_value () [concrete] +// CHECK:STDOUT: %T1.F1.type: type = fn_type @T1.F1 [concrete] +// CHECK:STDOUT: %T1.F1: %T1.F1.type = struct_value () [concrete] // CHECK:STDOUT: %ptr.454: type = ptr_type [concrete] // CHECK:STDOUT: %T1.vtable_ptr: ref %ptr.454 = vtable_ptr @T1.vtable [concrete] // CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr.454} [concrete] @@ -2529,8 +2529,8 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %ptr.63e: type = ptr_type %T2 [concrete] // CHECK:STDOUT: %pattern_type.fb8: type = pattern_type %ptr.63e [concrete] // CHECK:STDOUT: %pattern_type.f6d: type = pattern_type auto [concrete] -// CHECK:STDOUT: %F1.type.b0d: type = fn_type @F1.loc17 [concrete] -// CHECK:STDOUT: %F1.0ce: %F1.type.b0d = struct_value () [concrete] +// CHECK:STDOUT: %T2.F1.type: type = fn_type @T2.F1 [concrete] +// CHECK:STDOUT: %T2.F1: %T2.F1.type = struct_value () [concrete] // CHECK:STDOUT: %T2.vtable_ptr: ref %ptr.454 = vtable_ptr @T2.vtable [concrete] // CHECK:STDOUT: %struct_type.base: type = struct_type {.base: %T1} [concrete] // CHECK:STDOUT: %complete_type.e14: = complete_type_witness %struct_type.base [concrete] @@ -2555,7 +2555,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @T1 { -// CHECK:STDOUT: %F1.decl: %F1.type.b96 = fn_decl @F1.loc5 [concrete = constants.%F1.765] { +// CHECK:STDOUT: %T1.F1.decl: %T1.F1.type = fn_decl @T1.F1 [concrete = constants.%T1.F1] { // CHECK:STDOUT: %self.patt: %pattern_type.a36 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.a36 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -2574,13 +2574,13 @@ var v: Base(T1) = {}; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%T1 -// CHECK:STDOUT: .F1 = %F1.decl +// CHECK:STDOUT: .F1 = %T1.F1.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @T2 { // CHECK:STDOUT: %T1.ref: type = name_ref T1, file.%T1.decl [concrete = constants.%T1] // CHECK:STDOUT: %.loc9: %T2.elem = base_decl %T1.ref, element0 [concrete] -// CHECK:STDOUT: %F1.decl: %F1.type.b0d = fn_decl @F1.loc17 [concrete = constants.%F1.0ce] { +// CHECK:STDOUT: %T2.F1.decl: %T2.F1.type = fn_decl @T2.F1 [concrete = constants.%T2.F1] { // CHECK:STDOUT: %self.patt: %pattern_type.fb8 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.fb8 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %.loc17_14: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] @@ -2602,21 +2602,21 @@ var v: Base(T1) = {}; // CHECK:STDOUT: .Self = constants.%T2 // CHECK:STDOUT: .T1 = // CHECK:STDOUT: .base = %.loc9 -// CHECK:STDOUT: .F1 = %F1.decl +// CHECK:STDOUT: .F1 = %T2.F1.decl // CHECK:STDOUT: extend %T1.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @T1.vtable { -// CHECK:STDOUT: @T1.%F1.decl +// CHECK:STDOUT: @T1.%T1.F1.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @T2.vtable { -// CHECK:STDOUT: @T2.%F1.decl +// CHECK:STDOUT: @T2.%T2.F1.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: virtual fn @F1.loc5(%self.param: %ptr.87b); +// CHECK:STDOUT: virtual fn @T1.F1(%self.param: %ptr.87b); // CHECK:STDOUT: -// CHECK:STDOUT: impl fn @F1.loc17(%self.param: %ptr.63e); +// CHECK:STDOUT: impl fn @T2.F1(%self.param: %ptr.63e); // CHECK:STDOUT: // CHECK:STDOUT: --- fail_generic_virtual.carbon // CHECK:STDOUT: @@ -2625,8 +2625,8 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %pattern_type.28b: type = pattern_type %T1 [concrete] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %T1.F.type: type = fn_type @T1.F [concrete] +// CHECK:STDOUT: %T1.F: %T1.F.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: } @@ -2648,7 +2648,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @T1 { -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { +// CHECK:STDOUT: %T1.F.decl: %T1.F.type = fn_decl @T1.F [concrete = constants.%T1.F] { // CHECK:STDOUT: %self.patt: %pattern_type.28b = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.28b = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete] @@ -2656,7 +2656,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %self.param: %T1 = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%T1 [concrete = constants.%T1] // CHECK:STDOUT: %self: %T1 = bind_name self, %self.param -// CHECK:STDOUT: %T.loc9_28.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc9_28.2 (constants.%T)] +// CHECK:STDOUT: %T.loc9_28.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc9_28.1 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] @@ -2664,17 +2664,17 @@ var v: Base(T1) = {}; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%T1 -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %T1.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic virtual fn @F(%T.loc9_28.1: type) { -// CHECK:STDOUT: %T.loc9_28.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc9_28.2 (constants.%T)] +// CHECK:STDOUT: generic virtual fn @T1.F(%T.loc9_28.2: type) { +// CHECK:STDOUT: %T.loc9_28.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc9_28.1 (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: virtual fn(%self.param: %T1); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%T) { -// CHECK:STDOUT: %T.loc9_28.2 => constants.%T +// CHECK:STDOUT: specific @T1.F(constants.%T) { +// CHECK:STDOUT: %T.loc9_28.1 => constants.%T // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_generic_virtual_in_generic_class.carbon @@ -2687,8 +2687,8 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %T1: type = class_type @T1, @T1(%T.8b3) [symbolic] // CHECK:STDOUT: %pattern_type.48e: type = pattern_type %T1 [symbolic] // CHECK:STDOUT: %T.336: type = bind_symbolic_name T, 1 [symbolic] -// CHECK:STDOUT: %F.type: type = fn_type @F, @T1(%T.8b3) [symbolic] -// CHECK:STDOUT: %F: %F.type = struct_value () [symbolic] +// CHECK:STDOUT: %T1.F.type: type = fn_type @T1.F, @T1(%T.8b3) [symbolic] +// CHECK:STDOUT: %T1.F: %T1.F.type = struct_value () [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: } @@ -2717,22 +2717,22 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %T.loc4_15.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_15.1 (constants.%T.8b3)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type: type = fn_type @F, @T1(%T.loc4_15.1) [symbolic = %F.type (constants.%F.type)] -// CHECK:STDOUT: %F: @T1.%F.type (%F.type) = struct_value () [symbolic = %F (constants.%F)] +// CHECK:STDOUT: %T1.F.type: type = fn_type @T1.F, @T1(%T.loc4_15.1) [symbolic = %T1.F.type (constants.%T1.F.type)] +// CHECK:STDOUT: %T1.F: @T1.%T1.F.type (%T1.F.type) = struct_value () [symbolic = %T1.F (constants.%T1.F)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %F.decl: @T1.%F.type (%F.type) = fn_decl @F [symbolic = @T1.%F (constants.%F)] { -// CHECK:STDOUT: %self.patt: @F.%pattern_type (%pattern_type.48e) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.%pattern_type (%pattern_type.48e) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %T1.F.decl: @T1.%T1.F.type (%T1.F.type) = fn_decl @T1.F [symbolic = @T1.%T1.F (constants.%T1.F)] { +// CHECK:STDOUT: %self.patt: @T1.F.%pattern_type (%pattern_type.48e) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @T1.F.%pattern_type (%pattern_type.48e) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @F.%T1 (%T1) = value_param call_param0 +// CHECK:STDOUT: %self.param: @T1.F.%T1 (%T1) = value_param call_param0 // CHECK:STDOUT: %.loc9_22.1: type = splice_block %Self.ref [symbolic = %T1 (constants.%T1)] { // CHECK:STDOUT: %.loc9_22.2: type = specific_constant constants.%T1, @T1(constants.%T.8b3) [symbolic = %T1 (constants.%T1)] // CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc9_22.2 [symbolic = %T1 (constants.%T1)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.%T1 (%T1) = bind_name self, %self.param -// CHECK:STDOUT: %T.loc9_28.1: type = bind_symbolic_name T, 1 [symbolic = %T.loc9_28.2 (constants.%T.336)] +// CHECK:STDOUT: %self: @T1.F.%T1 (%T1) = bind_name self, %self.param +// CHECK:STDOUT: %T.loc9_28.2: type = bind_symbolic_name T, 1 [symbolic = %T.loc9_28.1 (constants.%T.336)] // CHECK:STDOUT: } // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] @@ -2740,28 +2740,28 @@ var v: Base(T1) = {}; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%T1 -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %T1.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic virtual fn @F(@T1.%T.loc4_15.2: type, %T.loc9_28.1: type) { +// CHECK:STDOUT: generic virtual fn @T1.F(@T1.%T.loc4_15.2: type, %T.loc9_28.2: type) { // CHECK:STDOUT: %T.loc9_22: type = bind_symbolic_name T, 0 [symbolic = %T.loc9_22 (constants.%T.8b3)] // CHECK:STDOUT: %T1: type = class_type @T1, @T1(%T.loc9_22) [symbolic = %T1 (constants.%T1)] // CHECK:STDOUT: %pattern_type: type = pattern_type %T1 [symbolic = %pattern_type (constants.%pattern_type.48e)] -// CHECK:STDOUT: %T.loc9_28.2: type = bind_symbolic_name T, 1 [symbolic = %T.loc9_28.2 (constants.%T.336)] +// CHECK:STDOUT: %T.loc9_28.1: type = bind_symbolic_name T, 1 [symbolic = %T.loc9_28.1 (constants.%T.336)] // CHECK:STDOUT: -// CHECK:STDOUT: virtual fn(%self.param: @F.%T1 (%T1)); +// CHECK:STDOUT: virtual fn(%self.param: @T1.F.%T1 (%T1)); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @T1(constants.%T.8b3) { // CHECK:STDOUT: %T.loc4_15.1 => constants.%T.8b3 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%T.8b3, constants.%T.336) { +// CHECK:STDOUT: specific @T1.F(constants.%T.8b3, constants.%T.336) { // CHECK:STDOUT: %T.loc9_22 => constants.%T.8b3 // CHECK:STDOUT: %T1 => constants.%T1 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.48e -// CHECK:STDOUT: %T.loc9_28.2 => constants.%T.336 +// CHECK:STDOUT: %T.loc9_28.1 => constants.%T.336 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- generic_with_virtual.carbon @@ -2773,10 +2773,10 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %T1.generic: %T1.type = struct_value () [concrete] // CHECK:STDOUT: %T1: type = class_type @T1, @T1(%T) [symbolic] // CHECK:STDOUT: %pattern_type.48e: type = pattern_type %T1 [symbolic] -// CHECK:STDOUT: %F.type: type = fn_type @F, @T1(%T) [symbolic] -// CHECK:STDOUT: %F: %F.type = struct_value () [symbolic] +// CHECK:STDOUT: %T1.F.type: type = fn_type @T1.F, @T1(%T) [symbolic] +// CHECK:STDOUT: %T1.F: %T1.F.type = struct_value () [symbolic] // CHECK:STDOUT: %ptr.454: type = ptr_type [concrete] -// CHECK:STDOUT: %F.specific_fn: = specific_function %F, @F(%T) [symbolic] +// CHECK:STDOUT: %T1.F.specific_fn: = specific_function %T1.F, @T1.F(%T) [symbolic] // CHECK:STDOUT: %T1.vtable_ptr: ref %ptr.454 = vtable_ptr @T1.vtable, @T1(%T) [symbolic] // CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr.454} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.vptr [concrete] @@ -2807,24 +2807,24 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %T.loc4_15.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_15.1 (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type: type = fn_type @F, @T1(%T.loc4_15.1) [symbolic = %F.type (constants.%F.type)] -// CHECK:STDOUT: %F: @T1.%F.type (%F.type) = struct_value () [symbolic = %F (constants.%F)] -// CHECK:STDOUT: %F.specific_fn.loc6_1.2: = specific_function %F, @F(%T.loc4_15.1) [symbolic = %F.specific_fn.loc6_1.2 (constants.%F.specific_fn)] +// CHECK:STDOUT: %T1.F.type: type = fn_type @T1.F, @T1(%T.loc4_15.1) [symbolic = %T1.F.type (constants.%T1.F.type)] +// CHECK:STDOUT: %T1.F: @T1.%T1.F.type (%T1.F.type) = struct_value () [symbolic = %T1.F (constants.%T1.F)] +// CHECK:STDOUT: %T1.F.specific_fn.loc6_1.2: = specific_function %T1.F, @T1.F(%T.loc4_15.1) [symbolic = %T1.F.specific_fn.loc6_1.2 (constants.%T1.F.specific_fn)] // CHECK:STDOUT: %vtable_ptr.loc6_1.2: ref %ptr.454 = vtable_ptr @T1.vtable, @T1(%T.loc4_15.1) [symbolic = %vtable_ptr.loc6_1.2 (constants.%T1.vtable_ptr)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %F.decl: @T1.%F.type (%F.type) = fn_decl @F [symbolic = @T1.%F (constants.%F)] { -// CHECK:STDOUT: %self.patt: @F.%pattern_type (%pattern_type.48e) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.%pattern_type (%pattern_type.48e) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %T1.F.decl: @T1.%T1.F.type (%T1.F.type) = fn_decl @T1.F [symbolic = @T1.%T1.F (constants.%T1.F)] { +// CHECK:STDOUT: %self.patt: @T1.F.%pattern_type (%pattern_type.48e) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @T1.F.%pattern_type (%pattern_type.48e) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @F.%T1 (%T1) = value_param call_param0 +// CHECK:STDOUT: %self.param: @T1.F.%T1 (%T1) = value_param call_param0 // CHECK:STDOUT: %.loc5_22.1: type = splice_block %Self.ref [symbolic = %T1 (constants.%T1)] { // CHECK:STDOUT: %.loc5_22.2: type = specific_constant constants.%T1, @T1(constants.%T) [symbolic = %T1 (constants.%T1)] // CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc5_22.2 [symbolic = %T1 (constants.%T1)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.%T1 (%T1) = bind_name self, %self.param +// CHECK:STDOUT: %self: @T1.F.%T1 (%T1) = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F.specific_fn.loc6_1.1: = specific_function %F.decl, @F(constants.%T) [symbolic = %F.specific_fn.loc6_1.2 (constants.%F.specific_fn)] +// CHECK:STDOUT: %T1.F.specific_fn.loc6_1.1: = specific_function %T1.F.decl, @T1.F(constants.%T) [symbolic = %T1.F.specific_fn.loc6_1.2 (constants.%T1.F.specific_fn)] // CHECK:STDOUT: %vtable_ptr.loc6_1.1: ref %ptr.454 = vtable_ptr @T1.vtable, @T1(constants.%T) [symbolic = %vtable_ptr.loc6_1.2 (constants.%T1.vtable_ptr)] // CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr.454} [concrete = constants.%struct_type.vptr] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.vptr [concrete = constants.%complete_type] @@ -2833,15 +2833,15 @@ var v: Base(T1) = {}; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%T1 -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %T1.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @T1.vtable { -// CHECK:STDOUT: @T1.%F.specific_fn.loc6_1.1 +// CHECK:STDOUT: @T1.%T1.F.specific_fn.loc6_1.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic virtual fn @F(@T1.%T.loc4_15.2: type) { +// CHECK:STDOUT: generic virtual fn @T1.F(@T1.%T.loc4_15.2: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %T1: type = class_type @T1, @T1(%T) [symbolic = %T1 (constants.%T1)] // CHECK:STDOUT: %pattern_type: type = pattern_type %T1 [symbolic = %pattern_type (constants.%pattern_type.48e)] @@ -2849,7 +2849,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %T1 [symbolic = %require_complete (constants.%require_complete)] // CHECK:STDOUT: -// CHECK:STDOUT: virtual fn(%self.param: @F.%T1 (%T1)) { +// CHECK:STDOUT: virtual fn(%self.param: @T1.F.%T1 (%T1)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -2859,13 +2859,13 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %T.loc4_15.1 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type -// CHECK:STDOUT: %F => constants.%F -// CHECK:STDOUT: %F.specific_fn.loc6_1.2 => constants.%F.specific_fn +// CHECK:STDOUT: %T1.F.type => constants.%T1.F.type +// CHECK:STDOUT: %T1.F => constants.%T1.F +// CHECK:STDOUT: %T1.F.specific_fn.loc6_1.2 => constants.%T1.F.specific_fn // CHECK:STDOUT: %vtable_ptr.loc6_1.2 => constants.%T1.vtable_ptr // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%T) { +// CHECK:STDOUT: specific @T1.F(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %T1 => constants.%T1 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.48e @@ -2884,10 +2884,10 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %T1: type = class_type @T1, @T1(%T) [symbolic] // CHECK:STDOUT: %pattern_type.48e: type = pattern_type %T1 [symbolic] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %T [symbolic] -// CHECK:STDOUT: %F.type: type = fn_type @F, @T1(%T) [symbolic] -// CHECK:STDOUT: %F: %F.type = struct_value () [symbolic] +// CHECK:STDOUT: %T1.F.type: type = fn_type @T1.F, @T1(%T) [symbolic] +// CHECK:STDOUT: %T1.F: %T1.F.type = struct_value () [symbolic] // CHECK:STDOUT: %ptr.454: type = ptr_type [concrete] -// CHECK:STDOUT: %F.specific_fn: = specific_function %F, @F(%T) [symbolic] +// CHECK:STDOUT: %T1.F.specific_fn: = specific_function %T1.F, @T1.F(%T) [symbolic] // CHECK:STDOUT: %T1.vtable_ptr: ref %ptr.454 = vtable_ptr @T1.vtable, @T1(%T) [symbolic] // CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr.454} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.vptr [concrete] @@ -2919,29 +2919,29 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %T.loc4_15.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_15.1 (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type: type = fn_type @F, @T1(%T.loc4_15.1) [symbolic = %F.type (constants.%F.type)] -// CHECK:STDOUT: %F: @T1.%F.type (%F.type) = struct_value () [symbolic = %F (constants.%F)] -// CHECK:STDOUT: %F.specific_fn.loc6_1.2: = specific_function %F, @F(%T.loc4_15.1) [symbolic = %F.specific_fn.loc6_1.2 (constants.%F.specific_fn)] +// CHECK:STDOUT: %T1.F.type: type = fn_type @T1.F, @T1(%T.loc4_15.1) [symbolic = %T1.F.type (constants.%T1.F.type)] +// CHECK:STDOUT: %T1.F: @T1.%T1.F.type (%T1.F.type) = struct_value () [symbolic = %T1.F (constants.%T1.F)] +// CHECK:STDOUT: %T1.F.specific_fn.loc6_1.2: = specific_function %T1.F, @T1.F(%T.loc4_15.1) [symbolic = %T1.F.specific_fn.loc6_1.2 (constants.%T1.F.specific_fn)] // CHECK:STDOUT: %vtable_ptr.loc6_1.2: ref %ptr.454 = vtable_ptr @T1.vtable, @T1(%T.loc4_15.1) [symbolic = %vtable_ptr.loc6_1.2 (constants.%T1.vtable_ptr)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %F.decl: @T1.%F.type (%F.type) = fn_decl @F [symbolic = @T1.%F (constants.%F)] { -// CHECK:STDOUT: %self.patt: @F.%pattern_type.loc5_16 (%pattern_type.48e) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.%pattern_type.loc5_16 (%pattern_type.48e) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %t.patt: @F.%pattern_type.loc5_28 (%pattern_type.7dc) = binding_pattern t [concrete] -// CHECK:STDOUT: %t.param_patt: @F.%pattern_type.loc5_28 (%pattern_type.7dc) = value_param_pattern %t.patt, call_param1 [concrete] +// CHECK:STDOUT: %T1.F.decl: @T1.%T1.F.type (%T1.F.type) = fn_decl @T1.F [symbolic = @T1.%T1.F (constants.%T1.F)] { +// CHECK:STDOUT: %self.patt: @T1.F.%pattern_type.loc5_16 (%pattern_type.48e) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @T1.F.%pattern_type.loc5_16 (%pattern_type.48e) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %t.patt: @T1.F.%pattern_type.loc5_28 (%pattern_type.7dc) = binding_pattern t [concrete] +// CHECK:STDOUT: %t.param_patt: @T1.F.%pattern_type.loc5_28 (%pattern_type.7dc) = value_param_pattern %t.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @F.%T1 (%T1) = value_param call_param0 +// CHECK:STDOUT: %self.param: @T1.F.%T1 (%T1) = value_param call_param0 // CHECK:STDOUT: %.loc5_22.1: type = splice_block %Self.ref [symbolic = %T1 (constants.%T1)] { // CHECK:STDOUT: %.loc5_22.2: type = specific_constant constants.%T1, @T1(constants.%T) [symbolic = %T1 (constants.%T1)] // CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc5_22.2 [symbolic = %T1 (constants.%T1)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.%T1 (%T1) = bind_name self, %self.param -// CHECK:STDOUT: %t.param: @F.%T (%T) = value_param call_param1 +// CHECK:STDOUT: %self: @T1.F.%T1 (%T1) = bind_name self, %self.param +// CHECK:STDOUT: %t.param: @T1.F.%T (%T) = value_param call_param1 // CHECK:STDOUT: %T.ref: type = name_ref T, @T1.%T.loc4_15.2 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %t: @F.%T (%T) = bind_name t, %t.param +// CHECK:STDOUT: %t: @T1.F.%T (%T) = bind_name t, %t.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F.specific_fn.loc6_1.1: = specific_function %F.decl, @F(constants.%T) [symbolic = %F.specific_fn.loc6_1.2 (constants.%F.specific_fn)] +// CHECK:STDOUT: %T1.F.specific_fn.loc6_1.1: = specific_function %T1.F.decl, @T1.F(constants.%T) [symbolic = %T1.F.specific_fn.loc6_1.2 (constants.%T1.F.specific_fn)] // CHECK:STDOUT: %vtable_ptr.loc6_1.1: ref %ptr.454 = vtable_ptr @T1.vtable, @T1(constants.%T) [symbolic = %vtable_ptr.loc6_1.2 (constants.%T1.vtable_ptr)] // CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr.454} [concrete = constants.%struct_type.vptr] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.vptr [concrete = constants.%complete_type] @@ -2951,15 +2951,15 @@ var v: Base(T1) = {}; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%T1 // CHECK:STDOUT: .T = -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %T1.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @T1.vtable { -// CHECK:STDOUT: @T1.%F.specific_fn.loc6_1.1 +// CHECK:STDOUT: @T1.%T1.F.specific_fn.loc6_1.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic virtual fn @F(@T1.%T.loc4_15.2: type) { +// CHECK:STDOUT: generic virtual fn @T1.F(@T1.%T.loc4_15.2: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %T1: type = class_type @T1, @T1(%T) [symbolic = %T1 (constants.%T1)] // CHECK:STDOUT: %pattern_type.loc5_16: type = pattern_type %T1 [symbolic = %pattern_type.loc5_16 (constants.%pattern_type.48e)] @@ -2969,7 +2969,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %require_complete.loc5_20: = require_complete_type %T1 [symbolic = %require_complete.loc5_20 (constants.%require_complete.86d)] // CHECK:STDOUT: %require_complete.loc5_29: = require_complete_type %T [symbolic = %require_complete.loc5_29 (constants.%require_complete.4ae)] // CHECK:STDOUT: -// CHECK:STDOUT: virtual fn(%self.param: @F.%T1 (%T1), %t.param: @F.%T (%T)) { +// CHECK:STDOUT: virtual fn(%self.param: @T1.F.%T1 (%T1), %t.param: @T1.F.%T (%T)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -2979,13 +2979,13 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %T.loc4_15.1 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type -// CHECK:STDOUT: %F => constants.%F -// CHECK:STDOUT: %F.specific_fn.loc6_1.2 => constants.%F.specific_fn +// CHECK:STDOUT: %T1.F.type => constants.%T1.F.type +// CHECK:STDOUT: %T1.F => constants.%T1.F +// CHECK:STDOUT: %T1.F.specific_fn.loc6_1.2 => constants.%T1.F.specific_fn // CHECK:STDOUT: %vtable_ptr.loc6_1.2 => constants.%T1.vtable_ptr // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%T) { +// CHECK:STDOUT: specific @T1.F(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %T1 => constants.%T1 // CHECK:STDOUT: %pattern_type.loc5_16 => constants.%pattern_type.48e @@ -3061,10 +3061,10 @@ var v: Base(T1) = {}; // CHECK:STDOUT: constants { // CHECK:STDOUT: %NonGenericBase: type = class_type @NonGenericBase [concrete] // CHECK:STDOUT: %pattern_type.0b8: type = pattern_type %NonGenericBase [concrete] -// CHECK:STDOUT: %F1.type: type = fn_type @F1 [concrete] -// CHECK:STDOUT: %F1: %F1.type = struct_value () [concrete] -// CHECK:STDOUT: %F2.type.809: type = fn_type @F2.loc6 [concrete] -// CHECK:STDOUT: %F2.053: %F2.type.809 = struct_value () [concrete] +// CHECK:STDOUT: %NonGenericBase.F1.type: type = fn_type @NonGenericBase.F1 [concrete] +// CHECK:STDOUT: %NonGenericBase.F1: %NonGenericBase.F1.type = struct_value () [concrete] +// CHECK:STDOUT: %NonGenericBase.F2.type: type = fn_type @NonGenericBase.F2 [concrete] +// CHECK:STDOUT: %NonGenericBase.F2: %NonGenericBase.F2.type = struct_value () [concrete] // CHECK:STDOUT: %ptr.454: type = ptr_type [concrete] // CHECK:STDOUT: %NonGenericBase.vtable_ptr: ref %ptr.454 = vtable_ptr @NonGenericBase.vtable [concrete] // CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr.454} [concrete] @@ -3076,12 +3076,12 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %GenericDerived: type = class_type @GenericDerived, @GenericDerived(%T) [symbolic] // CHECK:STDOUT: %GenericDerived.elem: type = unbound_element_type %GenericDerived, %NonGenericBase [symbolic] // CHECK:STDOUT: %pattern_type.061: type = pattern_type %GenericDerived [symbolic] -// CHECK:STDOUT: %F2.type.e6e: type = fn_type @F2.loc11, @GenericDerived(%T) [symbolic] -// CHECK:STDOUT: %F2.5da: %F2.type.e6e = struct_value () [symbolic] -// CHECK:STDOUT: %F3.type: type = fn_type @F3, @GenericDerived(%T) [symbolic] -// CHECK:STDOUT: %F3: %F3.type = struct_value () [symbolic] -// CHECK:STDOUT: %F2.specific_fn: = specific_function %F2.5da, @F2.loc11(%T) [symbolic] -// CHECK:STDOUT: %F3.specific_fn: = specific_function %F3, @F3(%T) [symbolic] +// CHECK:STDOUT: %GenericDerived.F2.type: type = fn_type @GenericDerived.F2, @GenericDerived(%T) [symbolic] +// CHECK:STDOUT: %GenericDerived.F2: %GenericDerived.F2.type = struct_value () [symbolic] +// CHECK:STDOUT: %GenericDerived.F3.type: type = fn_type @GenericDerived.F3, @GenericDerived(%T) [symbolic] +// CHECK:STDOUT: %GenericDerived.F3: %GenericDerived.F3.type = struct_value () [symbolic] +// CHECK:STDOUT: %GenericDerived.F2.specific_fn: = specific_function %GenericDerived.F2, @GenericDerived.F2(%T) [symbolic] +// CHECK:STDOUT: %GenericDerived.F3.specific_fn: = specific_function %GenericDerived.F3, @GenericDerived.F3(%T) [symbolic] // CHECK:STDOUT: %GenericDerived.vtable_ptr: ref %ptr.454 = vtable_ptr @GenericDerived.vtable, @GenericDerived(%T) [symbolic] // CHECK:STDOUT: %struct_type.base.432: type = struct_type {.base: %NonGenericBase} [concrete] // CHECK:STDOUT: %complete_type.099: = complete_type_witness %struct_type.base.432 [concrete] @@ -3111,7 +3111,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NonGenericBase { -// CHECK:STDOUT: %F1.decl: %F1.type = fn_decl @F1 [concrete = constants.%F1] { +// CHECK:STDOUT: %NonGenericBase.F1.decl: %NonGenericBase.F1.type = fn_decl @NonGenericBase.F1 [concrete = constants.%NonGenericBase.F1] { // CHECK:STDOUT: %self.patt: %pattern_type.0b8 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.0b8 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -3119,7 +3119,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%NonGenericBase [concrete = constants.%NonGenericBase] // CHECK:STDOUT: %self: %NonGenericBase = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F2.decl: %F2.type.809 = fn_decl @F2.loc6 [concrete = constants.%F2.053] { +// CHECK:STDOUT: %NonGenericBase.F2.decl: %NonGenericBase.F2.type = fn_decl @NonGenericBase.F2 [concrete = constants.%NonGenericBase.F2] { // CHECK:STDOUT: %self.patt: %pattern_type.0b8 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.0b8 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -3135,8 +3135,8 @@ var v: Base(T1) = {}; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%NonGenericBase -// CHECK:STDOUT: .F1 = %F1.decl -// CHECK:STDOUT: .F2 = %F2.decl +// CHECK:STDOUT: .F1 = %NonGenericBase.F1.decl +// CHECK:STDOUT: .F2 = %NonGenericBase.F2.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @GenericDerived(%T.loc9_27.2: type) { @@ -3145,41 +3145,41 @@ var v: Base(T1) = {}; // CHECK:STDOUT: !definition: // CHECK:STDOUT: %GenericDerived: type = class_type @GenericDerived, @GenericDerived(%T.loc9_27.1) [symbolic = %GenericDerived (constants.%GenericDerived)] // CHECK:STDOUT: %GenericDerived.elem: type = unbound_element_type %GenericDerived, constants.%NonGenericBase [symbolic = %GenericDerived.elem (constants.%GenericDerived.elem)] -// CHECK:STDOUT: %F2.type: type = fn_type @F2.loc11, @GenericDerived(%T.loc9_27.1) [symbolic = %F2.type (constants.%F2.type.e6e)] -// CHECK:STDOUT: %F2: @GenericDerived.%F2.type (%F2.type.e6e) = struct_value () [symbolic = %F2 (constants.%F2.5da)] -// CHECK:STDOUT: %F3.type: type = fn_type @F3, @GenericDerived(%T.loc9_27.1) [symbolic = %F3.type (constants.%F3.type)] -// CHECK:STDOUT: %F3: @GenericDerived.%F3.type (%F3.type) = struct_value () [symbolic = %F3 (constants.%F3)] -// CHECK:STDOUT: %F2.specific_fn.loc13_1.2: = specific_function %F2, @F2.loc11(%T.loc9_27.1) [symbolic = %F2.specific_fn.loc13_1.2 (constants.%F2.specific_fn)] -// CHECK:STDOUT: %F3.specific_fn.loc13_1.2: = specific_function %F3, @F3(%T.loc9_27.1) [symbolic = %F3.specific_fn.loc13_1.2 (constants.%F3.specific_fn)] +// CHECK:STDOUT: %GenericDerived.F2.type: type = fn_type @GenericDerived.F2, @GenericDerived(%T.loc9_27.1) [symbolic = %GenericDerived.F2.type (constants.%GenericDerived.F2.type)] +// CHECK:STDOUT: %GenericDerived.F2: @GenericDerived.%GenericDerived.F2.type (%GenericDerived.F2.type) = struct_value () [symbolic = %GenericDerived.F2 (constants.%GenericDerived.F2)] +// CHECK:STDOUT: %GenericDerived.F3.type: type = fn_type @GenericDerived.F3, @GenericDerived(%T.loc9_27.1) [symbolic = %GenericDerived.F3.type (constants.%GenericDerived.F3.type)] +// CHECK:STDOUT: %GenericDerived.F3: @GenericDerived.%GenericDerived.F3.type (%GenericDerived.F3.type) = struct_value () [symbolic = %GenericDerived.F3 (constants.%GenericDerived.F3)] +// CHECK:STDOUT: %GenericDerived.F2.specific_fn.loc13_1.2: = specific_function %GenericDerived.F2, @GenericDerived.F2(%T.loc9_27.1) [symbolic = %GenericDerived.F2.specific_fn.loc13_1.2 (constants.%GenericDerived.F2.specific_fn)] +// CHECK:STDOUT: %GenericDerived.F3.specific_fn.loc13_1.2: = specific_function %GenericDerived.F3, @GenericDerived.F3(%T.loc9_27.1) [symbolic = %GenericDerived.F3.specific_fn.loc13_1.2 (constants.%GenericDerived.F3.specific_fn)] // CHECK:STDOUT: %vtable_ptr.loc13_1.2: ref %ptr.454 = vtable_ptr @GenericDerived.vtable, @GenericDerived(%T.loc9_27.1) [symbolic = %vtable_ptr.loc13_1.2 (constants.%GenericDerived.vtable_ptr)] // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: %NonGenericBase.ref: type = name_ref NonGenericBase, file.%NonGenericBase.decl [concrete = constants.%NonGenericBase] // CHECK:STDOUT: %.loc10: @GenericDerived.%GenericDerived.elem (%GenericDerived.elem) = base_decl %NonGenericBase.ref, element0 [concrete] -// CHECK:STDOUT: %F2.decl: @GenericDerived.%F2.type (%F2.type.e6e) = fn_decl @F2.loc11 [symbolic = @GenericDerived.%F2 (constants.%F2.5da)] { -// CHECK:STDOUT: %self.patt: @F2.loc11.%pattern_type (%pattern_type.061) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F2.loc11.%pattern_type (%pattern_type.061) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %GenericDerived.F2.decl: @GenericDerived.%GenericDerived.F2.type (%GenericDerived.F2.type) = fn_decl @GenericDerived.F2 [symbolic = @GenericDerived.%GenericDerived.F2 (constants.%GenericDerived.F2)] { +// CHECK:STDOUT: %self.patt: @GenericDerived.F2.%pattern_type (%pattern_type.061) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @GenericDerived.F2.%pattern_type (%pattern_type.061) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @F2.loc11.%GenericDerived (%GenericDerived) = value_param call_param0 +// CHECK:STDOUT: %self.param: @GenericDerived.F2.%GenericDerived (%GenericDerived) = value_param call_param0 // CHECK:STDOUT: %.loc11_20.1: type = splice_block %Self.ref [symbolic = %GenericDerived (constants.%GenericDerived)] { // CHECK:STDOUT: %.loc11_20.2: type = specific_constant constants.%GenericDerived, @GenericDerived(constants.%T) [symbolic = %GenericDerived (constants.%GenericDerived)] // CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc11_20.2 [symbolic = %GenericDerived (constants.%GenericDerived)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F2.loc11.%GenericDerived (%GenericDerived) = bind_name self, %self.param +// CHECK:STDOUT: %self: @GenericDerived.F2.%GenericDerived (%GenericDerived) = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F3.decl: @GenericDerived.%F3.type (%F3.type) = fn_decl @F3 [symbolic = @GenericDerived.%F3 (constants.%F3)] { -// CHECK:STDOUT: %self.patt: @F3.%pattern_type (%pattern_type.061) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F3.%pattern_type (%pattern_type.061) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %GenericDerived.F3.decl: @GenericDerived.%GenericDerived.F3.type (%GenericDerived.F3.type) = fn_decl @GenericDerived.F3 [symbolic = @GenericDerived.%GenericDerived.F3 (constants.%GenericDerived.F3)] { +// CHECK:STDOUT: %self.patt: @GenericDerived.F3.%pattern_type (%pattern_type.061) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @GenericDerived.F3.%pattern_type (%pattern_type.061) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @F3.%GenericDerived (%GenericDerived) = value_param call_param0 +// CHECK:STDOUT: %self.param: @GenericDerived.F3.%GenericDerived (%GenericDerived) = value_param call_param0 // CHECK:STDOUT: %.loc12_23.1: type = splice_block %Self.ref [symbolic = %GenericDerived (constants.%GenericDerived)] { // CHECK:STDOUT: %.loc12_23.2: type = specific_constant constants.%GenericDerived, @GenericDerived(constants.%T) [symbolic = %GenericDerived (constants.%GenericDerived)] // CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc12_23.2 [symbolic = %GenericDerived (constants.%GenericDerived)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F3.%GenericDerived (%GenericDerived) = bind_name self, %self.param +// CHECK:STDOUT: %self: @GenericDerived.F3.%GenericDerived (%GenericDerived) = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F2.specific_fn.loc13_1.1: = specific_function %F2.decl, @F2.loc11(constants.%T) [symbolic = %F2.specific_fn.loc13_1.2 (constants.%F2.specific_fn)] -// CHECK:STDOUT: %F3.specific_fn.loc13_1.1: = specific_function %F3.decl, @F3(constants.%T) [symbolic = %F3.specific_fn.loc13_1.2 (constants.%F3.specific_fn)] +// CHECK:STDOUT: %GenericDerived.F2.specific_fn.loc13_1.1: = specific_function %GenericDerived.F2.decl, @GenericDerived.F2(constants.%T) [symbolic = %GenericDerived.F2.specific_fn.loc13_1.2 (constants.%GenericDerived.F2.specific_fn)] +// CHECK:STDOUT: %GenericDerived.F3.specific_fn.loc13_1.1: = specific_function %GenericDerived.F3.decl, @GenericDerived.F3(constants.%T) [symbolic = %GenericDerived.F3.specific_fn.loc13_1.2 (constants.%GenericDerived.F3.specific_fn)] // CHECK:STDOUT: %vtable_ptr.loc13_1.1: ref %ptr.454 = vtable_ptr @GenericDerived.vtable, @GenericDerived(constants.%T) [symbolic = %vtable_ptr.loc13_1.2 (constants.%GenericDerived.vtable_ptr)] // CHECK:STDOUT: %struct_type.base: type = struct_type {.base: %NonGenericBase} [concrete = constants.%struct_type.base.432] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [concrete = constants.%complete_type.099] @@ -3190,34 +3190,34 @@ var v: Base(T1) = {}; // CHECK:STDOUT: .Self = constants.%GenericDerived // CHECK:STDOUT: .NonGenericBase = // CHECK:STDOUT: .base = %.loc10 -// CHECK:STDOUT: .F2 = %F2.decl -// CHECK:STDOUT: .F3 = %F3.decl +// CHECK:STDOUT: .F2 = %GenericDerived.F2.decl +// CHECK:STDOUT: .F3 = %GenericDerived.F3.decl // CHECK:STDOUT: extend %NonGenericBase.ref // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @NonGenericBase.vtable { -// CHECK:STDOUT: @NonGenericBase.%F1.decl -// CHECK:STDOUT: @NonGenericBase.%F2.decl +// CHECK:STDOUT: @NonGenericBase.%NonGenericBase.F1.decl +// CHECK:STDOUT: @NonGenericBase.%NonGenericBase.F2.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @GenericDerived.vtable { -// CHECK:STDOUT: constants.%F1 -// CHECK:STDOUT: @GenericDerived.%F2.specific_fn.loc13_1.1 -// CHECK:STDOUT: @GenericDerived.%F3.specific_fn.loc13_1.1 +// CHECK:STDOUT: constants.%NonGenericBase.F1 +// CHECK:STDOUT: @GenericDerived.%GenericDerived.F2.specific_fn.loc13_1.1 +// CHECK:STDOUT: @GenericDerived.%GenericDerived.F3.specific_fn.loc13_1.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: virtual fn @F1(%self.param: %NonGenericBase) { +// CHECK:STDOUT: virtual fn @NonGenericBase.F1(%self.param: %NonGenericBase) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: virtual fn @F2.loc6(%self.param: %NonGenericBase) { +// CHECK:STDOUT: virtual fn @NonGenericBase.F2(%self.param: %NonGenericBase) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl fn @F2.loc11(@GenericDerived.%T.loc9_27.2: type) { +// CHECK:STDOUT: generic impl fn @GenericDerived.F2(@GenericDerived.%T.loc9_27.2: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %GenericDerived: type = class_type @GenericDerived, @GenericDerived(%T) [symbolic = %GenericDerived (constants.%GenericDerived)] // CHECK:STDOUT: %pattern_type: type = pattern_type %GenericDerived [symbolic = %pattern_type (constants.%pattern_type.061)] @@ -3225,13 +3225,13 @@ var v: Base(T1) = {}; // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %GenericDerived [symbolic = %require_complete (constants.%require_complete)] // CHECK:STDOUT: -// CHECK:STDOUT: impl fn(%self.param: @F2.loc11.%GenericDerived (%GenericDerived)) { +// CHECK:STDOUT: impl fn(%self.param: @GenericDerived.F2.%GenericDerived (%GenericDerived)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic virtual fn @F3(@GenericDerived.%T.loc9_27.2: type) { +// CHECK:STDOUT: generic virtual fn @GenericDerived.F3(@GenericDerived.%T.loc9_27.2: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %GenericDerived: type = class_type @GenericDerived, @GenericDerived(%T) [symbolic = %GenericDerived (constants.%GenericDerived)] // CHECK:STDOUT: %pattern_type: type = pattern_type %GenericDerived [symbolic = %pattern_type (constants.%pattern_type.061)] @@ -3239,7 +3239,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %GenericDerived [symbolic = %require_complete (constants.%require_complete)] // CHECK:STDOUT: -// CHECK:STDOUT: virtual fn(%self.param: @F3.%GenericDerived (%GenericDerived)) { +// CHECK:STDOUT: virtual fn(%self.param: @GenericDerived.F3.%GenericDerived (%GenericDerived)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -3251,16 +3251,16 @@ var v: Base(T1) = {}; // CHECK:STDOUT: !definition: // CHECK:STDOUT: %GenericDerived => constants.%GenericDerived // CHECK:STDOUT: %GenericDerived.elem => constants.%GenericDerived.elem -// CHECK:STDOUT: %F2.type => constants.%F2.type.e6e -// CHECK:STDOUT: %F2 => constants.%F2.5da -// CHECK:STDOUT: %F3.type => constants.%F3.type -// CHECK:STDOUT: %F3 => constants.%F3 -// CHECK:STDOUT: %F2.specific_fn.loc13_1.2 => constants.%F2.specific_fn -// CHECK:STDOUT: %F3.specific_fn.loc13_1.2 => constants.%F3.specific_fn +// CHECK:STDOUT: %GenericDerived.F2.type => constants.%GenericDerived.F2.type +// CHECK:STDOUT: %GenericDerived.F2 => constants.%GenericDerived.F2 +// CHECK:STDOUT: %GenericDerived.F3.type => constants.%GenericDerived.F3.type +// CHECK:STDOUT: %GenericDerived.F3 => constants.%GenericDerived.F3 +// CHECK:STDOUT: %GenericDerived.F2.specific_fn.loc13_1.2 => constants.%GenericDerived.F2.specific_fn +// CHECK:STDOUT: %GenericDerived.F3.specific_fn.loc13_1.2 => constants.%GenericDerived.F3.specific_fn // CHECK:STDOUT: %vtable_ptr.loc13_1.2 => constants.%GenericDerived.vtable_ptr // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F2.loc11(constants.%T) { +// CHECK:STDOUT: specific @GenericDerived.F2(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %GenericDerived => constants.%GenericDerived // CHECK:STDOUT: %pattern_type => constants.%pattern_type.061 @@ -3269,7 +3269,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %require_complete => constants.%require_complete // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F3(constants.%T) { +// CHECK:STDOUT: specific @GenericDerived.F3(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %GenericDerived => constants.%GenericDerived // CHECK:STDOUT: %pattern_type => constants.%pattern_type.061 @@ -3287,13 +3287,13 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %GenericBase.generic: %GenericBase.type = struct_value () [concrete] // CHECK:STDOUT: %GenericBase.018: type = class_type @GenericBase, @GenericBase(%T) [symbolic] // CHECK:STDOUT: %pattern_type.34e: type = pattern_type %GenericBase.018 [symbolic] -// CHECK:STDOUT: %F1.type.2af: type = fn_type @F1, @GenericBase(%T) [symbolic] -// CHECK:STDOUT: %F1.80a: %F1.type.2af = struct_value () [symbolic] -// CHECK:STDOUT: %F2.type.2ca: type = fn_type @F2.loc6, @GenericBase(%T) [symbolic] -// CHECK:STDOUT: %F2.414: %F2.type.2ca = struct_value () [symbolic] +// CHECK:STDOUT: %GenericBase.F1.type.2af: type = fn_type @GenericBase.F1, @GenericBase(%T) [symbolic] +// CHECK:STDOUT: %GenericBase.F1.80a: %GenericBase.F1.type.2af = struct_value () [symbolic] +// CHECK:STDOUT: %GenericBase.F2.type.2ca: type = fn_type @GenericBase.F2, @GenericBase(%T) [symbolic] +// CHECK:STDOUT: %GenericBase.F2.414: %GenericBase.F2.type.2ca = struct_value () [symbolic] // CHECK:STDOUT: %ptr.454: type = ptr_type [concrete] -// CHECK:STDOUT: %F1.specific_fn.aea: = specific_function %F1.80a, @F1(%T) [symbolic] -// CHECK:STDOUT: %F2.specific_fn.758: = specific_function %F2.414, @F2.loc6(%T) [symbolic] +// CHECK:STDOUT: %GenericBase.F1.specific_fn.aea: = specific_function %GenericBase.F1.80a, @GenericBase.F1(%T) [symbolic] +// CHECK:STDOUT: %GenericBase.F2.specific_fn.758: = specific_function %GenericBase.F2.414, @GenericBase.F2(%T) [symbolic] // CHECK:STDOUT: %GenericBase.vtable_ptr.e41: ref %ptr.454 = vtable_ptr @GenericBase.vtable, @GenericBase(%T) [symbolic] // CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr.454} [concrete] // CHECK:STDOUT: %complete_type.513: = complete_type_witness %struct_type.vptr [concrete] @@ -3301,20 +3301,20 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %T1: type = class_type @T1 [concrete] // CHECK:STDOUT: %NonGenericDerived: type = class_type @NonGenericDerived [concrete] // CHECK:STDOUT: %GenericBase.f84: type = class_type @GenericBase, @GenericBase(%T1) [concrete] -// CHECK:STDOUT: %F1.type.648: type = fn_type @F1, @GenericBase(%T1) [concrete] -// CHECK:STDOUT: %F1.4d3: %F1.type.648 = struct_value () [concrete] -// CHECK:STDOUT: %F2.type.d79: type = fn_type @F2.loc6, @GenericBase(%T1) [concrete] -// CHECK:STDOUT: %F2.d59: %F2.type.d79 = struct_value () [concrete] +// CHECK:STDOUT: %GenericBase.F1.type.648: type = fn_type @GenericBase.F1, @GenericBase(%T1) [concrete] +// CHECK:STDOUT: %GenericBase.F1.4d3: %GenericBase.F1.type.648 = struct_value () [concrete] +// CHECK:STDOUT: %GenericBase.F2.type.d79: type = fn_type @GenericBase.F2, @GenericBase(%T1) [concrete] +// CHECK:STDOUT: %GenericBase.F2.d59: %GenericBase.F2.type.d79 = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.7a9: type = pattern_type %GenericBase.f84 [concrete] -// CHECK:STDOUT: %F1.specific_fn.094: = specific_function %F1.4d3, @F1(%T1) [concrete] -// CHECK:STDOUT: %F2.specific_fn.b8b: = specific_function %F2.d59, @F2.loc6(%T1) [concrete] +// CHECK:STDOUT: %GenericBase.F1.specific_fn.094: = specific_function %GenericBase.F1.4d3, @GenericBase.F1(%T1) [concrete] +// CHECK:STDOUT: %GenericBase.F2.specific_fn.b8b: = specific_function %GenericBase.F2.d59, @GenericBase.F2(%T1) [concrete] // CHECK:STDOUT: %GenericBase.vtable_ptr.d41: ref %ptr.454 = vtable_ptr @GenericBase.vtable, @GenericBase(%T1) [concrete] // CHECK:STDOUT: %NonGenericDerived.elem: type = unbound_element_type %NonGenericDerived, %GenericBase.f84 [concrete] // CHECK:STDOUT: %pattern_type.5fc: type = pattern_type %NonGenericDerived [concrete] -// CHECK:STDOUT: %F2.type.c10: type = fn_type @F2.loc13 [concrete] -// CHECK:STDOUT: %F2.deb: %F2.type.c10 = struct_value () [concrete] -// CHECK:STDOUT: %F3.type: type = fn_type @F3 [concrete] -// CHECK:STDOUT: %F3: %F3.type = struct_value () [concrete] +// CHECK:STDOUT: %NonGenericDerived.F2.type: type = fn_type @NonGenericDerived.F2 [concrete] +// CHECK:STDOUT: %NonGenericDerived.F2: %NonGenericDerived.F2.type = struct_value () [concrete] +// CHECK:STDOUT: %NonGenericDerived.F3.type: type = fn_type @NonGenericDerived.F3 [concrete] +// CHECK:STDOUT: %NonGenericDerived.F3: %NonGenericDerived.F3.type = struct_value () [concrete] // CHECK:STDOUT: %NonGenericDerived.vtable_ptr: ref %ptr.454 = vtable_ptr @NonGenericDerived.vtable [concrete] // CHECK:STDOUT: %struct_type.base.29a: type = struct_type {.base: %GenericBase.f84} [concrete] // CHECK:STDOUT: %complete_type.b6e: = complete_type_witness %struct_type.base.29a [concrete] @@ -3348,39 +3348,39 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %T.loc4_24.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_24.1 (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F1.type: type = fn_type @F1, @GenericBase(%T.loc4_24.1) [symbolic = %F1.type (constants.%F1.type.2af)] -// CHECK:STDOUT: %F1: @GenericBase.%F1.type (%F1.type.2af) = struct_value () [symbolic = %F1 (constants.%F1.80a)] -// CHECK:STDOUT: %F2.type: type = fn_type @F2.loc6, @GenericBase(%T.loc4_24.1) [symbolic = %F2.type (constants.%F2.type.2ca)] -// CHECK:STDOUT: %F2: @GenericBase.%F2.type (%F2.type.2ca) = struct_value () [symbolic = %F2 (constants.%F2.414)] -// CHECK:STDOUT: %F1.specific_fn.loc7_1.2: = specific_function %F1, @F1(%T.loc4_24.1) [symbolic = %F1.specific_fn.loc7_1.2 (constants.%F1.specific_fn.aea)] -// CHECK:STDOUT: %F2.specific_fn.loc7_1.2: = specific_function %F2, @F2.loc6(%T.loc4_24.1) [symbolic = %F2.specific_fn.loc7_1.2 (constants.%F2.specific_fn.758)] +// CHECK:STDOUT: %GenericBase.F1.type: type = fn_type @GenericBase.F1, @GenericBase(%T.loc4_24.1) [symbolic = %GenericBase.F1.type (constants.%GenericBase.F1.type.2af)] +// CHECK:STDOUT: %GenericBase.F1: @GenericBase.%GenericBase.F1.type (%GenericBase.F1.type.2af) = struct_value () [symbolic = %GenericBase.F1 (constants.%GenericBase.F1.80a)] +// CHECK:STDOUT: %GenericBase.F2.type: type = fn_type @GenericBase.F2, @GenericBase(%T.loc4_24.1) [symbolic = %GenericBase.F2.type (constants.%GenericBase.F2.type.2ca)] +// CHECK:STDOUT: %GenericBase.F2: @GenericBase.%GenericBase.F2.type (%GenericBase.F2.type.2ca) = struct_value () [symbolic = %GenericBase.F2 (constants.%GenericBase.F2.414)] +// CHECK:STDOUT: %GenericBase.F1.specific_fn.loc7_1.2: = specific_function %GenericBase.F1, @GenericBase.F1(%T.loc4_24.1) [symbolic = %GenericBase.F1.specific_fn.loc7_1.2 (constants.%GenericBase.F1.specific_fn.aea)] +// CHECK:STDOUT: %GenericBase.F2.specific_fn.loc7_1.2: = specific_function %GenericBase.F2, @GenericBase.F2(%T.loc4_24.1) [symbolic = %GenericBase.F2.specific_fn.loc7_1.2 (constants.%GenericBase.F2.specific_fn.758)] // CHECK:STDOUT: %vtable_ptr.loc7_1.2: ref %ptr.454 = vtable_ptr @GenericBase.vtable, @GenericBase(%T.loc4_24.1) [symbolic = %vtable_ptr.loc7_1.2 (constants.%GenericBase.vtable_ptr.e41)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %F1.decl: @GenericBase.%F1.type (%F1.type.2af) = fn_decl @F1 [symbolic = @GenericBase.%F1 (constants.%F1.80a)] { -// CHECK:STDOUT: %self.patt: @F1.%pattern_type (%pattern_type.34e) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F1.%pattern_type (%pattern_type.34e) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %GenericBase.F1.decl: @GenericBase.%GenericBase.F1.type (%GenericBase.F1.type.2af) = fn_decl @GenericBase.F1 [symbolic = @GenericBase.%GenericBase.F1 (constants.%GenericBase.F1.80a)] { +// CHECK:STDOUT: %self.patt: @GenericBase.F1.%pattern_type (%pattern_type.34e) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @GenericBase.F1.%pattern_type (%pattern_type.34e) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @F1.%GenericBase (%GenericBase.018) = value_param call_param0 +// CHECK:STDOUT: %self.param: @GenericBase.F1.%GenericBase (%GenericBase.018) = value_param call_param0 // CHECK:STDOUT: %.loc5_23.1: type = splice_block %Self.ref [symbolic = %GenericBase (constants.%GenericBase.018)] { // CHECK:STDOUT: %.loc5_23.2: type = specific_constant constants.%GenericBase.018, @GenericBase(constants.%T) [symbolic = %GenericBase (constants.%GenericBase.018)] // CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc5_23.2 [symbolic = %GenericBase (constants.%GenericBase.018)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F1.%GenericBase (%GenericBase.018) = bind_name self, %self.param +// CHECK:STDOUT: %self: @GenericBase.F1.%GenericBase (%GenericBase.018) = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F2.decl: @GenericBase.%F2.type (%F2.type.2ca) = fn_decl @F2.loc6 [symbolic = @GenericBase.%F2 (constants.%F2.414)] { -// CHECK:STDOUT: %self.patt: @F2.loc6.%pattern_type (%pattern_type.34e) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F2.loc6.%pattern_type (%pattern_type.34e) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %GenericBase.F2.decl: @GenericBase.%GenericBase.F2.type (%GenericBase.F2.type.2ca) = fn_decl @GenericBase.F2 [symbolic = @GenericBase.%GenericBase.F2 (constants.%GenericBase.F2.414)] { +// CHECK:STDOUT: %self.patt: @GenericBase.F2.%pattern_type (%pattern_type.34e) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @GenericBase.F2.%pattern_type (%pattern_type.34e) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @F2.loc6.%GenericBase (%GenericBase.018) = value_param call_param0 +// CHECK:STDOUT: %self.param: @GenericBase.F2.%GenericBase (%GenericBase.018) = value_param call_param0 // CHECK:STDOUT: %.loc6_23.1: type = splice_block %Self.ref [symbolic = %GenericBase (constants.%GenericBase.018)] { // CHECK:STDOUT: %.loc6_23.2: type = specific_constant constants.%GenericBase.018, @GenericBase(constants.%T) [symbolic = %GenericBase (constants.%GenericBase.018)] // CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc6_23.2 [symbolic = %GenericBase (constants.%GenericBase.018)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F2.loc6.%GenericBase (%GenericBase.018) = bind_name self, %self.param +// CHECK:STDOUT: %self: @GenericBase.F2.%GenericBase (%GenericBase.018) = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F1.specific_fn.loc7_1.1: = specific_function %F1.decl, @F1(constants.%T) [symbolic = %F1.specific_fn.loc7_1.2 (constants.%F1.specific_fn.aea)] -// CHECK:STDOUT: %F2.specific_fn.loc7_1.1: = specific_function %F2.decl, @F2.loc6(constants.%T) [symbolic = %F2.specific_fn.loc7_1.2 (constants.%F2.specific_fn.758)] +// CHECK:STDOUT: %GenericBase.F1.specific_fn.loc7_1.1: = specific_function %GenericBase.F1.decl, @GenericBase.F1(constants.%T) [symbolic = %GenericBase.F1.specific_fn.loc7_1.2 (constants.%GenericBase.F1.specific_fn.aea)] +// CHECK:STDOUT: %GenericBase.F2.specific_fn.loc7_1.1: = specific_function %GenericBase.F2.decl, @GenericBase.F2(constants.%T) [symbolic = %GenericBase.F2.specific_fn.loc7_1.2 (constants.%GenericBase.F2.specific_fn.758)] // CHECK:STDOUT: %vtable_ptr.loc7_1.1: ref %ptr.454 = vtable_ptr @GenericBase.vtable, @GenericBase(constants.%T) [symbolic = %vtable_ptr.loc7_1.2 (constants.%GenericBase.vtable_ptr.e41)] // CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr.454} [concrete = constants.%struct_type.vptr] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.vptr [concrete = constants.%complete_type.513] @@ -3389,8 +3389,8 @@ var v: Base(T1) = {}; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%GenericBase.018 -// CHECK:STDOUT: .F1 = %F1.decl -// CHECK:STDOUT: .F2 = %F2.decl +// CHECK:STDOUT: .F1 = %GenericBase.F1.decl +// CHECK:STDOUT: .F2 = %GenericBase.F2.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -3401,7 +3401,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %T1.ref: type = name_ref T1, file.%T1.decl [concrete = constants.%T1] // CHECK:STDOUT: %GenericBase: type = class_type @GenericBase, @GenericBase(constants.%T1) [concrete = constants.%GenericBase.f84] // CHECK:STDOUT: %.loc12: %NonGenericDerived.elem = base_decl %GenericBase, element0 [concrete] -// CHECK:STDOUT: %F2.decl: %F2.type.c10 = fn_decl @F2.loc13 [concrete = constants.%F2.deb] { +// CHECK:STDOUT: %NonGenericDerived.F2.decl: %NonGenericDerived.F2.type = fn_decl @NonGenericDerived.F2 [concrete = constants.%NonGenericDerived.F2] { // CHECK:STDOUT: %self.patt: %pattern_type.5fc = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.5fc = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -3409,7 +3409,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%NonGenericDerived [concrete = constants.%NonGenericDerived] // CHECK:STDOUT: %self: %NonGenericDerived = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F3.decl: %F3.type = fn_decl @F3 [concrete = constants.%F3] { +// CHECK:STDOUT: %NonGenericDerived.F3.decl: %NonGenericDerived.F3.type = fn_decl @NonGenericDerived.F3 [concrete = constants.%NonGenericDerived.F3] { // CHECK:STDOUT: %self.patt: %pattern_type.5fc = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.5fc = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -3428,23 +3428,23 @@ var v: Base(T1) = {}; // CHECK:STDOUT: .GenericBase = // CHECK:STDOUT: .T1 = // CHECK:STDOUT: .base = %.loc12 -// CHECK:STDOUT: .F2 = %F2.decl -// CHECK:STDOUT: .F3 = %F3.decl +// CHECK:STDOUT: .F2 = %NonGenericDerived.F2.decl +// CHECK:STDOUT: .F3 = %NonGenericDerived.F3.decl // CHECK:STDOUT: extend %GenericBase // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @GenericBase.vtable { -// CHECK:STDOUT: @GenericBase.%F1.specific_fn.loc7_1.1 -// CHECK:STDOUT: @GenericBase.%F2.specific_fn.loc7_1.1 +// CHECK:STDOUT: @GenericBase.%GenericBase.F1.specific_fn.loc7_1.1 +// CHECK:STDOUT: @GenericBase.%GenericBase.F2.specific_fn.loc7_1.1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @NonGenericDerived.vtable { -// CHECK:STDOUT: constants.%F1.specific_fn.094 -// CHECK:STDOUT: @NonGenericDerived.%F2.decl -// CHECK:STDOUT: @NonGenericDerived.%F3.decl +// CHECK:STDOUT: constants.%GenericBase.F1.specific_fn.094 +// CHECK:STDOUT: @NonGenericDerived.%NonGenericDerived.F2.decl +// CHECK:STDOUT: @NonGenericDerived.%NonGenericDerived.F3.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic virtual fn @F1(@GenericBase.%T.loc4_24.2: type) { +// CHECK:STDOUT: generic virtual fn @GenericBase.F1(@GenericBase.%T.loc4_24.2: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %GenericBase: type = class_type @GenericBase, @GenericBase(%T) [symbolic = %GenericBase (constants.%GenericBase.018)] // CHECK:STDOUT: %pattern_type: type = pattern_type %GenericBase [symbolic = %pattern_type (constants.%pattern_type.34e)] @@ -3452,13 +3452,13 @@ var v: Base(T1) = {}; // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %GenericBase [symbolic = %require_complete (constants.%require_complete)] // CHECK:STDOUT: -// CHECK:STDOUT: virtual fn(%self.param: @F1.%GenericBase (%GenericBase.018)) { +// CHECK:STDOUT: virtual fn(%self.param: @GenericBase.F1.%GenericBase (%GenericBase.018)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic virtual fn @F2.loc6(@GenericBase.%T.loc4_24.2: type) { +// CHECK:STDOUT: generic virtual fn @GenericBase.F2(@GenericBase.%T.loc4_24.2: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %GenericBase: type = class_type @GenericBase, @GenericBase(%T) [symbolic = %GenericBase (constants.%GenericBase.018)] // CHECK:STDOUT: %pattern_type: type = pattern_type %GenericBase [symbolic = %pattern_type (constants.%pattern_type.34e)] @@ -3466,18 +3466,18 @@ var v: Base(T1) = {}; // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %GenericBase [symbolic = %require_complete (constants.%require_complete)] // CHECK:STDOUT: -// CHECK:STDOUT: virtual fn(%self.param: @F2.loc6.%GenericBase (%GenericBase.018)) { +// CHECK:STDOUT: virtual fn(%self.param: @GenericBase.F2.%GenericBase (%GenericBase.018)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl fn @F2.loc13(%self.param: %NonGenericDerived) { +// CHECK:STDOUT: impl fn @NonGenericDerived.F2(%self.param: %NonGenericDerived) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: virtual fn @F3(%self.param: %NonGenericDerived) { +// CHECK:STDOUT: virtual fn @NonGenericDerived.F3(%self.param: %NonGenericDerived) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -3486,16 +3486,16 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %T.loc4_24.1 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F1.type => constants.%F1.type.2af -// CHECK:STDOUT: %F1 => constants.%F1.80a -// CHECK:STDOUT: %F2.type => constants.%F2.type.2ca -// CHECK:STDOUT: %F2 => constants.%F2.414 -// CHECK:STDOUT: %F1.specific_fn.loc7_1.2 => constants.%F1.specific_fn.aea -// CHECK:STDOUT: %F2.specific_fn.loc7_1.2 => constants.%F2.specific_fn.758 +// CHECK:STDOUT: %GenericBase.F1.type => constants.%GenericBase.F1.type.2af +// CHECK:STDOUT: %GenericBase.F1 => constants.%GenericBase.F1.80a +// CHECK:STDOUT: %GenericBase.F2.type => constants.%GenericBase.F2.type.2ca +// CHECK:STDOUT: %GenericBase.F2 => constants.%GenericBase.F2.414 +// CHECK:STDOUT: %GenericBase.F1.specific_fn.loc7_1.2 => constants.%GenericBase.F1.specific_fn.aea +// CHECK:STDOUT: %GenericBase.F2.specific_fn.loc7_1.2 => constants.%GenericBase.F2.specific_fn.758 // CHECK:STDOUT: %vtable_ptr.loc7_1.2 => constants.%GenericBase.vtable_ptr.e41 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F1(constants.%T) { +// CHECK:STDOUT: specific @GenericBase.F1(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %GenericBase => constants.%GenericBase.018 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.34e @@ -3504,7 +3504,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %require_complete => constants.%require_complete // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F2.loc6(constants.%T) { +// CHECK:STDOUT: specific @GenericBase.F2(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %GenericBase => constants.%GenericBase.018 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.34e @@ -3517,16 +3517,16 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %T.loc4_24.1 => constants.%T1 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F1.type => constants.%F1.type.648 -// CHECK:STDOUT: %F1 => constants.%F1.4d3 -// CHECK:STDOUT: %F2.type => constants.%F2.type.d79 -// CHECK:STDOUT: %F2 => constants.%F2.d59 -// CHECK:STDOUT: %F1.specific_fn.loc7_1.2 => constants.%F1.specific_fn.094 -// CHECK:STDOUT: %F2.specific_fn.loc7_1.2 => constants.%F2.specific_fn.b8b +// CHECK:STDOUT: %GenericBase.F1.type => constants.%GenericBase.F1.type.648 +// CHECK:STDOUT: %GenericBase.F1 => constants.%GenericBase.F1.4d3 +// CHECK:STDOUT: %GenericBase.F2.type => constants.%GenericBase.F2.type.d79 +// CHECK:STDOUT: %GenericBase.F2 => constants.%GenericBase.F2.d59 +// CHECK:STDOUT: %GenericBase.F1.specific_fn.loc7_1.2 => constants.%GenericBase.F1.specific_fn.094 +// CHECK:STDOUT: %GenericBase.F2.specific_fn.loc7_1.2 => constants.%GenericBase.F2.specific_fn.b8b // CHECK:STDOUT: %vtable_ptr.loc7_1.2 => constants.%GenericBase.vtable_ptr.d41 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F1(constants.%T1) { +// CHECK:STDOUT: specific @GenericBase.F1(constants.%T1) { // CHECK:STDOUT: %T => constants.%T1 // CHECK:STDOUT: %GenericBase => constants.%GenericBase.f84 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7a9 @@ -3535,7 +3535,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %require_complete => constants.%complete_type.513 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F2.loc6(constants.%T1) { +// CHECK:STDOUT: specific @GenericBase.F2(constants.%T1) { // CHECK:STDOUT: %T => constants.%T1 // CHECK:STDOUT: %GenericBase => constants.%GenericBase.f84 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7a9 @@ -3555,10 +3555,10 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %pattern_type.9f7: type = pattern_type %Base.370 [symbolic] // CHECK:STDOUT: %ptr.b7c: type = ptr_type %Base.370 [symbolic] // CHECK:STDOUT: %pattern_type.8d4: type = pattern_type %ptr.b7c [symbolic] -// CHECK:STDOUT: %F.type.f17: type = fn_type @F.loc5, @Base(%T) [symbolic] -// CHECK:STDOUT: %F.e26: %F.type.f17 = struct_value () [symbolic] +// CHECK:STDOUT: %Base.F.type.f17: type = fn_type @Base.F, @Base(%T) [symbolic] +// CHECK:STDOUT: %Base.F.e26: %Base.F.type.f17 = struct_value () [symbolic] // CHECK:STDOUT: %ptr.454: type = ptr_type [concrete] -// CHECK:STDOUT: %F.specific_fn.892: = specific_function %F.e26, @F.loc5(%T) [symbolic] +// CHECK:STDOUT: %Base.F.specific_fn.892: = specific_function %Base.F.e26, @Base.F(%T) [symbolic] // CHECK:STDOUT: %Base.vtable_ptr.573: ref %ptr.454 = vtable_ptr @Base.vtable, @Base(%T) [symbolic] // CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr.454} [concrete] // CHECK:STDOUT: %complete_type.513: = complete_type_witness %struct_type.vptr [concrete] @@ -3567,17 +3567,17 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %T1: type = class_type @T1 [concrete] // CHECK:STDOUT: %D1: type = class_type @D1 [concrete] // CHECK:STDOUT: %Base.ea5: type = class_type @Base, @Base(%T1) [concrete] -// CHECK:STDOUT: %F.type.d82: type = fn_type @F.loc5, @Base(%T1) [concrete] -// CHECK:STDOUT: %F.d25: %F.type.d82 = struct_value () [concrete] +// CHECK:STDOUT: %Base.F.type.d82: type = fn_type @Base.F, @Base(%T1) [concrete] +// CHECK:STDOUT: %Base.F.d25: %Base.F.type.d82 = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.3bf: type = pattern_type %Base.ea5 [concrete] // CHECK:STDOUT: %ptr.184: type = ptr_type %Base.ea5 [concrete] // CHECK:STDOUT: %pattern_type.04d: type = pattern_type %ptr.184 [concrete] -// CHECK:STDOUT: %F.specific_fn.210: = specific_function %F.d25, @F.loc5(%T1) [concrete] +// CHECK:STDOUT: %Base.F.specific_fn.210: = specific_function %Base.F.d25, @Base.F(%T1) [concrete] // CHECK:STDOUT: %Base.vtable_ptr.bfe: ref %ptr.454 = vtable_ptr @Base.vtable, @Base(%T1) [concrete] // CHECK:STDOUT: %D1.elem: type = unbound_element_type %D1, %Base.ea5 [concrete] // CHECK:STDOUT: %pattern_type.550: type = pattern_type %D1 [concrete] -// CHECK:STDOUT: %F.type.af3: type = fn_type @F.loc10 [concrete] -// CHECK:STDOUT: %F.87b: %F.type.af3 = struct_value () [concrete] +// CHECK:STDOUT: %D1.F.type: type = fn_type @D1.F [concrete] +// CHECK:STDOUT: %D1.F: %D1.F.type = struct_value () [concrete] // CHECK:STDOUT: %D1.vtable_ptr: ref %ptr.454 = vtable_ptr @D1.vtable [concrete] // CHECK:STDOUT: %struct_type.base.fda: type = struct_type {.base: %Base.ea5} [concrete] // CHECK:STDOUT: %complete_type.65a: = complete_type_witness %struct_type.base.fda [concrete] @@ -3612,34 +3612,34 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %T.loc4_17.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_17.1 (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type: type = fn_type @F.loc5, @Base(%T.loc4_17.1) [symbolic = %F.type (constants.%F.type.f17)] -// CHECK:STDOUT: %F: @Base.%F.type (%F.type.f17) = struct_value () [symbolic = %F (constants.%F.e26)] -// CHECK:STDOUT: %F.specific_fn.loc6_1.2: = specific_function %F, @F.loc5(%T.loc4_17.1) [symbolic = %F.specific_fn.loc6_1.2 (constants.%F.specific_fn.892)] +// CHECK:STDOUT: %Base.F.type: type = fn_type @Base.F, @Base(%T.loc4_17.1) [symbolic = %Base.F.type (constants.%Base.F.type.f17)] +// CHECK:STDOUT: %Base.F: @Base.%Base.F.type (%Base.F.type.f17) = struct_value () [symbolic = %Base.F (constants.%Base.F.e26)] +// CHECK:STDOUT: %Base.F.specific_fn.loc6_1.2: = specific_function %Base.F, @Base.F(%T.loc4_17.1) [symbolic = %Base.F.specific_fn.loc6_1.2 (constants.%Base.F.specific_fn.892)] // CHECK:STDOUT: %vtable_ptr.loc6_1.2: ref %ptr.454 = vtable_ptr @Base.vtable, @Base(%T.loc4_17.1) [symbolic = %vtable_ptr.loc6_1.2 (constants.%Base.vtable_ptr.573)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %F.decl: @Base.%F.type (%F.type.f17) = fn_decl @F.loc5 [symbolic = @Base.%F (constants.%F.e26)] { -// CHECK:STDOUT: %self.patt: @F.loc5.%pattern_type.loc5_16 (%pattern_type.9f7) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.loc5.%pattern_type.loc5_16 (%pattern_type.9f7) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %t.patt: @F.loc5.%pattern_type.loc5_28 (%pattern_type.8d4) = binding_pattern t [concrete] -// CHECK:STDOUT: %t.param_patt: @F.loc5.%pattern_type.loc5_28 (%pattern_type.8d4) = value_param_pattern %t.patt, call_param1 [concrete] +// CHECK:STDOUT: %Base.F.decl: @Base.%Base.F.type (%Base.F.type.f17) = fn_decl @Base.F [symbolic = @Base.%Base.F (constants.%Base.F.e26)] { +// CHECK:STDOUT: %self.patt: @Base.F.%pattern_type.loc5_16 (%pattern_type.9f7) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @Base.F.%pattern_type.loc5_16 (%pattern_type.9f7) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %t.patt: @Base.F.%pattern_type.loc5_28 (%pattern_type.8d4) = binding_pattern t [concrete] +// CHECK:STDOUT: %t.param_patt: @Base.F.%pattern_type.loc5_28 (%pattern_type.8d4) = value_param_pattern %t.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @F.loc5.%Base.loc5_22 (%Base.370) = value_param call_param0 +// CHECK:STDOUT: %self.param: @Base.F.%Base.loc5_22 (%Base.370) = value_param call_param0 // CHECK:STDOUT: %.loc5_22.1: type = splice_block %Self.ref [symbolic = %Base.loc5_22 (constants.%Base.370)] { // CHECK:STDOUT: %.loc5_22.2: type = specific_constant constants.%Base.370, @Base(constants.%T) [symbolic = %Base.loc5_22 (constants.%Base.370)] // CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc5_22.2 [symbolic = %Base.loc5_22 (constants.%Base.370)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.loc5.%Base.loc5_22 (%Base.370) = bind_name self, %self.param -// CHECK:STDOUT: %t.param: @F.loc5.%ptr.loc5_38.2 (%ptr.b7c) = value_param call_param1 -// CHECK:STDOUT: %.loc5_38: type = splice_block %ptr.loc5_38.1 [symbolic = %ptr.loc5_38.2 (constants.%ptr.b7c)] { +// CHECK:STDOUT: %self: @Base.F.%Base.loc5_22 (%Base.370) = bind_name self, %self.param +// CHECK:STDOUT: %t.param: @Base.F.%ptr.loc5_38.1 (%ptr.b7c) = value_param call_param1 +// CHECK:STDOUT: %.loc5_38: type = splice_block %ptr.loc5_38.2 [symbolic = %ptr.loc5_38.1 (constants.%ptr.b7c)] { // CHECK:STDOUT: %Base.ref: %Base.type = name_ref Base, file.%Base.decl [concrete = constants.%Base.generic] // CHECK:STDOUT: %T.ref: type = name_ref T, @Base.%T.loc4_17.2 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Base.loc5_37: type = class_type @Base, @Base(constants.%T) [symbolic = %Base.loc5_22 (constants.%Base.370)] -// CHECK:STDOUT: %ptr.loc5_38.1: type = ptr_type %Base.loc5_37 [symbolic = %ptr.loc5_38.2 (constants.%ptr.b7c)] +// CHECK:STDOUT: %ptr.loc5_38.2: type = ptr_type %Base.loc5_37 [symbolic = %ptr.loc5_38.1 (constants.%ptr.b7c)] // CHECK:STDOUT: } -// CHECK:STDOUT: %t: @F.loc5.%ptr.loc5_38.2 (%ptr.b7c) = bind_name t, %t.param +// CHECK:STDOUT: %t: @Base.F.%ptr.loc5_38.1 (%ptr.b7c) = bind_name t, %t.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F.specific_fn.loc6_1.1: = specific_function %F.decl, @F.loc5(constants.%T) [symbolic = %F.specific_fn.loc6_1.2 (constants.%F.specific_fn.892)] +// CHECK:STDOUT: %Base.F.specific_fn.loc6_1.1: = specific_function %Base.F.decl, @Base.F(constants.%T) [symbolic = %Base.F.specific_fn.loc6_1.2 (constants.%Base.F.specific_fn.892)] // CHECK:STDOUT: %vtable_ptr.loc6_1.1: ref %ptr.454 = vtable_ptr @Base.vtable, @Base(constants.%T) [symbolic = %vtable_ptr.loc6_1.2 (constants.%Base.vtable_ptr.573)] // CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr.454} [concrete = constants.%struct_type.vptr] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.vptr [concrete = constants.%complete_type.513] @@ -3650,7 +3650,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: .Self = constants.%Base.370 // CHECK:STDOUT: .Base = // CHECK:STDOUT: .T = -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %Base.F.decl // CHECK:STDOUT: .T1 = // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -3662,7 +3662,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %T1.ref: type = name_ref T1, file.%T1.decl [concrete = constants.%T1] // CHECK:STDOUT: %Base: type = class_type @Base, @Base(constants.%T1) [concrete = constants.%Base.ea5] // CHECK:STDOUT: %.loc9: %D1.elem = base_decl %Base, element0 [concrete] -// CHECK:STDOUT: %F.decl: %F.type.af3 = fn_decl @F.loc10 [concrete = constants.%F.87b] { +// CHECK:STDOUT: %D1.F.decl: %D1.F.type = fn_decl @D1.F [concrete = constants.%D1.F] { // CHECK:STDOUT: %self.patt: %pattern_type.550 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.550 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %t.patt: %pattern_type.04d = binding_pattern t [concrete] @@ -3691,36 +3691,36 @@ var v: Base(T1) = {}; // CHECK:STDOUT: .Base = // CHECK:STDOUT: .T1 = // CHECK:STDOUT: .base = %.loc9 -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %D1.F.decl // CHECK:STDOUT: extend %Base // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @Base.vtable { -// CHECK:STDOUT: @Base.%F.specific_fn.loc6_1.1 +// CHECK:STDOUT: @Base.%Base.F.specific_fn.loc6_1.1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @D1.vtable { -// CHECK:STDOUT: @D1.%F.decl +// CHECK:STDOUT: @D1.%D1.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic virtual fn @F.loc5(@Base.%T.loc4_17.2: type) { +// CHECK:STDOUT: generic virtual fn @Base.F(@Base.%T.loc4_17.2: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Base.loc5_22: type = class_type @Base, @Base(%T) [symbolic = %Base.loc5_22 (constants.%Base.370)] // CHECK:STDOUT: %pattern_type.loc5_16: type = pattern_type %Base.loc5_22 [symbolic = %pattern_type.loc5_16 (constants.%pattern_type.9f7)] -// CHECK:STDOUT: %ptr.loc5_38.2: type = ptr_type %Base.loc5_22 [symbolic = %ptr.loc5_38.2 (constants.%ptr.b7c)] -// CHECK:STDOUT: %pattern_type.loc5_28: type = pattern_type %ptr.loc5_38.2 [symbolic = %pattern_type.loc5_28 (constants.%pattern_type.8d4)] +// CHECK:STDOUT: %ptr.loc5_38.1: type = ptr_type %Base.loc5_22 [symbolic = %ptr.loc5_38.1 (constants.%ptr.b7c)] +// CHECK:STDOUT: %pattern_type.loc5_28: type = pattern_type %ptr.loc5_38.1 [symbolic = %pattern_type.loc5_28 (constants.%pattern_type.8d4)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete.loc5_20: = require_complete_type %Base.loc5_22 [symbolic = %require_complete.loc5_20 (constants.%require_complete.97d)] -// CHECK:STDOUT: %require_complete.loc5_29: = require_complete_type %ptr.loc5_38.2 [symbolic = %require_complete.loc5_29 (constants.%require_complete.cbc)] +// CHECK:STDOUT: %require_complete.loc5_29: = require_complete_type %ptr.loc5_38.1 [symbolic = %require_complete.loc5_29 (constants.%require_complete.cbc)] // CHECK:STDOUT: -// CHECK:STDOUT: virtual fn(%self.param: @F.loc5.%Base.loc5_22 (%Base.370), %t.param: @F.loc5.%ptr.loc5_38.2 (%ptr.b7c)) { +// CHECK:STDOUT: virtual fn(%self.param: @Base.F.%Base.loc5_22 (%Base.370), %t.param: @Base.F.%ptr.loc5_38.1 (%ptr.b7c)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl fn @F.loc10(%self.param: %D1, %t.param: %ptr.184) { +// CHECK:STDOUT: impl fn @D1.F(%self.param: %D1, %t.param: %ptr.184) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -3729,17 +3729,17 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %T.loc4_17.1 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.f17 -// CHECK:STDOUT: %F => constants.%F.e26 -// CHECK:STDOUT: %F.specific_fn.loc6_1.2 => constants.%F.specific_fn.892 +// CHECK:STDOUT: %Base.F.type => constants.%Base.F.type.f17 +// CHECK:STDOUT: %Base.F => constants.%Base.F.e26 +// CHECK:STDOUT: %Base.F.specific_fn.loc6_1.2 => constants.%Base.F.specific_fn.892 // CHECK:STDOUT: %vtable_ptr.loc6_1.2 => constants.%Base.vtable_ptr.573 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%T) { +// CHECK:STDOUT: specific @Base.F(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %Base.loc5_22 => constants.%Base.370 // CHECK:STDOUT: %pattern_type.loc5_16 => constants.%pattern_type.9f7 -// CHECK:STDOUT: %ptr.loc5_38.2 => constants.%ptr.b7c +// CHECK:STDOUT: %ptr.loc5_38.1 => constants.%ptr.b7c // CHECK:STDOUT: %pattern_type.loc5_28 => constants.%pattern_type.8d4 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -3751,17 +3751,17 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %T.loc4_17.1 => constants.%T1 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.d82 -// CHECK:STDOUT: %F => constants.%F.d25 -// CHECK:STDOUT: %F.specific_fn.loc6_1.2 => constants.%F.specific_fn.210 +// CHECK:STDOUT: %Base.F.type => constants.%Base.F.type.d82 +// CHECK:STDOUT: %Base.F => constants.%Base.F.d25 +// CHECK:STDOUT: %Base.F.specific_fn.loc6_1.2 => constants.%Base.F.specific_fn.210 // CHECK:STDOUT: %vtable_ptr.loc6_1.2 => constants.%Base.vtable_ptr.bfe // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%T1) { +// CHECK:STDOUT: specific @Base.F(constants.%T1) { // CHECK:STDOUT: %T => constants.%T1 // CHECK:STDOUT: %Base.loc5_22 => constants.%Base.ea5 // CHECK:STDOUT: %pattern_type.loc5_16 => constants.%pattern_type.3bf -// CHECK:STDOUT: %ptr.loc5_38.2 => constants.%ptr.184 +// CHECK:STDOUT: %ptr.loc5_38.1 => constants.%ptr.184 // CHECK:STDOUT: %pattern_type.loc5_28 => constants.%pattern_type.04d // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -3782,27 +3782,27 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %pattern_type.9f7: type = pattern_type %Base.370 [symbolic] // CHECK:STDOUT: %ptr.87b: type = ptr_type %T1 [concrete] // CHECK:STDOUT: %pattern_type.a36: type = pattern_type %ptr.87b [concrete] -// CHECK:STDOUT: %F.type.f17: type = fn_type @F.loc8, @Base(%T) [symbolic] -// CHECK:STDOUT: %F.e26: %F.type.f17 = struct_value () [symbolic] +// CHECK:STDOUT: %Base.F.type.f17: type = fn_type @Base.F, @Base(%T) [symbolic] +// CHECK:STDOUT: %Base.F.e26: %Base.F.type.f17 = struct_value () [symbolic] // CHECK:STDOUT: %ptr.454: type = ptr_type [concrete] -// CHECK:STDOUT: %F.specific_fn.892: = specific_function %F.e26, @F.loc8(%T) [symbolic] +// CHECK:STDOUT: %Base.F.specific_fn.892: = specific_function %Base.F.e26, @Base.F(%T) [symbolic] // CHECK:STDOUT: %Base.vtable_ptr.573: ref %ptr.454 = vtable_ptr @Base.vtable, @Base(%T) [symbolic] // CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr.454} [concrete] // CHECK:STDOUT: %complete_type.513: = complete_type_witness %struct_type.vptr [concrete] // CHECK:STDOUT: %require_complete: = require_complete_type %Base.370 [symbolic] // CHECK:STDOUT: %D1: type = class_type @D1 [concrete] // CHECK:STDOUT: %Base.ea5: type = class_type @Base, @Base(%T1) [concrete] -// CHECK:STDOUT: %F.type.d82: type = fn_type @F.loc8, @Base(%T1) [concrete] -// CHECK:STDOUT: %F.d25: %F.type.d82 = struct_value () [concrete] +// CHECK:STDOUT: %Base.F.type.d82: type = fn_type @Base.F, @Base(%T1) [concrete] +// CHECK:STDOUT: %Base.F.d25: %Base.F.type.d82 = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.3bf: type = pattern_type %Base.ea5 [concrete] -// CHECK:STDOUT: %F.specific_fn.210: = specific_function %F.d25, @F.loc8(%T1) [concrete] +// CHECK:STDOUT: %Base.F.specific_fn.210: = specific_function %Base.F.d25, @Base.F(%T1) [concrete] // CHECK:STDOUT: %Base.vtable_ptr.bfe: ref %ptr.454 = vtable_ptr @Base.vtable, @Base(%T1) [concrete] // CHECK:STDOUT: %D1.elem: type = unbound_element_type %D1, %Base.ea5 [concrete] // CHECK:STDOUT: %pattern_type.550: type = pattern_type %D1 [concrete] // CHECK:STDOUT: %ptr.63e: type = ptr_type %T2 [concrete] // CHECK:STDOUT: %pattern_type.fb8: type = pattern_type %ptr.63e [concrete] -// CHECK:STDOUT: %F.type.af3: type = fn_type @F.loc20 [concrete] -// CHECK:STDOUT: %F.87b: %F.type.af3 = struct_value () [concrete] +// CHECK:STDOUT: %D1.F.type: type = fn_type @D1.F [concrete] +// CHECK:STDOUT: %D1.F: %D1.F.type = struct_value () [concrete] // CHECK:STDOUT: %D1.vtable_ptr: ref %ptr.454 = vtable_ptr @D1.vtable [concrete] // CHECK:STDOUT: %struct_type.base.fda: type = struct_type {.base: %Base.ea5} [concrete] // CHECK:STDOUT: %complete_type.65a: = complete_type_witness %struct_type.base.fda [concrete] @@ -3842,24 +3842,24 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %T.loc7_17.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc7_17.1 (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type: type = fn_type @F.loc8, @Base(%T.loc7_17.1) [symbolic = %F.type (constants.%F.type.f17)] -// CHECK:STDOUT: %F: @Base.%F.type (%F.type.f17) = struct_value () [symbolic = %F (constants.%F.e26)] -// CHECK:STDOUT: %F.specific_fn.loc9_1.2: = specific_function %F, @F.loc8(%T.loc7_17.1) [symbolic = %F.specific_fn.loc9_1.2 (constants.%F.specific_fn.892)] +// CHECK:STDOUT: %Base.F.type: type = fn_type @Base.F, @Base(%T.loc7_17.1) [symbolic = %Base.F.type (constants.%Base.F.type.f17)] +// CHECK:STDOUT: %Base.F: @Base.%Base.F.type (%Base.F.type.f17) = struct_value () [symbolic = %Base.F (constants.%Base.F.e26)] +// CHECK:STDOUT: %Base.F.specific_fn.loc9_1.2: = specific_function %Base.F, @Base.F(%T.loc7_17.1) [symbolic = %Base.F.specific_fn.loc9_1.2 (constants.%Base.F.specific_fn.892)] // CHECK:STDOUT: %vtable_ptr.loc9_1.2: ref %ptr.454 = vtable_ptr @Base.vtable, @Base(%T.loc7_17.1) [symbolic = %vtable_ptr.loc9_1.2 (constants.%Base.vtable_ptr.573)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %F.decl: @Base.%F.type (%F.type.f17) = fn_decl @F.loc8 [symbolic = @Base.%F (constants.%F.e26)] { -// CHECK:STDOUT: %self.patt: @F.loc8.%pattern_type (%pattern_type.9f7) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.loc8.%pattern_type (%pattern_type.9f7) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %Base.F.decl: @Base.%Base.F.type (%Base.F.type.f17) = fn_decl @Base.F [symbolic = @Base.%Base.F (constants.%Base.F.e26)] { +// CHECK:STDOUT: %self.patt: @Base.F.%pattern_type (%pattern_type.9f7) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @Base.F.%pattern_type (%pattern_type.9f7) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %t.patt: %pattern_type.a36 = binding_pattern t [concrete] // CHECK:STDOUT: %t.param_patt: %pattern_type.a36 = value_param_pattern %t.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @F.loc8.%Base (%Base.370) = value_param call_param0 +// CHECK:STDOUT: %self.param: @Base.F.%Base (%Base.370) = value_param call_param0 // CHECK:STDOUT: %.loc8_22.1: type = splice_block %Self.ref [symbolic = %Base (constants.%Base.370)] { // CHECK:STDOUT: %.loc8_22.2: type = specific_constant constants.%Base.370, @Base(constants.%T) [symbolic = %Base (constants.%Base.370)] // CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc8_22.2 [symbolic = %Base (constants.%Base.370)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.loc8.%Base (%Base.370) = bind_name self, %self.param +// CHECK:STDOUT: %self: @Base.F.%Base (%Base.370) = bind_name self, %self.param // CHECK:STDOUT: %t.param: %ptr.87b = value_param call_param1 // CHECK:STDOUT: %.loc8_33: type = splice_block %ptr [concrete = constants.%ptr.87b] { // CHECK:STDOUT: %T1.ref: type = name_ref T1, file.%T1.decl [concrete = constants.%T1] @@ -3867,7 +3867,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: } // CHECK:STDOUT: %t: %ptr.87b = bind_name t, %t.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F.specific_fn.loc9_1.1: = specific_function %F.decl, @F.loc8(constants.%T) [symbolic = %F.specific_fn.loc9_1.2 (constants.%F.specific_fn.892)] +// CHECK:STDOUT: %Base.F.specific_fn.loc9_1.1: = specific_function %Base.F.decl, @Base.F(constants.%T) [symbolic = %Base.F.specific_fn.loc9_1.2 (constants.%Base.F.specific_fn.892)] // CHECK:STDOUT: %vtable_ptr.loc9_1.1: ref %ptr.454 = vtable_ptr @Base.vtable, @Base(constants.%T) [symbolic = %vtable_ptr.loc9_1.2 (constants.%Base.vtable_ptr.573)] // CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr.454} [concrete = constants.%struct_type.vptr] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.vptr [concrete = constants.%complete_type.513] @@ -3877,7 +3877,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base.370 // CHECK:STDOUT: .T1 = -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %Base.F.decl // CHECK:STDOUT: .T2 = // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -3887,7 +3887,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %T1.ref: type = name_ref T1, file.%T1.decl [concrete = constants.%T1] // CHECK:STDOUT: %Base: type = class_type @Base, @Base(constants.%T1) [concrete = constants.%Base.ea5] // CHECK:STDOUT: %.loc12: %D1.elem = base_decl %Base, element0 [concrete] -// CHECK:STDOUT: %F.decl: %F.type.af3 = fn_decl @F.loc20 [concrete = constants.%F.87b] { +// CHECK:STDOUT: %D1.F.decl: %D1.F.type = fn_decl @D1.F [concrete = constants.%D1.F] { // CHECK:STDOUT: %self.patt: %pattern_type.550 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.550 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %t.patt: %pattern_type.fb8 = binding_pattern t [concrete] @@ -3915,19 +3915,19 @@ var v: Base(T1) = {}; // CHECK:STDOUT: .T1 = // CHECK:STDOUT: .base = %.loc12 // CHECK:STDOUT: .T2 = -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %D1.F.decl // CHECK:STDOUT: extend %Base // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @Base.vtable { -// CHECK:STDOUT: @Base.%F.specific_fn.loc9_1.1 +// CHECK:STDOUT: @Base.%Base.F.specific_fn.loc9_1.1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @D1.vtable { -// CHECK:STDOUT: @D1.%F.decl +// CHECK:STDOUT: @D1.%D1.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic virtual fn @F.loc8(@Base.%T.loc7_17.2: type) { +// CHECK:STDOUT: generic virtual fn @Base.F(@Base.%T.loc7_17.2: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Base: type = class_type @Base, @Base(%T) [symbolic = %Base (constants.%Base.370)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Base [symbolic = %pattern_type (constants.%pattern_type.9f7)] @@ -3935,13 +3935,13 @@ var v: Base(T1) = {}; // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %Base [symbolic = %require_complete (constants.%require_complete)] // CHECK:STDOUT: -// CHECK:STDOUT: virtual fn(%self.param: @F.loc8.%Base (%Base.370), %t.param: %ptr.87b) { +// CHECK:STDOUT: virtual fn(%self.param: @Base.F.%Base (%Base.370), %t.param: %ptr.87b) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl fn @F.loc20(%self.param: %D1, %t.param: %ptr.63e) { +// CHECK:STDOUT: impl fn @D1.F(%self.param: %D1, %t.param: %ptr.63e) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -3950,13 +3950,13 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %T.loc7_17.1 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.f17 -// CHECK:STDOUT: %F => constants.%F.e26 -// CHECK:STDOUT: %F.specific_fn.loc9_1.2 => constants.%F.specific_fn.892 +// CHECK:STDOUT: %Base.F.type => constants.%Base.F.type.f17 +// CHECK:STDOUT: %Base.F => constants.%Base.F.e26 +// CHECK:STDOUT: %Base.F.specific_fn.loc9_1.2 => constants.%Base.F.specific_fn.892 // CHECK:STDOUT: %vtable_ptr.loc9_1.2 => constants.%Base.vtable_ptr.573 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc8(constants.%T) { +// CHECK:STDOUT: specific @Base.F(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %Base => constants.%Base.370 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.9f7 @@ -3969,13 +3969,13 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %T.loc7_17.1 => constants.%T1 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.d82 -// CHECK:STDOUT: %F => constants.%F.d25 -// CHECK:STDOUT: %F.specific_fn.loc9_1.2 => constants.%F.specific_fn.210 +// CHECK:STDOUT: %Base.F.type => constants.%Base.F.type.d82 +// CHECK:STDOUT: %Base.F => constants.%Base.F.d25 +// CHECK:STDOUT: %Base.F.specific_fn.loc9_1.2 => constants.%Base.F.specific_fn.210 // CHECK:STDOUT: %vtable_ptr.loc9_1.2 => constants.%Base.vtable_ptr.bfe // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc8(constants.%T1) { +// CHECK:STDOUT: specific @Base.F(constants.%T1) { // CHECK:STDOUT: %T => constants.%T1 // CHECK:STDOUT: %Base => constants.%Base.ea5 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.3bf @@ -3995,10 +3995,10 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %pattern_type.9f7: type = pattern_type %Base [symbolic] // CHECK:STDOUT: %ptr.79f: type = ptr_type %T [symbolic] // CHECK:STDOUT: %pattern_type.afe: type = pattern_type %ptr.79f [symbolic] -// CHECK:STDOUT: %F.type.f17: type = fn_type @F.loc5, @Base(%T) [symbolic] -// CHECK:STDOUT: %F.e26: %F.type.f17 = struct_value () [symbolic] +// CHECK:STDOUT: %Base.F.type: type = fn_type @Base.F, @Base(%T) [symbolic] +// CHECK:STDOUT: %Base.F: %Base.F.type = struct_value () [symbolic] // CHECK:STDOUT: %ptr.454: type = ptr_type [concrete] -// CHECK:STDOUT: %F.specific_fn.892: = specific_function %F.e26, @F.loc5(%T) [symbolic] +// CHECK:STDOUT: %Base.F.specific_fn: = specific_function %Base.F, @Base.F(%T) [symbolic] // CHECK:STDOUT: %Base.vtable_ptr: ref %ptr.454 = vtable_ptr @Base.vtable, @Base(%T) [symbolic] // CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr.454} [concrete] // CHECK:STDOUT: %complete_type.513: = complete_type_witness %struct_type.vptr [concrete] @@ -4010,9 +4010,9 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %Derived.elem: type = unbound_element_type %Derived, %Base [symbolic] // CHECK:STDOUT: %pattern_type.423: type = pattern_type %Derived [symbolic] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %T [symbolic] -// CHECK:STDOUT: %F.type.e3f: type = fn_type @F.loc16, @Derived(%T) [symbolic] -// CHECK:STDOUT: %F.8d6: %F.type.e3f = struct_value () [symbolic] -// CHECK:STDOUT: %F.specific_fn.2e6: = specific_function %F.8d6, @F.loc16(%T) [symbolic] +// CHECK:STDOUT: %Derived.F.type: type = fn_type @Derived.F, @Derived(%T) [symbolic] +// CHECK:STDOUT: %Derived.F: %Derived.F.type = struct_value () [symbolic] +// CHECK:STDOUT: %Derived.F.specific_fn: = specific_function %Derived.F, @Derived.F(%T) [symbolic] // CHECK:STDOUT: %Derived.vtable_ptr: ref %ptr.454 = vtable_ptr @Derived.vtable, @Derived(%T) [symbolic] // CHECK:STDOUT: %struct_type.base.8ea: type = struct_type {.base: %Base} [symbolic] // CHECK:STDOUT: %complete_type.d5d: = complete_type_witness %struct_type.base.8ea [symbolic] @@ -4050,32 +4050,32 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %T.loc4_21.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_21.1 (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type: type = fn_type @F.loc5, @Base(%T.loc4_21.1) [symbolic = %F.type (constants.%F.type.f17)] -// CHECK:STDOUT: %F: @Base.%F.type (%F.type.f17) = struct_value () [symbolic = %F (constants.%F.e26)] -// CHECK:STDOUT: %F.specific_fn.loc6_1.2: = specific_function %F, @F.loc5(%T.loc4_21.1) [symbolic = %F.specific_fn.loc6_1.2 (constants.%F.specific_fn.892)] +// CHECK:STDOUT: %Base.F.type: type = fn_type @Base.F, @Base(%T.loc4_21.1) [symbolic = %Base.F.type (constants.%Base.F.type)] +// CHECK:STDOUT: %Base.F: @Base.%Base.F.type (%Base.F.type) = struct_value () [symbolic = %Base.F (constants.%Base.F)] +// CHECK:STDOUT: %Base.F.specific_fn.loc6_1.2: = specific_function %Base.F, @Base.F(%T.loc4_21.1) [symbolic = %Base.F.specific_fn.loc6_1.2 (constants.%Base.F.specific_fn)] // CHECK:STDOUT: %vtable_ptr.loc6_1.2: ref %ptr.454 = vtable_ptr @Base.vtable, @Base(%T.loc4_21.1) [symbolic = %vtable_ptr.loc6_1.2 (constants.%Base.vtable_ptr)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %F.decl: @Base.%F.type (%F.type.f17) = fn_decl @F.loc5 [symbolic = @Base.%F (constants.%F.e26)] { -// CHECK:STDOUT: %self.patt: @F.loc5.%pattern_type.loc5_16 (%pattern_type.9f7) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.loc5.%pattern_type.loc5_16 (%pattern_type.9f7) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %t.patt: @F.loc5.%pattern_type.loc5_28 (%pattern_type.afe) = binding_pattern t [concrete] -// CHECK:STDOUT: %t.param_patt: @F.loc5.%pattern_type.loc5_28 (%pattern_type.afe) = value_param_pattern %t.patt, call_param1 [concrete] +// CHECK:STDOUT: %Base.F.decl: @Base.%Base.F.type (%Base.F.type) = fn_decl @Base.F [symbolic = @Base.%Base.F (constants.%Base.F)] { +// CHECK:STDOUT: %self.patt: @Base.F.%pattern_type.loc5_16 (%pattern_type.9f7) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @Base.F.%pattern_type.loc5_16 (%pattern_type.9f7) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %t.patt: @Base.F.%pattern_type.loc5_28 (%pattern_type.afe) = binding_pattern t [concrete] +// CHECK:STDOUT: %t.param_patt: @Base.F.%pattern_type.loc5_28 (%pattern_type.afe) = value_param_pattern %t.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @F.loc5.%Base (%Base) = value_param call_param0 +// CHECK:STDOUT: %self.param: @Base.F.%Base (%Base) = value_param call_param0 // CHECK:STDOUT: %.loc5_22.1: type = splice_block %Self.ref [symbolic = %Base (constants.%Base)] { // CHECK:STDOUT: %.loc5_22.2: type = specific_constant constants.%Base, @Base(constants.%T) [symbolic = %Base (constants.%Base)] // CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc5_22.2 [symbolic = %Base (constants.%Base)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.loc5.%Base (%Base) = bind_name self, %self.param -// CHECK:STDOUT: %t.param: @F.loc5.%ptr.loc5_32.2 (%ptr.79f) = value_param call_param1 -// CHECK:STDOUT: %.loc5_32: type = splice_block %ptr.loc5_32.1 [symbolic = %ptr.loc5_32.2 (constants.%ptr.79f)] { +// CHECK:STDOUT: %self: @Base.F.%Base (%Base) = bind_name self, %self.param +// CHECK:STDOUT: %t.param: @Base.F.%ptr.loc5_32.1 (%ptr.79f) = value_param call_param1 +// CHECK:STDOUT: %.loc5_32: type = splice_block %ptr.loc5_32.2 [symbolic = %ptr.loc5_32.1 (constants.%ptr.79f)] { // CHECK:STDOUT: %T.ref: type = name_ref T, @Base.%T.loc4_21.2 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %ptr.loc5_32.1: type = ptr_type %T.ref [symbolic = %ptr.loc5_32.2 (constants.%ptr.79f)] +// CHECK:STDOUT: %ptr.loc5_32.2: type = ptr_type %T.ref [symbolic = %ptr.loc5_32.1 (constants.%ptr.79f)] // CHECK:STDOUT: } -// CHECK:STDOUT: %t: @F.loc5.%ptr.loc5_32.2 (%ptr.79f) = bind_name t, %t.param +// CHECK:STDOUT: %t: @Base.F.%ptr.loc5_32.1 (%ptr.79f) = bind_name t, %t.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F.specific_fn.loc6_1.1: = specific_function %F.decl, @F.loc5(constants.%T) [symbolic = %F.specific_fn.loc6_1.2 (constants.%F.specific_fn.892)] +// CHECK:STDOUT: %Base.F.specific_fn.loc6_1.1: = specific_function %Base.F.decl, @Base.F(constants.%T) [symbolic = %Base.F.specific_fn.loc6_1.2 (constants.%Base.F.specific_fn)] // CHECK:STDOUT: %vtable_ptr.loc6_1.1: ref %ptr.454 = vtable_ptr @Base.vtable, @Base(constants.%T) [symbolic = %vtable_ptr.loc6_1.2 (constants.%Base.vtable_ptr)] // CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr.454} [concrete = constants.%struct_type.vptr] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.vptr [concrete = constants.%complete_type.513] @@ -4085,7 +4085,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base // CHECK:STDOUT: .T = -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %Base.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -4097,9 +4097,9 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %require_complete: = require_complete_type %Base.loc8_22.2 [symbolic = %require_complete (constants.%require_complete.97d)] // CHECK:STDOUT: %Derived: type = class_type @Derived, @Derived(%T.loc7_15.1) [symbolic = %Derived (constants.%Derived)] // CHECK:STDOUT: %Derived.elem: type = unbound_element_type %Derived, %Base.loc8_22.2 [symbolic = %Derived.elem (constants.%Derived.elem)] -// CHECK:STDOUT: %F.type: type = fn_type @F.loc16, @Derived(%T.loc7_15.1) [symbolic = %F.type (constants.%F.type.e3f)] -// CHECK:STDOUT: %F: @Derived.%F.type (%F.type.e3f) = struct_value () [symbolic = %F (constants.%F.8d6)] -// CHECK:STDOUT: %F.specific_fn.loc17_1.2: = specific_function %F, @F.loc16(%T.loc7_15.1) [symbolic = %F.specific_fn.loc17_1.2 (constants.%F.specific_fn.2e6)] +// CHECK:STDOUT: %Derived.F.type: type = fn_type @Derived.F, @Derived(%T.loc7_15.1) [symbolic = %Derived.F.type (constants.%Derived.F.type)] +// CHECK:STDOUT: %Derived.F: @Derived.%Derived.F.type (%Derived.F.type) = struct_value () [symbolic = %Derived.F (constants.%Derived.F)] +// CHECK:STDOUT: %Derived.F.specific_fn.loc17_1.2: = specific_function %Derived.F, @Derived.F(%T.loc7_15.1) [symbolic = %Derived.F.specific_fn.loc17_1.2 (constants.%Derived.F.specific_fn)] // CHECK:STDOUT: %vtable_ptr.loc17_1.2: ref %ptr.454 = vtable_ptr @Derived.vtable, @Derived(%T.loc7_15.1) [symbolic = %vtable_ptr.loc17_1.2 (constants.%Derived.vtable_ptr)] // CHECK:STDOUT: %struct_type.base.loc17_1.2: type = struct_type {.base: @Derived.%Base.loc8_22.2 (%Base)} [symbolic = %struct_type.base.loc17_1.2 (constants.%struct_type.base.8ea)] // CHECK:STDOUT: %complete_type.loc17_1.2: = complete_type_witness %struct_type.base.loc17_1.2 [symbolic = %complete_type.loc17_1.2 (constants.%complete_type.d5d)] @@ -4109,23 +4109,23 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc7_15.2 [symbolic = %T.loc7_15.1 (constants.%T)] // CHECK:STDOUT: %Base.loc8_22.1: type = class_type @Base, @Base(constants.%T) [symbolic = %Base.loc8_22.2 (constants.%Base)] // CHECK:STDOUT: %.loc8: @Derived.%Derived.elem (%Derived.elem) = base_decl %Base.loc8_22.1, element0 [concrete] -// CHECK:STDOUT: %F.decl: @Derived.%F.type (%F.type.e3f) = fn_decl @F.loc16 [symbolic = @Derived.%F (constants.%F.8d6)] { -// CHECK:STDOUT: %self.patt: @F.loc16.%pattern_type.loc16_13 (%pattern_type.423) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.loc16.%pattern_type.loc16_13 (%pattern_type.423) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %t.patt: @F.loc16.%pattern_type.loc16_25 (%pattern_type.7dc) = binding_pattern t [concrete] -// CHECK:STDOUT: %t.param_patt: @F.loc16.%pattern_type.loc16_25 (%pattern_type.7dc) = value_param_pattern %t.patt, call_param1 [concrete] +// CHECK:STDOUT: %Derived.F.decl: @Derived.%Derived.F.type (%Derived.F.type) = fn_decl @Derived.F [symbolic = @Derived.%Derived.F (constants.%Derived.F)] { +// CHECK:STDOUT: %self.patt: @Derived.F.%pattern_type.loc16_13 (%pattern_type.423) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @Derived.F.%pattern_type.loc16_13 (%pattern_type.423) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %t.patt: @Derived.F.%pattern_type.loc16_25 (%pattern_type.7dc) = binding_pattern t [concrete] +// CHECK:STDOUT: %t.param_patt: @Derived.F.%pattern_type.loc16_25 (%pattern_type.7dc) = value_param_pattern %t.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @F.loc16.%Derived (%Derived) = value_param call_param0 +// CHECK:STDOUT: %self.param: @Derived.F.%Derived (%Derived) = value_param call_param0 // CHECK:STDOUT: %.loc16_19.1: type = splice_block %Self.ref [symbolic = %Derived (constants.%Derived)] { // CHECK:STDOUT: %.loc16_19.2: type = specific_constant constants.%Derived, @Derived(constants.%T) [symbolic = %Derived (constants.%Derived)] // CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc16_19.2 [symbolic = %Derived (constants.%Derived)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.loc16.%Derived (%Derived) = bind_name self, %self.param -// CHECK:STDOUT: %t.param: @F.loc16.%T (%T) = value_param call_param1 +// CHECK:STDOUT: %self: @Derived.F.%Derived (%Derived) = bind_name self, %self.param +// CHECK:STDOUT: %t.param: @Derived.F.%T (%T) = value_param call_param1 // CHECK:STDOUT: %T.ref: type = name_ref T, @Derived.%T.loc7_15.2 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %t: @F.loc16.%T (%T) = bind_name t, %t.param +// CHECK:STDOUT: %t: @Derived.F.%T (%T) = bind_name t, %t.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F.specific_fn.loc17_1.1: = specific_function %F.decl, @F.loc16(constants.%T) [symbolic = %F.specific_fn.loc17_1.2 (constants.%F.specific_fn.2e6)] +// CHECK:STDOUT: %Derived.F.specific_fn.loc17_1.1: = specific_function %Derived.F.decl, @Derived.F(constants.%T) [symbolic = %Derived.F.specific_fn.loc17_1.2 (constants.%Derived.F.specific_fn)] // CHECK:STDOUT: %vtable_ptr.loc17_1.1: ref %ptr.454 = vtable_ptr @Derived.vtable, @Derived(constants.%T) [symbolic = %vtable_ptr.loc17_1.2 (constants.%Derived.vtable_ptr)] // CHECK:STDOUT: %struct_type.base.loc17_1.1: type = struct_type {.base: %Base} [symbolic = %struct_type.base.loc17_1.2 (constants.%struct_type.base.8ea)] // CHECK:STDOUT: %complete_type.loc17_1.1: = complete_type_witness %struct_type.base.loc17_1.1 [symbolic = %complete_type.loc17_1.2 (constants.%complete_type.d5d)] @@ -4137,37 +4137,37 @@ var v: Base(T1) = {}; // CHECK:STDOUT: .Base = // CHECK:STDOUT: .T = // CHECK:STDOUT: .base = %.loc8 -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %Derived.F.decl // CHECK:STDOUT: extend %Base.loc8_22.1 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @Base.vtable { -// CHECK:STDOUT: @Base.%F.specific_fn.loc6_1.1 +// CHECK:STDOUT: @Base.%Base.F.specific_fn.loc6_1.1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @Derived.vtable { -// CHECK:STDOUT: @Derived.%F.specific_fn.loc17_1.1 +// CHECK:STDOUT: @Derived.%Derived.F.specific_fn.loc17_1.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic virtual fn @F.loc5(@Base.%T.loc4_21.2: type) { +// CHECK:STDOUT: generic virtual fn @Base.F(@Base.%T.loc4_21.2: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Base: type = class_type @Base, @Base(%T) [symbolic = %Base (constants.%Base)] // CHECK:STDOUT: %pattern_type.loc5_16: type = pattern_type %Base [symbolic = %pattern_type.loc5_16 (constants.%pattern_type.9f7)] -// CHECK:STDOUT: %ptr.loc5_32.2: type = ptr_type %T [symbolic = %ptr.loc5_32.2 (constants.%ptr.79f)] -// CHECK:STDOUT: %pattern_type.loc5_28: type = pattern_type %ptr.loc5_32.2 [symbolic = %pattern_type.loc5_28 (constants.%pattern_type.afe)] +// CHECK:STDOUT: %ptr.loc5_32.1: type = ptr_type %T [symbolic = %ptr.loc5_32.1 (constants.%ptr.79f)] +// CHECK:STDOUT: %pattern_type.loc5_28: type = pattern_type %ptr.loc5_32.1 [symbolic = %pattern_type.loc5_28 (constants.%pattern_type.afe)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete.loc5_20: = require_complete_type %Base [symbolic = %require_complete.loc5_20 (constants.%require_complete.97d)] -// CHECK:STDOUT: %require_complete.loc5_29: = require_complete_type %ptr.loc5_32.2 [symbolic = %require_complete.loc5_29 (constants.%require_complete.6e5)] +// CHECK:STDOUT: %require_complete.loc5_29: = require_complete_type %ptr.loc5_32.1 [symbolic = %require_complete.loc5_29 (constants.%require_complete.6e5)] // CHECK:STDOUT: -// CHECK:STDOUT: virtual fn(%self.param: @F.loc5.%Base (%Base), %t.param: @F.loc5.%ptr.loc5_32.2 (%ptr.79f)) { +// CHECK:STDOUT: virtual fn(%self.param: @Base.F.%Base (%Base), %t.param: @Base.F.%ptr.loc5_32.1 (%ptr.79f)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl fn @F.loc16(@Derived.%T.loc7_15.2: type) { +// CHECK:STDOUT: generic impl fn @Derived.F(@Derived.%T.loc7_15.2: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Derived: type = class_type @Derived, @Derived(%T) [symbolic = %Derived (constants.%Derived)] // CHECK:STDOUT: %pattern_type.loc16_13: type = pattern_type %Derived [symbolic = %pattern_type.loc16_13 (constants.%pattern_type.423)] @@ -4179,7 +4179,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %require_complete.loc16_17: = require_complete_type %Derived [symbolic = %require_complete.loc16_17 (constants.%require_complete.5f4)] // CHECK:STDOUT: %require_complete.loc16_26: = require_complete_type %T [symbolic = %require_complete.loc16_26 (constants.%require_complete.4ae)] // CHECK:STDOUT: -// CHECK:STDOUT: impl fn(%self.param: @F.loc16.%Derived (%Derived), %t.param: @F.loc16.%T (%T)) { +// CHECK:STDOUT: impl fn(%self.param: @Derived.F.%Derived (%Derived), %t.param: @Derived.F.%T (%T)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -4189,17 +4189,17 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %T.loc4_21.1 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.f17 -// CHECK:STDOUT: %F => constants.%F.e26 -// CHECK:STDOUT: %F.specific_fn.loc6_1.2 => constants.%F.specific_fn.892 +// CHECK:STDOUT: %Base.F.type => constants.%Base.F.type +// CHECK:STDOUT: %Base.F => constants.%Base.F +// CHECK:STDOUT: %Base.F.specific_fn.loc6_1.2 => constants.%Base.F.specific_fn // CHECK:STDOUT: %vtable_ptr.loc6_1.2 => constants.%Base.vtable_ptr // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%T) { +// CHECK:STDOUT: specific @Base.F(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %Base => constants.%Base // CHECK:STDOUT: %pattern_type.loc5_16 => constants.%pattern_type.9f7 -// CHECK:STDOUT: %ptr.loc5_32.2 => constants.%ptr.79f +// CHECK:STDOUT: %ptr.loc5_32.1 => constants.%ptr.79f // CHECK:STDOUT: %pattern_type.loc5_28 => constants.%pattern_type.afe // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -4215,15 +4215,15 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %require_complete => constants.%require_complete.97d // CHECK:STDOUT: %Derived => constants.%Derived // CHECK:STDOUT: %Derived.elem => constants.%Derived.elem -// CHECK:STDOUT: %F.type => constants.%F.type.e3f -// CHECK:STDOUT: %F => constants.%F.8d6 -// CHECK:STDOUT: %F.specific_fn.loc17_1.2 => constants.%F.specific_fn.2e6 +// CHECK:STDOUT: %Derived.F.type => constants.%Derived.F.type +// CHECK:STDOUT: %Derived.F => constants.%Derived.F +// CHECK:STDOUT: %Derived.F.specific_fn.loc17_1.2 => constants.%Derived.F.specific_fn // CHECK:STDOUT: %vtable_ptr.loc17_1.2 => constants.%Derived.vtable_ptr // CHECK:STDOUT: %struct_type.base.loc17_1.2 => constants.%struct_type.base.8ea // CHECK:STDOUT: %complete_type.loc17_1.2 => constants.%complete_type.d5d // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc16(constants.%T) { +// CHECK:STDOUT: specific @Derived.F(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %Derived => constants.%Derived // CHECK:STDOUT: %pattern_type.loc16_13 => constants.%pattern_type.423 @@ -4246,10 +4246,10 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %Base.370: type = class_type @Base, @Base(%T) [symbolic] // CHECK:STDOUT: %pattern_type.9f7: type = pattern_type %Base.370 [symbolic] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %T [symbolic] -// CHECK:STDOUT: %F.type.f17: type = fn_type @F.loc5, @Base(%T) [symbolic] -// CHECK:STDOUT: %F.e26: %F.type.f17 = struct_value () [symbolic] +// CHECK:STDOUT: %Base.F.type.f17: type = fn_type @Base.F, @Base(%T) [symbolic] +// CHECK:STDOUT: %Base.F.e26: %Base.F.type.f17 = struct_value () [symbolic] // CHECK:STDOUT: %ptr.454: type = ptr_type [concrete] -// CHECK:STDOUT: %F.specific_fn.892: = specific_function %F.e26, @F.loc5(%T) [symbolic] +// CHECK:STDOUT: %Base.F.specific_fn.892: = specific_function %Base.F.e26, @Base.F(%T) [symbolic] // CHECK:STDOUT: %Base.vtable_ptr.573: ref %ptr.454 = vtable_ptr @Base.vtable, @Base(%T) [symbolic] // CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr.454} [concrete] // CHECK:STDOUT: %complete_type.513: = complete_type_witness %struct_type.vptr [concrete] @@ -4260,18 +4260,18 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %Derived: type = class_type @Derived, @Derived(%T) [symbolic] // CHECK:STDOUT: %ptr.79f: type = ptr_type %T [symbolic] // CHECK:STDOUT: %Base.16b: type = class_type @Base, @Base(%ptr.79f) [symbolic] -// CHECK:STDOUT: %F.type.5df: type = fn_type @F.loc5, @Base(%ptr.79f) [symbolic] -// CHECK:STDOUT: %F.ad0: %F.type.5df = struct_value () [symbolic] +// CHECK:STDOUT: %Base.F.type.5df: type = fn_type @Base.F, @Base(%ptr.79f) [symbolic] +// CHECK:STDOUT: %Base.F.ad0: %Base.F.type.5df = struct_value () [symbolic] // CHECK:STDOUT: %pattern_type.4a0: type = pattern_type %Base.16b [symbolic] // CHECK:STDOUT: %pattern_type.afe: type = pattern_type %ptr.79f [symbolic] -// CHECK:STDOUT: %F.specific_fn.494: = specific_function %F.ad0, @F.loc5(%ptr.79f) [symbolic] +// CHECK:STDOUT: %Base.F.specific_fn.494: = specific_function %Base.F.ad0, @Base.F(%ptr.79f) [symbolic] // CHECK:STDOUT: %Base.vtable_ptr.f98: ref %ptr.454 = vtable_ptr @Base.vtable, @Base(%ptr.79f) [symbolic] // CHECK:STDOUT: %require_complete.fce: = require_complete_type %Base.16b [symbolic] // CHECK:STDOUT: %Derived.elem: type = unbound_element_type %Derived, %Base.16b [symbolic] // CHECK:STDOUT: %pattern_type.423: type = pattern_type %Derived [symbolic] -// CHECK:STDOUT: %F.type.e3f: type = fn_type @F.loc9, @Derived(%T) [symbolic] -// CHECK:STDOUT: %F.8d6: %F.type.e3f = struct_value () [symbolic] -// CHECK:STDOUT: %F.specific_fn.2e6: = specific_function %F.8d6, @F.loc9(%T) [symbolic] +// CHECK:STDOUT: %Derived.F.type: type = fn_type @Derived.F, @Derived(%T) [symbolic] +// CHECK:STDOUT: %Derived.F: %Derived.F.type = struct_value () [symbolic] +// CHECK:STDOUT: %Derived.F.specific_fn: = specific_function %Derived.F, @Derived.F(%T) [symbolic] // CHECK:STDOUT: %Derived.vtable_ptr: ref %ptr.454 = vtable_ptr @Derived.vtable, @Derived(%T) [symbolic] // CHECK:STDOUT: %struct_type.base.d96: type = struct_type {.base: %Base.16b} [symbolic] // CHECK:STDOUT: %complete_type.5dc: = complete_type_witness %struct_type.base.d96 [symbolic] @@ -4309,29 +4309,29 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %T.loc4_21.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_21.1 (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type: type = fn_type @F.loc5, @Base(%T.loc4_21.1) [symbolic = %F.type (constants.%F.type.f17)] -// CHECK:STDOUT: %F: @Base.%F.type (%F.type.f17) = struct_value () [symbolic = %F (constants.%F.e26)] -// CHECK:STDOUT: %F.specific_fn.loc6_1.2: = specific_function %F, @F.loc5(%T.loc4_21.1) [symbolic = %F.specific_fn.loc6_1.2 (constants.%F.specific_fn.892)] +// CHECK:STDOUT: %Base.F.type: type = fn_type @Base.F, @Base(%T.loc4_21.1) [symbolic = %Base.F.type (constants.%Base.F.type.f17)] +// CHECK:STDOUT: %Base.F: @Base.%Base.F.type (%Base.F.type.f17) = struct_value () [symbolic = %Base.F (constants.%Base.F.e26)] +// CHECK:STDOUT: %Base.F.specific_fn.loc6_1.2: = specific_function %Base.F, @Base.F(%T.loc4_21.1) [symbolic = %Base.F.specific_fn.loc6_1.2 (constants.%Base.F.specific_fn.892)] // CHECK:STDOUT: %vtable_ptr.loc6_1.2: ref %ptr.454 = vtable_ptr @Base.vtable, @Base(%T.loc4_21.1) [symbolic = %vtable_ptr.loc6_1.2 (constants.%Base.vtable_ptr.573)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %F.decl: @Base.%F.type (%F.type.f17) = fn_decl @F.loc5 [symbolic = @Base.%F (constants.%F.e26)] { -// CHECK:STDOUT: %self.patt: @F.loc5.%pattern_type.loc5_16 (%pattern_type.9f7) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.loc5.%pattern_type.loc5_16 (%pattern_type.9f7) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %t.patt: @F.loc5.%pattern_type.loc5_28 (%pattern_type.7dc) = binding_pattern t [concrete] -// CHECK:STDOUT: %t.param_patt: @F.loc5.%pattern_type.loc5_28 (%pattern_type.7dc) = value_param_pattern %t.patt, call_param1 [concrete] +// CHECK:STDOUT: %Base.F.decl: @Base.%Base.F.type (%Base.F.type.f17) = fn_decl @Base.F [symbolic = @Base.%Base.F (constants.%Base.F.e26)] { +// CHECK:STDOUT: %self.patt: @Base.F.%pattern_type.loc5_16 (%pattern_type.9f7) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @Base.F.%pattern_type.loc5_16 (%pattern_type.9f7) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %t.patt: @Base.F.%pattern_type.loc5_28 (%pattern_type.7dc) = binding_pattern t [concrete] +// CHECK:STDOUT: %t.param_patt: @Base.F.%pattern_type.loc5_28 (%pattern_type.7dc) = value_param_pattern %t.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @F.loc5.%Base (%Base.370) = value_param call_param0 +// CHECK:STDOUT: %self.param: @Base.F.%Base (%Base.370) = value_param call_param0 // CHECK:STDOUT: %.loc5_22.1: type = splice_block %Self.ref [symbolic = %Base (constants.%Base.370)] { // CHECK:STDOUT: %.loc5_22.2: type = specific_constant constants.%Base.370, @Base(constants.%T) [symbolic = %Base (constants.%Base.370)] // CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc5_22.2 [symbolic = %Base (constants.%Base.370)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.loc5.%Base (%Base.370) = bind_name self, %self.param -// CHECK:STDOUT: %t.param: @F.loc5.%T (%T) = value_param call_param1 +// CHECK:STDOUT: %self: @Base.F.%Base (%Base.370) = bind_name self, %self.param +// CHECK:STDOUT: %t.param: @Base.F.%T (%T) = value_param call_param1 // CHECK:STDOUT: %T.ref: type = name_ref T, @Base.%T.loc4_21.2 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %t: @F.loc5.%T (%T) = bind_name t, %t.param +// CHECK:STDOUT: %t: @Base.F.%T (%T) = bind_name t, %t.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F.specific_fn.loc6_1.1: = specific_function %F.decl, @F.loc5(constants.%T) [symbolic = %F.specific_fn.loc6_1.2 (constants.%F.specific_fn.892)] +// CHECK:STDOUT: %Base.F.specific_fn.loc6_1.1: = specific_function %Base.F.decl, @Base.F(constants.%T) [symbolic = %Base.F.specific_fn.loc6_1.2 (constants.%Base.F.specific_fn.892)] // CHECK:STDOUT: %vtable_ptr.loc6_1.1: ref %ptr.454 = vtable_ptr @Base.vtable, @Base(constants.%T) [symbolic = %vtable_ptr.loc6_1.2 (constants.%Base.vtable_ptr.573)] // CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr.454} [concrete = constants.%struct_type.vptr] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.vptr [concrete = constants.%complete_type.513] @@ -4341,7 +4341,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base.370 // CHECK:STDOUT: .T = -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %Base.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -4354,9 +4354,9 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %require_complete: = require_complete_type %Base.loc8_23.2 [symbolic = %require_complete (constants.%require_complete.fce)] // CHECK:STDOUT: %Derived: type = class_type @Derived, @Derived(%T.loc7_15.1) [symbolic = %Derived (constants.%Derived)] // CHECK:STDOUT: %Derived.elem: type = unbound_element_type %Derived, %Base.loc8_23.2 [symbolic = %Derived.elem (constants.%Derived.elem)] -// CHECK:STDOUT: %F.type: type = fn_type @F.loc9, @Derived(%T.loc7_15.1) [symbolic = %F.type (constants.%F.type.e3f)] -// CHECK:STDOUT: %F: @Derived.%F.type (%F.type.e3f) = struct_value () [symbolic = %F (constants.%F.8d6)] -// CHECK:STDOUT: %F.specific_fn.loc10_1.2: = specific_function %F, @F.loc9(%T.loc7_15.1) [symbolic = %F.specific_fn.loc10_1.2 (constants.%F.specific_fn.2e6)] +// CHECK:STDOUT: %Derived.F.type: type = fn_type @Derived.F, @Derived(%T.loc7_15.1) [symbolic = %Derived.F.type (constants.%Derived.F.type)] +// CHECK:STDOUT: %Derived.F: @Derived.%Derived.F.type (%Derived.F.type) = struct_value () [symbolic = %Derived.F (constants.%Derived.F)] +// CHECK:STDOUT: %Derived.F.specific_fn.loc10_1.2: = specific_function %Derived.F, @Derived.F(%T.loc7_15.1) [symbolic = %Derived.F.specific_fn.loc10_1.2 (constants.%Derived.F.specific_fn)] // CHECK:STDOUT: %vtable_ptr.loc10_1.2: ref %ptr.454 = vtable_ptr @Derived.vtable, @Derived(%T.loc7_15.1) [symbolic = %vtable_ptr.loc10_1.2 (constants.%Derived.vtable_ptr)] // CHECK:STDOUT: %struct_type.base.loc10_1.2: type = struct_type {.base: @Derived.%Base.loc8_23.2 (%Base.16b)} [symbolic = %struct_type.base.loc10_1.2 (constants.%struct_type.base.d96)] // CHECK:STDOUT: %complete_type.loc10_1.2: = complete_type_witness %struct_type.base.loc10_1.2 [symbolic = %complete_type.loc10_1.2 (constants.%complete_type.5dc)] @@ -4367,26 +4367,26 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %ptr.loc8_22.1: type = ptr_type %T.ref [symbolic = %ptr.loc8_22.2 (constants.%ptr.79f)] // CHECK:STDOUT: %Base.loc8_23.1: type = class_type @Base, @Base(constants.%ptr.79f) [symbolic = %Base.loc8_23.2 (constants.%Base.16b)] // CHECK:STDOUT: %.loc8: @Derived.%Derived.elem (%Derived.elem) = base_decl %Base.loc8_23.1, element0 [concrete] -// CHECK:STDOUT: %F.decl: @Derived.%F.type (%F.type.e3f) = fn_decl @F.loc9 [symbolic = @Derived.%F (constants.%F.8d6)] { -// CHECK:STDOUT: %self.patt: @F.loc9.%pattern_type.loc9_13 (%pattern_type.423) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.loc9.%pattern_type.loc9_13 (%pattern_type.423) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %t.patt: @F.loc9.%pattern_type.loc9_25 (%pattern_type.afe) = binding_pattern t [concrete] -// CHECK:STDOUT: %t.param_patt: @F.loc9.%pattern_type.loc9_25 (%pattern_type.afe) = value_param_pattern %t.patt, call_param1 [concrete] +// CHECK:STDOUT: %Derived.F.decl: @Derived.%Derived.F.type (%Derived.F.type) = fn_decl @Derived.F [symbolic = @Derived.%Derived.F (constants.%Derived.F)] { +// CHECK:STDOUT: %self.patt: @Derived.F.%pattern_type.loc9_13 (%pattern_type.423) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @Derived.F.%pattern_type.loc9_13 (%pattern_type.423) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %t.patt: @Derived.F.%pattern_type.loc9_25 (%pattern_type.afe) = binding_pattern t [concrete] +// CHECK:STDOUT: %t.param_patt: @Derived.F.%pattern_type.loc9_25 (%pattern_type.afe) = value_param_pattern %t.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @F.loc9.%Derived (%Derived) = value_param call_param0 +// CHECK:STDOUT: %self.param: @Derived.F.%Derived (%Derived) = value_param call_param0 // CHECK:STDOUT: %.loc9_19.1: type = splice_block %Self.ref [symbolic = %Derived (constants.%Derived)] { // CHECK:STDOUT: %.loc9_19.2: type = specific_constant constants.%Derived, @Derived(constants.%T) [symbolic = %Derived (constants.%Derived)] // CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc9_19.2 [symbolic = %Derived (constants.%Derived)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.loc9.%Derived (%Derived) = bind_name self, %self.param -// CHECK:STDOUT: %t.param: @F.loc9.%ptr.loc9_28 (%ptr.79f) = value_param call_param1 +// CHECK:STDOUT: %self: @Derived.F.%Derived (%Derived) = bind_name self, %self.param +// CHECK:STDOUT: %t.param: @Derived.F.%ptr.loc9_28 (%ptr.79f) = value_param call_param1 // CHECK:STDOUT: %.loc9_29: type = splice_block %ptr.loc9_29 [symbolic = %ptr.loc9_28 (constants.%ptr.79f)] { // CHECK:STDOUT: %T.ref: type = name_ref T, @Derived.%T.loc7_15.2 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %ptr.loc9_29: type = ptr_type %T.ref [symbolic = %ptr.loc9_28 (constants.%ptr.79f)] // CHECK:STDOUT: } -// CHECK:STDOUT: %t: @F.loc9.%ptr.loc9_28 (%ptr.79f) = bind_name t, %t.param +// CHECK:STDOUT: %t: @Derived.F.%ptr.loc9_28 (%ptr.79f) = bind_name t, %t.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F.specific_fn.loc10_1.1: = specific_function %F.decl, @F.loc9(constants.%T) [symbolic = %F.specific_fn.loc10_1.2 (constants.%F.specific_fn.2e6)] +// CHECK:STDOUT: %Derived.F.specific_fn.loc10_1.1: = specific_function %Derived.F.decl, @Derived.F(constants.%T) [symbolic = %Derived.F.specific_fn.loc10_1.2 (constants.%Derived.F.specific_fn)] // CHECK:STDOUT: %vtable_ptr.loc10_1.1: ref %ptr.454 = vtable_ptr @Derived.vtable, @Derived(constants.%T) [symbolic = %vtable_ptr.loc10_1.2 (constants.%Derived.vtable_ptr)] // CHECK:STDOUT: %struct_type.base.loc10_1.1: type = struct_type {.base: %Base.16b} [symbolic = %struct_type.base.loc10_1.2 (constants.%struct_type.base.d96)] // CHECK:STDOUT: %complete_type.loc10_1.1: = complete_type_witness %struct_type.base.loc10_1.1 [symbolic = %complete_type.loc10_1.2 (constants.%complete_type.5dc)] @@ -4398,20 +4398,20 @@ var v: Base(T1) = {}; // CHECK:STDOUT: .Base = // CHECK:STDOUT: .T = // CHECK:STDOUT: .base = %.loc8 -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %Derived.F.decl // CHECK:STDOUT: extend %Base.loc8_23.1 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @Base.vtable { -// CHECK:STDOUT: @Base.%F.specific_fn.loc6_1.1 +// CHECK:STDOUT: @Base.%Base.F.specific_fn.loc6_1.1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @Derived.vtable { -// CHECK:STDOUT: @Derived.%F.specific_fn.loc10_1.1 +// CHECK:STDOUT: @Derived.%Derived.F.specific_fn.loc10_1.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic virtual fn @F.loc5(@Base.%T.loc4_21.2: type) { +// CHECK:STDOUT: generic virtual fn @Base.F(@Base.%T.loc4_21.2: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Base: type = class_type @Base, @Base(%T) [symbolic = %Base (constants.%Base.370)] // CHECK:STDOUT: %pattern_type.loc5_16: type = pattern_type %Base [symbolic = %pattern_type.loc5_16 (constants.%pattern_type.9f7)] @@ -4421,13 +4421,13 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %require_complete.loc5_20: = require_complete_type %Base [symbolic = %require_complete.loc5_20 (constants.%require_complete.97d)] // CHECK:STDOUT: %require_complete.loc5_29: = require_complete_type %T [symbolic = %require_complete.loc5_29 (constants.%require_complete.4ae)] // CHECK:STDOUT: -// CHECK:STDOUT: virtual fn(%self.param: @F.loc5.%Base (%Base.370), %t.param: @F.loc5.%T (%T)) { +// CHECK:STDOUT: virtual fn(%self.param: @Base.F.%Base (%Base.370), %t.param: @Base.F.%T (%T)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl fn @F.loc9(@Derived.%T.loc7_15.2: type) { +// CHECK:STDOUT: generic impl fn @Derived.F(@Derived.%T.loc7_15.2: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Derived: type = class_type @Derived, @Derived(%T) [symbolic = %Derived (constants.%Derived)] // CHECK:STDOUT: %pattern_type.loc9_13: type = pattern_type %Derived [symbolic = %pattern_type.loc9_13 (constants.%pattern_type.423)] @@ -4440,7 +4440,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %require_complete.loc9_17: = require_complete_type %Derived [symbolic = %require_complete.loc9_17 (constants.%require_complete.5f4)] // CHECK:STDOUT: %require_complete.loc9_26: = require_complete_type %ptr.loc9_28 [symbolic = %require_complete.loc9_26 (constants.%require_complete.6e5)] // CHECK:STDOUT: -// CHECK:STDOUT: impl fn(%self.param: @F.loc9.%Derived (%Derived), %t.param: @F.loc9.%ptr.loc9_28 (%ptr.79f)) { +// CHECK:STDOUT: impl fn(%self.param: @Derived.F.%Derived (%Derived), %t.param: @Derived.F.%ptr.loc9_28 (%ptr.79f)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -4450,13 +4450,13 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %T.loc4_21.1 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.f17 -// CHECK:STDOUT: %F => constants.%F.e26 -// CHECK:STDOUT: %F.specific_fn.loc6_1.2 => constants.%F.specific_fn.892 +// CHECK:STDOUT: %Base.F.type => constants.%Base.F.type.f17 +// CHECK:STDOUT: %Base.F => constants.%Base.F.e26 +// CHECK:STDOUT: %Base.F.specific_fn.loc6_1.2 => constants.%Base.F.specific_fn.892 // CHECK:STDOUT: %vtable_ptr.loc6_1.2 => constants.%Base.vtable_ptr.573 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%T) { +// CHECK:STDOUT: specific @Base.F(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %Base => constants.%Base.370 // CHECK:STDOUT: %pattern_type.loc5_16 => constants.%pattern_type.9f7 @@ -4476,9 +4476,9 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %require_complete => constants.%require_complete.fce // CHECK:STDOUT: %Derived => constants.%Derived // CHECK:STDOUT: %Derived.elem => constants.%Derived.elem -// CHECK:STDOUT: %F.type => constants.%F.type.e3f -// CHECK:STDOUT: %F => constants.%F.8d6 -// CHECK:STDOUT: %F.specific_fn.loc10_1.2 => constants.%F.specific_fn.2e6 +// CHECK:STDOUT: %Derived.F.type => constants.%Derived.F.type +// CHECK:STDOUT: %Derived.F => constants.%Derived.F +// CHECK:STDOUT: %Derived.F.specific_fn.loc10_1.2 => constants.%Derived.F.specific_fn // CHECK:STDOUT: %vtable_ptr.loc10_1.2 => constants.%Derived.vtable_ptr // CHECK:STDOUT: %struct_type.base.loc10_1.2 => constants.%struct_type.base.d96 // CHECK:STDOUT: %complete_type.loc10_1.2 => constants.%complete_type.5dc @@ -4488,13 +4488,13 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %T.loc4_21.1 => constants.%ptr.79f // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.5df -// CHECK:STDOUT: %F => constants.%F.ad0 -// CHECK:STDOUT: %F.specific_fn.loc6_1.2 => constants.%F.specific_fn.494 +// CHECK:STDOUT: %Base.F.type => constants.%Base.F.type.5df +// CHECK:STDOUT: %Base.F => constants.%Base.F.ad0 +// CHECK:STDOUT: %Base.F.specific_fn.loc6_1.2 => constants.%Base.F.specific_fn.494 // CHECK:STDOUT: %vtable_ptr.loc6_1.2 => constants.%Base.vtable_ptr.f98 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%ptr.79f) { +// CHECK:STDOUT: specific @Base.F(constants.%ptr.79f) { // CHECK:STDOUT: %T => constants.%ptr.79f // CHECK:STDOUT: %Base => constants.%Base.16b // CHECK:STDOUT: %pattern_type.loc5_16 => constants.%pattern_type.4a0 @@ -4505,7 +4505,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %require_complete.loc5_29 => constants.%require_complete.6e5 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc9(constants.%T) { +// CHECK:STDOUT: specific @Derived.F(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %Derived => constants.%Derived // CHECK:STDOUT: %pattern_type.loc9_13 => constants.%pattern_type.423 @@ -4528,25 +4528,25 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %Base.generic: %Base.type = struct_value () [concrete] // CHECK:STDOUT: %Base.370: type = class_type @Base, @Base(%T) [symbolic] // CHECK:STDOUT: %pattern_type.9f7: type = pattern_type %Base.370 [symbolic] -// CHECK:STDOUT: %F.type.f17: type = fn_type @F.loc5, @Base(%T) [symbolic] -// CHECK:STDOUT: %F.e26: %F.type.f17 = struct_value () [symbolic] +// CHECK:STDOUT: %Base.F.type.f17: type = fn_type @Base.F, @Base(%T) [symbolic] +// CHECK:STDOUT: %Base.F.e26: %Base.F.type.f17 = struct_value () [symbolic] // CHECK:STDOUT: %ptr.454: type = ptr_type [concrete] -// CHECK:STDOUT: %F.specific_fn.892: = specific_function %F.e26, @F.loc5(%T) [symbolic] +// CHECK:STDOUT: %Base.F.specific_fn.892: = specific_function %Base.F.e26, @Base.F(%T) [symbolic] // CHECK:STDOUT: %Base.vtable_ptr.573: ref %ptr.454 = vtable_ptr @Base.vtable, @Base(%T) [symbolic] // CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr.454} [concrete] // CHECK:STDOUT: %complete_type.513: = complete_type_witness %struct_type.vptr [concrete] // CHECK:STDOUT: %T1: type = class_type @T1 [concrete] // CHECK:STDOUT: %Derived: type = class_type @Derived [concrete] // CHECK:STDOUT: %Base.ea5: type = class_type @Base, @Base(%T1) [concrete] -// CHECK:STDOUT: %F.type.d82: type = fn_type @F.loc5, @Base(%T1) [concrete] -// CHECK:STDOUT: %F.d25: %F.type.d82 = struct_value () [concrete] +// CHECK:STDOUT: %Base.F.type.d82: type = fn_type @Base.F, @Base(%T1) [concrete] +// CHECK:STDOUT: %Base.F.d25: %Base.F.type.d82 = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.3bf: type = pattern_type %Base.ea5 [concrete] -// CHECK:STDOUT: %F.specific_fn.210: = specific_function %F.d25, @F.loc5(%T1) [concrete] +// CHECK:STDOUT: %Base.F.specific_fn.210: = specific_function %Base.F.d25, @Base.F(%T1) [concrete] // CHECK:STDOUT: %Base.vtable_ptr.bfe: ref %ptr.454 = vtable_ptr @Base.vtable, @Base(%T1) [concrete] // CHECK:STDOUT: %Derived.elem: type = unbound_element_type %Derived, %Base.ea5 [concrete] // CHECK:STDOUT: %pattern_type.fb9: type = pattern_type %Derived [concrete] -// CHECK:STDOUT: %F.type.5da: type = fn_type @F.loc12 [concrete] -// CHECK:STDOUT: %F.fa3: %F.type.5da = struct_value () [concrete] +// CHECK:STDOUT: %Derived.F.type: type = fn_type @Derived.F [concrete] +// CHECK:STDOUT: %Derived.F: %Derived.F.type = struct_value () [concrete] // CHECK:STDOUT: %Derived.vtable_ptr: ref %ptr.454 = vtable_ptr @Derived.vtable [concrete] // CHECK:STDOUT: %struct_type.base.fda: type = struct_type {.base: %Base.ea5} [concrete] // CHECK:STDOUT: %complete_type.65a: = complete_type_witness %struct_type.base.fda [concrete] @@ -4580,24 +4580,24 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %T.loc4_21.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_21.1 (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type: type = fn_type @F.loc5, @Base(%T.loc4_21.1) [symbolic = %F.type (constants.%F.type.f17)] -// CHECK:STDOUT: %F: @Base.%F.type (%F.type.f17) = struct_value () [symbolic = %F (constants.%F.e26)] -// CHECK:STDOUT: %F.specific_fn.loc6_1.2: = specific_function %F, @F.loc5(%T.loc4_21.1) [symbolic = %F.specific_fn.loc6_1.2 (constants.%F.specific_fn.892)] +// CHECK:STDOUT: %Base.F.type: type = fn_type @Base.F, @Base(%T.loc4_21.1) [symbolic = %Base.F.type (constants.%Base.F.type.f17)] +// CHECK:STDOUT: %Base.F: @Base.%Base.F.type (%Base.F.type.f17) = struct_value () [symbolic = %Base.F (constants.%Base.F.e26)] +// CHECK:STDOUT: %Base.F.specific_fn.loc6_1.2: = specific_function %Base.F, @Base.F(%T.loc4_21.1) [symbolic = %Base.F.specific_fn.loc6_1.2 (constants.%Base.F.specific_fn.892)] // CHECK:STDOUT: %vtable_ptr.loc6_1.2: ref %ptr.454 = vtable_ptr @Base.vtable, @Base(%T.loc4_21.1) [symbolic = %vtable_ptr.loc6_1.2 (constants.%Base.vtable_ptr.573)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %F.decl: @Base.%F.type (%F.type.f17) = fn_decl @F.loc5 [symbolic = @Base.%F (constants.%F.e26)] { -// CHECK:STDOUT: %self.patt: @F.loc5.%pattern_type (%pattern_type.9f7) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.loc5.%pattern_type (%pattern_type.9f7) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %Base.F.decl: @Base.%Base.F.type (%Base.F.type.f17) = fn_decl @Base.F [symbolic = @Base.%Base.F (constants.%Base.F.e26)] { +// CHECK:STDOUT: %self.patt: @Base.F.%pattern_type (%pattern_type.9f7) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @Base.F.%pattern_type (%pattern_type.9f7) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @F.loc5.%Base (%Base.370) = value_param call_param0 +// CHECK:STDOUT: %self.param: @Base.F.%Base (%Base.370) = value_param call_param0 // CHECK:STDOUT: %.loc5_23.1: type = splice_block %Self.ref [symbolic = %Base (constants.%Base.370)] { // CHECK:STDOUT: %.loc5_23.2: type = specific_constant constants.%Base.370, @Base(constants.%T) [symbolic = %Base (constants.%Base.370)] // CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc5_23.2 [symbolic = %Base (constants.%Base.370)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.loc5.%Base (%Base.370) = bind_name self, %self.param +// CHECK:STDOUT: %self: @Base.F.%Base (%Base.370) = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F.specific_fn.loc6_1.1: = specific_function %F.decl, @F.loc5(constants.%T) [symbolic = %F.specific_fn.loc6_1.2 (constants.%F.specific_fn.892)] +// CHECK:STDOUT: %Base.F.specific_fn.loc6_1.1: = specific_function %Base.F.decl, @Base.F(constants.%T) [symbolic = %Base.F.specific_fn.loc6_1.2 (constants.%Base.F.specific_fn.892)] // CHECK:STDOUT: %vtable_ptr.loc6_1.1: ref %ptr.454 = vtable_ptr @Base.vtable, @Base(constants.%T) [symbolic = %vtable_ptr.loc6_1.2 (constants.%Base.vtable_ptr.573)] // CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr.454} [concrete = constants.%struct_type.vptr] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.vptr [concrete = constants.%complete_type.513] @@ -4606,7 +4606,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base.370 -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %Base.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -4617,7 +4617,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %T1.ref: type = name_ref T1, file.%T1.decl [concrete = constants.%T1] // CHECK:STDOUT: %Base: type = class_type @Base, @Base(constants.%T1) [concrete = constants.%Base.ea5] // CHECK:STDOUT: %.loc11: %Derived.elem = base_decl %Base, element0 [concrete] -// CHECK:STDOUT: %F.decl: %F.type.5da = fn_decl @F.loc12 [concrete = constants.%F.fa3] { +// CHECK:STDOUT: %Derived.F.decl: %Derived.F.type = fn_decl @Derived.F [concrete = constants.%Derived.F] { // CHECK:STDOUT: %self.patt: %pattern_type.fb9 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.fb9 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -4636,27 +4636,27 @@ var v: Base(T1) = {}; // CHECK:STDOUT: .Base = // CHECK:STDOUT: .T1 = // CHECK:STDOUT: .base = %.loc11 -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %Derived.F.decl // CHECK:STDOUT: extend %Base // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @Base.vtable { -// CHECK:STDOUT: @Base.%F.specific_fn.loc6_1.1 +// CHECK:STDOUT: @Base.%Base.F.specific_fn.loc6_1.1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @Derived.vtable { -// CHECK:STDOUT: @Derived.%F.decl +// CHECK:STDOUT: @Derived.%Derived.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic abstract fn @F.loc5(@Base.%T.loc4_21.2: type) { +// CHECK:STDOUT: generic abstract fn @Base.F(@Base.%T.loc4_21.2: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Base: type = class_type @Base, @Base(%T) [symbolic = %Base (constants.%Base.370)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Base [symbolic = %pattern_type (constants.%pattern_type.9f7)] // CHECK:STDOUT: -// CHECK:STDOUT: abstract fn(%self.param: @F.loc5.%Base (%Base.370)); +// CHECK:STDOUT: abstract fn(%self.param: @Base.F.%Base (%Base.370)); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl fn @F.loc12(%self.param: %Derived) { +// CHECK:STDOUT: impl fn @Derived.F(%self.param: %Derived) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -4665,7 +4665,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %T.loc4_21.1 => constants.%T // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%T) { +// CHECK:STDOUT: specific @Base.F(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %Base => constants.%Base.370 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.9f7 @@ -4675,13 +4675,13 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %T.loc4_21.1 => constants.%T1 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.d82 -// CHECK:STDOUT: %F => constants.%F.d25 -// CHECK:STDOUT: %F.specific_fn.loc6_1.2 => constants.%F.specific_fn.210 +// CHECK:STDOUT: %Base.F.type => constants.%Base.F.type.d82 +// CHECK:STDOUT: %Base.F => constants.%Base.F.d25 +// CHECK:STDOUT: %Base.F.specific_fn.loc6_1.2 => constants.%Base.F.specific_fn.210 // CHECK:STDOUT: %vtable_ptr.loc6_1.2 => constants.%Base.vtable_ptr.bfe // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%T1) { +// CHECK:STDOUT: specific @Base.F(constants.%T1) { // CHECK:STDOUT: %T => constants.%T1 // CHECK:STDOUT: %Base => constants.%Base.ea5 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.3bf @@ -4696,10 +4696,10 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %Base.generic: %Base.type = struct_value () [concrete] // CHECK:STDOUT: %Base: type = class_type @Base, @Base(%T) [symbolic] // CHECK:STDOUT: %pattern_type.9f7: type = pattern_type %Base [symbolic] -// CHECK:STDOUT: %F.type: type = fn_type @F, @Base(%T) [symbolic] -// CHECK:STDOUT: %F: %F.type = struct_value () [symbolic] +// CHECK:STDOUT: %Base.F.type: type = fn_type @Base.F, @Base(%T) [symbolic] +// CHECK:STDOUT: %Base.F: %Base.F.type = struct_value () [symbolic] // CHECK:STDOUT: %ptr.454: type = ptr_type [concrete] -// CHECK:STDOUT: %F.specific_fn: = specific_function %F, @F(%T) [symbolic] +// CHECK:STDOUT: %Base.F.specific_fn: = specific_function %Base.F, @Base.F(%T) [symbolic] // CHECK:STDOUT: %Base.vtable_ptr: ref %ptr.454 = vtable_ptr @Base.vtable, @Base(%T) [symbolic] // CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr.454} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.vptr [concrete] @@ -4730,24 +4730,24 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %T.loc4_17.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_17.1 (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type: type = fn_type @F, @Base(%T.loc4_17.1) [symbolic = %F.type (constants.%F.type)] -// CHECK:STDOUT: %F: @Base.%F.type (%F.type) = struct_value () [symbolic = %F (constants.%F)] -// CHECK:STDOUT: %F.specific_fn.loc6_1.2: = specific_function %F, @F(%T.loc4_17.1) [symbolic = %F.specific_fn.loc6_1.2 (constants.%F.specific_fn)] +// CHECK:STDOUT: %Base.F.type: type = fn_type @Base.F, @Base(%T.loc4_17.1) [symbolic = %Base.F.type (constants.%Base.F.type)] +// CHECK:STDOUT: %Base.F: @Base.%Base.F.type (%Base.F.type) = struct_value () [symbolic = %Base.F (constants.%Base.F)] +// CHECK:STDOUT: %Base.F.specific_fn.loc6_1.2: = specific_function %Base.F, @Base.F(%T.loc4_17.1) [symbolic = %Base.F.specific_fn.loc6_1.2 (constants.%Base.F.specific_fn)] // CHECK:STDOUT: %vtable_ptr.loc6_1.2: ref %ptr.454 = vtable_ptr @Base.vtable, @Base(%T.loc4_17.1) [symbolic = %vtable_ptr.loc6_1.2 (constants.%Base.vtable_ptr)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %F.decl: @Base.%F.type (%F.type) = fn_decl @F [symbolic = @Base.%F (constants.%F)] { -// CHECK:STDOUT: %self.patt: @F.%pattern_type (%pattern_type.9f7) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.%pattern_type (%pattern_type.9f7) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %Base.F.decl: @Base.%Base.F.type (%Base.F.type) = fn_decl @Base.F [symbolic = @Base.%Base.F (constants.%Base.F)] { +// CHECK:STDOUT: %self.patt: @Base.F.%pattern_type (%pattern_type.9f7) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @Base.F.%pattern_type (%pattern_type.9f7) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @F.%Base (%Base) = value_param call_param0 +// CHECK:STDOUT: %self.param: @Base.F.%Base (%Base) = value_param call_param0 // CHECK:STDOUT: %.loc5_22.1: type = splice_block %Self.ref [symbolic = %Base (constants.%Base)] { // CHECK:STDOUT: %.loc5_22.2: type = specific_constant constants.%Base, @Base(constants.%T) [symbolic = %Base (constants.%Base)] // CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc5_22.2 [symbolic = %Base (constants.%Base)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.%Base (%Base) = bind_name self, %self.param +// CHECK:STDOUT: %self: @Base.F.%Base (%Base) = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F.specific_fn.loc6_1.1: = specific_function %F.decl, @F(constants.%T) [symbolic = %F.specific_fn.loc6_1.2 (constants.%F.specific_fn)] +// CHECK:STDOUT: %Base.F.specific_fn.loc6_1.1: = specific_function %Base.F.decl, @Base.F(constants.%T) [symbolic = %Base.F.specific_fn.loc6_1.2 (constants.%Base.F.specific_fn)] // CHECK:STDOUT: %vtable_ptr.loc6_1.1: ref %ptr.454 = vtable_ptr @Base.vtable, @Base(constants.%T) [symbolic = %vtable_ptr.loc6_1.2 (constants.%Base.vtable_ptr)] // CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr.454} [concrete = constants.%struct_type.vptr] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.vptr [concrete = constants.%complete_type] @@ -4756,15 +4756,15 @@ var v: Base(T1) = {}; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %Base.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @Base.vtable { -// CHECK:STDOUT: @Base.%F.specific_fn.loc6_1.1 +// CHECK:STDOUT: @Base.%Base.F.specific_fn.loc6_1.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic virtual fn @F(@Base.%T.loc4_17.2: type) { +// CHECK:STDOUT: generic virtual fn @Base.F(@Base.%T.loc4_17.2: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Base: type = class_type @Base, @Base(%T) [symbolic = %Base (constants.%Base)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Base [symbolic = %pattern_type (constants.%pattern_type.9f7)] @@ -4772,7 +4772,7 @@ var v: Base(T1) = {}; // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %Base [symbolic = %require_complete (constants.%require_complete)] // CHECK:STDOUT: -// CHECK:STDOUT: virtual fn(%self.param: @F.%Base (%Base)) { +// CHECK:STDOUT: virtual fn(%self.param: @Base.F.%Base (%Base)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -4782,13 +4782,13 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %T.loc4_17.1 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type -// CHECK:STDOUT: %F => constants.%F -// CHECK:STDOUT: %F.specific_fn.loc6_1.2 => constants.%F.specific_fn +// CHECK:STDOUT: %Base.F.type => constants.%Base.F.type +// CHECK:STDOUT: %Base.F => constants.%Base.F +// CHECK:STDOUT: %Base.F.specific_fn.loc6_1.2 => constants.%Base.F.specific_fn // CHECK:STDOUT: %vtable_ptr.loc6_1.2 => constants.%Base.vtable_ptr // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%T) { +// CHECK:STDOUT: specific @Base.F(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %Base => constants.%Base // CHECK:STDOUT: %pattern_type => constants.%pattern_type.9f7 @@ -4808,18 +4808,18 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.vptr [concrete] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %Base.370: type = class_type @Base, @Base(%T) [symbolic] -// CHECK:STDOUT: %F.type.f17: type = fn_type @F, @Base(%T) [symbolic] -// CHECK:STDOUT: %F.e26: %F.type.f17 = struct_value () [symbolic] +// CHECK:STDOUT: %Base.F.type.f17: type = fn_type @Base.F, @Base(%T) [symbolic] +// CHECK:STDOUT: %Base.F.e26: %Base.F.type.f17 = struct_value () [symbolic] // CHECK:STDOUT: %pattern_type.9f7: type = pattern_type %Base.370 [symbolic] -// CHECK:STDOUT: %F.specific_fn.892: = specific_function %F.e26, @F(%T) [symbolic] +// CHECK:STDOUT: %Base.F.specific_fn.892: = specific_function %Base.F.e26, @Base.F(%T) [symbolic] // CHECK:STDOUT: %Base.vtable_ptr.f4433b.1: ref %ptr.454 = vtable_ptr @Base.vtable.1, @Base(%T) [symbolic] // CHECK:STDOUT: %require_complete: = require_complete_type %Base.370 [symbolic] // CHECK:STDOUT: %Base.vtable_ptr.f4433b.2: ref %ptr.454 = vtable_ptr @Base.vtable.2, @Base(%T) [symbolic] // CHECK:STDOUT: %Base.ea5: type = class_type @Base, @Base(%T1) [concrete] -// CHECK:STDOUT: %F.type.d82: type = fn_type @F, @Base(%T1) [concrete] -// CHECK:STDOUT: %F.d25: %F.type.d82 = struct_value () [concrete] +// CHECK:STDOUT: %Base.F.type.d82: type = fn_type @Base.F, @Base(%T1) [concrete] +// CHECK:STDOUT: %Base.F.d25: %Base.F.type.d82 = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.3bf: type = pattern_type %Base.ea5 [concrete] -// CHECK:STDOUT: %F.specific_fn.210: = specific_function %F.d25, @F(%T1) [concrete] +// CHECK:STDOUT: %Base.F.specific_fn.210: = specific_function %Base.F.d25, @Base.F(%T1) [concrete] // CHECK:STDOUT: %Base.vtable_ptr.5be: ref %ptr.454 = vtable_ptr @Base.vtable.1, @Base(%T1) [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %Base.vtable_ptr.f4433b.3: ref %ptr.454 = vtable_ptr @Base.vtable.3, @Base(%T) [symbolic] @@ -4870,9 +4870,9 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type: type = fn_type @F, @Base(%T) [symbolic = %F.type (constants.%F.type.f17)] -// CHECK:STDOUT: %F: @Base.%F.type (%F.type.f17) = struct_value () [symbolic = %F (constants.%F.e26)] -// CHECK:STDOUT: %F.specific_fn: = specific_function %F, @F(%T) [symbolic = %F.specific_fn (constants.%F.specific_fn.892)] +// CHECK:STDOUT: %Base.F.type: type = fn_type @Base.F, @Base(%T) [symbolic = %Base.F.type (constants.%Base.F.type.f17)] +// CHECK:STDOUT: %Base.F: @Base.%Base.F.type (%Base.F.type.f17) = struct_value () [symbolic = %Base.F (constants.%Base.F.e26)] +// CHECK:STDOUT: %Base.F.specific_fn: = specific_function %Base.F, @Base.F(%T) [symbolic = %Base.F.specific_fn (constants.%Base.F.specific_fn.892)] // CHECK:STDOUT: %vtable_ptr: ref %ptr.454 = vtable_ptr @Base.vtable.1, @Base(%T) [symbolic = %vtable_ptr (constants.%Base.vtable_ptr.f4433b.1)] // CHECK:STDOUT: // CHECK:STDOUT: class { @@ -4886,18 +4886,18 @@ var v: Base(T1) = {}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @Base.vtable.1 { -// CHECK:STDOUT: constants.%F.specific_fn.892 +// CHECK:STDOUT: constants.%Base.F.specific_fn.892 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @Base.vtable.2 { -// CHECK:STDOUT: constants.%F.specific_fn.892 +// CHECK:STDOUT: constants.%Base.F.specific_fn.892 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: vtable @Base.vtable.3 { -// CHECK:STDOUT: constants.%F.specific_fn.892 +// CHECK:STDOUT: constants.%Base.F.specific_fn.892 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(imports.%Main.import_ref.5ab3ec.2: type) [from "generic_lib.carbon"] { +// CHECK:STDOUT: generic fn @Base.F(imports.%Main.import_ref.5ab3ec.2: type) [from "generic_lib.carbon"] { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Base: type = class_type @Base, @Base(%T) [symbolic = %Base (constants.%Base.370)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Base [symbolic = %pattern_type (constants.%pattern_type.9f7)] @@ -4923,13 +4923,13 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.f17 -// CHECK:STDOUT: %F => constants.%F.e26 -// CHECK:STDOUT: %F.specific_fn => constants.%F.specific_fn.892 +// CHECK:STDOUT: %Base.F.type => constants.%Base.F.type.f17 +// CHECK:STDOUT: %Base.F => constants.%Base.F.e26 +// CHECK:STDOUT: %Base.F.specific_fn => constants.%Base.F.specific_fn.892 // CHECK:STDOUT: %vtable_ptr => constants.%Base.vtable_ptr.f4433b.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%T) { +// CHECK:STDOUT: specific @Base.F(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %Base => constants.%Base.370 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.9f7 @@ -4942,13 +4942,13 @@ var v: Base(T1) = {}; // CHECK:STDOUT: %T => constants.%T1 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.d82 -// CHECK:STDOUT: %F => constants.%F.d25 -// CHECK:STDOUT: %F.specific_fn => constants.%F.specific_fn.210 +// CHECK:STDOUT: %Base.F.type => constants.%Base.F.type.d82 +// CHECK:STDOUT: %Base.F => constants.%Base.F.d25 +// CHECK:STDOUT: %Base.F.specific_fn => constants.%Base.F.specific_fn.210 // CHECK:STDOUT: %vtable_ptr => constants.%Base.vtable_ptr.5be // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%T1) { +// CHECK:STDOUT: specific @Base.F(constants.%T1) { // CHECK:STDOUT: %T => constants.%T1 // CHECK:STDOUT: %Base => constants.%Base.ea5 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.3bf diff --git a/toolchain/check/testdata/deduce/array.carbon b/toolchain/check/testdata/deduce/array.carbon index c96152ed3328..69b1eb1d7e68 100644 --- a/toolchain/check/testdata/deduce/array.carbon +++ b/toolchain/check/testdata/deduce/array.carbon @@ -150,18 +150,18 @@ fn G() -> i32 { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] @@ -176,13 +176,13 @@ fn G() -> i32 { // CHECK:STDOUT: %array: %array_type.002 = tuple_value (%C.val, %C.val, %C.val) [concrete] // CHECK:STDOUT: %F.specific_fn: = specific_function %F, @F(%C) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.153: type = fn_type @Op.2, @Destroy.impl(%C) [concrete] -// CHECK:STDOUT: %Op.5d7: %Op.type.153 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.153: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.5d7: %T.as.Destroy.impl.Op.type.153 = struct_value () [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] -// CHECK:STDOUT: %Op.specific_fn.6eb: = specific_function %Op.5d7, @Op.2(%C) [concrete] -// CHECK:STDOUT: %Op.type.85d: type = fn_type @Op.2, @Destroy.impl(%array_type.002) [concrete] -// CHECK:STDOUT: %Op.1f9: %Op.type.85d = struct_value () [concrete] -// CHECK:STDOUT: %Op.specific_fn.f55: = specific_function %Op.1f9, @Op.2(%array_type.002) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.6eb: = specific_function %T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.85d: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%array_type.002) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.1f9: %T.as.Destroy.impl.Op.type.85d = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.f55: = specific_function %T.as.Destroy.impl.Op.1f9, @T.as.Destroy.impl.Op(%array_type.002) [concrete] // CHECK:STDOUT: %complete_type.dd1: = complete_type_witness %array_type.002 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -196,8 +196,8 @@ fn G() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -264,12 +264,12 @@ fn G() -> i32 { // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc6_48.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc6_48.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc6_48.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc6_48.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc6_48.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc6_48.2(%int_0) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc6_48.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc6_48.2: %i32 = converted %int_0, %.loc6_48.1 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc6_49.1: ref @F.%array_type.loc6_29.1 (%array_type.743) = value_as_ref %a.ref // CHECK:STDOUT: %.loc6_49.2: ref @F.%T.loc6_6.1 (%T) = array_index %.loc6_49.1, %.loc6_48.2 @@ -316,16 +316,16 @@ fn G() -> i32 { // CHECK:STDOUT: %.loc8: ref %C = splice_block %return {} // CHECK:STDOUT: %.loc10: %array_type.002 = bind_value %a.ref // CHECK:STDOUT: %F.call: init %C = call %F.specific_fn(%.loc10) to %.loc8 -// CHECK:STDOUT: %Op.bound.loc8: = bound_method %.loc8, constants.%Op.5d7 -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.5d7, @Op.2(constants.%C) [concrete = constants.%Op.specific_fn.6eb] -// CHECK:STDOUT: %bound_method.loc8: = bound_method %.loc8, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8: = bound_method %.loc8, constants.%T.as.Destroy.impl.Op.5d7 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(constants.%C) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.6eb] +// CHECK:STDOUT: %bound_method.loc8: = bound_method %.loc8, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc8: %ptr.019 = addr_of %.loc8 -// CHECK:STDOUT: %no_op.loc8: init %empty_tuple.type = call %bound_method.loc8(%addr.loc8) -// CHECK:STDOUT: %Op.bound.loc9: = bound_method %a.var, constants.%Op.1f9 -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.1f9, @Op.2(constants.%array_type.002) [concrete = constants.%Op.specific_fn.f55] -// CHECK:STDOUT: %bound_method.loc9: = bound_method %a.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8: init %empty_tuple.type = call %bound_method.loc8(%addr.loc8) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc9: = bound_method %a.var, constants.%T.as.Destroy.impl.Op.1f9 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.1f9, @T.as.Destroy.impl.Op(constants.%array_type.002) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.f55] +// CHECK:STDOUT: %bound_method.loc9: = bound_method %a.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc9: %ptr.301 = addr_of %a.var -// CHECK:STDOUT: %no_op.loc9: init %empty_tuple.type = call %bound_method.loc9(%addr.loc9) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc9: init %empty_tuple.type = call %bound_method.loc9(%addr.loc9) // CHECK:STDOUT: return %F.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -371,19 +371,19 @@ fn G() -> i32 { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.41f: = bound_method %N, %Convert.956 [symbolic] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.ad4: = bound_method %N, %Convert.specific_fn [symbolic] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.ad4(%N) [symbolic] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.41f: = bound_method %N, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.ad4: = bound_method %N, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.ad4(%N) [symbolic] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [concrete] @@ -398,12 +398,12 @@ fn G() -> i32 { // CHECK:STDOUT: %array: %array_type.002 = tuple_value (%C.val, %C.val, %C.val) [concrete] // CHECK:STDOUT: %F.specific_fn: = specific_function %F, @F(%int_3.1ba) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.85d: type = fn_type @Op.2, @Destroy.impl(%array_type.002) [concrete] -// CHECK:STDOUT: %Op.1f9: %Op.type.85d = struct_value () [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.1f9, @Op.2(%array_type.002) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.85d: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%array_type.002) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.1f9: %T.as.Destroy.impl.Op.type.85d = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.1f9, @T.as.Destroy.impl.Op(%array_type.002) [concrete] // CHECK:STDOUT: %complete_type.dd1: = complete_type_witness %array_type.002 [concrete] -// CHECK:STDOUT: %Convert.bound.b30: = bound_method %int_3.1ba, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.047: = bound_method %int_3.1ba, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.b30: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.047: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_3.822: %i32 = int_value 3 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -419,8 +419,8 @@ fn G() -> i32 { // CHECK:STDOUT: %Core.IntLiteral: %IntLiteral.type = import_ref Core//prelude/parts/int_literal, IntLiteral, loaded [concrete = constants.%IntLiteral] // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -445,9 +445,9 @@ fn G() -> i32 { // CHECK:STDOUT: %.loc6_26.1: type = splice_block %.loc6_26.3 [concrete = Core.IntLiteral] { // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, imports.%Core.IntLiteral [concrete = constants.%IntLiteral] -// CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc6_26.2: type = value_of_initializer %int_literal.make_type [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc6_26.3: type = converted %int_literal.make_type, %.loc6_26.2 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %IntLiteral.call: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc6_26.2: type = value_of_initializer %IntLiteral.call [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc6_26.3: type = converted %IntLiteral.call, %.loc6_26.2 [concrete = Core.IntLiteral] // CHECK:STDOUT: } // CHECK:STDOUT: %N.loc6_6.2: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N.loc6_6.1 (constants.%N)] // CHECK:STDOUT: %a.param: @F.%array_type.loc6_42.1 (%array_type.6a2) = value_param call_param0 @@ -487,20 +487,20 @@ fn G() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %array_type.loc6_42.1 [symbolic = %require_complete (constants.%require_complete.d82)] -// CHECK:STDOUT: %Convert.bound: = bound_method %N.loc6_6.1, constants.%Convert.956 [symbolic = %Convert.bound (constants.%Convert.bound.41f)] -// CHECK:STDOUT: %bound_method.loc6_62.3: = bound_method %N.loc6_6.1, constants.%Convert.specific_fn [symbolic = %bound_method.loc6_62.3 (constants.%bound_method.ad4)] -// CHECK:STDOUT: %int.convert_checked.loc6_62.2: init %i32 = call %bound_method.loc6_62.3(%N.loc6_6.1) [symbolic = %int.convert_checked.loc6_62.2 (constants.%int.convert_checked)] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %N.loc6_6.1, constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [symbolic = %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.41f)] +// CHECK:STDOUT: %bound_method.loc6_62.3: = bound_method %N.loc6_6.1, constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [symbolic = %bound_method.loc6_62.3 (constants.%bound_method.ad4)] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6_62.2: init %i32 = call %bound_method.loc6_62.3(%N.loc6_6.1) [symbolic = %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6_62.2 (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.call)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%a.param: @F.%array_type.loc6_42.1 (%array_type.6a2)) -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %N.ref.loc6_61: Core.IntLiteral = name_ref N, %N.loc6_6.2 [symbolic = %N.loc6_6.1 (constants.%N)] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc6_62.1: = bound_method %N.ref.loc6_61, %impl.elem0 [symbolic = %Convert.bound (constants.%Convert.bound.41f)] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc6_62.1: = bound_method %N.ref.loc6_61, %impl.elem0 [symbolic = %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.41f)] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc6_62.2: = bound_method %N.ref.loc6_61, %specific_fn [symbolic = %bound_method.loc6_62.3 (constants.%bound_method.ad4)] -// CHECK:STDOUT: %int.convert_checked.loc6_62.1: init %i32 = call %bound_method.loc6_62.2(%N.ref.loc6_61) [symbolic = %int.convert_checked.loc6_62.2 (constants.%int.convert_checked)] -// CHECK:STDOUT: %.loc6_62.1: %i32 = value_of_initializer %int.convert_checked.loc6_62.1 [symbolic = %int.convert_checked.loc6_62.2 (constants.%int.convert_checked)] -// CHECK:STDOUT: %.loc6_62.2: %i32 = converted %N.ref.loc6_61, %.loc6_62.1 [symbolic = %int.convert_checked.loc6_62.2 (constants.%int.convert_checked)] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6_62.1: init %i32 = call %bound_method.loc6_62.2(%N.ref.loc6_61) [symbolic = %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6_62.2 (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.call)] +// CHECK:STDOUT: %.loc6_62.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6_62.1 [symbolic = %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6_62.2 (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.call)] +// CHECK:STDOUT: %.loc6_62.2: %i32 = converted %N.ref.loc6_61, %.loc6_62.1 [symbolic = %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6_62.2 (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.call)] // CHECK:STDOUT: return %.loc6_62.2 // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -544,11 +544,11 @@ fn G() -> i32 { // CHECK:STDOUT: %F.call: init %i32 = call %F.specific_fn(%.loc10_12) // CHECK:STDOUT: %.loc10_14.1: %i32 = value_of_initializer %F.call // CHECK:STDOUT: %.loc10_14.2: %i32 = converted %F.call, %.loc10_14.1 -// CHECK:STDOUT: %Op.bound: = bound_method %a.var, constants.%Op.1f9 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.1f9, @Op.2(constants.%array_type.002) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %a.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %a.var, constants.%T.as.Destroy.impl.Op.1f9 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.1f9, @T.as.Destroy.impl.Op(constants.%array_type.002) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %a.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.301 = addr_of %a.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %.loc10_14.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -565,9 +565,9 @@ fn G() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete => constants.%complete_type.dd1 -// CHECK:STDOUT: %Convert.bound => constants.%Convert.bound.b30 +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound => constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.b30 // CHECK:STDOUT: %bound_method.loc6_62.3 => constants.%bound_method.047 -// CHECK:STDOUT: %int.convert_checked.loc6_62.2 => constants.%int_3.822 +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6_62.2 => constants.%int_3.822 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- type_and_bound.carbon @@ -602,9 +602,9 @@ fn G() -> i32 { // CHECK:STDOUT: %array: %array_type.002 = tuple_value (%C.val, %C.val, %C.val) [concrete] // CHECK:STDOUT: %F.specific_fn: = specific_function %F, @F(%C, %int_3) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.85d: type = fn_type @Op.1, @Destroy.impl(%array_type.002) [concrete] -// CHECK:STDOUT: %Op.1f9: %Op.type.85d = struct_value () [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.1f9, @Op.1(%array_type.002) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.85d: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%array_type.002) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.1f9: %T.as.Destroy.impl.Op.type.85d = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.1f9, @T.as.Destroy.impl.Op(%array_type.002) [concrete] // CHECK:STDOUT: %complete_type.dd1: = complete_type_witness %array_type.002 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -638,9 +638,9 @@ fn G() -> i32 { // CHECK:STDOUT: %.loc6_36.1: type = splice_block %.loc6_36.3 [concrete = Core.IntLiteral] { // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, imports.%Core.IntLiteral [concrete = constants.%IntLiteral] -// CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc6_36.2: type = value_of_initializer %int_literal.make_type [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc6_36.3: type = converted %int_literal.make_type, %.loc6_36.2 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %IntLiteral.call: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc6_36.2: type = value_of_initializer %IntLiteral.call [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc6_36.3: type = converted %IntLiteral.call, %.loc6_36.2 [concrete = Core.IntLiteral] // CHECK:STDOUT: } // CHECK:STDOUT: %N.loc6_16.2: Core.IntLiteral = bind_symbolic_name N, 1 [symbolic = %N.loc6_16.1 (constants.%N)] // CHECK:STDOUT: %a.param: @F.%array_type.loc6_52.1 (%array_type.bb5) = value_param call_param0 @@ -715,11 +715,11 @@ fn G() -> i32 { // CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%C, constants.%int_3) [concrete = constants.%F.specific_fn] // CHECK:STDOUT: %.loc10: %array_type.002 = bind_value %a.ref // CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.specific_fn(%.loc10) -// CHECK:STDOUT: %Op.bound: = bound_method %a.var, constants.%Op.1f9 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.1f9, @Op.1(constants.%array_type.002) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %a.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %a.var, constants.%T.as.Destroy.impl.Op.1f9 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.1f9, @T.as.Destroy.impl.Op(constants.%array_type.002) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %a.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.301 = addr_of %a.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -765,18 +765,18 @@ fn G() -> i32 { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] @@ -793,13 +793,13 @@ fn G() -> i32 { // CHECK:STDOUT: %pattern_type.114: type = pattern_type %array_type.15a [concrete] // CHECK:STDOUT: %F.specific_fn: = specific_function %F, @F(%C) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.153: type = fn_type @Op.2, @Destroy.impl(%C) [concrete] -// CHECK:STDOUT: %Op.5d7: %Op.type.153 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.153: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.5d7: %T.as.Destroy.impl.Op.type.153 = struct_value () [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] -// CHECK:STDOUT: %Op.specific_fn.6eb: = specific_function %Op.5d7, @Op.2(%C) [concrete] -// CHECK:STDOUT: %Op.type.85d: type = fn_type @Op.2, @Destroy.impl(%array_type.002) [concrete] -// CHECK:STDOUT: %Op.1f9: %Op.type.85d = struct_value () [concrete] -// CHECK:STDOUT: %Op.specific_fn.f55: = specific_function %Op.1f9, @Op.2(%array_type.002) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.6eb: = specific_function %T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.85d: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%array_type.002) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.1f9: %T.as.Destroy.impl.Op.type.85d = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.f55: = specific_function %T.as.Destroy.impl.Op.1f9, @T.as.Destroy.impl.Op(%array_type.002) [concrete] // CHECK:STDOUT: %complete_type.8eb: = complete_type_witness %array_type.15a [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -813,8 +813,8 @@ fn G() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -881,12 +881,12 @@ fn G() -> i32 { // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc6_48.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc6_48.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc6_48.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc6_48.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc6_48.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc6_48.2(%int_0) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc6_48.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc6_48.2: %i32 = converted %int_0, %.loc6_48.1 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc6_49.1: ref @F.%array_type.loc6_29.1 (%array_type.9d4) = value_as_ref %a.ref // CHECK:STDOUT: %.loc6_49.2: ref @F.%T.loc6_6.1 (%T) = array_index %.loc6_49.1, %.loc6_48.2 @@ -933,16 +933,16 @@ fn G() -> i32 { // CHECK:STDOUT: %.loc8: ref %C = splice_block %return {} // CHECK:STDOUT: %.loc21: %array_type.15a = converted %a.ref, [concrete = ] // CHECK:STDOUT: %F.call: init %C = call %F.specific_fn() to %.loc8 -// CHECK:STDOUT: %Op.bound.loc8: = bound_method %.loc8, constants.%Op.5d7 -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.5d7, @Op.2(constants.%C) [concrete = constants.%Op.specific_fn.6eb] -// CHECK:STDOUT: %bound_method.loc8: = bound_method %.loc8, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8: = bound_method %.loc8, constants.%T.as.Destroy.impl.Op.5d7 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(constants.%C) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.6eb] +// CHECK:STDOUT: %bound_method.loc8: = bound_method %.loc8, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc8: %ptr.019 = addr_of %.loc8 -// CHECK:STDOUT: %no_op.loc8: init %empty_tuple.type = call %bound_method.loc8(%addr.loc8) -// CHECK:STDOUT: %Op.bound.loc10: = bound_method %a.var, constants.%Op.1f9 -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.1f9, @Op.2(constants.%array_type.002) [concrete = constants.%Op.specific_fn.f55] -// CHECK:STDOUT: %bound_method.loc10: = bound_method %a.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8: init %empty_tuple.type = call %bound_method.loc8(%addr.loc8) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10: = bound_method %a.var, constants.%T.as.Destroy.impl.Op.1f9 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.1f9, @T.as.Destroy.impl.Op(constants.%array_type.002) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.f55] +// CHECK:STDOUT: %bound_method.loc10: = bound_method %a.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc10: %ptr.301 = addr_of %a.var -// CHECK:STDOUT: %no_op.loc10: init %empty_tuple.type = call %bound_method.loc10(%addr.loc10) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10: init %empty_tuple.type = call %bound_method.loc10(%addr.loc10) // CHECK:STDOUT: return %F.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -989,19 +989,19 @@ fn G() -> i32 { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.41f: = bound_method %N, %Convert.956 [symbolic] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.ad4: = bound_method %N, %Convert.specific_fn [symbolic] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.ad4(%N) [symbolic] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.41f: = bound_method %N, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.ad4: = bound_method %N, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.ad4(%N) [symbolic] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [concrete] @@ -1018,12 +1018,12 @@ fn G() -> i32 { // CHECK:STDOUT: %pattern_type.a63: type = pattern_type %array_type.002 [concrete] // CHECK:STDOUT: %F.specific_fn: = specific_function %F, @F(%int_3.1ba) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.419: type = fn_type @Op.2, @Destroy.impl(%array_type.fe4) [concrete] -// CHECK:STDOUT: %Op.11a: %Op.type.419 = struct_value () [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.11a, @Op.2(%array_type.fe4) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.419: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%array_type.fe4) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.11a: %T.as.Destroy.impl.Op.type.419 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.11a, @T.as.Destroy.impl.Op(%array_type.fe4) [concrete] // CHECK:STDOUT: %complete_type.dd1: = complete_type_witness %array_type.002 [concrete] -// CHECK:STDOUT: %Convert.bound.b30: = bound_method %int_3.1ba, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.047: = bound_method %int_3.1ba, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.b30: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.047: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_3.822: %i32 = int_value 3 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1039,8 +1039,8 @@ fn G() -> i32 { // CHECK:STDOUT: %Core.IntLiteral: %IntLiteral.type = import_ref Core//prelude/parts/int_literal, IntLiteral, loaded [concrete = constants.%IntLiteral] // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1067,9 +1067,9 @@ fn G() -> i32 { // CHECK:STDOUT: %.loc7_26.1: type = splice_block %.loc7_26.3 [concrete = Core.IntLiteral] { // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, imports.%Core.IntLiteral [concrete = constants.%IntLiteral] -// CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc7_26.2: type = value_of_initializer %int_literal.make_type [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc7_26.3: type = converted %int_literal.make_type, %.loc7_26.2 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %IntLiteral.call: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc7_26.2: type = value_of_initializer %IntLiteral.call [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc7_26.3: type = converted %IntLiteral.call, %.loc7_26.2 [concrete = Core.IntLiteral] // CHECK:STDOUT: } // CHECK:STDOUT: %N.loc7_6.2: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N.loc7_6.1 (constants.%N)] // CHECK:STDOUT: %a.param: @F.%array_type.loc7_42.1 (%array_type.6a2) = value_param call_param0 @@ -1118,20 +1118,20 @@ fn G() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %array_type.loc7_42.1 [symbolic = %require_complete (constants.%require_complete.d82)] -// CHECK:STDOUT: %Convert.bound: = bound_method %N.loc7_6.1, constants.%Convert.956 [symbolic = %Convert.bound (constants.%Convert.bound.41f)] -// CHECK:STDOUT: %bound_method.loc7_62.3: = bound_method %N.loc7_6.1, constants.%Convert.specific_fn [symbolic = %bound_method.loc7_62.3 (constants.%bound_method.ad4)] -// CHECK:STDOUT: %int.convert_checked.loc7_62.2: init %i32 = call %bound_method.loc7_62.3(%N.loc7_6.1) [symbolic = %int.convert_checked.loc7_62.2 (constants.%int.convert_checked)] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %N.loc7_6.1, constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [symbolic = %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.41f)] +// CHECK:STDOUT: %bound_method.loc7_62.3: = bound_method %N.loc7_6.1, constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [symbolic = %bound_method.loc7_62.3 (constants.%bound_method.ad4)] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc7_62.2: init %i32 = call %bound_method.loc7_62.3(%N.loc7_6.1) [symbolic = %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc7_62.2 (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.call)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%a.param: @F.%array_type.loc7_42.1 (%array_type.6a2)) -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %N.ref.loc7_61: Core.IntLiteral = name_ref N, %N.loc7_6.2 [symbolic = %N.loc7_6.1 (constants.%N)] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc7_62.1: = bound_method %N.ref.loc7_61, %impl.elem0 [symbolic = %Convert.bound (constants.%Convert.bound.41f)] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc7_62.1: = bound_method %N.ref.loc7_61, %impl.elem0 [symbolic = %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.41f)] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc7_62.2: = bound_method %N.ref.loc7_61, %specific_fn [symbolic = %bound_method.loc7_62.3 (constants.%bound_method.ad4)] -// CHECK:STDOUT: %int.convert_checked.loc7_62.1: init %i32 = call %bound_method.loc7_62.2(%N.ref.loc7_61) [symbolic = %int.convert_checked.loc7_62.2 (constants.%int.convert_checked)] -// CHECK:STDOUT: %.loc7_62.1: %i32 = value_of_initializer %int.convert_checked.loc7_62.1 [symbolic = %int.convert_checked.loc7_62.2 (constants.%int.convert_checked)] -// CHECK:STDOUT: %.loc7_62.2: %i32 = converted %N.ref.loc7_61, %.loc7_62.1 [symbolic = %int.convert_checked.loc7_62.2 (constants.%int.convert_checked)] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc7_62.1: init %i32 = call %bound_method.loc7_62.2(%N.ref.loc7_61) [symbolic = %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc7_62.2 (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.call)] +// CHECK:STDOUT: %.loc7_62.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc7_62.1 [symbolic = %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc7_62.2 (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.call)] +// CHECK:STDOUT: %.loc7_62.2: %i32 = converted %N.ref.loc7_61, %.loc7_62.1 [symbolic = %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc7_62.2 (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.call)] // CHECK:STDOUT: return %.loc7_62.2 // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -1175,11 +1175,11 @@ fn G() -> i32 { // CHECK:STDOUT: %F.call: init %i32 = call %F.specific_fn() // CHECK:STDOUT: %.loc22_14.1: %i32 = value_of_initializer %F.call // CHECK:STDOUT: %.loc22_14.2: %i32 = converted %F.call, %.loc22_14.1 -// CHECK:STDOUT: %Op.bound: = bound_method %a.var, constants.%Op.11a -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.11a, @Op.2(constants.%array_type.fe4) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %a.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %a.var, constants.%T.as.Destroy.impl.Op.11a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.11a, @T.as.Destroy.impl.Op(constants.%array_type.fe4) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %a.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.af6 = addr_of %a.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %.loc22_14.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1196,9 +1196,9 @@ fn G() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete => constants.%complete_type.dd1 -// CHECK:STDOUT: %Convert.bound => constants.%Convert.bound.b30 +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound => constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.b30 // CHECK:STDOUT: %bound_method.loc7_62.3 => constants.%bound_method.047 -// CHECK:STDOUT: %int.convert_checked.loc7_62.2 => constants.%int_3.822 +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc7_62.2 => constants.%int_3.822 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_bound_type_mismatch.carbon @@ -1217,20 +1217,20 @@ fn G() -> i32 { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.2fd: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [concrete] -// CHECK:STDOUT: %Convert.type.71e: type = fn_type @Convert.1, @ImplicitAs(Core.IntLiteral) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.71e: type = fn_type @ImplicitAs.Convert, @ImplicitAs(Core.IntLiteral) [concrete] // CHECK:STDOUT: %From: Core.IntLiteral = bind_symbolic_name From, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.708: type = fn_type @Convert.3, @ImplicitAs.impl.971(%From) [symbolic] -// CHECK:STDOUT: %Convert.c68: %Convert.type.708 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.a11: = impl_witness imports.%ImplicitAs.impl_witness_table.1d9, @ImplicitAs.impl.971(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.4ad: type = fn_type @Convert.3, @ImplicitAs.impl.971(%int_32) [concrete] -// CHECK:STDOUT: %Convert.960: %Convert.type.4ad = struct_value () [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.type.708: type = fn_type @Int.as.ImplicitAs.impl.Convert, @Int.as.ImplicitAs.impl(%From) [symbolic] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.c68: %Int.as.ImplicitAs.impl.Convert.type.708 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.a11: = impl_witness imports.%ImplicitAs.impl_witness_table.1d9, @Int.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.type.4ad: type = fn_type @Int.as.ImplicitAs.impl.Convert, @Int.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.960: %Int.as.ImplicitAs.impl.Convert.type.4ad = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.2fd = facet_value %i32, (%ImplicitAs.impl_witness.a11) [concrete] -// CHECK:STDOUT: %.0ea: type = fn_type_with_self_type %Convert.type.71e, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %N.51e, %Convert.960 [symbolic] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.960, @Convert.3(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %N.51e, %Convert.specific_fn [symbolic] -// CHECK:STDOUT: %int.convert_checked: init Core.IntLiteral = call %bound_method(%N.51e) [symbolic] -// CHECK:STDOUT: %array_type.b2f: type = array_type %int.convert_checked, %C [symbolic] +// CHECK:STDOUT: %.0ea: type = fn_type_with_self_type %ImplicitAs.Convert.type.71e, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.bound: = bound_method %N.51e, %Int.as.ImplicitAs.impl.Convert.960 [symbolic] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Int.as.ImplicitAs.impl.Convert.960, @Int.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %N.51e, %Int.as.ImplicitAs.impl.Convert.specific_fn [symbolic] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call: init Core.IntLiteral = call %bound_method(%N.51e) [symbolic] +// CHECK:STDOUT: %array_type.b2f: type = array_type %Int.as.ImplicitAs.impl.Convert.call, %C [symbolic] // CHECK:STDOUT: %pattern_type.ac2: type = pattern_type %array_type.b2f [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -1248,9 +1248,9 @@ fn G() -> i32 { // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %array: %array_type.002 = tuple_value (%C.val, %C.val, %C.val) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.85d: type = fn_type @Op.2, @Destroy.impl(%array_type.002) [concrete] -// CHECK:STDOUT: %Op.1f9: %Op.type.85d = struct_value () [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.1f9, @Op.2(%array_type.002) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.85d: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%array_type.002) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.1f9: %T.as.Destroy.impl.Op.type.85d = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.1f9, @T.as.Destroy.impl.Op(%array_type.002) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -1263,8 +1263,8 @@ fn G() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.85c: @ImplicitAs.impl.971.%Convert.type (%Convert.type.708) = import_ref Core//prelude/parts/int, loc20_44, loaded [symbolic = @ImplicitAs.impl.971.%Convert (constants.%Convert.c68)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.1d9 = impl_witness_table (%Core.import_ref.85c), @ImplicitAs.impl.971 [concrete] +// CHECK:STDOUT: %Core.import_ref.85c: @Int.as.ImplicitAs.impl.%Int.as.ImplicitAs.impl.Convert.type (%Int.as.ImplicitAs.impl.Convert.type.708) = import_ref Core//prelude/parts/int, loc20_44, loaded [symbolic = @Int.as.ImplicitAs.impl.%Int.as.ImplicitAs.impl.Convert (constants.%Int.as.ImplicitAs.impl.Convert.c68)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.1d9 = impl_witness_table (%Core.import_ref.85c), @Int.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1295,13 +1295,13 @@ fn G() -> i32 { // CHECK:STDOUT: %.loc6_28: type = splice_block %array_type.loc6_28.2 [symbolic = %array_type.loc6_28.1 (constants.%array_type.b2f)] { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %N.ref.loc6_27: %i32 = name_ref N, %N.loc6_6.2 [symbolic = %N.loc6_6.1 (constants.%N.51e)] -// CHECK:STDOUT: %impl.elem0: %.0ea = impl_witness_access constants.%ImplicitAs.impl_witness.a11, element0 [concrete = constants.%Convert.960] -// CHECK:STDOUT: %bound_method.loc6_27.2: = bound_method %N.ref.loc6_27, %impl.elem0 [symbolic = %Convert.bound (constants.%Convert.bound)] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.0ea = impl_witness_access constants.%ImplicitAs.impl_witness.a11, element0 [concrete = constants.%Int.as.ImplicitAs.impl.Convert.960] +// CHECK:STDOUT: %bound_method.loc6_27.2: = bound_method %N.ref.loc6_27, %impl.elem0 [symbolic = %Int.as.ImplicitAs.impl.Convert.bound (constants.%Int.as.ImplicitAs.impl.Convert.bound)] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Int.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Int.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc6_27.3: = bound_method %N.ref.loc6_27, %specific_fn [symbolic = %bound_method.loc6_27.1 (constants.%bound_method)] -// CHECK:STDOUT: %int.convert_checked.loc6_27.2: init Core.IntLiteral = call %bound_method.loc6_27.3(%N.ref.loc6_27) [symbolic = %int.convert_checked.loc6_27.1 (constants.%int.convert_checked)] -// CHECK:STDOUT: %.loc6_27.1: Core.IntLiteral = value_of_initializer %int.convert_checked.loc6_27.2 [symbolic = %int.convert_checked.loc6_27.1 (constants.%int.convert_checked)] -// CHECK:STDOUT: %.loc6_27.2: Core.IntLiteral = converted %N.ref.loc6_27, %.loc6_27.1 [symbolic = %int.convert_checked.loc6_27.1 (constants.%int.convert_checked)] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call.loc6_27.2: init Core.IntLiteral = call %bound_method.loc6_27.3(%N.ref.loc6_27) [symbolic = %Int.as.ImplicitAs.impl.Convert.call.loc6_27.1 (constants.%Int.as.ImplicitAs.impl.Convert.call)] +// CHECK:STDOUT: %.loc6_27.1: Core.IntLiteral = value_of_initializer %Int.as.ImplicitAs.impl.Convert.call.loc6_27.2 [symbolic = %Int.as.ImplicitAs.impl.Convert.call.loc6_27.1 (constants.%Int.as.ImplicitAs.impl.Convert.call)] +// CHECK:STDOUT: %.loc6_27.2: Core.IntLiteral = converted %N.ref.loc6_27, %.loc6_27.1 [symbolic = %Int.as.ImplicitAs.impl.Convert.call.loc6_27.1 (constants.%Int.as.ImplicitAs.impl.Convert.call)] // CHECK:STDOUT: %array_type.loc6_28.2: type = array_type %.loc6_27.2, %C.ref [symbolic = %array_type.loc6_28.1 (constants.%array_type.b2f)] // CHECK:STDOUT: } // CHECK:STDOUT: %a: @F.%array_type.loc6_28.1 (%array_type.b2f) = bind_name a, %a.param @@ -1330,10 +1330,10 @@ fn G() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%N.loc6_6.2: %i32) { // CHECK:STDOUT: %N.loc6_6.1: %i32 = bind_symbolic_name N, 0 [symbolic = %N.loc6_6.1 (constants.%N.51e)] -// CHECK:STDOUT: %Convert.bound: = bound_method %N.loc6_6.1, constants.%Convert.960 [symbolic = %Convert.bound (constants.%Convert.bound)] -// CHECK:STDOUT: %bound_method.loc6_27.1: = bound_method %N.loc6_6.1, constants.%Convert.specific_fn [symbolic = %bound_method.loc6_27.1 (constants.%bound_method)] -// CHECK:STDOUT: %int.convert_checked.loc6_27.1: init Core.IntLiteral = call %bound_method.loc6_27.1(%N.loc6_6.1) [symbolic = %int.convert_checked.loc6_27.1 (constants.%int.convert_checked)] -// CHECK:STDOUT: %array_type.loc6_28.1: type = array_type %int.convert_checked.loc6_27.1, constants.%C [symbolic = %array_type.loc6_28.1 (constants.%array_type.b2f)] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.bound: = bound_method %N.loc6_6.1, constants.%Int.as.ImplicitAs.impl.Convert.960 [symbolic = %Int.as.ImplicitAs.impl.Convert.bound (constants.%Int.as.ImplicitAs.impl.Convert.bound)] +// CHECK:STDOUT: %bound_method.loc6_27.1: = bound_method %N.loc6_6.1, constants.%Int.as.ImplicitAs.impl.Convert.specific_fn [symbolic = %bound_method.loc6_27.1 (constants.%bound_method)] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call.loc6_27.1: init Core.IntLiteral = call %bound_method.loc6_27.1(%N.loc6_6.1) [symbolic = %Int.as.ImplicitAs.impl.Convert.call.loc6_27.1 (constants.%Int.as.ImplicitAs.impl.Convert.call)] +// CHECK:STDOUT: %array_type.loc6_28.1: type = array_type %Int.as.ImplicitAs.impl.Convert.call.loc6_27.1, constants.%C [symbolic = %array_type.loc6_28.1 (constants.%array_type.b2f)] // CHECK:STDOUT: %pattern_type: type = pattern_type %array_type.loc6_28.1 [symbolic = %pattern_type (constants.%pattern_type.ac2)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -1380,19 +1380,19 @@ fn G() -> i32 { // CHECK:STDOUT: %a: ref %array_type.002 = bind_name a, %a.var // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [concrete = constants.%F] // CHECK:STDOUT: %a.ref: ref %array_type.002 = name_ref a, %a -// CHECK:STDOUT: %Op.bound: = bound_method %a.var, constants.%Op.1f9 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.1f9, @Op.2(constants.%array_type.002) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %a.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %a.var, constants.%T.as.Destroy.impl.Op.1f9 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.1f9, @T.as.Destroy.impl.Op(constants.%array_type.002) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %a.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.301 = addr_of %a.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F(constants.%N.51e) { // CHECK:STDOUT: %N.loc6_6.1 => constants.%N.51e -// CHECK:STDOUT: %Convert.bound => constants.%Convert.bound +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.bound => constants.%Int.as.ImplicitAs.impl.Convert.bound // CHECK:STDOUT: %bound_method.loc6_27.1 => constants.%bound_method -// CHECK:STDOUT: %int.convert_checked.loc6_27.1 => constants.%int.convert_checked +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call.loc6_27.1 => constants.%Int.as.ImplicitAs.impl.Convert.call // CHECK:STDOUT: %array_type.loc6_28.1 => constants.%array_type.b2f // CHECK:STDOUT: %pattern_type => constants.%pattern_type.ac2 // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/deduce/binding_pattern.carbon b/toolchain/check/testdata/deduce/binding_pattern.carbon index 1eb11be67265..fe0f2773697e 100644 --- a/toolchain/check/testdata/deduce/binding_pattern.carbon +++ b/toolchain/check/testdata/deduce/binding_pattern.carbon @@ -67,8 +67,8 @@ fn F(U:! type, V:! type where {} impls Core.ImplicitAs(.Self)) { // CHECK:STDOUT: %C.generic: %C.type = struct_value () [concrete] // CHECK:STDOUT: %C.f2e: type = class_type @C, @C(%T) [symbolic] // CHECK:STDOUT: %pattern_type.7dcd0a.1: type = pattern_type %T [symbolic] -// CHECK:STDOUT: %Create.type.f31: type = fn_type @Create, @C(%T) [symbolic] -// CHECK:STDOUT: %Create.cc8: %Create.type.f31 = struct_value () [symbolic] +// CHECK:STDOUT: %C.Create.type.f31: type = fn_type @C.Create, @C(%T) [symbolic] +// CHECK:STDOUT: %C.Create.cc8: %C.Create.type.f31 = struct_value () [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %require_complete.4ae: = require_complete_type %T [symbolic] @@ -77,17 +77,17 @@ fn F(U:! type, V:! type where {} impls Core.ImplicitAs(.Self)) { // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %C.5e5: type = class_type @C, @C(%V) [symbolic] -// CHECK:STDOUT: %Create.type.beb: type = fn_type @Create, @C(%V) [symbolic] -// CHECK:STDOUT: %Create.dca: %Create.type.beb = struct_value () [symbolic] +// CHECK:STDOUT: %C.Create.type.beb: type = fn_type @C.Create, @C(%V) [symbolic] +// CHECK:STDOUT: %C.Create.dca: %C.Create.type.beb = struct_value () [symbolic] // CHECK:STDOUT: %require_complete.d93: = require_complete_type %C.5e5 [symbolic] // CHECK:STDOUT: %pattern_type.a32: type = pattern_type %V [symbolic] -// CHECK:STDOUT: %Create.specific_fn: = specific_function %Create.dca, @Create(%V) [symbolic] +// CHECK:STDOUT: %C.Create.specific_fn: = specific_function %C.Create.dca, @C.Create(%V) [symbolic] // CHECK:STDOUT: %require_complete.b54: = require_complete_type %V [symbolic] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %Dest: type = bind_symbolic_name Dest, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.275: type = fn_type @Convert, @ImplicitAs(%Dest) [symbolic] -// CHECK:STDOUT: %Convert.42e: %Convert.type.275 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.Convert.type.275: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%Dest) [symbolic] +// CHECK:STDOUT: %ImplicitAs.Convert.42e: %ImplicitAs.Convert.type.275 = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.assoc_type.ca0: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%Dest) [symbolic] // CHECK:STDOUT: %ImplicitAs.type.d88: type = facet_type <@ImplicitAs, @ImplicitAs(%V)> [symbolic] // CHECK:STDOUT: %ImplicitAs.assoc_type.5fe: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%V) [symbolic] @@ -104,7 +104,7 @@ fn F(U:! type, V:! type where {} impls Core.ImplicitAs(.Self)) { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] // CHECK:STDOUT: %Core.import_ref.492: @ImplicitAs.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type.ca0) = import_ref Core//prelude/parts/as, loc12_35, loaded [symbolic = @ImplicitAs.%assoc0 (constants.%assoc0.dc0)] -// CHECK:STDOUT: %Core.import_ref.1c7: @ImplicitAs.%Convert.type (%Convert.type.275) = import_ref Core//prelude/parts/as, loc12_35, loaded [symbolic = @ImplicitAs.%Convert (constants.%Convert.42e)] +// CHECK:STDOUT: %Core.import_ref.1c7: @ImplicitAs.%ImplicitAs.Convert.type (%ImplicitAs.Convert.type.275) = import_ref Core//prelude/parts/as, loc12_35, loaded [symbolic = @ImplicitAs.%ImplicitAs.Convert (constants.%ImplicitAs.Convert.42e)] // CHECK:STDOUT: %Core.import_ref.207 = import_ref Core//prelude/parts/as, loc12_35, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: @@ -133,17 +133,17 @@ fn F(U:! type, V:! type where {} impls Core.ImplicitAs(.Self)) { // CHECK:STDOUT: %T.loc4_9.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_9.1 (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Create.type: type = fn_type @Create, @C(%T.loc4_9.1) [symbolic = %Create.type (constants.%Create.type.f31)] -// CHECK:STDOUT: %Create: @C.%Create.type (%Create.type.f31) = struct_value () [symbolic = %Create (constants.%Create.cc8)] +// CHECK:STDOUT: %C.Create.type: type = fn_type @C.Create, @C(%T.loc4_9.1) [symbolic = %C.Create.type (constants.%C.Create.type.f31)] +// CHECK:STDOUT: %C.Create: @C.%C.Create.type (%C.Create.type.f31) = struct_value () [symbolic = %C.Create (constants.%C.Create.cc8)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %Create.decl: @C.%Create.type (%Create.type.f31) = fn_decl @Create [symbolic = @C.%Create (constants.%Create.cc8)] { -// CHECK:STDOUT: %value.patt: @Create.%pattern_type (%pattern_type.7dcd0a.1) = binding_pattern value [concrete] -// CHECK:STDOUT: %value.param_patt: @Create.%pattern_type (%pattern_type.7dcd0a.1) = value_param_pattern %value.patt, call_param0 [concrete] +// CHECK:STDOUT: %C.Create.decl: @C.%C.Create.type (%C.Create.type.f31) = fn_decl @C.Create [symbolic = @C.%C.Create (constants.%C.Create.cc8)] { +// CHECK:STDOUT: %value.patt: @C.Create.%pattern_type (%pattern_type.7dcd0a.1) = binding_pattern value [concrete] +// CHECK:STDOUT: %value.param_patt: @C.Create.%pattern_type (%pattern_type.7dcd0a.1) = value_param_pattern %value.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %value.param: @Create.%T (%T) = value_param call_param0 +// CHECK:STDOUT: %value.param: @C.Create.%T (%T) = value_param call_param0 // CHECK:STDOUT: %T.ref: type = name_ref T, @C.%T.loc4_9.2 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %value: @Create.%T (%T) = bind_name value, %value.param +// CHECK:STDOUT: %value: @C.Create.%T (%T) = bind_name value, %value.param // CHECK:STDOUT: } // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] @@ -152,18 +152,18 @@ fn F(U:! type, V:! type where {} impls Core.ImplicitAs(.Self)) { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C.f2e // CHECK:STDOUT: .T = -// CHECK:STDOUT: .Create = %Create.decl +// CHECK:STDOUT: .Create = %C.Create.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Create(@C.%T.loc4_9.2: type) { +// CHECK:STDOUT: generic fn @C.Create(@C.%T.loc4_9.2: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %pattern_type: type = pattern_type %T [symbolic = %pattern_type (constants.%pattern_type.7dcd0a.1)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %T [symbolic = %require_complete (constants.%require_complete.4ae)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%value.param: @Create.%T (%T)) { +// CHECK:STDOUT: fn(%value.param: @C.Create.%T (%T)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -176,9 +176,9 @@ fn F(U:! type, V:! type where {} impls Core.ImplicitAs(.Self)) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %C.loc19_6.2: type = class_type @C, @C(%V.loc8_16.1) [symbolic = %C.loc19_6.2 (constants.%C.5e5)] // CHECK:STDOUT: %require_complete.loc19_7: = require_complete_type %C.loc19_6.2 [symbolic = %require_complete.loc19_7 (constants.%require_complete.d93)] -// CHECK:STDOUT: %Create.type: type = fn_type @Create, @C(%V.loc8_16.1) [symbolic = %Create.type (constants.%Create.type.beb)] -// CHECK:STDOUT: %Create: @F.%Create.type (%Create.type.beb) = struct_value () [symbolic = %Create (constants.%Create.dca)] -// CHECK:STDOUT: %Create.specific_fn.loc19_7.2: = specific_function %Create, @Create(%V.loc8_16.1) [symbolic = %Create.specific_fn.loc19_7.2 (constants.%Create.specific_fn)] +// CHECK:STDOUT: %C.Create.type: type = fn_type @C.Create, @C(%V.loc8_16.1) [symbolic = %C.Create.type (constants.%C.Create.type.beb)] +// CHECK:STDOUT: %C.Create: @F.%C.Create.type (%C.Create.type.beb) = struct_value () [symbolic = %C.Create (constants.%C.Create.dca)] +// CHECK:STDOUT: %C.Create.specific_fn.loc19_7.2: = specific_function %C.Create, @C.Create(%V.loc8_16.1) [symbolic = %C.Create.specific_fn.loc19_7.2 (constants.%C.Create.specific_fn)] // CHECK:STDOUT: %require_complete.loc19_16.1: = require_complete_type %V.loc8_16.1 [symbolic = %require_complete.loc19_16.1 (constants.%require_complete.b54)] // CHECK:STDOUT: %ImplicitAs.type.loc19_16.2: type = facet_type <@ImplicitAs, @ImplicitAs(%V.loc8_16.1)> [symbolic = %ImplicitAs.type.loc19_16.2 (constants.%ImplicitAs.type.d88)] // CHECK:STDOUT: %require_complete.loc19_16.2: = require_complete_type %ImplicitAs.type.loc19_16.2 [symbolic = %require_complete.loc19_16.2 (constants.%require_complete.6c8)] @@ -190,15 +190,15 @@ fn F(U:! type, V:! type where {} impls Core.ImplicitAs(.Self)) { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] // CHECK:STDOUT: %V.ref: type = name_ref V, %V.loc8_16.2 [symbolic = %V.loc8_16.1 (constants.%V)] // CHECK:STDOUT: %C.loc19_6.1: type = class_type @C, @C(constants.%V) [symbolic = %C.loc19_6.2 (constants.%C.5e5)] -// CHECK:STDOUT: %.loc19_7: @F.%Create.type (%Create.type.beb) = specific_constant @C.%Create.decl, @C(constants.%V) [symbolic = %Create (constants.%Create.dca)] -// CHECK:STDOUT: %Create.ref: @F.%Create.type (%Create.type.beb) = name_ref Create, %.loc19_7 [symbolic = %Create (constants.%Create.dca)] +// CHECK:STDOUT: %.loc19_7: @F.%C.Create.type (%C.Create.type.beb) = specific_constant @C.%C.Create.decl, @C(constants.%V) [symbolic = %C.Create (constants.%C.Create.dca)] +// CHECK:STDOUT: %Create.ref: @F.%C.Create.type (%C.Create.type.beb) = name_ref Create, %.loc19_7 [symbolic = %C.Create (constants.%C.Create.dca)] // CHECK:STDOUT: %.loc19_16.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %Create.specific_fn.loc19_7.1: = specific_function %Create.ref, @Create(constants.%V) [symbolic = %Create.specific_fn.loc19_7.2 (constants.%Create.specific_fn)] +// CHECK:STDOUT: %C.Create.specific_fn.loc19_7.1: = specific_function %Create.ref, @C.Create(constants.%V) [symbolic = %C.Create.specific_fn.loc19_7.2 (constants.%C.Create.specific_fn)] // CHECK:STDOUT: %ImplicitAs.type.loc19_16.1: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%V)> [symbolic = %ImplicitAs.type.loc19_16.2 (constants.%ImplicitAs.type.d88)] // CHECK:STDOUT: %.loc19_16.2: @F.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type.5fe) = specific_constant imports.%Core.import_ref.492, @ImplicitAs(constants.%V) [symbolic = %assoc0 (constants.%assoc0.a0b)] // CHECK:STDOUT: %Convert.ref: @F.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type.5fe) = name_ref Convert, %.loc19_16.2 [symbolic = %assoc0 (constants.%assoc0.a0b)] // CHECK:STDOUT: %.loc19_16.3: @F.%V.loc8_16.1 (%V) = converted %.loc19_16.1, [concrete = ] -// CHECK:STDOUT: %Create.call: init %empty_tuple.type = call %Create.specific_fn.loc19_7.1() +// CHECK:STDOUT: %C.Create.call: init %empty_tuple.type = call %C.Create.specific_fn.loc19_7.1() // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -207,11 +207,11 @@ fn F(U:! type, V:! type where {} impls Core.ImplicitAs(.Self)) { // CHECK:STDOUT: %T.loc4_9.1 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Create.type => constants.%Create.type.f31 -// CHECK:STDOUT: %Create => constants.%Create.cc8 +// CHECK:STDOUT: %C.Create.type => constants.%C.Create.type.f31 +// CHECK:STDOUT: %C.Create => constants.%C.Create.cc8 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Create(constants.%T) { +// CHECK:STDOUT: specific @C.Create(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7dcd0a.1 // CHECK:STDOUT: } @@ -225,11 +225,11 @@ fn F(U:! type, V:! type where {} impls Core.ImplicitAs(.Self)) { // CHECK:STDOUT: %T.loc4_9.1 => constants.%V // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Create.type => constants.%Create.type.beb -// CHECK:STDOUT: %Create => constants.%Create.dca +// CHECK:STDOUT: %C.Create.type => constants.%C.Create.type.beb +// CHECK:STDOUT: %C.Create => constants.%C.Create.dca // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Create(constants.%V) { +// CHECK:STDOUT: specific @C.Create(constants.%V) { // CHECK:STDOUT: %T => constants.%V // CHECK:STDOUT: %pattern_type => constants.%pattern_type.a32 // CHECK:STDOUT: @@ -247,8 +247,8 @@ fn F(U:! type, V:! type where {} impls Core.ImplicitAs(.Self)) { // CHECK:STDOUT: %C.generic: %C.type = struct_value () [concrete] // CHECK:STDOUT: %C.f2e: type = class_type @C, @C(%T) [symbolic] // CHECK:STDOUT: %pattern_type.7dcd0a.1: type = pattern_type %T [symbolic] -// CHECK:STDOUT: %Create.type.f31: type = fn_type @Create, @C(%T) [symbolic] -// CHECK:STDOUT: %Create.cc8: %Create.type.f31 = struct_value () [symbolic] +// CHECK:STDOUT: %C.Create.type.f31: type = fn_type @C.Create, @C(%T) [symbolic] +// CHECK:STDOUT: %C.Create.cc8: %C.Create.type.f31 = struct_value () [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %require_complete.4ae: = require_complete_type %T [symbolic] @@ -257,8 +257,8 @@ fn F(U:! type, V:! type where {} impls Core.ImplicitAs(.Self)) { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %Dest: type = bind_symbolic_name Dest, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.275: type = fn_type @Convert, @ImplicitAs(%Dest) [symbolic] -// CHECK:STDOUT: %Convert.42e: %Convert.type.275 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.Convert.type.275: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%Dest) [symbolic] +// CHECK:STDOUT: %ImplicitAs.Convert.42e: %ImplicitAs.Convert.type.275 = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.assoc_type.ca0: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%Dest) [symbolic] // CHECK:STDOUT: %ImplicitAs.type.aba: type = facet_type <@ImplicitAs, @ImplicitAs(%.Self)> [symbolic_self] // CHECK:STDOUT: %type_where: type = facet_type [concrete] @@ -268,11 +268,11 @@ fn F(U:! type, V:! type where {} impls Core.ImplicitAs(.Self)) { // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %V.as_type: type = facet_access_type %V [symbolic] // CHECK:STDOUT: %C.cd6: type = class_type @C, @C(%V.as_type) [symbolic] -// CHECK:STDOUT: %Create.type.ff1: type = fn_type @Create, @C(%V.as_type) [symbolic] -// CHECK:STDOUT: %Create.96b: %Create.type.ff1 = struct_value () [symbolic] +// CHECK:STDOUT: %C.Create.type.ff1: type = fn_type @C.Create, @C(%V.as_type) [symbolic] +// CHECK:STDOUT: %C.Create.96b: %C.Create.type.ff1 = struct_value () [symbolic] // CHECK:STDOUT: %require_complete.558: = require_complete_type %C.cd6 [symbolic] // CHECK:STDOUT: %pattern_type.6e0: type = pattern_type %V.as_type [symbolic] -// CHECK:STDOUT: %Create.specific_fn: = specific_function %Create.96b, @Create(%V.as_type) [symbolic] +// CHECK:STDOUT: %C.Create.specific_fn: = specific_function %C.Create.96b, @C.Create(%V.as_type) [symbolic] // CHECK:STDOUT: %require_complete.0b5: = require_complete_type %V.as_type [symbolic] // CHECK:STDOUT: %ImplicitAs.type.113: type = facet_type <@ImplicitAs, @ImplicitAs(%V.as_type)> [symbolic] // CHECK:STDOUT: %ImplicitAs.assoc_type.83a: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%V.as_type) [symbolic] @@ -289,7 +289,7 @@ fn F(U:! type, V:! type where {} impls Core.ImplicitAs(.Self)) { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] // CHECK:STDOUT: %Core.import_ref.492: @ImplicitAs.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type.ca0) = import_ref Core//prelude/parts/as, loc12_35, loaded [symbolic = @ImplicitAs.%assoc0 (constants.%assoc0.dc0)] -// CHECK:STDOUT: %Core.import_ref.1c7: @ImplicitAs.%Convert.type (%Convert.type.275) = import_ref Core//prelude/parts/as, loc12_35, loaded [symbolic = @ImplicitAs.%Convert (constants.%Convert.42e)] +// CHECK:STDOUT: %Core.import_ref.1c7: @ImplicitAs.%ImplicitAs.Convert.type (%ImplicitAs.Convert.type.275) = import_ref Core//prelude/parts/as, loc12_35, loaded [symbolic = @ImplicitAs.%ImplicitAs.Convert (constants.%ImplicitAs.Convert.42e)] // CHECK:STDOUT: %Core.import_ref.207 = import_ref Core//prelude/parts/as, loc12_35, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: @@ -330,17 +330,17 @@ fn F(U:! type, V:! type where {} impls Core.ImplicitAs(.Self)) { // CHECK:STDOUT: %T.loc4_9.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_9.1 (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Create.type: type = fn_type @Create, @C(%T.loc4_9.1) [symbolic = %Create.type (constants.%Create.type.f31)] -// CHECK:STDOUT: %Create: @C.%Create.type (%Create.type.f31) = struct_value () [symbolic = %Create (constants.%Create.cc8)] +// CHECK:STDOUT: %C.Create.type: type = fn_type @C.Create, @C(%T.loc4_9.1) [symbolic = %C.Create.type (constants.%C.Create.type.f31)] +// CHECK:STDOUT: %C.Create: @C.%C.Create.type (%C.Create.type.f31) = struct_value () [symbolic = %C.Create (constants.%C.Create.cc8)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %Create.decl: @C.%Create.type (%Create.type.f31) = fn_decl @Create [symbolic = @C.%Create (constants.%Create.cc8)] { -// CHECK:STDOUT: %value.patt: @Create.%pattern_type (%pattern_type.7dcd0a.1) = binding_pattern value [concrete] -// CHECK:STDOUT: %value.param_patt: @Create.%pattern_type (%pattern_type.7dcd0a.1) = value_param_pattern %value.patt, call_param0 [concrete] +// CHECK:STDOUT: %C.Create.decl: @C.%C.Create.type (%C.Create.type.f31) = fn_decl @C.Create [symbolic = @C.%C.Create (constants.%C.Create.cc8)] { +// CHECK:STDOUT: %value.patt: @C.Create.%pattern_type (%pattern_type.7dcd0a.1) = binding_pattern value [concrete] +// CHECK:STDOUT: %value.param_patt: @C.Create.%pattern_type (%pattern_type.7dcd0a.1) = value_param_pattern %value.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %value.param: @Create.%T (%T) = value_param call_param0 +// CHECK:STDOUT: %value.param: @C.Create.%T (%T) = value_param call_param0 // CHECK:STDOUT: %T.ref: type = name_ref T, @C.%T.loc4_9.2 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %value: @Create.%T (%T) = bind_name value, %value.param +// CHECK:STDOUT: %value: @C.Create.%T (%T) = bind_name value, %value.param // CHECK:STDOUT: } // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] @@ -349,18 +349,18 @@ fn F(U:! type, V:! type where {} impls Core.ImplicitAs(.Self)) { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C.f2e // CHECK:STDOUT: .T = -// CHECK:STDOUT: .Create = %Create.decl +// CHECK:STDOUT: .Create = %C.Create.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Create(@C.%T.loc4_9.2: type) { +// CHECK:STDOUT: generic fn @C.Create(@C.%T.loc4_9.2: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %pattern_type: type = pattern_type %T [symbolic = %pattern_type (constants.%pattern_type.7dcd0a.1)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %T [symbolic = %require_complete (constants.%require_complete.4ae)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%value.param: @Create.%T (%T)) { +// CHECK:STDOUT: fn(%value.param: @C.Create.%T (%T)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -374,9 +374,9 @@ fn F(U:! type, V:! type where {} impls Core.ImplicitAs(.Self)) { // CHECK:STDOUT: %V.as_type.loc20_6.2: type = facet_access_type %V.loc9_16.1 [symbolic = %V.as_type.loc20_6.2 (constants.%V.as_type)] // CHECK:STDOUT: %C.loc20_6.2: type = class_type @C, @C(%V.as_type.loc20_6.2) [symbolic = %C.loc20_6.2 (constants.%C.cd6)] // CHECK:STDOUT: %require_complete.loc20_7: = require_complete_type %C.loc20_6.2 [symbolic = %require_complete.loc20_7 (constants.%require_complete.558)] -// CHECK:STDOUT: %Create.type: type = fn_type @Create, @C(%V.as_type.loc20_6.2) [symbolic = %Create.type (constants.%Create.type.ff1)] -// CHECK:STDOUT: %Create: @F.%Create.type (%Create.type.ff1) = struct_value () [symbolic = %Create (constants.%Create.96b)] -// CHECK:STDOUT: %Create.specific_fn.loc20_7.2: = specific_function %Create, @Create(%V.as_type.loc20_6.2) [symbolic = %Create.specific_fn.loc20_7.2 (constants.%Create.specific_fn)] +// CHECK:STDOUT: %C.Create.type: type = fn_type @C.Create, @C(%V.as_type.loc20_6.2) [symbolic = %C.Create.type (constants.%C.Create.type.ff1)] +// CHECK:STDOUT: %C.Create: @F.%C.Create.type (%C.Create.type.ff1) = struct_value () [symbolic = %C.Create (constants.%C.Create.96b)] +// CHECK:STDOUT: %C.Create.specific_fn.loc20_7.2: = specific_function %C.Create, @C.Create(%V.as_type.loc20_6.2) [symbolic = %C.Create.specific_fn.loc20_7.2 (constants.%C.Create.specific_fn)] // CHECK:STDOUT: %require_complete.loc20_16.1: = require_complete_type %V.as_type.loc20_6.2 [symbolic = %require_complete.loc20_16.1 (constants.%require_complete.0b5)] // CHECK:STDOUT: %ImplicitAs.type.loc20_16.2: type = facet_type <@ImplicitAs, @ImplicitAs(%V.as_type.loc20_6.2)> [symbolic = %ImplicitAs.type.loc20_16.2 (constants.%ImplicitAs.type.113)] // CHECK:STDOUT: %require_complete.loc20_16.2: = require_complete_type %ImplicitAs.type.loc20_16.2 [symbolic = %require_complete.loc20_16.2 (constants.%require_complete.9fe)] @@ -390,15 +390,15 @@ fn F(U:! type, V:! type where {} impls Core.ImplicitAs(.Self)) { // CHECK:STDOUT: %V.as_type.loc20_6.1: type = facet_access_type %V.ref [symbolic = %V.as_type.loc20_6.2 (constants.%V.as_type)] // CHECK:STDOUT: %.loc20_6: type = converted %V.ref, %V.as_type.loc20_6.1 [symbolic = %V.as_type.loc20_6.2 (constants.%V.as_type)] // CHECK:STDOUT: %C.loc20_6.1: type = class_type @C, @C(constants.%V.as_type) [symbolic = %C.loc20_6.2 (constants.%C.cd6)] -// CHECK:STDOUT: %.loc20_7: @F.%Create.type (%Create.type.ff1) = specific_constant @C.%Create.decl, @C(constants.%V.as_type) [symbolic = %Create (constants.%Create.96b)] -// CHECK:STDOUT: %Create.ref: @F.%Create.type (%Create.type.ff1) = name_ref Create, %.loc20_7 [symbolic = %Create (constants.%Create.96b)] +// CHECK:STDOUT: %.loc20_7: @F.%C.Create.type (%C.Create.type.ff1) = specific_constant @C.%C.Create.decl, @C(constants.%V.as_type) [symbolic = %C.Create (constants.%C.Create.96b)] +// CHECK:STDOUT: %Create.ref: @F.%C.Create.type (%C.Create.type.ff1) = name_ref Create, %.loc20_7 [symbolic = %C.Create (constants.%C.Create.96b)] // CHECK:STDOUT: %.loc20_16.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %Create.specific_fn.loc20_7.1: = specific_function %Create.ref, @Create(constants.%V.as_type) [symbolic = %Create.specific_fn.loc20_7.2 (constants.%Create.specific_fn)] +// CHECK:STDOUT: %C.Create.specific_fn.loc20_7.1: = specific_function %Create.ref, @C.Create(constants.%V.as_type) [symbolic = %C.Create.specific_fn.loc20_7.2 (constants.%C.Create.specific_fn)] // CHECK:STDOUT: %ImplicitAs.type.loc20_16.1: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%V.as_type)> [symbolic = %ImplicitAs.type.loc20_16.2 (constants.%ImplicitAs.type.113)] // CHECK:STDOUT: %.loc20_16.2: @F.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type.83a) = specific_constant imports.%Core.import_ref.492, @ImplicitAs(constants.%V.as_type) [symbolic = %assoc0 (constants.%assoc0.5dc)] // CHECK:STDOUT: %Convert.ref: @F.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type.83a) = name_ref Convert, %.loc20_16.2 [symbolic = %assoc0 (constants.%assoc0.5dc)] // CHECK:STDOUT: %.loc20_16.3: @F.%V.as_type.loc20_6.2 (%V.as_type) = converted %.loc20_16.1, [concrete = ] -// CHECK:STDOUT: %Create.call: init %empty_tuple.type = call %Create.specific_fn.loc20_7.1() +// CHECK:STDOUT: %C.Create.call: init %empty_tuple.type = call %C.Create.specific_fn.loc20_7.1() // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -407,11 +407,11 @@ fn F(U:! type, V:! type where {} impls Core.ImplicitAs(.Self)) { // CHECK:STDOUT: %T.loc4_9.1 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Create.type => constants.%Create.type.f31 -// CHECK:STDOUT: %Create => constants.%Create.cc8 +// CHECK:STDOUT: %C.Create.type => constants.%C.Create.type.f31 +// CHECK:STDOUT: %C.Create => constants.%C.Create.cc8 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Create(constants.%T) { +// CHECK:STDOUT: specific @C.Create(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7dcd0a.1 // CHECK:STDOUT: } @@ -425,11 +425,11 @@ fn F(U:! type, V:! type where {} impls Core.ImplicitAs(.Self)) { // CHECK:STDOUT: %T.loc4_9.1 => constants.%V.as_type // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Create.type => constants.%Create.type.ff1 -// CHECK:STDOUT: %Create => constants.%Create.96b +// CHECK:STDOUT: %C.Create.type => constants.%C.Create.type.ff1 +// CHECK:STDOUT: %C.Create => constants.%C.Create.96b // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Create(constants.%V.as_type) { +// CHECK:STDOUT: specific @C.Create(constants.%V.as_type) { // CHECK:STDOUT: %T => constants.%V.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.6e0 // CHECK:STDOUT: diff --git a/toolchain/check/testdata/deduce/generic_type.carbon b/toolchain/check/testdata/deduce/generic_type.carbon index 621fb1e43ef2..0e7d312987ee 100644 --- a/toolchain/check/testdata/deduce/generic_type.carbon +++ b/toolchain/check/testdata/deduce/generic_type.carbon @@ -95,10 +95,10 @@ fn G() -> i32 { // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %F.specific_fn.c4a: = specific_function %F, @F(%D) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.548: type = fn_type @Op.1, @Destroy.impl(%D) [concrete] -// CHECK:STDOUT: %Op.2d4: %Op.type.548 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.548: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%D) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.2d4: %T.as.Destroy.impl.Op.type.548 = struct_value () [concrete] // CHECK:STDOUT: %ptr.19c: type = ptr_type %D [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.2d4, @Op.1(%D) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.2d4, @T.as.Destroy.impl.Op(%D) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -217,11 +217,11 @@ fn G() -> i32 { // CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%D) [concrete = constants.%F.specific_fn.c4a] // CHECK:STDOUT: %.loc9_15: ref %D = splice_block %return {} // CHECK:STDOUT: %F.call: init %D = call %F.specific_fn(%p.ref) to %.loc9_15 -// CHECK:STDOUT: %Op.bound: = bound_method %.loc9_15, constants.%Op.2d4 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.2d4, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc9_15, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc9_15, constants.%T.as.Destroy.impl.Op.2d4 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.2d4, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %.loc9_15, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.19c = addr_of %.loc9_15 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %F.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -280,10 +280,10 @@ fn G() -> i32 { // CHECK:STDOUT: %require_complete.1c8: = require_complete_type %I.ff1 [symbolic] // CHECK:STDOUT: %F.specific_fn.ef1: = specific_function %F, @F(%T) [symbolic] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.153: type = fn_type @Op.1, @Destroy.impl(%C) [concrete] -// CHECK:STDOUT: %Op.5d7: %Op.type.153 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.153: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.5d7: %T.as.Destroy.impl.Op.type.153 = struct_value () [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.5d7, @Op.1(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(%C) [concrete] // CHECK:STDOUT: %I.ed8: type = class_type @I, @I(%C) [concrete] // CHECK:STDOUT: %pattern_type.917: type = pattern_type %I.ed8 [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] @@ -393,11 +393,11 @@ fn G() -> i32 { // CHECK:STDOUT: %F.specific_fn.loc7_39.1: = specific_function %F.ref, @F(constants.%T) [symbolic = %F.specific_fn.loc7_39.2 (constants.%F.specific_fn.ef1)] // CHECK:STDOUT: %.loc7_25: ref %C = splice_block %return {} // CHECK:STDOUT: %F.call: init %C = call %F.specific_fn.loc7_39.1(%p.ref) to %.loc7_25 -// CHECK:STDOUT: %Op.bound: = bound_method %.loc7_25, constants.%Op.5d7 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.5d7, @Op.1(constants.%C) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc7_25, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc7_25, constants.%T.as.Destroy.impl.Op.5d7 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(constants.%C) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %.loc7_25, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc7_25 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %F.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -409,11 +409,11 @@ fn G() -> i32 { // CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%C) [concrete = constants.%F.specific_fn.04a] // CHECK:STDOUT: %.loc9_15: ref %C = splice_block %return {} // CHECK:STDOUT: %F.call: init %C = call %F.specific_fn(%p.ref) to %.loc9_15 -// CHECK:STDOUT: %Op.bound: = bound_method %.loc9_15, constants.%Op.5d7 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.5d7, @Op.1(constants.%C) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc9_15, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc9_15, constants.%T.as.Destroy.impl.Op.5d7 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(constants.%C) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %.loc9_15, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc9_15 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %F.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -478,15 +478,15 @@ fn G() -> i32 { // CHECK:STDOUT: %require_complete.e7e: = require_complete_type %Inner.c71 [symbolic] // CHECK:STDOUT: %F.specific_fn.dd9: = specific_function %F, @F(%T, %U) [symbolic] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.bae: type = fn_type @Op.1 [concrete] -// CHECK:STDOUT: %Op.type.bc9: type = fn_type @Op.2, @Destroy.impl(%T) [symbolic] -// CHECK:STDOUT: %Op.46f: %Op.type.bc9 = struct_value () [symbolic] +// CHECK:STDOUT: %Destroy.Op.type: type = fn_type @Destroy.Op [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.bc9: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%T) [symbolic] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.46f: %T.as.Destroy.impl.Op.type.bc9 = struct_value () [symbolic] // CHECK:STDOUT: %require_complete.8fa: = require_complete_type %ptr.937 [symbolic] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %tuple.type.30b, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.1c6: %Destroy.type = facet_value %tuple.type.30b, (%Destroy.lookup_impl_witness) [symbolic] -// CHECK:STDOUT: %.1e9: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.1c6 [symbolic] +// CHECK:STDOUT: %.1e9: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.1c6 [symbolic] // CHECK:STDOUT: %impl.elem0: %.1e9 = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Op.1(%Destroy.facet.1c6) [symbolic] +// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Destroy.Op(%Destroy.facet.1c6) [symbolic] // CHECK:STDOUT: %Outer.7c4: type = class_type @Outer, @Outer(%C) [concrete] // CHECK:STDOUT: %Inner.type.181: type = generic_class_type @Inner, @Outer(%C) [concrete] // CHECK:STDOUT: %Inner.generic.205: %Inner.type.181 = struct_value () [concrete] @@ -497,14 +497,14 @@ fn G() -> i32 { // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %F.specific_fn.4a7: = specific_function %F, @F(%C, %D) [concrete] -// CHECK:STDOUT: %Destroy.impl_witness.2a9: = impl_witness imports.%Destroy.impl_witness_table, @Destroy.impl(%tuple.type.e8a) [concrete] -// CHECK:STDOUT: %Op.type.290: type = fn_type @Op.2, @Destroy.impl(%tuple.type.e8a) [concrete] -// CHECK:STDOUT: %Op.ce2: %Op.type.290 = struct_value () [concrete] +// CHECK:STDOUT: %Destroy.impl_witness.2a9: = impl_witness imports.%Destroy.impl_witness_table, @T.as.Destroy.impl(%tuple.type.e8a) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.290: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%tuple.type.e8a) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ce2: %T.as.Destroy.impl.Op.type.290 = struct_value () [concrete] // CHECK:STDOUT: %ptr.d45: type = ptr_type %tuple.type.e8a [concrete] // CHECK:STDOUT: %complete_type.149: = complete_type_witness %ptr.d45 [concrete] // CHECK:STDOUT: %Destroy.facet.5de: %Destroy.type = facet_value %tuple.type.e8a, (%Destroy.impl_witness.2a9) [concrete] -// CHECK:STDOUT: %.77c: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.5de [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ce2, @Op.2(%tuple.type.e8a) [concrete] +// CHECK:STDOUT: %.77c: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.5de [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.ce2, @T.as.Destroy.impl.Op(%tuple.type.e8a) [concrete] // CHECK:STDOUT: %complete_type.53b: = complete_type_witness %tuple.type.e8a [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -515,8 +515,8 @@ fn G() -> i32 { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @Destroy.impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @Destroy.impl.%Op (constants.%Op.46f)] -// CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @Destroy.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.0b9: @T.as.Destroy.impl.%T.as.Destroy.impl.Op.type (%T.as.Destroy.impl.Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @T.as.Destroy.impl.%T.as.Destroy.impl.Op (constants.%T.as.Destroy.impl.Op.46f)] +// CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @T.as.Destroy.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -601,7 +601,7 @@ fn G() -> i32 { // CHECK:STDOUT: %Inner.decl: @Outer.%Inner.type (%Inner.type.eae) = class_decl @Inner [symbolic = @Outer.%Inner.generic (constants.%Inner.generic.137)] { // CHECK:STDOUT: %U.patt: %pattern_type.98f = symbolic_binding_pattern U, 1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %U.loc5_15.1: type = bind_symbolic_name U, 1 [symbolic = %U.loc5_15.2 (constants.%U)] +// CHECK:STDOUT: %U.loc5_15.2: type = bind_symbolic_name U, 1 [symbolic = %U.loc5_15.1 (constants.%U)] // CHECK:STDOUT: } // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] @@ -613,8 +613,8 @@ fn G() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic class @Inner(@Outer.%T.loc4_13.2: type, %U.loc5_15.1: type) { -// CHECK:STDOUT: %U.loc5_15.2: type = bind_symbolic_name U, 1 [symbolic = %U.loc5_15.2 (constants.%U)] +// CHECK:STDOUT: generic class @Inner(@Outer.%T.loc4_13.2: type, %U.loc5_15.2: type) { +// CHECK:STDOUT: %U.loc5_15.1: type = bind_symbolic_name U, 1 [symbolic = %U.loc5_15.1 (constants.%U)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -664,9 +664,9 @@ fn G() -> i32 { // CHECK:STDOUT: %F.specific_fn.loc13_67.2: = specific_function constants.%F, @F(%T.loc13_6.1, %U.loc13_16.1) [symbolic = %F.specific_fn.loc13_67.2 (constants.%F.specific_fn.dd9)] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %tuple.type, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness)] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %tuple.type, (%Destroy.lookup_impl_witness) [symbolic = %Destroy.facet (constants.%Destroy.facet.1c6)] -// CHECK:STDOUT: %.loc13_48.3: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.loc13_48.3 (constants.%.1e9)] +// CHECK:STDOUT: %.loc13_48.3: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet [symbolic = %.loc13_48.3 (constants.%.1e9)] // CHECK:STDOUT: %impl.elem0.loc13_48.2: @F.%.loc13_48.3 (%.1e9) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc13_48.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %specific_impl_fn.loc13_48.2: = specific_impl_function %impl.elem0.loc13_48.2, @Op.1(%Destroy.facet) [symbolic = %specific_impl_fn.loc13_48.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc13_48.2: = specific_impl_function %impl.elem0.loc13_48.2, @Destroy.Op(%Destroy.facet) [symbolic = %specific_impl_fn.loc13_48.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %ptr: type = ptr_type %tuple.type [symbolic = %ptr (constants.%ptr.937)] // CHECK:STDOUT: %require_complete.loc13_48.2: = require_complete_type %ptr [symbolic = %require_complete.loc13_48.2 (constants.%require_complete.8fa)] // CHECK:STDOUT: @@ -679,7 +679,7 @@ fn G() -> i32 { // CHECK:STDOUT: %F.call: init @F.%tuple.type (%tuple.type.30b) = call %F.specific_fn.loc13_67.1(%p.ref) to %.loc13_48.1 // CHECK:STDOUT: %impl.elem0.loc13_48.1: @F.%.loc13_48.3 (%.1e9) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc13_48.2 (constants.%impl.elem0)] // CHECK:STDOUT: %bound_method.loc13_48.1: = bound_method %.loc13_48.1, %impl.elem0.loc13_48.1 -// CHECK:STDOUT: %specific_impl_fn.loc13_48.1: = specific_impl_function %impl.elem0.loc13_48.1, @Op.1(constants.%Destroy.facet.1c6) [symbolic = %specific_impl_fn.loc13_48.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc13_48.1: = specific_impl_function %impl.elem0.loc13_48.1, @Destroy.Op(constants.%Destroy.facet.1c6) [symbolic = %specific_impl_fn.loc13_48.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %bound_method.loc13_48.2: = bound_method %.loc13_48.1, %specific_impl_fn.loc13_48.1 // CHECK:STDOUT: %addr: @F.%ptr (%ptr.937) = addr_of %.loc13_48.1 // CHECK:STDOUT: %.loc13_48.2: init %empty_tuple.type = call %bound_method.loc13_48.2(%addr) @@ -694,11 +694,11 @@ fn G() -> i32 { // CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%C, constants.%D) [concrete = constants.%F.specific_fn.4a7] // CHECK:STDOUT: %.loc15_28: ref %tuple.type.e8a = splice_block %return {} // CHECK:STDOUT: %F.call: init %tuple.type.e8a = call %F.specific_fn(%p.ref) to %.loc15_28 -// CHECK:STDOUT: %Op.bound: = bound_method %.loc15_28, constants.%Op.ce2 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.ce2, @Op.2(constants.%tuple.type.e8a) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc15_28, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc15_28, constants.%T.as.Destroy.impl.Op.ce2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.ce2, @T.as.Destroy.impl.Op(constants.%tuple.type.e8a) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %.loc15_28, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.d45 = addr_of %.loc15_28 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %F.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -711,7 +711,7 @@ fn G() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Inner(constants.%T, constants.%U) { -// CHECK:STDOUT: %U.loc5_15.2 => constants.%U +// CHECK:STDOUT: %U.loc5_15.1 => constants.%U // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: } @@ -750,7 +750,7 @@ fn G() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Inner(constants.%C, constants.%D) { -// CHECK:STDOUT: %U.loc5_15.2 => constants.%D +// CHECK:STDOUT: %U.loc5_15.1 => constants.%D // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: } @@ -774,8 +774,8 @@ fn G() -> i32 { // CHECK:STDOUT: %Destroy.lookup_impl_witness => constants.%Destroy.impl_witness.2a9 // CHECK:STDOUT: %Destroy.facet => constants.%Destroy.facet.5de // CHECK:STDOUT: %.loc13_48.3 => constants.%.77c -// CHECK:STDOUT: %impl.elem0.loc13_48.2 => constants.%Op.ce2 -// CHECK:STDOUT: %specific_impl_fn.loc13_48.2 => constants.%Op.specific_fn +// CHECK:STDOUT: %impl.elem0.loc13_48.2 => constants.%T.as.Destroy.impl.Op.ce2 +// CHECK:STDOUT: %specific_impl_fn.loc13_48.2 => constants.%T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %ptr => constants.%ptr.d45 // CHECK:STDOUT: %require_complete.loc13_48.2 => constants.%complete_type.149 // CHECK:STDOUT: } @@ -805,28 +805,28 @@ fn G() -> i32 { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: %WithNontype.b82: type = class_type @WithNontype, @WithNontype(%int_0.6a9) [concrete] // CHECK:STDOUT: %WithNontype.val: %WithNontype.b82 = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.b66: type = pattern_type %WithNontype.b82 [concrete] // CHECK:STDOUT: %F.specific_fn: = specific_function %F, @F(%int_0.6a9) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.68d: type = fn_type @Op.1, @Destroy.impl(%WithNontype.b82) [concrete] -// CHECK:STDOUT: %Op.6ee: %Op.type.68d = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.68d: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%WithNontype.b82) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.6ee: %T.as.Destroy.impl.Op.type.68d = struct_value () [concrete] // CHECK:STDOUT: %ptr.791: type = ptr_type %WithNontype.b82 [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.6ee, @Op.1(%WithNontype.b82) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.6ee, @T.as.Destroy.impl.Op(%WithNontype.b82) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -839,8 +839,8 @@ fn G() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -932,12 +932,12 @@ fn G() -> i32 { // CHECK:STDOUT: %.loc9_13.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %WithNontype.ref: %WithNontype.type = name_ref WithNontype, file.%WithNontype.decl [concrete = constants.%WithNontype.generic] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc9_31.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc9_31.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc9_31.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc9_31.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc9_31.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc9_31.2(%int_0) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc9_31.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc9_31.2: %i32 = converted %int_0, %.loc9_31.1 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %WithNontype: type = class_type @WithNontype, @WithNontype(constants.%int_0.6a9) [concrete = constants.%WithNontype.b82] // CHECK:STDOUT: %.loc9_13.2: ref %WithNontype.b82 = temporary_storage @@ -949,11 +949,11 @@ fn G() -> i32 { // CHECK:STDOUT: %F.call: init %i32 = call %F.specific_fn(%.loc9_15.2) // CHECK:STDOUT: %.loc9_33.1: %i32 = value_of_initializer %F.call // CHECK:STDOUT: %.loc9_33.2: %i32 = converted %F.call, %.loc9_33.1 -// CHECK:STDOUT: %Op.bound: = bound_method %.loc9_13.2, constants.%Op.6ee -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.6ee, @Op.1(constants.%WithNontype.b82) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc9_13: = bound_method %.loc9_13.2, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc9_13.2, constants.%T.as.Destroy.impl.Op.6ee +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.6ee, @T.as.Destroy.impl.Op(constants.%WithNontype.b82) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc9_13: = bound_method %.loc9_13.2, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.791 = addr_of %.loc9_13.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc9_13(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc9_13(%addr) // CHECK:STDOUT: return %.loc9_33.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/deduce/int_float.carbon b/toolchain/check/testdata/deduce/int_float.carbon index 0b7f47e5e84f..2a429c4bf81e 100644 --- a/toolchain/check/testdata/deduce/int_float.carbon +++ b/toolchain/check/testdata/deduce/int_float.carbon @@ -92,15 +92,15 @@ fn G(a: f64) -> Core.IntLiteral() { // CHECK:STDOUT: } { // CHECK:STDOUT: %Core.ref.loc4_48: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %IntLiteral.ref.loc4_52: %IntLiteral.type = name_ref IntLiteral, imports.%Core.IntLiteral [concrete = constants.%IntLiteral] -// CHECK:STDOUT: %int_literal.make_type.loc4_64: init type = call %IntLiteral.ref.loc4_52() [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc4_64.1: type = value_of_initializer %int_literal.make_type.loc4_64 [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc4_64.2: type = converted %int_literal.make_type.loc4_64, %.loc4_64.1 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %IntLiteral.call.loc4_64: init type = call %IntLiteral.ref.loc4_52() [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc4_64.1: type = value_of_initializer %IntLiteral.call.loc4_64 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc4_64.2: type = converted %IntLiteral.call.loc4_64, %.loc4_64.1 [concrete = Core.IntLiteral] // CHECK:STDOUT: %.loc4_26.1: type = splice_block %.loc4_26.3 [concrete = Core.IntLiteral] { // CHECK:STDOUT: %Core.ref.loc4_10: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %IntLiteral.ref.loc4_14: %IntLiteral.type = name_ref IntLiteral, imports.%Core.IntLiteral [concrete = constants.%IntLiteral] -// CHECK:STDOUT: %int_literal.make_type.loc4_26: init type = call %IntLiteral.ref.loc4_14() [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc4_26.2: type = value_of_initializer %int_literal.make_type.loc4_26 [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc4_26.3: type = converted %int_literal.make_type.loc4_26, %.loc4_26.2 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %IntLiteral.call.loc4_26: init type = call %IntLiteral.ref.loc4_14() [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc4_26.2: type = value_of_initializer %IntLiteral.call.loc4_26 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc4_26.3: type = converted %IntLiteral.call.loc4_26, %.loc4_26.2 [concrete = Core.IntLiteral] // CHECK:STDOUT: } // CHECK:STDOUT: %N.loc4_6.2: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N.loc4_6.1 (constants.%N)] // CHECK:STDOUT: %n.param: @F.%Int.loc4_42.1 (%Int) = value_param call_param0 @@ -122,9 +122,9 @@ fn G(a: f64) -> Core.IntLiteral() { // CHECK:STDOUT: } { // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, imports.%Core.IntLiteral [concrete = constants.%IntLiteral] -// CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc8_33.1: type = value_of_initializer %int_literal.make_type [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc8_33.2: type = converted %int_literal.make_type, %.loc8_33.1 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %IntLiteral.call: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc8_33.1: type = value_of_initializer %IntLiteral.call [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc8_33.2: type = converted %IntLiteral.call, %.loc8_33.1 [concrete = Core.IntLiteral] // CHECK:STDOUT: %a.param: %i64 = value_param call_param0 // CHECK:STDOUT: %.loc8_9: type = splice_block %i64 [concrete = constants.%i64] { // CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [concrete = constants.%int_64] @@ -221,15 +221,15 @@ fn G(a: f64) -> Core.IntLiteral() { // CHECK:STDOUT: } { // CHECK:STDOUT: %Core.ref.loc9_50: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %IntLiteral.ref.loc9_54: %IntLiteral.type = name_ref IntLiteral, imports.%Core.IntLiteral [concrete = constants.%IntLiteral] -// CHECK:STDOUT: %int_literal.make_type.loc9_66: init type = call %IntLiteral.ref.loc9_54() [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc9_66.1: type = value_of_initializer %int_literal.make_type.loc9_66 [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc9_66.2: type = converted %int_literal.make_type.loc9_66, %.loc9_66.1 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %IntLiteral.call.loc9_66: init type = call %IntLiteral.ref.loc9_54() [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc9_66.1: type = value_of_initializer %IntLiteral.call.loc9_66 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc9_66.2: type = converted %IntLiteral.call.loc9_66, %.loc9_66.1 [concrete = Core.IntLiteral] // CHECK:STDOUT: %.loc9_26.1: type = splice_block %.loc9_26.3 [concrete = Core.IntLiteral] { // CHECK:STDOUT: %Core.ref.loc9_10: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %IntLiteral.ref.loc9_14: %IntLiteral.type = name_ref IntLiteral, imports.%Core.IntLiteral [concrete = constants.%IntLiteral] -// CHECK:STDOUT: %int_literal.make_type.loc9_26: init type = call %IntLiteral.ref.loc9_14() [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc9_26.2: type = value_of_initializer %int_literal.make_type.loc9_26 [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc9_26.3: type = converted %int_literal.make_type.loc9_26, %.loc9_26.2 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %IntLiteral.call.loc9_26: init type = call %IntLiteral.ref.loc9_14() [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc9_26.2: type = value_of_initializer %IntLiteral.call.loc9_26 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc9_26.3: type = converted %IntLiteral.call.loc9_26, %.loc9_26.2 [concrete = Core.IntLiteral] // CHECK:STDOUT: } // CHECK:STDOUT: %N.loc9_6.2: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N.loc9_6.1 (constants.%N)] // CHECK:STDOUT: %n.param: = value_param call_param0 @@ -237,9 +237,9 @@ fn G(a: f64) -> Core.IntLiteral() { // CHECK:STDOUT: %Core.ref.loc9_32: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %Float.ref: %Float.type = name_ref Float, imports.%Core.Float [concrete = constants.%Float] // CHECK:STDOUT: %N.ref.loc9: Core.IntLiteral = name_ref N, %N.loc9_6.2 [symbolic = %N.loc9_6.1 (constants.%N)] -// CHECK:STDOUT: %float.make_type: init type = call %Float.ref(%N.ref.loc9) -// CHECK:STDOUT: %.loc9_44.1: type = value_of_initializer %float.make_type -// CHECK:STDOUT: %.loc9_44.2: type = converted %float.make_type, %.loc9_44.1 +// CHECK:STDOUT: %Float.call: init type = call %Float.ref(%N.ref.loc9) +// CHECK:STDOUT: %.loc9_44.1: type = value_of_initializer %Float.call +// CHECK:STDOUT: %.loc9_44.2: type = converted %Float.call, %.loc9_44.1 // CHECK:STDOUT: } // CHECK:STDOUT: %n: = bind_name n, %n.param // CHECK:STDOUT: %return.param: ref Core.IntLiteral = out_param call_param1 @@ -253,15 +253,15 @@ fn G(a: f64) -> Core.IntLiteral() { // CHECK:STDOUT: } { // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, imports.%Core.IntLiteral [concrete = constants.%IntLiteral] -// CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc13_33.1: type = value_of_initializer %int_literal.make_type [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc13_33.2: type = converted %int_literal.make_type, %.loc13_33.1 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %IntLiteral.call: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc13_33.1: type = value_of_initializer %IntLiteral.call [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc13_33.2: type = converted %IntLiteral.call, %.loc13_33.1 [concrete = Core.IntLiteral] // CHECK:STDOUT: %a.param: f64 = value_param call_param0 // CHECK:STDOUT: %.loc13_9.1: type = splice_block %.loc13_9.3 [concrete = f64] { // CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [concrete = constants.%int_64] -// CHECK:STDOUT: %float.make_type: init type = call constants.%Float(%int_64) [concrete = f64] -// CHECK:STDOUT: %.loc13_9.2: type = value_of_initializer %float.make_type [concrete = f64] -// CHECK:STDOUT: %.loc13_9.3: type = converted %float.make_type, %.loc13_9.2 [concrete = f64] +// CHECK:STDOUT: %Float.call: init type = call constants.%Float(%int_64) [concrete = f64] +// CHECK:STDOUT: %.loc13_9.2: type = value_of_initializer %Float.call [concrete = f64] +// CHECK:STDOUT: %.loc13_9.3: type = converted %Float.call, %.loc13_9.2 [concrete = f64] // CHECK:STDOUT: } // CHECK:STDOUT: %a: f64 = bind_name a, %a.param // CHECK:STDOUT: %return.param: ref Core.IntLiteral = out_param call_param1 diff --git a/toolchain/check/testdata/deduce/tuple.carbon b/toolchain/check/testdata/deduce/tuple.carbon index 8742d97793b9..7ad0108a56a5 100644 --- a/toolchain/check/testdata/deduce/tuple.carbon +++ b/toolchain/check/testdata/deduce/tuple.carbon @@ -84,10 +84,10 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %F.specific_fn.4a7: = specific_function %F, @F(%C, %D) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.548: type = fn_type @Op.1, @Destroy.impl(%D) [concrete] -// CHECK:STDOUT: %Op.2d4: %Op.type.548 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.548: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%D) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.2d4: %T.as.Destroy.impl.Op.type.548 = struct_value () [concrete] // CHECK:STDOUT: %ptr.19c: type = ptr_type %D [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.2d4, @Op.1(%D) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.2d4, @T.as.Destroy.impl.Op(%D) [concrete] // CHECK:STDOUT: %complete_type.53b: = complete_type_witness %tuple.type.e8a [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -202,11 +202,11 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%C, constants.%D) [concrete = constants.%F.specific_fn.4a7] // CHECK:STDOUT: %.loc9_20: ref %D = splice_block %return {} // CHECK:STDOUT: %F.call: init %D = call %F.specific_fn(%pair.ref) to %.loc9_20 -// CHECK:STDOUT: %Op.bound: = bound_method %.loc9_20, constants.%Op.2d4 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.2d4, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc9_20, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc9_20, constants.%T.as.Destroy.impl.Op.2d4 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.2d4, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %.loc9_20, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.19c = addr_of %.loc9_20 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %F.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -267,21 +267,21 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %tuple.21c: %tuple.type.d07 = tuple_value (%int_1.5d2, %int_2.ef8) [concrete] // CHECK:STDOUT: %HasPair.369: type = class_type @HasPair, @HasPair(%tuple.21c) [concrete] @@ -300,8 +300,8 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -373,19 +373,19 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %.loc8_22.1: %tuple.type.f94 = tuple_literal (%int_1, %int_2) -// CHECK:STDOUT: %impl.elem0.loc8_22.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc8_22.1: = bound_method %int_1, %impl.elem0.loc8_22.1 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc8_22.1: = specific_function %impl.elem0.loc8_22.1, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc8_22.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc8_22.1: = bound_method %int_1, %impl.elem0.loc8_22.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc8_22.1: = specific_function %impl.elem0.loc8_22.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc8_22.2: = bound_method %int_1, %specific_fn.loc8_22.1 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc8_22.1: init %i32 = call %bound_method.loc8_22.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc8_22.2: %i32 = value_of_initializer %int.convert_checked.loc8_22.1 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc8_22.1: init %i32 = call %bound_method.loc8_22.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc8_22.2: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc8_22.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc8_22.3: %i32 = converted %int_1, %.loc8_22.2 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %impl.elem0.loc8_22.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc8_22.3: = bound_method %int_2, %impl.elem0.loc8_22.2 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc8_22.2: = specific_function %impl.elem0.loc8_22.2, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc8_22.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc8_22.3: = bound_method %int_2, %impl.elem0.loc8_22.2 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc8_22.2: = specific_function %impl.elem0.loc8_22.2, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc8_22.4: = bound_method %int_2, %specific_fn.loc8_22.2 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc8_22.2: init %i32 = call %bound_method.loc8_22.4(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc8_22.4: %i32 = value_of_initializer %int.convert_checked.loc8_22.2 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc8_22.2: init %i32 = call %bound_method.loc8_22.4(%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc8_22.4: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc8_22.2 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc8_22.5: %i32 = converted %int_2, %.loc8_22.4 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %tuple: %tuple.type.d07 = tuple_value (%.loc8_22.3, %.loc8_22.5) [concrete = constants.%tuple.21c] // CHECK:STDOUT: %.loc8_23.2: %tuple.type.d07 = converted %.loc8_22.1, %tuple [concrete = constants.%tuple.21c] diff --git a/toolchain/check/testdata/deduce/type_operator.carbon b/toolchain/check/testdata/deduce/type_operator.carbon index 30c42cf6eb57..2d989f0b6dd9 100644 --- a/toolchain/check/testdata/deduce/type_operator.carbon +++ b/toolchain/check/testdata/deduce/type_operator.carbon @@ -91,10 +91,10 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %F.specific_fn.04a: = specific_function %F, @F(%C) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.153: type = fn_type @Op.1, @Destroy.impl(%C) [concrete] -// CHECK:STDOUT: %Op.5d7: %Op.type.153 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.153: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.5d7: %T.as.Destroy.impl.Op.type.153 = struct_value () [concrete] // CHECK:STDOUT: %complete_type.d05: = complete_type_witness %ptr.019 [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.5d7, @Op.1(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(%C) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -190,11 +190,11 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%C) [concrete = constants.%F.specific_fn.04a] // CHECK:STDOUT: %.loc8_13: ref %C = splice_block %return {} // CHECK:STDOUT: %F.call: init %C = call %F.specific_fn(%p.ref) to %.loc8_13 -// CHECK:STDOUT: %Op.bound: = bound_method %.loc8_13, constants.%Op.5d7 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.5d7, @Op.1(constants.%C) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc8_13, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_13, constants.%T.as.Destroy.impl.Op.5d7 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(constants.%C) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %.loc8_13, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc8_13 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %F.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -248,10 +248,10 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %F.specific_fn.04a: = specific_function %F, @F(%C) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.153: type = fn_type @Op.1, @Destroy.impl(%C) [concrete] -// CHECK:STDOUT: %Op.5d7: %Op.type.153 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.153: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.5d7: %T.as.Destroy.impl.Op.type.153 = struct_value () [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.5d7, @Op.1(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(%C) [concrete] // CHECK:STDOUT: %complete_type.247: = complete_type_witness %ptr.801 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -351,11 +351,11 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%C) [concrete = constants.%F.specific_fn.04a] // CHECK:STDOUT: %.loc8_19: ref %C = splice_block %return {} // CHECK:STDOUT: %F.call: init %C = call %F.specific_fn(%p.ref) to %.loc8_19 -// CHECK:STDOUT: %Op.bound: = bound_method %.loc8_19, constants.%Op.5d7 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.5d7, @Op.1(constants.%C) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc8_19, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_19, constants.%T.as.Destroy.impl.Op.5d7 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(constants.%C) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %.loc8_19, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc8_19 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %F.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -410,10 +410,10 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %F.specific_fn.486: = specific_function %F, @F(%const) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.dff: type = fn_type @Op.1, @Destroy.impl(%const) [concrete] -// CHECK:STDOUT: %Op.206: %Op.type.dff = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.dff: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%const) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.206: %T.as.Destroy.impl.Op.type.dff = struct_value () [concrete] // CHECK:STDOUT: %complete_type.247: = complete_type_witness %ptr.801 [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.206, @Op.1(%const) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.206, @T.as.Destroy.impl.Op(%const) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -511,11 +511,11 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%const) [concrete = constants.%F.specific_fn.486] // CHECK:STDOUT: %.loc8_19: ref %const = splice_block %return {} // CHECK:STDOUT: %F.call: init %const = call %F.specific_fn(%p.ref) to %.loc8_19 -// CHECK:STDOUT: %Op.bound: = bound_method %.loc8_19, constants.%Op.206 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.206, @Op.1(constants.%const) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc8_19, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_19, constants.%T.as.Destroy.impl.Op.206 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.206, @T.as.Destroy.impl.Op(constants.%const) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %.loc8_19, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.801 = addr_of %.loc8_19 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %F.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/deduce/value_with_type_through_access.carbon b/toolchain/check/testdata/deduce/value_with_type_through_access.carbon index 22f1990dca0a..4a71d989949c 100644 --- a/toolchain/check/testdata/deduce/value_with_type_through_access.carbon +++ b/toolchain/check/testdata/deduce/value_with_type_through_access.carbon @@ -133,14 +133,14 @@ fn G() { // CHECK:STDOUT: %F.specific_fn: = specific_function %F, @F(%tuple) [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.153: type = fn_type @Op.1, @Destroy.impl(%C) [concrete] -// CHECK:STDOUT: %Op.5d7: %Op.type.153 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.153: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.5d7: %T.as.Destroy.impl.Op.type.153 = struct_value () [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] -// CHECK:STDOUT: %Op.specific_fn.6eb: = specific_function %Op.5d7, @Op.1(%C) [concrete] -// CHECK:STDOUT: %Op.type.431: type = fn_type @Op.1, @Destroy.impl(%HoldsType.c09) [concrete] -// CHECK:STDOUT: %Op.f20: %Op.type.431 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.6eb: = specific_function %T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.431: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%HoldsType.c09) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.f20: %T.as.Destroy.impl.Op.type.431 = struct_value () [concrete] // CHECK:STDOUT: %ptr.79a: type = ptr_type %HoldsType.c09 [concrete] -// CHECK:STDOUT: %Op.specific_fn.58d: = specific_function %Op.f20, @Op.1(%HoldsType.c09) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.58d: = specific_function %T.as.Destroy.impl.Op.f20, @T.as.Destroy.impl.Op(%HoldsType.c09) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -265,16 +265,16 @@ fn G() { // CHECK:STDOUT: %.loc13_30.5: ref %C = converted %.loc13_30.1, %.loc13_30.4 // CHECK:STDOUT: %.loc13_30.6: %C = bind_value %.loc13_30.5 // CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.specific_fn(%.loc13_8.2, %.loc13_30.6) -// CHECK:STDOUT: %Op.bound.loc13_30: = bound_method %.loc13_30.2, constants.%Op.5d7 -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.5d7, @Op.1(constants.%C) [concrete = constants.%Op.specific_fn.6eb] -// CHECK:STDOUT: %bound_method.loc13_30: = bound_method %.loc13_30.2, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc13_30: = bound_method %.loc13_30.2, constants.%T.as.Destroy.impl.Op.5d7 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(constants.%C) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.6eb] +// CHECK:STDOUT: %bound_method.loc13_30: = bound_method %.loc13_30.2, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc13_30: %ptr.019 = addr_of %.loc13_30.2 -// CHECK:STDOUT: %no_op.loc13_30: init %empty_tuple.type = call %bound_method.loc13_30(%addr.loc13_30) -// CHECK:STDOUT: %Op.bound.loc13_6: = bound_method %.loc13_6.2, constants.%Op.f20 -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.f20, @Op.1(constants.%HoldsType.c09) [concrete = constants.%Op.specific_fn.58d] -// CHECK:STDOUT: %bound_method.loc13_6: = bound_method %.loc13_6.2, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc13_30: init %empty_tuple.type = call %bound_method.loc13_30(%addr.loc13_30) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc13_6: = bound_method %.loc13_6.2, constants.%T.as.Destroy.impl.Op.f20 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.f20, @T.as.Destroy.impl.Op(constants.%HoldsType.c09) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.58d] +// CHECK:STDOUT: %bound_method.loc13_6: = bound_method %.loc13_6.2, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc13_6: %ptr.79a = addr_of %.loc13_6.2 -// CHECK:STDOUT: %no_op.loc13_6: init %empty_tuple.type = call %bound_method.loc13_6(%addr.loc13_6) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc13_6: init %empty_tuple.type = call %bound_method.loc13_6(%addr.loc13_6) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -340,14 +340,14 @@ fn G() { // CHECK:STDOUT: %F.specific_fn: = specific_function %F, @F(%struct) [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.153: type = fn_type @Op.1, @Destroy.impl(%C) [concrete] -// CHECK:STDOUT: %Op.5d7: %Op.type.153 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.153: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.5d7: %T.as.Destroy.impl.Op.type.153 = struct_value () [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] -// CHECK:STDOUT: %Op.specific_fn.6eb: = specific_function %Op.5d7, @Op.1(%C) [concrete] -// CHECK:STDOUT: %Op.type.8ea: type = fn_type @Op.1, @Destroy.impl(%HoldsType.705) [concrete] -// CHECK:STDOUT: %Op.180: %Op.type.8ea = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.6eb: = specific_function %T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.8ea: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%HoldsType.705) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.180: %T.as.Destroy.impl.Op.type.8ea = struct_value () [concrete] // CHECK:STDOUT: %ptr.5d1: type = ptr_type %HoldsType.705 [concrete] -// CHECK:STDOUT: %Op.specific_fn.fde: = specific_function %Op.180, @Op.1(%HoldsType.705) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.fde: = specific_function %T.as.Destroy.impl.Op.180, @T.as.Destroy.impl.Op(%HoldsType.705) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -465,16 +465,16 @@ fn G() { // CHECK:STDOUT: %.loc13_33.5: ref %C = converted %.loc13_33.1, %.loc13_33.4 // CHECK:STDOUT: %.loc13_33.6: %C = bind_value %.loc13_33.5 // CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.specific_fn(%.loc13_8.2, %.loc13_33.6) -// CHECK:STDOUT: %Op.bound.loc13_33: = bound_method %.loc13_33.2, constants.%Op.5d7 -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.5d7, @Op.1(constants.%C) [concrete = constants.%Op.specific_fn.6eb] -// CHECK:STDOUT: %bound_method.loc13_33: = bound_method %.loc13_33.2, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc13_33: = bound_method %.loc13_33.2, constants.%T.as.Destroy.impl.Op.5d7 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(constants.%C) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.6eb] +// CHECK:STDOUT: %bound_method.loc13_33: = bound_method %.loc13_33.2, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc13_33: %ptr.019 = addr_of %.loc13_33.2 -// CHECK:STDOUT: %no_op.loc13_33: init %empty_tuple.type = call %bound_method.loc13_33(%addr.loc13_33) -// CHECK:STDOUT: %Op.bound.loc13_6: = bound_method %.loc13_6.2, constants.%Op.180 -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.180, @Op.1(constants.%HoldsType.705) [concrete = constants.%Op.specific_fn.fde] -// CHECK:STDOUT: %bound_method.loc13_6: = bound_method %.loc13_6.2, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc13_33: init %empty_tuple.type = call %bound_method.loc13_33(%addr.loc13_33) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc13_6: = bound_method %.loc13_6.2, constants.%T.as.Destroy.impl.Op.180 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.180, @T.as.Destroy.impl.Op(constants.%HoldsType.705) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.fde] +// CHECK:STDOUT: %bound_method.loc13_6: = bound_method %.loc13_6.2, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc13_6: %ptr.5d1 = addr_of %.loc13_6.2 -// CHECK:STDOUT: %no_op.loc13_6: init %empty_tuple.type = call %bound_method.loc13_6(%addr.loc13_6) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc13_6: init %empty_tuple.type = call %bound_method.loc13_6(%addr.loc13_6) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -538,17 +538,17 @@ fn G() { // CHECK:STDOUT: %HoldsType.f95cf2.2: type = class_type @HoldsType, @HoldsType(%c) [symbolic] // CHECK:STDOUT: %HoldsType.val: %HoldsType.f95cf2.2 = struct_value () [symbolic] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.bae: type = fn_type @Op.2 [concrete] +// CHECK:STDOUT: %Destroy.Op.type: type = fn_type @Destroy.Op [concrete] // CHECK:STDOUT: %ptr.deb: type = ptr_type %HoldsType.f95cf2.2 [symbolic] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %HoldsType.f95cf2.2, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.088: %Destroy.type = facet_value %HoldsType.f95cf2.2, (%Destroy.lookup_impl_witness) [symbolic] -// CHECK:STDOUT: %.da6: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.088 [symbolic] +// CHECK:STDOUT: %.da6: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.088 [symbolic] // CHECK:STDOUT: %impl.elem0: %.da6 = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Op.2(%Destroy.facet.088) [symbolic] -// CHECK:STDOUT: %Op.type.7de: type = fn_type @Op.1, @Destroy.impl(%Class) [concrete] -// CHECK:STDOUT: %Op.d64: %Op.type.7de = struct_value () [concrete] +// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Destroy.Op(%Destroy.facet.088) [symbolic] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.7de: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%Class) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.d64: %T.as.Destroy.impl.Op.type.7de = struct_value () [concrete] // CHECK:STDOUT: %ptr.e71: type = ptr_type %Class [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.d64, @Op.1(%Class) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.d64, @T.as.Destroy.impl.Op(%Class) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -685,15 +685,15 @@ fn G() { // CHECK:STDOUT: %.loc27_26: %empty_struct_type = struct_literal () // CHECK:STDOUT: %impl.elem0: %.da6 = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = constants.%impl.elem0] // CHECK:STDOUT: %bound_method.loc27_6.1: = bound_method %.loc27_6.2, %impl.elem0 -// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Op.2(constants.%Destroy.facet.088) [symbolic = constants.%specific_impl_fn] +// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Destroy.Op(constants.%Destroy.facet.088) [symbolic = constants.%specific_impl_fn] // CHECK:STDOUT: %bound_method.loc27_6.2: = bound_method %.loc27_6.2, %specific_impl_fn // CHECK:STDOUT: %addr.loc27: %ptr.deb = addr_of %.loc27_6.2 // CHECK:STDOUT: %.loc27_6.5: init %empty_tuple.type = call %bound_method.loc27_6.2(%addr.loc27) -// CHECK:STDOUT: %Op.bound: = bound_method %.loc26_26.2, constants.%Op.d64 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.d64, @Op.1(constants.%Class) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc26: = bound_method %.loc26_26.2, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc26_26.2, constants.%T.as.Destroy.impl.Op.d64 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.d64, @T.as.Destroy.impl.Op(constants.%Class) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc26: = bound_method %.loc26_26.2, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr.loc26: %ptr.e71 = addr_of %.loc26_26.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc26(%addr.loc26) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc26(%addr.loc26) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -739,18 +739,18 @@ fn G() { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -761,9 +761,9 @@ fn G() { // CHECK:STDOUT: %tuple.type: type = tuple_type (type) [concrete] // CHECK:STDOUT: %array: %array_type = tuple_value (%C) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.8a7: type = fn_type @Op.2, @Destroy.impl(%array_type) [concrete] -// CHECK:STDOUT: %Op.246: %Op.type.8a7 = struct_value () [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.246, @Op.2(%array_type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.8a7: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%array_type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.246: %T.as.Destroy.impl.Op.type.8a7 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.246, @T.as.Destroy.impl.Op(%array_type) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -776,8 +776,8 @@ fn G() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -824,12 +824,12 @@ fn G() { // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc12_48.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc12_48.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc12_48.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc12_48.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc12_48.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc12_48.2(%int_0) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc12_48.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc12_48.2: %i32 = converted %int_0, %.loc12_48.1 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc12_49.1: ref %array_type = value_as_ref %T.ref.loc12_46 // CHECK:STDOUT: %.loc12_49.2: ref type = array_index %.loc12_49.1, %.loc12_48.2 @@ -897,11 +897,11 @@ fn G() { // CHECK:STDOUT: %.loc24_27.2: ref %array_type = temporary %.loc24_25.2, %.loc24_27.1 // CHECK:STDOUT: %.loc24_27.3: %array_type = bind_value %.loc24_27.2 // CHECK:STDOUT: %.loc24_48: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %Op.bound: = bound_method %.loc24_25.2, constants.%Op.246 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.246, @Op.2(constants.%array_type) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc24_25.2, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc24_25.2, constants.%T.as.Destroy.impl.Op.246 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.246, @T.as.Destroy.impl.Op(constants.%array_type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %.loc24_25.2, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.ea3 = addr_of %.loc24_25.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/eval/aggregates.carbon b/toolchain/check/testdata/eval/aggregates.carbon index 0edd2ba6e05f..a5eb45b43730 100644 --- a/toolchain/check/testdata/eval/aggregates.carbon +++ b/toolchain/check/testdata/eval/aggregates.carbon @@ -65,21 +65,21 @@ fn G(N:! i32) { // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %tuple.type.f94: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %tuple.21c: %tuple.type.d07 = tuple_value (%int_1.5d2, %int_2.ef8) [concrete] // CHECK:STDOUT: %tuple.elem0: ref %i32 = tuple_access file.%tuple_copy.var, element0 [concrete] @@ -89,8 +89,8 @@ fn G(N:! i32) { // CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [concrete] // CHECK:STDOUT: %struct_type.c.b.a: type = struct_type {.c: Core.IntLiteral, .b: Core.IntLiteral, .a: Core.IntLiteral} [concrete] // CHECK:STDOUT: %struct_type.b.a.c: type = struct_type {.b: %i32, .a: %i32, .c: %i32} [concrete] -// CHECK:STDOUT: %Convert.bound.b30: = bound_method %int_3.1ba, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.047: = bound_method %int_3.1ba, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.b30: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.047: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_3.822: %i32 = int_value 3 [concrete] // CHECK:STDOUT: %struct.21d: %struct_type.b.a.c = struct_value (%int_2.ef8, %int_1.5d2, %int_3.822) [concrete] // CHECK:STDOUT: %.91e: ref %i32 = struct_access file.%struct_copy.var, element1 [concrete] @@ -106,8 +106,8 @@ fn G(N:! i32) { // CHECK:STDOUT: %int_9: Core.IntLiteral = int_value 9 [concrete] // CHECK:STDOUT: %tuple.type.d46: type = tuple_type (Core.IntLiteral, Core.IntLiteral, Core.IntLiteral, Core.IntLiteral) [concrete] // CHECK:STDOUT: %tuple.869: %tuple.type.d46 = tuple_value (%int_5, %int_7, %int_1.5b8, %int_9) [concrete] -// CHECK:STDOUT: %Convert.bound.d04: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b6e: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b6e: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: %array: %array_type = tuple_value (%int_0.6a9) [concrete] // CHECK:STDOUT: %struct_type.a.b: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [concrete] @@ -115,8 +115,8 @@ fn G(N:! i32) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -186,19 +186,19 @@ fn G(N:! i32) { // CHECK:STDOUT: %i32.loc4_46: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %.loc4_49.1: %tuple.type.24b = tuple_literal (%i32.loc4_41, %i32.loc4_46) // CHECK:STDOUT: %.loc4_49.2: type = converted %.loc4_49.1, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07] -// CHECK:STDOUT: %impl.elem0.loc4_35.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc4_35.1: = bound_method %int_1.loc4, %impl.elem0.loc4_35.1 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc4_35.1: = specific_function %impl.elem0.loc4_35.1, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc4_35.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc4_35.1: = bound_method %int_1.loc4, %impl.elem0.loc4_35.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc4_35.1: = specific_function %impl.elem0.loc4_35.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc4_35.2: = bound_method %int_1.loc4, %specific_fn.loc4_35.1 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc4_35.1: init %i32 = call %bound_method.loc4_35.2(%int_1.loc4) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc4_35.2: %i32 = value_of_initializer %int.convert_checked.loc4_35.1 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc4_35.1: init %i32 = call %bound_method.loc4_35.2(%int_1.loc4) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc4_35.2: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc4_35.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc4_35.3: %i32 = converted %int_1.loc4, %.loc4_35.2 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %impl.elem0.loc4_35.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc4_35.3: = bound_method %int_2.loc4, %impl.elem0.loc4_35.2 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc4_35.2: = specific_function %impl.elem0.loc4_35.2, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc4_35.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc4_35.3: = bound_method %int_2.loc4, %impl.elem0.loc4_35.2 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc4_35.2: = specific_function %impl.elem0.loc4_35.2, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc4_35.4: = bound_method %int_2.loc4, %specific_fn.loc4_35.2 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc4_35.2: init %i32 = call %bound_method.loc4_35.4(%int_2.loc4) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc4_35.4: %i32 = value_of_initializer %int.convert_checked.loc4_35.2 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc4_35.2: init %i32 = call %bound_method.loc4_35.4(%int_2.loc4) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc4_35.4: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc4_35.2 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc4_35.5: %i32 = converted %int_2.loc4, %.loc4_35.4 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %tuple.loc4: %tuple.type.d07 = tuple_value (%.loc4_35.3, %.loc4_35.5) [concrete = constants.%tuple.21c] // CHECK:STDOUT: %.loc4_37.1: %tuple.type.d07 = converted %.loc4_35.1, %tuple.loc4 [concrete = constants.%tuple.21c] @@ -222,26 +222,26 @@ fn G(N:! i32) { // CHECK:STDOUT: %int_32.loc6_99: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc6_99: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %struct_type.b.a.c: type = struct_type {.b: %i32, .a: %i32, .c: %i32} [concrete = constants.%struct_type.b.a.c] -// CHECK:STDOUT: %impl.elem0.loc6_71.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc6_71.1: = bound_method %int_2.loc6, %impl.elem0.loc6_71.1 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc6_71.1: = specific_function %impl.elem0.loc6_71.1, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc6_71.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc6_71.1: = bound_method %int_2.loc6, %impl.elem0.loc6_71.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc6_71.1: = specific_function %impl.elem0.loc6_71.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc6_71.2: = bound_method %int_2.loc6, %specific_fn.loc6_71.1 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc6_71.1: init %i32 = call %bound_method.loc6_71.2(%int_2.loc6) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc6_71.2: %i32 = value_of_initializer %int.convert_checked.loc6_71.1 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6_71.1: init %i32 = call %bound_method.loc6_71.2(%int_2.loc6) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc6_71.2: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6_71.1 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc6_71.3: %i32 = converted %int_2.loc6, %.loc6_71.2 [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %impl.elem0.loc6_71.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc6_71.3: = bound_method %int_1.loc6, %impl.elem0.loc6_71.2 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc6_71.2: = specific_function %impl.elem0.loc6_71.2, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc6_71.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc6_71.3: = bound_method %int_1.loc6, %impl.elem0.loc6_71.2 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc6_71.2: = specific_function %impl.elem0.loc6_71.2, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc6_71.4: = bound_method %int_1.loc6, %specific_fn.loc6_71.2 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc6_71.2: init %i32 = call %bound_method.loc6_71.4(%int_1.loc6) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc6_71.4: %i32 = value_of_initializer %int.convert_checked.loc6_71.2 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6_71.2: init %i32 = call %bound_method.loc6_71.4(%int_1.loc6) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc6_71.4: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6_71.2 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc6_71.5: %i32 = converted %int_1.loc6, %.loc6_71.4 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %impl.elem0.loc6_71.3: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc6_71.5: = bound_method %int_3.loc6, %impl.elem0.loc6_71.3 [concrete = constants.%Convert.bound.b30] -// CHECK:STDOUT: %specific_fn.loc6_71.3: = specific_function %impl.elem0.loc6_71.3, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc6_71.3: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc6_71.5: = bound_method %int_3.loc6, %impl.elem0.loc6_71.3 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.b30] +// CHECK:STDOUT: %specific_fn.loc6_71.3: = specific_function %impl.elem0.loc6_71.3, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc6_71.6: = bound_method %int_3.loc6, %specific_fn.loc6_71.3 [concrete = constants.%bound_method.047] -// CHECK:STDOUT: %int.convert_checked.loc6_71.3: init %i32 = call %bound_method.loc6_71.6(%int_3.loc6) [concrete = constants.%int_3.822] -// CHECK:STDOUT: %.loc6_71.6: %i32 = value_of_initializer %int.convert_checked.loc6_71.3 [concrete = constants.%int_3.822] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6_71.3: init %i32 = call %bound_method.loc6_71.6(%int_3.loc6) [concrete = constants.%int_3.822] +// CHECK:STDOUT: %.loc6_71.6: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6_71.3 [concrete = constants.%int_3.822] // CHECK:STDOUT: %.loc6_71.7: %i32 = converted %int_3.loc6, %.loc6_71.6 [concrete = constants.%int_3.822] // CHECK:STDOUT: %struct.loc6: %struct_type.b.a.c = struct_value (%.loc6_71.3, %.loc6_71.5, %.loc6_71.7) [concrete = constants.%struct.21d] // CHECK:STDOUT: %.loc6_73.1: %struct_type.b.a.c = converted %.loc6_71.1, %struct.loc6 [concrete = constants.%struct.21d] @@ -271,12 +271,12 @@ fn G(N:! i32) { // CHECK:STDOUT: %.loc8_64.2: %tuple.type.d46 = converted %.loc8_64.1, %tuple.loc8 [concrete = constants.%tuple.869] // CHECK:STDOUT: %tuple.elem2: Core.IntLiteral = tuple_access %.loc8_64.2, element2 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %array_type.loc8: type = array_type %tuple.elem2, %i32.loc8 [concrete = constants.%array_type] -// CHECK:STDOUT: %impl.elem0.loc8: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc8_37.1: = bound_method %int_0.loc8_35, %impl.elem0.loc8 [concrete = constants.%Convert.bound.d04] -// CHECK:STDOUT: %specific_fn.loc8: = specific_function %impl.elem0.loc8, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc8: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc8_37.1: = bound_method %int_0.loc8_35, %impl.elem0.loc8 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04] +// CHECK:STDOUT: %specific_fn.loc8: = specific_function %impl.elem0.loc8, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc8_37.2: = bound_method %int_0.loc8_35, %specific_fn.loc8 [concrete = constants.%bound_method.b6e] -// CHECK:STDOUT: %int.convert_checked.loc8: init %i32 = call %bound_method.loc8_37.2(%int_0.loc8_35) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc8_37.2: init %i32 = converted %int_0.loc8_35, %int.convert_checked.loc8 [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc8: init %i32 = call %bound_method.loc8_37.2(%int_0.loc8_35) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc8_37.2: init %i32 = converted %int_0.loc8_35, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc8 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc8_1: ref %array_type = splice_block file.%tuple_index.var [concrete = file.%tuple_index.var] {} // CHECK:STDOUT: %int_0.loc8_37: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] // CHECK:STDOUT: %.loc8_37.3: ref %i32 = array_index %.loc8_1, %int_0.loc8_37 @@ -295,12 +295,12 @@ fn G(N:! i32) { // CHECK:STDOUT: %.loc10_70.2: %struct_type.a.b = converted %.loc10_70.1, %struct.loc10 [concrete = constants.%struct.a81] // CHECK:STDOUT: %.loc10_71: Core.IntLiteral = struct_access %.loc10_70.2, element1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %array_type.loc10: type = array_type %.loc10_71, %i32.loc10 [concrete = constants.%array_type] -// CHECK:STDOUT: %impl.elem0.loc10: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc10_39.1: = bound_method %int_0.loc10_37, %impl.elem0.loc10 [concrete = constants.%Convert.bound.d04] -// CHECK:STDOUT: %specific_fn.loc10: = specific_function %impl.elem0.loc10, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc10: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc10_39.1: = bound_method %int_0.loc10_37, %impl.elem0.loc10 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04] +// CHECK:STDOUT: %specific_fn.loc10: = specific_function %impl.elem0.loc10, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc10_39.2: = bound_method %int_0.loc10_37, %specific_fn.loc10 [concrete = constants.%bound_method.b6e] -// CHECK:STDOUT: %int.convert_checked.loc10: init %i32 = call %bound_method.loc10_39.2(%int_0.loc10_37) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc10_39.2: init %i32 = converted %int_0.loc10_37, %int.convert_checked.loc10 [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10: init %i32 = call %bound_method.loc10_39.2(%int_0.loc10_37) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc10_39.2: init %i32 = converted %int_0.loc10_37, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc10_1: ref %array_type = splice_block file.%struct_access.var [concrete = file.%struct_access.var] {} // CHECK:STDOUT: %int_0.loc10_39: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] // CHECK:STDOUT: %.loc10_39.3: ref %i32 = array_index %.loc10_1, %int_0.loc10_39 @@ -328,39 +328,39 @@ fn G(N:! i32) { // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete] // CHECK:STDOUT: %array_type.f32: type = array_type %int_4, %i32 [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.4e6: = bound_method %int_5.64b, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.a25: = bound_method %int_5.64b, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.4e6: = bound_method %int_5.64b, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.a25: = bound_method %int_5.64b, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_5.0f6: %i32 = int_value 5 [concrete] -// CHECK:STDOUT: %Convert.bound.208: = bound_method %int_7.29f, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.3bd: = bound_method %int_7.29f, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.208: = bound_method %int_7.29f, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.3bd: = bound_method %int_7.29f, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_7.0b1: %i32 = int_value 7 [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete] -// CHECK:STDOUT: %Convert.bound.9e2: = bound_method %int_9.988, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.cd3: = bound_method %int_9.988, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.9e2: = bound_method %int_9.988, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.cd3: = bound_method %int_9.988, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_9.f88: %i32 = int_value 9 [concrete] // CHECK:STDOUT: %array: %array_type.f32 = tuple_value (%int_5.0f6, %int_7.0b1, %int_1.5d2, %int_9.f88) [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -393,40 +393,40 @@ fn G(N:! i32) { // CHECK:STDOUT: %i32.loc9_76: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete = constants.%int_4] // CHECK:STDOUT: %array_type: type = array_type %int_4, %i32.loc9_76 [concrete = constants.%array_type.f32] -// CHECK:STDOUT: %impl.elem0.loc9_65.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc9_65.1: = bound_method %int_5, %impl.elem0.loc9_65.1 [concrete = constants.%Convert.bound.4e6] -// CHECK:STDOUT: %specific_fn.loc9_65.1: = specific_function %impl.elem0.loc9_65.1, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc9_65.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc9_65.1: = bound_method %int_5, %impl.elem0.loc9_65.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.4e6] +// CHECK:STDOUT: %specific_fn.loc9_65.1: = specific_function %impl.elem0.loc9_65.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc9_65.2: = bound_method %int_5, %specific_fn.loc9_65.1 [concrete = constants.%bound_method.a25] -// CHECK:STDOUT: %int.convert_checked.loc9_65.1: init %i32 = call %bound_method.loc9_65.2(%int_5) [concrete = constants.%int_5.0f6] -// CHECK:STDOUT: %.loc9_65.2: init %i32 = converted %int_5, %int.convert_checked.loc9_65.1 [concrete = constants.%int_5.0f6] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9_65.1: init %i32 = call %bound_method.loc9_65.2(%int_5) [concrete = constants.%int_5.0f6] +// CHECK:STDOUT: %.loc9_65.2: init %i32 = converted %int_5, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9_65.1 [concrete = constants.%int_5.0f6] // CHECK:STDOUT: %.loc9_65.3: ref %array_type.f32 = temporary_storage // CHECK:STDOUT: %int_0.loc9_65: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] // CHECK:STDOUT: %.loc9_65.4: ref %i32 = array_index %.loc9_65.3, %int_0.loc9_65 // CHECK:STDOUT: %.loc9_65.5: init %i32 = initialize_from %.loc9_65.2 to %.loc9_65.4 [concrete = constants.%int_5.0f6] -// CHECK:STDOUT: %impl.elem0.loc9_65.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc9_65.3: = bound_method %int_7, %impl.elem0.loc9_65.2 [concrete = constants.%Convert.bound.208] -// CHECK:STDOUT: %specific_fn.loc9_65.2: = specific_function %impl.elem0.loc9_65.2, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc9_65.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc9_65.3: = bound_method %int_7, %impl.elem0.loc9_65.2 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.208] +// CHECK:STDOUT: %specific_fn.loc9_65.2: = specific_function %impl.elem0.loc9_65.2, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc9_65.4: = bound_method %int_7, %specific_fn.loc9_65.2 [concrete = constants.%bound_method.3bd] -// CHECK:STDOUT: %int.convert_checked.loc9_65.2: init %i32 = call %bound_method.loc9_65.4(%int_7) [concrete = constants.%int_7.0b1] -// CHECK:STDOUT: %.loc9_65.6: init %i32 = converted %int_7, %int.convert_checked.loc9_65.2 [concrete = constants.%int_7.0b1] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9_65.2: init %i32 = call %bound_method.loc9_65.4(%int_7) [concrete = constants.%int_7.0b1] +// CHECK:STDOUT: %.loc9_65.6: init %i32 = converted %int_7, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9_65.2 [concrete = constants.%int_7.0b1] // CHECK:STDOUT: %int_1.loc9_65: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %.loc9_65.7: ref %i32 = array_index %.loc9_65.3, %int_1.loc9_65 // CHECK:STDOUT: %.loc9_65.8: init %i32 = initialize_from %.loc9_65.6 to %.loc9_65.7 [concrete = constants.%int_7.0b1] -// CHECK:STDOUT: %impl.elem0.loc9_65.3: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc9_65.5: = bound_method %int_1.loc9_61, %impl.elem0.loc9_65.3 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc9_65.3: = specific_function %impl.elem0.loc9_65.3, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc9_65.3: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc9_65.5: = bound_method %int_1.loc9_61, %impl.elem0.loc9_65.3 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc9_65.3: = specific_function %impl.elem0.loc9_65.3, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc9_65.6: = bound_method %int_1.loc9_61, %specific_fn.loc9_65.3 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc9_65.3: init %i32 = call %bound_method.loc9_65.6(%int_1.loc9_61) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc9_65.9: init %i32 = converted %int_1.loc9_61, %int.convert_checked.loc9_65.3 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9_65.3: init %i32 = call %bound_method.loc9_65.6(%int_1.loc9_61) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc9_65.9: init %i32 = converted %int_1.loc9_61, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9_65.3 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %int_2.loc9_65: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %.loc9_65.10: ref %i32 = array_index %.loc9_65.3, %int_2.loc9_65 // CHECK:STDOUT: %.loc9_65.11: init %i32 = initialize_from %.loc9_65.9 to %.loc9_65.10 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %impl.elem0.loc9_65.4: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc9_65.7: = bound_method %int_9, %impl.elem0.loc9_65.4 [concrete = constants.%Convert.bound.9e2] -// CHECK:STDOUT: %specific_fn.loc9_65.4: = specific_function %impl.elem0.loc9_65.4, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc9_65.4: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc9_65.7: = bound_method %int_9, %impl.elem0.loc9_65.4 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.9e2] +// CHECK:STDOUT: %specific_fn.loc9_65.4: = specific_function %impl.elem0.loc9_65.4, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc9_65.8: = bound_method %int_9, %specific_fn.loc9_65.4 [concrete = constants.%bound_method.cd3] -// CHECK:STDOUT: %int.convert_checked.loc9_65.4: init %i32 = call %bound_method.loc9_65.8(%int_9) [concrete = constants.%int_9.f88] -// CHECK:STDOUT: %.loc9_65.12: init %i32 = converted %int_9, %int.convert_checked.loc9_65.4 [concrete = constants.%int_9.f88] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9_65.4: init %i32 = call %bound_method.loc9_65.8(%int_9) [concrete = constants.%int_9.f88] +// CHECK:STDOUT: %.loc9_65.12: init %i32 = converted %int_9, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9_65.4 [concrete = constants.%int_9.f88] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3] // CHECK:STDOUT: %.loc9_65.13: ref %i32 = array_index %.loc9_65.3, %int_3 // CHECK:STDOUT: %.loc9_65.14: init %i32 = initialize_from %.loc9_65.12 to %.loc9_65.13 [concrete = constants.%int_9.f88] @@ -436,12 +436,12 @@ fn G(N:! i32) { // CHECK:STDOUT: %.loc9_67.2: ref %array_type.f32 = temporary %.loc9_65.3, %.loc9_67.1 // CHECK:STDOUT: %int_32.loc9_86: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc9_86: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc9_85: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc9_85.1: = bound_method %int_2.loc9_85, %impl.elem0.loc9_85 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc9_85: = specific_function %impl.elem0.loc9_85, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc9_85: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc9_85.1: = bound_method %int_2.loc9_85, %impl.elem0.loc9_85 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc9_85: = specific_function %impl.elem0.loc9_85, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc9_85.2: = bound_method %int_2.loc9_85, %specific_fn.loc9_85 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc9_85: init %i32 = call %bound_method.loc9_85.2(%int_2.loc9_85) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc9_85.1: %i32 = value_of_initializer %int.convert_checked.loc9_85 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9_85: init %i32 = call %bound_method.loc9_85.2(%int_2.loc9_85) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc9_85.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9_85 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc9_85.2: %i32 = converted %int_2.loc9_85, %.loc9_85.1 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc9_86.1: ref %i32 = array_index %.loc9_67.2, %.loc9_85.2 // CHECK:STDOUT: %.loc9_86.2: %i32 = bind_value %.loc9_86.1 @@ -470,58 +470,58 @@ fn G(N:! i32) { // CHECK:STDOUT: %require_complete.fe1: = require_complete_type %array_type.ec2 [symbolic] // CHECK:STDOUT: %pattern_type.035: type = pattern_type %array_type.ec2 [symbolic] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.bae: type = fn_type @Op.1 [concrete] +// CHECK:STDOUT: %Destroy.Op.type: type = fn_type @Destroy.Op [concrete] // CHECK:STDOUT: %require_complete.b09: = require_complete_type %ptr.1a0 [symbolic] // CHECK:STDOUT: %Destroy.lookup_impl_witness.b45: = lookup_impl_witness %array_type.ec2, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.0d3: %Destroy.type = facet_value %array_type.ec2, (%Destroy.lookup_impl_witness.b45) [symbolic] -// CHECK:STDOUT: %.03f: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.0d3 [symbolic] +// CHECK:STDOUT: %.03f: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.0d3 [symbolic] // CHECK:STDOUT: %impl.elem0.1ce: %.03f = impl_witness_access %Destroy.lookup_impl_witness.b45, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.236: = specific_impl_function %impl.elem0.1ce, @Op.1(%Destroy.facet.0d3) [symbolic] +// CHECK:STDOUT: %specific_impl_fn.236: = specific_impl_function %impl.elem0.1ce, @Destroy.Op(%Destroy.facet.0d3) [symbolic] // CHECK:STDOUT: %ptr.48a: type = ptr_type %struct_type.a [symbolic] // CHECK:STDOUT: %require_complete.86d: = require_complete_type %ptr.48a [symbolic] // CHECK:STDOUT: %Destroy.lookup_impl_witness.b34: = lookup_impl_witness %struct_type.a, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.2c9: %Destroy.type = facet_value %struct_type.a, (%Destroy.lookup_impl_witness.b34) [symbolic] -// CHECK:STDOUT: %.b85: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.2c9 [symbolic] +// CHECK:STDOUT: %.b85: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.2c9 [symbolic] // CHECK:STDOUT: %impl.elem0.dc9: %.b85 = impl_witness_access %Destroy.lookup_impl_witness.b34, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.2a6: = specific_impl_function %impl.elem0.dc9, @Op.1(%Destroy.facet.2c9) [symbolic] +// CHECK:STDOUT: %specific_impl_fn.2a6: = specific_impl_function %impl.elem0.dc9, @Destroy.Op(%Destroy.facet.2c9) [symbolic] // CHECK:STDOUT: %require_complete.66e: = require_complete_type %ptr.6cd [symbolic] // CHECK:STDOUT: %Destroy.lookup_impl_witness.a8a: = lookup_impl_witness %tuple.type.4f2, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.7be: %Destroy.type = facet_value %tuple.type.4f2, (%Destroy.lookup_impl_witness.a8a) [symbolic] -// CHECK:STDOUT: %.f5c: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.7be [symbolic] +// CHECK:STDOUT: %.f5c: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.7be [symbolic] // CHECK:STDOUT: %impl.elem0.87c: %.f5c = impl_witness_access %Destroy.lookup_impl_witness.a8a, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.4b8: = specific_impl_function %impl.elem0.87c, @Op.1(%Destroy.facet.7be) [symbolic] +// CHECK:STDOUT: %specific_impl_fn.4b8: = specific_impl_function %impl.elem0.87c, @Destroy.Op(%Destroy.facet.7be) [symbolic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %N.51e: %i32 = bind_symbolic_name N, 0 [symbolic] // CHECK:STDOUT: %ImplicitAs.type.2fd: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [concrete] -// CHECK:STDOUT: %Convert.type.71e: type = fn_type @Convert.2, @ImplicitAs(Core.IntLiteral) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.71e: type = fn_type @ImplicitAs.Convert, @ImplicitAs(Core.IntLiteral) [concrete] // CHECK:STDOUT: %From: Core.IntLiteral = bind_symbolic_name From, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.708: type = fn_type @Convert.1, @ImplicitAs.impl.971(%From) [symbolic] -// CHECK:STDOUT: %Convert.c68: %Convert.type.708 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.a11: = impl_witness imports.%ImplicitAs.impl_witness_table.1d9, @ImplicitAs.impl.971(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.4ad: type = fn_type @Convert.1, @ImplicitAs.impl.971(%int_32) [concrete] -// CHECK:STDOUT: %Convert.960: %Convert.type.4ad = struct_value () [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.type.708: type = fn_type @Int.as.ImplicitAs.impl.Convert, @Int.as.ImplicitAs.impl(%From) [symbolic] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.c68: %Int.as.ImplicitAs.impl.Convert.type.708 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.a11: = impl_witness imports.%ImplicitAs.impl_witness_table.1d9, @Int.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.type.4ad: type = fn_type @Int.as.ImplicitAs.impl.Convert, @Int.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.960: %Int.as.ImplicitAs.impl.Convert.type.4ad = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.2fd = facet_value %i32, (%ImplicitAs.impl_witness.a11) [concrete] -// CHECK:STDOUT: %.0ea: type = fn_type_with_self_type %Convert.type.71e, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %N.51e, %Convert.960 [symbolic] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.960, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %N.51e, %Convert.specific_fn [symbolic] -// CHECK:STDOUT: %int.convert_checked: init Core.IntLiteral = call %bound_method(%N.51e) [symbolic] -// CHECK:STDOUT: %array_type.c7c: type = array_type %int.convert_checked, %i32 [symbolic] +// CHECK:STDOUT: %.0ea: type = fn_type_with_self_type %ImplicitAs.Convert.type.71e, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.bound: = bound_method %N.51e, %Int.as.ImplicitAs.impl.Convert.960 [symbolic] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Int.as.ImplicitAs.impl.Convert.960, @Int.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %N.51e, %Int.as.ImplicitAs.impl.Convert.specific_fn [symbolic] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call: init Core.IntLiteral = call %bound_method(%N.51e) [symbolic] +// CHECK:STDOUT: %array_type.c7c: type = array_type %Int.as.ImplicitAs.impl.Convert.call, %i32 [symbolic] // CHECK:STDOUT: %ptr.0ad: type = ptr_type %array_type.c7c [symbolic] // CHECK:STDOUT: %require_complete.7cb: = require_complete_type %array_type.c7c [symbolic] // CHECK:STDOUT: %pattern_type.ccc: type = pattern_type %array_type.c7c [symbolic] // CHECK:STDOUT: %require_complete.7d5: = require_complete_type %ptr.0ad [symbolic] // CHECK:STDOUT: %Destroy.lookup_impl_witness.4fa: = lookup_impl_witness %array_type.c7c, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.ad4: %Destroy.type = facet_value %array_type.c7c, (%Destroy.lookup_impl_witness.4fa) [symbolic] -// CHECK:STDOUT: %.a57: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.ad4 [symbolic] +// CHECK:STDOUT: %.a57: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.ad4 [symbolic] // CHECK:STDOUT: %impl.elem0.f15: %.a57 = impl_witness_access %Destroy.lookup_impl_witness.4fa, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.bae: = specific_impl_function %impl.elem0.f15, @Op.1(%Destroy.facet.ad4) [symbolic] +// CHECK:STDOUT: %specific_impl_fn.bae: = specific_impl_function %impl.elem0.f15, @Destroy.Op(%Destroy.facet.ad4) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core.import_ref.85c: @ImplicitAs.impl.971.%Convert.type (%Convert.type.708) = import_ref Core//prelude/parts/int, loc20_44, loaded [symbolic = @ImplicitAs.impl.971.%Convert (constants.%Convert.c68)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.1d9 = impl_witness_table (%Core.import_ref.85c), @ImplicitAs.impl.971 [concrete] +// CHECK:STDOUT: %Core.import_ref.85c: @Int.as.ImplicitAs.impl.%Int.as.ImplicitAs.impl.Convert.type (%Int.as.ImplicitAs.impl.Convert.type.708) = import_ref Core//prelude/parts/int, loc20_44, loaded [symbolic = @Int.as.ImplicitAs.impl.%Int.as.ImplicitAs.impl.Convert (constants.%Int.as.ImplicitAs.impl.Convert.c68)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.1d9 = impl_witness_table (%Core.import_ref.85c), @Int.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%T.loc4_6.2: type) { @@ -541,23 +541,23 @@ fn G(N:! i32) { // CHECK:STDOUT: %pattern_type.loc8: type = pattern_type %array_type.loc8_20.2 [symbolic = %pattern_type.loc8 (constants.%pattern_type.035)] // CHECK:STDOUT: %Destroy.lookup_impl_witness.loc8: = lookup_impl_witness %array_type.loc8_20.2, @Destroy [symbolic = %Destroy.lookup_impl_witness.loc8 (constants.%Destroy.lookup_impl_witness.b45)] // CHECK:STDOUT: %Destroy.facet.loc8: %Destroy.type = facet_value %array_type.loc8_20.2, (%Destroy.lookup_impl_witness.loc8) [symbolic = %Destroy.facet.loc8 (constants.%Destroy.facet.0d3)] -// CHECK:STDOUT: %.loc8_3.2: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet.loc8 [symbolic = %.loc8_3.2 (constants.%.03f)] +// CHECK:STDOUT: %.loc8_3.2: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet.loc8 [symbolic = %.loc8_3.2 (constants.%.03f)] // CHECK:STDOUT: %impl.elem0.loc8_3.2: @F.%.loc8_3.2 (%.03f) = impl_witness_access %Destroy.lookup_impl_witness.loc8, element0 [symbolic = %impl.elem0.loc8_3.2 (constants.%impl.elem0.1ce)] -// CHECK:STDOUT: %specific_impl_fn.loc8_3.2: = specific_impl_function %impl.elem0.loc8_3.2, @Op.1(%Destroy.facet.loc8) [symbolic = %specific_impl_fn.loc8_3.2 (constants.%specific_impl_fn.236)] +// CHECK:STDOUT: %specific_impl_fn.loc8_3.2: = specific_impl_function %impl.elem0.loc8_3.2, @Destroy.Op(%Destroy.facet.loc8) [symbolic = %specific_impl_fn.loc8_3.2 (constants.%specific_impl_fn.236)] // CHECK:STDOUT: %ptr.loc8: type = ptr_type %array_type.loc8_20.2 [symbolic = %ptr.loc8 (constants.%ptr.1a0)] // CHECK:STDOUT: %require_complete.loc8_3: = require_complete_type %ptr.loc8 [symbolic = %require_complete.loc8_3 (constants.%require_complete.b09)] // CHECK:STDOUT: %Destroy.lookup_impl_witness.loc7: = lookup_impl_witness %struct_type.a.loc7_16.2, @Destroy [symbolic = %Destroy.lookup_impl_witness.loc7 (constants.%Destroy.lookup_impl_witness.b34)] // CHECK:STDOUT: %Destroy.facet.loc7: %Destroy.type = facet_value %struct_type.a.loc7_16.2, (%Destroy.lookup_impl_witness.loc7) [symbolic = %Destroy.facet.loc7 (constants.%Destroy.facet.2c9)] -// CHECK:STDOUT: %.loc7_3.2: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet.loc7 [symbolic = %.loc7_3.2 (constants.%.b85)] +// CHECK:STDOUT: %.loc7_3.2: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet.loc7 [symbolic = %.loc7_3.2 (constants.%.b85)] // CHECK:STDOUT: %impl.elem0.loc7_3.2: @F.%.loc7_3.2 (%.b85) = impl_witness_access %Destroy.lookup_impl_witness.loc7, element0 [symbolic = %impl.elem0.loc7_3.2 (constants.%impl.elem0.dc9)] -// CHECK:STDOUT: %specific_impl_fn.loc7_3.2: = specific_impl_function %impl.elem0.loc7_3.2, @Op.1(%Destroy.facet.loc7) [symbolic = %specific_impl_fn.loc7_3.2 (constants.%specific_impl_fn.2a6)] +// CHECK:STDOUT: %specific_impl_fn.loc7_3.2: = specific_impl_function %impl.elem0.loc7_3.2, @Destroy.Op(%Destroy.facet.loc7) [symbolic = %specific_impl_fn.loc7_3.2 (constants.%specific_impl_fn.2a6)] // CHECK:STDOUT: %ptr.loc7: type = ptr_type %struct_type.a.loc7_16.2 [symbolic = %ptr.loc7 (constants.%ptr.48a)] // CHECK:STDOUT: %require_complete.loc7_3: = require_complete_type %ptr.loc7 [symbolic = %require_complete.loc7_3 (constants.%require_complete.86d)] // CHECK:STDOUT: %Destroy.lookup_impl_witness.loc6: = lookup_impl_witness %tuple.type, @Destroy [symbolic = %Destroy.lookup_impl_witness.loc6 (constants.%Destroy.lookup_impl_witness.a8a)] // CHECK:STDOUT: %Destroy.facet.loc6: %Destroy.type = facet_value %tuple.type, (%Destroy.lookup_impl_witness.loc6) [symbolic = %Destroy.facet.loc6 (constants.%Destroy.facet.7be)] -// CHECK:STDOUT: %.loc6_3.2: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet.loc6 [symbolic = %.loc6_3.2 (constants.%.f5c)] +// CHECK:STDOUT: %.loc6_3.2: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet.loc6 [symbolic = %.loc6_3.2 (constants.%.f5c)] // CHECK:STDOUT: %impl.elem0.loc6_3.2: @F.%.loc6_3.2 (%.f5c) = impl_witness_access %Destroy.lookup_impl_witness.loc6, element0 [symbolic = %impl.elem0.loc6_3.2 (constants.%impl.elem0.87c)] -// CHECK:STDOUT: %specific_impl_fn.loc6_3.2: = specific_impl_function %impl.elem0.loc6_3.2, @Op.1(%Destroy.facet.loc6) [symbolic = %specific_impl_fn.loc6_3.2 (constants.%specific_impl_fn.4b8)] +// CHECK:STDOUT: %specific_impl_fn.loc6_3.2: = specific_impl_function %impl.elem0.loc6_3.2, @Destroy.Op(%Destroy.facet.loc6) [symbolic = %specific_impl_fn.loc6_3.2 (constants.%specific_impl_fn.4b8)] // CHECK:STDOUT: %ptr.loc6_3: type = ptr_type %tuple.type [symbolic = %ptr.loc6_3 (constants.%ptr.6cd)] // CHECK:STDOUT: %require_complete.loc6_3: = require_complete_type %ptr.loc6_3 [symbolic = %require_complete.loc6_3 (constants.%require_complete.66e)] // CHECK:STDOUT: @@ -600,19 +600,19 @@ fn G(N:! i32) { // CHECK:STDOUT: %w: ref @F.%array_type.loc8_20.2 (%array_type.ec2) = bind_name w, %w.var // CHECK:STDOUT: %impl.elem0.loc8_3.1: @F.%.loc8_3.2 (%.03f) = impl_witness_access constants.%Destroy.lookup_impl_witness.b45, element0 [symbolic = %impl.elem0.loc8_3.2 (constants.%impl.elem0.1ce)] // CHECK:STDOUT: %bound_method.loc8_3.1: = bound_method %w.var, %impl.elem0.loc8_3.1 -// CHECK:STDOUT: %specific_impl_fn.loc8_3.1: = specific_impl_function %impl.elem0.loc8_3.1, @Op.1(constants.%Destroy.facet.0d3) [symbolic = %specific_impl_fn.loc8_3.2 (constants.%specific_impl_fn.236)] +// CHECK:STDOUT: %specific_impl_fn.loc8_3.1: = specific_impl_function %impl.elem0.loc8_3.1, @Destroy.Op(constants.%Destroy.facet.0d3) [symbolic = %specific_impl_fn.loc8_3.2 (constants.%specific_impl_fn.236)] // CHECK:STDOUT: %bound_method.loc8_3.2: = bound_method %w.var, %specific_impl_fn.loc8_3.1 // CHECK:STDOUT: %addr.loc8: @F.%ptr.loc8 (%ptr.1a0) = addr_of %w.var // CHECK:STDOUT: %.loc8_3.1: init %empty_tuple.type = call %bound_method.loc8_3.2(%addr.loc8) // CHECK:STDOUT: %impl.elem0.loc7_3.1: @F.%.loc7_3.2 (%.b85) = impl_witness_access constants.%Destroy.lookup_impl_witness.b34, element0 [symbolic = %impl.elem0.loc7_3.2 (constants.%impl.elem0.dc9)] // CHECK:STDOUT: %bound_method.loc7_3.1: = bound_method %v.var, %impl.elem0.loc7_3.1 -// CHECK:STDOUT: %specific_impl_fn.loc7_3.1: = specific_impl_function %impl.elem0.loc7_3.1, @Op.1(constants.%Destroy.facet.2c9) [symbolic = %specific_impl_fn.loc7_3.2 (constants.%specific_impl_fn.2a6)] +// CHECK:STDOUT: %specific_impl_fn.loc7_3.1: = specific_impl_function %impl.elem0.loc7_3.1, @Destroy.Op(constants.%Destroy.facet.2c9) [symbolic = %specific_impl_fn.loc7_3.2 (constants.%specific_impl_fn.2a6)] // CHECK:STDOUT: %bound_method.loc7_3.2: = bound_method %v.var, %specific_impl_fn.loc7_3.1 // CHECK:STDOUT: %addr.loc7: @F.%ptr.loc7 (%ptr.48a) = addr_of %v.var // CHECK:STDOUT: %.loc7_3.1: init %empty_tuple.type = call %bound_method.loc7_3.2(%addr.loc7) // CHECK:STDOUT: %impl.elem0.loc6_3.1: @F.%.loc6_3.2 (%.f5c) = impl_witness_access constants.%Destroy.lookup_impl_witness.a8a, element0 [symbolic = %impl.elem0.loc6_3.2 (constants.%impl.elem0.87c)] // CHECK:STDOUT: %bound_method.loc6_3.1: = bound_method %u.var, %impl.elem0.loc6_3.1 -// CHECK:STDOUT: %specific_impl_fn.loc6_3.1: = specific_impl_function %impl.elem0.loc6_3.1, @Op.1(constants.%Destroy.facet.7be) [symbolic = %specific_impl_fn.loc6_3.2 (constants.%specific_impl_fn.4b8)] +// CHECK:STDOUT: %specific_impl_fn.loc6_3.1: = specific_impl_function %impl.elem0.loc6_3.1, @Destroy.Op(constants.%Destroy.facet.7be) [symbolic = %specific_impl_fn.loc6_3.2 (constants.%specific_impl_fn.4b8)] // CHECK:STDOUT: %bound_method.loc6_3.2: = bound_method %u.var, %specific_impl_fn.loc6_3.1 // CHECK:STDOUT: %addr.loc6: @F.%ptr.loc6_3 (%ptr.6cd) = addr_of %u.var // CHECK:STDOUT: %.loc6_3.1: init %empty_tuple.type = call %bound_method.loc6_3.2(%addr.loc6) @@ -624,17 +624,17 @@ fn G(N:! i32) { // CHECK:STDOUT: // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Convert.bound: = bound_method %N.loc12_6.1, constants.%Convert.960 [symbolic = %Convert.bound (constants.%Convert.bound)] -// CHECK:STDOUT: %bound_method.loc14_21.3: = bound_method %N.loc12_6.1, constants.%Convert.specific_fn [symbolic = %bound_method.loc14_21.3 (constants.%bound_method)] -// CHECK:STDOUT: %int.convert_checked.loc14_21.2: init Core.IntLiteral = call %bound_method.loc14_21.3(%N.loc12_6.1) [symbolic = %int.convert_checked.loc14_21.2 (constants.%int.convert_checked)] -// CHECK:STDOUT: %array_type.loc14_22.2: type = array_type %int.convert_checked.loc14_21.2, constants.%i32 [symbolic = %array_type.loc14_22.2 (constants.%array_type.c7c)] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.bound: = bound_method %N.loc12_6.1, constants.%Int.as.ImplicitAs.impl.Convert.960 [symbolic = %Int.as.ImplicitAs.impl.Convert.bound (constants.%Int.as.ImplicitAs.impl.Convert.bound)] +// CHECK:STDOUT: %bound_method.loc14_21.3: = bound_method %N.loc12_6.1, constants.%Int.as.ImplicitAs.impl.Convert.specific_fn [symbolic = %bound_method.loc14_21.3 (constants.%bound_method)] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call.loc14_21.2: init Core.IntLiteral = call %bound_method.loc14_21.3(%N.loc12_6.1) [symbolic = %Int.as.ImplicitAs.impl.Convert.call.loc14_21.2 (constants.%Int.as.ImplicitAs.impl.Convert.call)] +// CHECK:STDOUT: %array_type.loc14_22.2: type = array_type %Int.as.ImplicitAs.impl.Convert.call.loc14_21.2, constants.%i32 [symbolic = %array_type.loc14_22.2 (constants.%array_type.c7c)] // CHECK:STDOUT: %require_complete.loc14_22: = require_complete_type %array_type.loc14_22.2 [symbolic = %require_complete.loc14_22 (constants.%require_complete.7cb)] // CHECK:STDOUT: %pattern_type: type = pattern_type %array_type.loc14_22.2 [symbolic = %pattern_type (constants.%pattern_type.ccc)] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %array_type.loc14_22.2, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness.4fa)] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %array_type.loc14_22.2, (%Destroy.lookup_impl_witness) [symbolic = %Destroy.facet (constants.%Destroy.facet.ad4)] -// CHECK:STDOUT: %.loc14_3.2: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.loc14_3.2 (constants.%.a57)] +// CHECK:STDOUT: %.loc14_3.2: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet [symbolic = %.loc14_3.2 (constants.%.a57)] // CHECK:STDOUT: %impl.elem0.loc14_3.2: @G.%.loc14_3.2 (%.a57) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc14_3.2 (constants.%impl.elem0.f15)] -// CHECK:STDOUT: %specific_impl_fn.loc14_3.2: = specific_impl_function %impl.elem0.loc14_3.2, @Op.1(%Destroy.facet) [symbolic = %specific_impl_fn.loc14_3.2 (constants.%specific_impl_fn.bae)] +// CHECK:STDOUT: %specific_impl_fn.loc14_3.2: = specific_impl_function %impl.elem0.loc14_3.2, @Destroy.Op(%Destroy.facet) [symbolic = %specific_impl_fn.loc14_3.2 (constants.%specific_impl_fn.bae)] // CHECK:STDOUT: %ptr: type = ptr_type %array_type.loc14_22.2 [symbolic = %ptr (constants.%ptr.0ad)] // CHECK:STDOUT: %require_complete.loc14_3: = require_complete_type %ptr [symbolic = %require_complete.loc14_3 (constants.%require_complete.7d5)] // CHECK:STDOUT: @@ -649,19 +649,19 @@ fn G(N:! i32) { // CHECK:STDOUT: %int_32.loc14: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc14: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %N.ref: %i32 = name_ref N, %N.loc12_6.2 [symbolic = %N.loc12_6.1 (constants.%N.51e)] -// CHECK:STDOUT: %impl.elem0.loc14_21: %.0ea = impl_witness_access constants.%ImplicitAs.impl_witness.a11, element0 [concrete = constants.%Convert.960] -// CHECK:STDOUT: %bound_method.loc14_21.1: = bound_method %N.ref, %impl.elem0.loc14_21 [symbolic = %Convert.bound (constants.%Convert.bound)] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0.loc14_21, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc14_21: %.0ea = impl_witness_access constants.%ImplicitAs.impl_witness.a11, element0 [concrete = constants.%Int.as.ImplicitAs.impl.Convert.960] +// CHECK:STDOUT: %bound_method.loc14_21.1: = bound_method %N.ref, %impl.elem0.loc14_21 [symbolic = %Int.as.ImplicitAs.impl.Convert.bound (constants.%Int.as.ImplicitAs.impl.Convert.bound)] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0.loc14_21, @Int.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Int.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc14_21.2: = bound_method %N.ref, %specific_fn [symbolic = %bound_method.loc14_21.3 (constants.%bound_method)] -// CHECK:STDOUT: %int.convert_checked.loc14_21.1: init Core.IntLiteral = call %bound_method.loc14_21.2(%N.ref) [symbolic = %int.convert_checked.loc14_21.2 (constants.%int.convert_checked)] -// CHECK:STDOUT: %.loc14_21.1: Core.IntLiteral = value_of_initializer %int.convert_checked.loc14_21.1 [symbolic = %int.convert_checked.loc14_21.2 (constants.%int.convert_checked)] -// CHECK:STDOUT: %.loc14_21.2: Core.IntLiteral = converted %N.ref, %.loc14_21.1 [symbolic = %int.convert_checked.loc14_21.2 (constants.%int.convert_checked)] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call.loc14_21.1: init Core.IntLiteral = call %bound_method.loc14_21.2(%N.ref) [symbolic = %Int.as.ImplicitAs.impl.Convert.call.loc14_21.2 (constants.%Int.as.ImplicitAs.impl.Convert.call)] +// CHECK:STDOUT: %.loc14_21.1: Core.IntLiteral = value_of_initializer %Int.as.ImplicitAs.impl.Convert.call.loc14_21.1 [symbolic = %Int.as.ImplicitAs.impl.Convert.call.loc14_21.2 (constants.%Int.as.ImplicitAs.impl.Convert.call)] +// CHECK:STDOUT: %.loc14_21.2: Core.IntLiteral = converted %N.ref, %.loc14_21.1 [symbolic = %Int.as.ImplicitAs.impl.Convert.call.loc14_21.2 (constants.%Int.as.ImplicitAs.impl.Convert.call)] // CHECK:STDOUT: %array_type.loc14_22.1: type = array_type %.loc14_21.2, %i32.loc14 [symbolic = %array_type.loc14_22.2 (constants.%array_type.c7c)] // CHECK:STDOUT: } // CHECK:STDOUT: %k: ref @G.%array_type.loc14_22.2 (%array_type.c7c) = bind_name k, %k.var // CHECK:STDOUT: %impl.elem0.loc14_3.1: @G.%.loc14_3.2 (%.a57) = impl_witness_access constants.%Destroy.lookup_impl_witness.4fa, element0 [symbolic = %impl.elem0.loc14_3.2 (constants.%impl.elem0.f15)] // CHECK:STDOUT: %bound_method.loc14_3.1: = bound_method %k.var, %impl.elem0.loc14_3.1 -// CHECK:STDOUT: %specific_impl_fn.loc14_3.1: = specific_impl_function %impl.elem0.loc14_3.1, @Op.1(constants.%Destroy.facet.ad4) [symbolic = %specific_impl_fn.loc14_3.2 (constants.%specific_impl_fn.bae)] +// CHECK:STDOUT: %specific_impl_fn.loc14_3.1: = specific_impl_function %impl.elem0.loc14_3.1, @Destroy.Op(constants.%Destroy.facet.ad4) [symbolic = %specific_impl_fn.loc14_3.2 (constants.%specific_impl_fn.bae)] // CHECK:STDOUT: %bound_method.loc14_3.2: = bound_method %k.var, %specific_impl_fn.loc14_3.1 // CHECK:STDOUT: %addr: @G.%ptr (%ptr.0ad) = addr_of %k.var // CHECK:STDOUT: %.loc14_3.1: init %empty_tuple.type = call %bound_method.loc14_3.2(%addr) diff --git a/toolchain/check/testdata/facet/access.carbon b/toolchain/check/testdata/facet/access.carbon index 857ffb7fbb7c..a3abd9850b78 100644 --- a/toolchain/check/testdata/facet/access.carbon +++ b/toolchain/check/testdata/facet/access.carbon @@ -190,17 +190,17 @@ fn G(AB:! A & B where .X = () and .Y = {}) -> AB.Y { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] -// CHECK:STDOUT: %DoIt.type: type = fn_type @DoIt [concrete] +// CHECK:STDOUT: %I.DoIt.type: type = fn_type @I.DoIt [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] -// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%DoIt.decl [concrete] +// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%I.DoIt.decl [concrete] // CHECK:STDOUT: %T: %I.type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.as_type: type = facet_access_type %T [symbolic] // CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %T, @I [symbolic] // CHECK:STDOUT: %I.facet: %I.type = facet_value %T.as_type, (%I.lookup_impl_witness) [symbolic] -// CHECK:STDOUT: %.ded: type = fn_type_with_self_type %DoIt.type, %I.facet [symbolic] +// CHECK:STDOUT: %.ded: type = fn_type_with_self_type %I.DoIt.type, %I.facet [symbolic] // CHECK:STDOUT: %impl.elem0: %.ded = impl_witness_access %I.lookup_impl_witness, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @DoIt(%I.facet) [symbolic] +// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @I.DoIt(%I.facet) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -213,9 +213,9 @@ fn G(AB:! A & B where .X = () and .Y = {}) -> AB.Y { // CHECK:STDOUT: %T.as_type.loc10_4.2: type = facet_access_type %T.loc8_8.1 [symbolic = %T.as_type.loc10_4.2 (constants.%T.as_type)] // CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %T.loc8_8.1, @I [symbolic = %I.lookup_impl_witness (constants.%I.lookup_impl_witness)] // CHECK:STDOUT: %I.facet: %I.type = facet_value %T.as_type.loc10_4.2, (%I.lookup_impl_witness) [symbolic = %I.facet (constants.%I.facet)] -// CHECK:STDOUT: %.loc10_4.2: type = fn_type_with_self_type constants.%DoIt.type, %I.facet [symbolic = %.loc10_4.2 (constants.%.ded)] +// CHECK:STDOUT: %.loc10_4.2: type = fn_type_with_self_type constants.%I.DoIt.type, %I.facet [symbolic = %.loc10_4.2 (constants.%.ded)] // CHECK:STDOUT: %impl.elem0.loc10_4.2: @Use.%.loc10_4.2 (%.ded) = impl_witness_access %I.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc10_4.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %specific_impl_fn.loc10_4.2: = specific_impl_function %impl.elem0.loc10_4.2, @DoIt(%I.facet) [symbolic = %specific_impl_fn.loc10_4.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc10_4.2: = specific_impl_function %impl.elem0.loc10_4.2, @I.DoIt(%I.facet) [symbolic = %specific_impl_fn.loc10_4.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: // CHECK:STDOUT: fn() { // CHECK:STDOUT: !entry: @@ -224,7 +224,7 @@ fn G(AB:! A & B where .X = () and .Y = {}) -> AB.Y { // CHECK:STDOUT: %T.as_type.loc10_4.1: type = facet_access_type %T.ref [symbolic = %T.as_type.loc10_4.2 (constants.%T.as_type)] // CHECK:STDOUT: %.loc10_4.1: type = converted %T.ref, %T.as_type.loc10_4.1 [symbolic = %T.as_type.loc10_4.2 (constants.%T.as_type)] // CHECK:STDOUT: %impl.elem0.loc10_4.1: @Use.%.loc10_4.2 (%.ded) = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc10_4.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %specific_impl_fn.loc10_4.1: = specific_impl_function %impl.elem0.loc10_4.1, @DoIt(constants.%I.facet) [symbolic = %specific_impl_fn.loc10_4.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc10_4.1: = specific_impl_function %impl.elem0.loc10_4.1, @I.DoIt(constants.%I.facet) [symbolic = %specific_impl_fn.loc10_4.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %.loc10_10: init %empty_tuple.type = call %specific_impl_fn.loc10_4.1() // CHECK:STDOUT: // CHECK:STDOUT: } @@ -238,17 +238,17 @@ fn G(AB:! A & B where .X = () and .Y = {}) -> AB.Y { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] -// CHECK:STDOUT: %Make.type: type = fn_type @Make [concrete] +// CHECK:STDOUT: %I.Make.type: type = fn_type @I.Make [concrete] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] -// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%Make.decl [concrete] +// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%I.Make.decl [concrete] // CHECK:STDOUT: %T: %I.type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.as_type: type = facet_access_type %T [symbolic] // CHECK:STDOUT: %pattern_type.6de4e4.2: type = pattern_type %T.as_type [symbolic] // CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %T, @I [symbolic] // CHECK:STDOUT: %I.facet: %I.type = facet_value %T.as_type, (%I.lookup_impl_witness) [symbolic] -// CHECK:STDOUT: %.44c: type = fn_type_with_self_type %Make.type, %I.facet [symbolic] +// CHECK:STDOUT: %.44c: type = fn_type_with_self_type %I.Make.type, %I.facet [symbolic] // CHECK:STDOUT: %impl.elem0: %.44c = impl_witness_access %I.lookup_impl_witness, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Make(%I.facet) [symbolic] +// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @I.Make(%I.facet) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -261,9 +261,9 @@ fn G(AB:! A & B where .X = () and .Y = {}) -> AB.Y { // CHECK:STDOUT: // CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %T.loc8_8.1, @I [symbolic = %I.lookup_impl_witness (constants.%I.lookup_impl_witness)] // CHECK:STDOUT: %I.facet: %I.type = facet_value %T.as_type.loc8_18.1, (%I.lookup_impl_witness) [symbolic = %I.facet (constants.%I.facet)] -// CHECK:STDOUT: %.loc10_11.2: type = fn_type_with_self_type constants.%Make.type, %I.facet [symbolic = %.loc10_11.2 (constants.%.44c)] +// CHECK:STDOUT: %.loc10_11.2: type = fn_type_with_self_type constants.%I.Make.type, %I.facet [symbolic = %.loc10_11.2 (constants.%.44c)] // CHECK:STDOUT: %impl.elem0.loc10_11.2: @Use.%.loc10_11.2 (%.44c) = impl_witness_access %I.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc10_11.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %specific_impl_fn.loc10_11.2: = specific_impl_function %impl.elem0.loc10_11.2, @Make(%I.facet) [symbolic = %specific_impl_fn.loc10_11.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc10_11.2: = specific_impl_function %impl.elem0.loc10_11.2, @I.Make(%I.facet) [symbolic = %specific_impl_fn.loc10_11.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: // CHECK:STDOUT: fn() -> @Use.%T.as_type.loc8_18.1 (%T.as_type) { // CHECK:STDOUT: !entry: @@ -272,7 +272,7 @@ fn G(AB:! A & B where .X = () and .Y = {}) -> AB.Y { // CHECK:STDOUT: %T.as_type.loc10: type = facet_access_type %T.ref.loc10 [symbolic = %T.as_type.loc8_18.1 (constants.%T.as_type)] // CHECK:STDOUT: %.loc10_11.1: type = converted %T.ref.loc10, %T.as_type.loc10 [symbolic = %T.as_type.loc8_18.1 (constants.%T.as_type)] // CHECK:STDOUT: %impl.elem0.loc10_11.1: @Use.%.loc10_11.2 (%.44c) = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc10_11.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %specific_impl_fn.loc10_11.1: = specific_impl_function %impl.elem0.loc10_11.1, @Make(constants.%I.facet) [symbolic = %specific_impl_fn.loc10_11.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc10_11.1: = specific_impl_function %impl.elem0.loc10_11.1, @I.Make(constants.%I.facet) [symbolic = %specific_impl_fn.loc10_11.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %.loc10_17: init @Use.%T.as_type.loc8_18.1 (%T.as_type) = call %specific_impl_fn.loc10_11.1() // CHECK:STDOUT: %.loc10_18.1: @Use.%T.as_type.loc8_18.1 (%T.as_type) = value_of_initializer %.loc10_17 // CHECK:STDOUT: %.loc10_18.2: @Use.%T.as_type.loc8_18.1 (%T.as_type) = converted %.loc10_17, %.loc10_18.1 @@ -290,9 +290,9 @@ fn G(AB:! A & B where .X = () and .Y = {}) -> AB.Y { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] -// CHECK:STDOUT: %Copy.type: type = fn_type @Copy [concrete] +// CHECK:STDOUT: %I.Copy.type: type = fn_type @I.Copy [concrete] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] -// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%Copy.decl [concrete] +// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%I.Copy.decl [concrete] // CHECK:STDOUT: %T: %I.type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.2b5: type = pattern_type %I.type [concrete] // CHECK:STDOUT: %T.as_type: type = facet_access_type %T [symbolic] @@ -302,9 +302,9 @@ fn G(AB:! A & B where .X = () and .Y = {}) -> AB.Y { // CHECK:STDOUT: %require_complete: = require_complete_type %T.as_type [symbolic] // CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %T, @I [symbolic] // CHECK:STDOUT: %I.facet: %I.type = facet_value %T.as_type, (%I.lookup_impl_witness) [symbolic] -// CHECK:STDOUT: %.e3b: type = fn_type_with_self_type %Copy.type, %I.facet [symbolic] +// CHECK:STDOUT: %.e3b: type = fn_type_with_self_type %I.Copy.type, %I.facet [symbolic] // CHECK:STDOUT: %impl.elem0: %.e3b = impl_witness_access %I.lookup_impl_witness, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Copy(%I.facet) [symbolic] +// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @I.Copy(%I.facet) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -344,9 +344,9 @@ fn G(AB:! A & B where .X = () and .Y = {}) -> AB.Y { // CHECK:STDOUT: %require_complete: = require_complete_type %T.as_type.loc9_18.1 [symbolic = %require_complete (constants.%require_complete)] // CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %T.loc9_8.1, @I [symbolic = %I.lookup_impl_witness (constants.%I.lookup_impl_witness)] // CHECK:STDOUT: %I.facet: %I.type = facet_value %T.as_type.loc9_18.1, (%I.lookup_impl_witness) [symbolic = %I.facet (constants.%I.facet)] -// CHECK:STDOUT: %.loc10_11.2: type = fn_type_with_self_type constants.%Copy.type, %I.facet [symbolic = %.loc10_11.2 (constants.%.e3b)] +// CHECK:STDOUT: %.loc10_11.2: type = fn_type_with_self_type constants.%I.Copy.type, %I.facet [symbolic = %.loc10_11.2 (constants.%.e3b)] // CHECK:STDOUT: %impl.elem0.loc10_11.2: @Use.%.loc10_11.2 (%.e3b) = impl_witness_access %I.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc10_11.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %specific_impl_fn.loc10_11.2: = specific_impl_function %impl.elem0.loc10_11.2, @Copy(%I.facet) [symbolic = %specific_impl_fn.loc10_11.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc10_11.2: = specific_impl_function %impl.elem0.loc10_11.2, @I.Copy(%I.facet) [symbolic = %specific_impl_fn.loc10_11.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%x.param: @Use.%T.as_type.loc9_18.1 (%T.as_type)) -> @Use.%T.as_type.loc9_18.1 (%T.as_type) { // CHECK:STDOUT: !entry: @@ -356,7 +356,7 @@ fn G(AB:! A & B where .X = () and .Y = {}) -> AB.Y { // CHECK:STDOUT: %.loc10_11.1: type = converted constants.%T, %T.as_type.loc10 [symbolic = %T.as_type.loc9_18.1 (constants.%T.as_type)] // CHECK:STDOUT: %impl.elem0.loc10_11.1: @Use.%.loc10_11.2 (%.e3b) = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc10_11.2 (constants.%impl.elem0)] // CHECK:STDOUT: %bound_method.loc10_11: = bound_method %x.ref, %impl.elem0.loc10_11.1 -// CHECK:STDOUT: %specific_impl_fn.loc10_11.1: = specific_impl_function %impl.elem0.loc10_11.1, @Copy(constants.%I.facet) [symbolic = %specific_impl_fn.loc10_11.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc10_11.1: = specific_impl_function %impl.elem0.loc10_11.1, @I.Copy(constants.%I.facet) [symbolic = %specific_impl_fn.loc10_11.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %bound_method.loc10_17: = bound_method %x.ref, %specific_impl_fn.loc10_11.1 // CHECK:STDOUT: %.loc10_17: init @Use.%T.as_type.loc9_18.1 (%T.as_type) = call %bound_method.loc10_17(%x.ref) // CHECK:STDOUT: %.loc10_18.1: @Use.%T.as_type.loc9_18.1 (%T.as_type) = value_of_initializer %.loc10_17 @@ -375,18 +375,18 @@ fn G(AB:! A & B where .X = () and .Y = {}) -> AB.Y { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] -// CHECK:STDOUT: %Hello.type: type = fn_type @Hello [concrete] +// CHECK:STDOUT: %I.Hello.type: type = fn_type @I.Hello [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] -// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%Hello.decl [concrete] +// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%I.Hello.decl [concrete] // CHECK:STDOUT: %T: %I.type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.as_type: type = facet_access_type %T [symbolic] // CHECK:STDOUT: %pattern_type.6de: type = pattern_type %T.as_type [symbolic] // CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %T, @I [symbolic] // CHECK:STDOUT: %I.facet: %I.type = facet_value %T.as_type, (%I.lookup_impl_witness) [symbolic] -// CHECK:STDOUT: %.e1d: type = fn_type_with_self_type %Hello.type, %I.facet [symbolic] +// CHECK:STDOUT: %.e1d: type = fn_type_with_self_type %I.Hello.type, %I.facet [symbolic] // CHECK:STDOUT: %impl.elem0: %.e1d = impl_witness_access %I.lookup_impl_witness, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Hello(%I.facet) [symbolic] +// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @I.Hello(%I.facet) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -399,9 +399,9 @@ fn G(AB:! A & B where .X = () and .Y = {}) -> AB.Y { // CHECK:STDOUT: // CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %T.loc8_8.1, @I [symbolic = %I.lookup_impl_witness (constants.%I.lookup_impl_witness)] // CHECK:STDOUT: %I.facet: %I.type = facet_value %T.as_type.loc8_18.1, (%I.lookup_impl_witness) [symbolic = %I.facet (constants.%I.facet)] -// CHECK:STDOUT: %.loc10_4.2: type = fn_type_with_self_type constants.%Hello.type, %I.facet [symbolic = %.loc10_4.2 (constants.%.e1d)] +// CHECK:STDOUT: %.loc10_4.2: type = fn_type_with_self_type constants.%I.Hello.type, %I.facet [symbolic = %.loc10_4.2 (constants.%.e1d)] // CHECK:STDOUT: %impl.elem0.loc10_4.2: @Use.%.loc10_4.2 (%.e1d) = impl_witness_access %I.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc10_4.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %specific_impl_fn.loc10_4.2: = specific_impl_function %impl.elem0.loc10_4.2, @Hello(%I.facet) [symbolic = %specific_impl_fn.loc10_4.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc10_4.2: = specific_impl_function %impl.elem0.loc10_4.2, @I.Hello(%I.facet) [symbolic = %specific_impl_fn.loc10_4.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%x.param: @Use.%T.as_type.loc8_18.1 (%T.as_type)) { // CHECK:STDOUT: !entry: @@ -410,7 +410,7 @@ fn G(AB:! A & B where .X = () and .Y = {}) -> AB.Y { // CHECK:STDOUT: %T.as_type.loc10: type = facet_access_type constants.%T [symbolic = %T.as_type.loc8_18.1 (constants.%T.as_type)] // CHECK:STDOUT: %.loc10_4.1: type = converted constants.%T, %T.as_type.loc10 [symbolic = %T.as_type.loc8_18.1 (constants.%T.as_type)] // CHECK:STDOUT: %impl.elem0.loc10_4.1: @Use.%.loc10_4.2 (%.e1d) = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc10_4.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %specific_impl_fn.loc10_4.1: = specific_impl_function %impl.elem0.loc10_4.1, @Hello(constants.%I.facet) [symbolic = %specific_impl_fn.loc10_4.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc10_4.1: = specific_impl_function %impl.elem0.loc10_4.1, @I.Hello(constants.%I.facet) [symbolic = %specific_impl_fn.loc10_4.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %.loc10_11: init %empty_tuple.type = call %specific_impl_fn.loc10_4.1() // CHECK:STDOUT: // CHECK:STDOUT: } @@ -426,17 +426,17 @@ fn G(AB:! A & B where .X = () and .Y = {}) -> AB.Y { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] -// CHECK:STDOUT: %Copy.type: type = fn_type @Copy [concrete] +// CHECK:STDOUT: %I.Copy.type: type = fn_type @I.Copy [concrete] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] -// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%Copy.decl [concrete] +// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%I.Copy.decl [concrete] // CHECK:STDOUT: %T: %I.type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.as_type: type = facet_access_type %T [symbolic] // CHECK:STDOUT: %pattern_type.6de4e4.2: type = pattern_type %T.as_type [symbolic] // CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %T, @I [symbolic] // CHECK:STDOUT: %I.facet: %I.type = facet_value %T.as_type, (%I.lookup_impl_witness) [symbolic] -// CHECK:STDOUT: %.e3b: type = fn_type_with_self_type %Copy.type, %I.facet [symbolic] +// CHECK:STDOUT: %.e3b: type = fn_type_with_self_type %I.Copy.type, %I.facet [symbolic] // CHECK:STDOUT: %impl.elem0: %.e3b = impl_witness_access %I.lookup_impl_witness, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Copy(%I.facet) [symbolic] +// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @I.Copy(%I.facet) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -449,9 +449,9 @@ fn G(AB:! A & B where .X = () and .Y = {}) -> AB.Y { // CHECK:STDOUT: // CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %T.loc8_16.1, @I [symbolic = %I.lookup_impl_witness (constants.%I.lookup_impl_witness)] // CHECK:STDOUT: %I.facet: %I.type = facet_value %T.as_type.loc8_26.1, (%I.lookup_impl_witness) [symbolic = %I.facet (constants.%I.facet)] -// CHECK:STDOUT: %.loc10_14.2: type = fn_type_with_self_type constants.%Copy.type, %I.facet [symbolic = %.loc10_14.2 (constants.%.e3b)] +// CHECK:STDOUT: %.loc10_14.2: type = fn_type_with_self_type constants.%I.Copy.type, %I.facet [symbolic = %.loc10_14.2 (constants.%.e3b)] // CHECK:STDOUT: %impl.elem0.loc10_14.2: @UseIndirect.%.loc10_14.2 (%.e3b) = impl_witness_access %I.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc10_14.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %specific_impl_fn.loc10_14.2: = specific_impl_function %impl.elem0.loc10_14.2, @Copy(%I.facet) [symbolic = %specific_impl_fn.loc10_14.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc10_14.2: = specific_impl_function %impl.elem0.loc10_14.2, @I.Copy(%I.facet) [symbolic = %specific_impl_fn.loc10_14.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%x.param: @UseIndirect.%T.as_type.loc8_26.1 (%T.as_type)) -> @UseIndirect.%T.as_type.loc8_26.1 (%T.as_type) { // CHECK:STDOUT: !entry: @@ -462,7 +462,7 @@ fn G(AB:! A & B where .X = () and .Y = {}) -> AB.Y { // CHECK:STDOUT: %.loc10_14.1: type = converted %T.ref.loc10, %T.as_type.loc10 [symbolic = %T.as_type.loc8_26.1 (constants.%T.as_type)] // CHECK:STDOUT: %impl.elem0.loc10_14.1: @UseIndirect.%.loc10_14.2 (%.e3b) = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc10_14.2 (constants.%impl.elem0)] // CHECK:STDOUT: %bound_method.loc10_11: = bound_method %x.ref, %impl.elem0.loc10_14.1 -// CHECK:STDOUT: %specific_impl_fn.loc10_14.1: = specific_impl_function %impl.elem0.loc10_14.1, @Copy(constants.%I.facet) [symbolic = %specific_impl_fn.loc10_14.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc10_14.1: = specific_impl_function %impl.elem0.loc10_14.1, @I.Copy(constants.%I.facet) [symbolic = %specific_impl_fn.loc10_14.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %bound_method.loc10_21: = bound_method %x.ref, %specific_impl_fn.loc10_14.1 // CHECK:STDOUT: %.loc10_21: init @UseIndirect.%T.as_type.loc8_26.1 (%T.as_type) = call %bound_method.loc10_21(%x.ref) // CHECK:STDOUT: %.loc10_22.1: @UseIndirect.%T.as_type.loc8_26.1 (%T.as_type) = value_of_initializer %.loc10_21 @@ -566,13 +566,13 @@ fn G(AB:! A & B where .X = () and .Y = {}) -> AB.Y { // CHECK:STDOUT: %assoc0.081: %B.assoc_type = assoc_entity element0, @B.%Y [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %BitAndWith.type.e8c: type = facet_type <@BitAndWith, @BitAndWith(type)> [concrete] -// CHECK:STDOUT: %Op.type.9a3: type = fn_type @Op.1, @BitAndWith(type) [concrete] +// CHECK:STDOUT: %BitAndWith.Op.type.9a3: type = fn_type @BitAndWith.Op, @BitAndWith(type) [concrete] // CHECK:STDOUT: %BitAndWith.impl_witness: = impl_witness imports.%BitAndWith.impl_witness_table [concrete] // CHECK:STDOUT: %BitAndWith.facet: %BitAndWith.type.e8c = facet_value type, (%BitAndWith.impl_witness) [concrete] -// CHECK:STDOUT: %.2af: type = fn_type_with_self_type %Op.type.9a3, %BitAndWith.facet [concrete] -// CHECK:STDOUT: %Op.type.1cc: type = fn_type @Op.2 [concrete] -// CHECK:STDOUT: %Op.ff4: %Op.type.1cc = struct_value () [concrete] -// CHECK:STDOUT: %Op.bound: = bound_method %A.type, %Op.ff4 [concrete] +// CHECK:STDOUT: %.2af: type = fn_type_with_self_type %BitAndWith.Op.type.9a3, %BitAndWith.facet [concrete] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.type: type = fn_type @type.as.BitAndWith.impl.Op [concrete] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op: %type.as.BitAndWith.impl.Op.type = struct_value () [concrete] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.bound: = bound_method %A.type, %type.as.BitAndWith.impl.Op [concrete] // CHECK:STDOUT: %facet_type.938: type = facet_type <@A & @B> [concrete] // CHECK:STDOUT: %.Self: %facet_type.938 = bind_symbolic_name .Self [symbolic_self] // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] @@ -598,8 +598,8 @@ fn G(AB:! A & B where .X = () and .Y = {}) -> AB.Y { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core.import_ref.012: %Op.type.1cc = import_ref Core//prelude, loc13_42, loaded [concrete = constants.%Op.ff4] -// CHECK:STDOUT: %BitAndWith.impl_witness_table = impl_witness_table (%Core.import_ref.012), @BitAndWith.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.012: %type.as.BitAndWith.impl.Op.type = import_ref Core//prelude, loc13_42, loaded [concrete = constants.%type.as.BitAndWith.impl.Op] +// CHECK:STDOUT: %BitAndWith.impl_witness_table = impl_witness_table (%Core.import_ref.012), @type.as.BitAndWith.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -616,11 +616,11 @@ fn G(AB:! A & B where .X = () and .Y = {}) -> AB.Y { // CHECK:STDOUT: %.loc14_17.1: type = splice_block %.loc14_17.2 [concrete = constants.%facet_type.6d1] { // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B.type] -// CHECK:STDOUT: %impl.elem0.loc14_13: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%Op.ff4] -// CHECK:STDOUT: %bound_method: = bound_method %A.ref, %impl.elem0.loc14_13 [concrete = constants.%Op.bound] -// CHECK:STDOUT: %type.and: init type = call %bound_method(%A.ref, %B.ref) [concrete = constants.%facet_type.938] -// CHECK:STDOUT: %.loc14_13.1: type = value_of_initializer %type.and [concrete = constants.%facet_type.938] -// CHECK:STDOUT: %.loc14_13.2: type = converted %type.and, %.loc14_13.1 [concrete = constants.%facet_type.938] +// CHECK:STDOUT: %impl.elem0.loc14_13: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%type.as.BitAndWith.impl.Op] +// CHECK:STDOUT: %bound_method: = bound_method %A.ref, %impl.elem0.loc14_13 [concrete = constants.%type.as.BitAndWith.impl.Op.bound] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.call: init type = call %bound_method(%A.ref, %B.ref) [concrete = constants.%facet_type.938] +// CHECK:STDOUT: %.loc14_13.1: type = value_of_initializer %type.as.BitAndWith.impl.Op.call [concrete = constants.%facet_type.938] +// CHECK:STDOUT: %.loc14_13.2: type = converted %type.as.BitAndWith.impl.Op.call, %.loc14_13.1 [concrete = constants.%facet_type.938] // CHECK:STDOUT: // CHECK:STDOUT: %.Self.ref.loc14_23: %facet_type.938 = name_ref .Self, %.Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %X.ref.loc14_23: %A.assoc_type = name_ref X, @X.%assoc0 [concrete = constants.%assoc0.752] @@ -658,11 +658,11 @@ fn G(AB:! A & B where .X = () and .Y = {}) -> AB.Y { // CHECK:STDOUT: %.loc18_17.1: type = splice_block %.loc18_17.2 [concrete = constants.%facet_type.6d1] { // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B.type] -// CHECK:STDOUT: %impl.elem0.loc18_13: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%Op.ff4] -// CHECK:STDOUT: %bound_method: = bound_method %A.ref, %impl.elem0.loc18_13 [concrete = constants.%Op.bound] -// CHECK:STDOUT: %type.and: init type = call %bound_method(%A.ref, %B.ref) [concrete = constants.%facet_type.938] -// CHECK:STDOUT: %.loc18_13.1: type = value_of_initializer %type.and [concrete = constants.%facet_type.938] -// CHECK:STDOUT: %.loc18_13.2: type = converted %type.and, %.loc18_13.1 [concrete = constants.%facet_type.938] +// CHECK:STDOUT: %impl.elem0.loc18_13: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%type.as.BitAndWith.impl.Op] +// CHECK:STDOUT: %bound_method: = bound_method %A.ref, %impl.elem0.loc18_13 [concrete = constants.%type.as.BitAndWith.impl.Op.bound] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.call: init type = call %bound_method(%A.ref, %B.ref) [concrete = constants.%facet_type.938] +// CHECK:STDOUT: %.loc18_13.1: type = value_of_initializer %type.as.BitAndWith.impl.Op.call [concrete = constants.%facet_type.938] +// CHECK:STDOUT: %.loc18_13.2: type = converted %type.as.BitAndWith.impl.Op.call, %.loc18_13.1 [concrete = constants.%facet_type.938] // CHECK:STDOUT: // CHECK:STDOUT: %.Self.ref.loc18_23: %facet_type.938 = name_ref .Self, %.Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %X.ref: %A.assoc_type = name_ref X, @X.%assoc0 [concrete = constants.%assoc0.752] diff --git a/toolchain/check/testdata/facet/call_combined_impl_witness.carbon b/toolchain/check/testdata/facet/call_combined_impl_witness.carbon index 8dc78074e07d..2356757dda3b 100644 --- a/toolchain/check/testdata/facet/call_combined_impl_witness.carbon +++ b/toolchain/check/testdata/facet/call_combined_impl_witness.carbon @@ -52,41 +52,41 @@ fn F() { // CHECK:STDOUT: %Self.193: %Empty.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %A.type: type = facet_type <@A> [concrete] // CHECK:STDOUT: %Self.31d: %A.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %AA.type.b97: type = fn_type @AA.loc18 [concrete] +// CHECK:STDOUT: %A.AA.type: type = fn_type @A.AA [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %AA.c3a: %AA.type.b97 = struct_value () [concrete] +// CHECK:STDOUT: %A.AA: %A.AA.type = struct_value () [concrete] // CHECK:STDOUT: %A.assoc_type: type = assoc_entity_type @A [concrete] -// CHECK:STDOUT: %assoc0.6e7: %A.assoc_type = assoc_entity element0, @A.%AA.decl [concrete] +// CHECK:STDOUT: %assoc0.6e7: %A.assoc_type = assoc_entity element0, @A.%A.AA.decl [concrete] // CHECK:STDOUT: %B.type: type = facet_type <@B> [concrete] // CHECK:STDOUT: %Self.783: %B.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %BB.type.64d: type = fn_type @BB.loc21 [concrete] -// CHECK:STDOUT: %BB.11b: %BB.type.64d = struct_value () [concrete] +// CHECK:STDOUT: %B.BB.type: type = fn_type @B.BB [concrete] +// CHECK:STDOUT: %B.BB: %B.BB.type = struct_value () [concrete] // CHECK:STDOUT: %B.assoc_type: type = assoc_entity_type @B [concrete] -// CHECK:STDOUT: %assoc0.a29: %B.assoc_type = assoc_entity element0, @B.%BB.decl [concrete] +// CHECK:STDOUT: %assoc0.a29: %B.assoc_type = assoc_entity element0, @B.%B.BB.decl [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %Empty.impl_witness: = impl_witness file.%Empty.impl_witness_table [concrete] // CHECK:STDOUT: %A.impl_witness: = impl_witness file.%A.impl_witness_table [concrete] -// CHECK:STDOUT: %AA.type.c29: type = fn_type @AA.loc27 [concrete] -// CHECK:STDOUT: %AA.95d: %AA.type.c29 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.A.impl.AA.type: type = fn_type @C.as.A.impl.AA [concrete] +// CHECK:STDOUT: %C.as.A.impl.AA: %C.as.A.impl.AA.type = struct_value () [concrete] // CHECK:STDOUT: %A.facet.66c: %A.type = facet_value %C, (%A.impl_witness) [concrete] // CHECK:STDOUT: %B.impl_witness: = impl_witness file.%B.impl_witness_table [concrete] -// CHECK:STDOUT: %BB.type.24d: type = fn_type @BB.loc30 [concrete] -// CHECK:STDOUT: %BB.fe8: %BB.type.24d = struct_value () [concrete] +// CHECK:STDOUT: %C.as.B.impl.BB.type: type = fn_type @C.as.B.impl.BB [concrete] +// CHECK:STDOUT: %C.as.B.impl.BB: %C.as.B.impl.BB.type = struct_value () [concrete] // CHECK:STDOUT: %B.facet.82f: %B.type = facet_value %C, (%B.impl_witness) [concrete] // CHECK:STDOUT: %BitAndWith.type.f2e: type = generic_interface_type @BitAndWith [concrete] // CHECK:STDOUT: %BitAndWith.generic: %BitAndWith.type.f2e = struct_value () [concrete] // CHECK:STDOUT: %BitAndWith.type.e8c: type = facet_type <@BitAndWith, @BitAndWith(type)> [concrete] -// CHECK:STDOUT: %Op.type.9a3: type = fn_type @Op.1, @BitAndWith(type) [concrete] +// CHECK:STDOUT: %BitAndWith.Op.type.9a3: type = fn_type @BitAndWith.Op, @BitAndWith(type) [concrete] // CHECK:STDOUT: %BitAndWith.impl_witness: = impl_witness imports.%BitAndWith.impl_witness_table [concrete] // CHECK:STDOUT: %BitAndWith.facet: %BitAndWith.type.e8c = facet_value type, (%BitAndWith.impl_witness) [concrete] -// CHECK:STDOUT: %.2af: type = fn_type_with_self_type %Op.type.9a3, %BitAndWith.facet [concrete] -// CHECK:STDOUT: %Op.type.1cc: type = fn_type @Op.2 [concrete] -// CHECK:STDOUT: %Op.ff4: %Op.type.1cc = struct_value () [concrete] -// CHECK:STDOUT: %Op.bound.9a5: = bound_method %A.type, %Op.ff4 [concrete] +// CHECK:STDOUT: %.2af: type = fn_type_with_self_type %BitAndWith.Op.type.9a3, %BitAndWith.facet [concrete] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.type: type = fn_type @type.as.BitAndWith.impl.Op [concrete] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op: %type.as.BitAndWith.impl.Op.type = struct_value () [concrete] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.bound.9a5: = bound_method %A.type, %type.as.BitAndWith.impl.Op [concrete] // CHECK:STDOUT: %facet_type.d5f: type = facet_type <@Empty & @A> [concrete] -// CHECK:STDOUT: %Op.bound.44b: = bound_method %facet_type.d5f, %Op.ff4 [concrete] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.bound.44b: = bound_method %facet_type.d5f, %type.as.BitAndWith.impl.Op [concrete] // CHECK:STDOUT: %facet_type.242: type = facet_type <@Empty & @A & @B> [concrete] // CHECK:STDOUT: %T.2df: %facet_type.242 = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.8e7: type = pattern_type %facet_type.242 [concrete] @@ -97,14 +97,14 @@ fn F() { // CHECK:STDOUT: %require_complete.383: = require_complete_type %T.as_type [symbolic] // CHECK:STDOUT: %A.lookup_impl_witness: = lookup_impl_witness %T.2df, @A [symbolic] // CHECK:STDOUT: %A.facet.487: %A.type = facet_value %T.as_type, (%A.lookup_impl_witness) [symbolic] -// CHECK:STDOUT: %.fde: type = fn_type_with_self_type %AA.type.b97, %A.facet.487 [symbolic] +// CHECK:STDOUT: %.fde: type = fn_type_with_self_type %A.AA.type, %A.facet.487 [symbolic] // CHECK:STDOUT: %impl.elem0.de2: %.fde = impl_witness_access %A.lookup_impl_witness, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.086: = specific_impl_function %impl.elem0.de2, @AA.loc18(%A.facet.487) [symbolic] +// CHECK:STDOUT: %specific_impl_fn.086: = specific_impl_function %impl.elem0.de2, @A.AA(%A.facet.487) [symbolic] // CHECK:STDOUT: %B.lookup_impl_witness: = lookup_impl_witness %T.2df, @B [symbolic] // CHECK:STDOUT: %B.facet.8d1: %B.type = facet_value %T.as_type, (%B.lookup_impl_witness) [symbolic] -// CHECK:STDOUT: %.368: type = fn_type_with_self_type %BB.type.64d, %B.facet.8d1 [symbolic] +// CHECK:STDOUT: %.368: type = fn_type_with_self_type %B.BB.type, %B.facet.8d1 [symbolic] // CHECK:STDOUT: %impl.elem0.43b: %.368 = impl_witness_access %B.lookup_impl_witness, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.573: = specific_impl_function %impl.elem0.43b, @BB.loc21(%B.facet.8d1) [symbolic] +// CHECK:STDOUT: %specific_impl_fn.573: = specific_impl_function %impl.elem0.43b, @B.BB(%B.facet.8d1) [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] @@ -112,12 +112,12 @@ fn F() { // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] // CHECK:STDOUT: %G.specific_fn: = specific_function %G, @G(%facet_value) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.153: type = fn_type @Op.3, @Destroy.impl(%C) [concrete] -// CHECK:STDOUT: %Op.5d7: %Op.type.153 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.153: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.5d7: %T.as.Destroy.impl.Op.type.153 = struct_value () [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.5d7, @Op.3(%C) [concrete] -// CHECK:STDOUT: %.7ab: type = fn_type_with_self_type %AA.type.b97, %A.facet.66c [concrete] -// CHECK:STDOUT: %.b43: type = fn_type_with_self_type %BB.type.64d, %B.facet.82f [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(%C) [concrete] +// CHECK:STDOUT: %.7ab: type = fn_type_with_self_type %A.AA.type, %A.facet.66c [concrete] +// CHECK:STDOUT: %.b43: type = fn_type_with_self_type %B.BB.type, %B.facet.82f [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -128,8 +128,8 @@ fn F() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.BitAndWith: %BitAndWith.type.f2e = import_ref Core//prelude, BitAndWith, loaded [concrete = constants.%BitAndWith.generic] -// CHECK:STDOUT: %Core.import_ref.012: %Op.type.1cc = import_ref Core//prelude, loc13_42, loaded [concrete = constants.%Op.ff4] -// CHECK:STDOUT: %BitAndWith.impl_witness_table = impl_witness_table (%Core.import_ref.012), @BitAndWith.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.012: %type.as.BitAndWith.impl.Op.type = import_ref Core//prelude, loc13_42, loaded [concrete = constants.%type.as.BitAndWith.impl.Op] +// CHECK:STDOUT: %BitAndWith.impl_witness_table = impl_witness_table (%Core.import_ref.012), @type.as.BitAndWith.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -148,23 +148,23 @@ fn F() { // CHECK:STDOUT: %A.decl: type = interface_decl @A [concrete = constants.%A.type] {} {} // CHECK:STDOUT: %B.decl: type = interface_decl @B [concrete = constants.%B.type] {} {} // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} -// CHECK:STDOUT: impl_decl @Empty.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.Empty.impl [concrete] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %Empty.ref: type = name_ref Empty, file.%Empty.decl [concrete = constants.%Empty.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %Empty.impl_witness_table = impl_witness_table (), @Empty.impl [concrete] +// CHECK:STDOUT: %Empty.impl_witness_table = impl_witness_table (), @C.as.Empty.impl [concrete] // CHECK:STDOUT: %Empty.impl_witness: = impl_witness %Empty.impl_witness_table [concrete = constants.%Empty.impl_witness] -// CHECK:STDOUT: impl_decl @A.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.A.impl [concrete] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %A.impl_witness_table = impl_witness_table (@A.impl.%AA.decl), @A.impl [concrete] +// CHECK:STDOUT: %A.impl_witness_table = impl_witness_table (@C.as.A.impl.%C.as.A.impl.AA.decl), @C.as.A.impl [concrete] // CHECK:STDOUT: %A.impl_witness: = impl_witness %A.impl_witness_table [concrete = constants.%A.impl_witness] -// CHECK:STDOUT: impl_decl @B.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.B.impl [concrete] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %B.impl_witness_table = impl_witness_table (@B.impl.%BB.decl), @B.impl [concrete] +// CHECK:STDOUT: %B.impl_witness_table = impl_witness_table (@C.as.B.impl.%C.as.B.impl.BB.decl), @C.as.B.impl [concrete] // CHECK:STDOUT: %B.impl_witness: = impl_witness %B.impl_witness_table [concrete = constants.%B.impl_witness] // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { // CHECK:STDOUT: %T.patt: %pattern_type.8e7 = symbolic_binding_pattern T, 0 [concrete] @@ -174,17 +174,17 @@ fn F() { // CHECK:STDOUT: %.loc33_20.1: type = splice_block %.loc33_20.3 [concrete = constants.%facet_type.242] { // CHECK:STDOUT: %A.ref.loc33: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: %Empty.ref: type = name_ref Empty, file.%Empty.decl [concrete = constants.%Empty.type] -// CHECK:STDOUT: %impl.elem0.loc33_12: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%Op.ff4] -// CHECK:STDOUT: %bound_method.loc33_12: = bound_method %A.ref.loc33, %impl.elem0.loc33_12 [concrete = constants.%Op.bound.9a5] -// CHECK:STDOUT: %type.and.loc33_12: init type = call %bound_method.loc33_12(%A.ref.loc33, %Empty.ref) [concrete = constants.%facet_type.d5f] +// CHECK:STDOUT: %impl.elem0.loc33_12: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%type.as.BitAndWith.impl.Op] +// CHECK:STDOUT: %bound_method.loc33_12: = bound_method %A.ref.loc33, %impl.elem0.loc33_12 [concrete = constants.%type.as.BitAndWith.impl.Op.bound.9a5] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.call.loc33_12: init type = call %bound_method.loc33_12(%A.ref.loc33, %Empty.ref) [concrete = constants.%facet_type.d5f] // CHECK:STDOUT: %B.ref.loc33: type = name_ref B, file.%B.decl [concrete = constants.%B.type] -// CHECK:STDOUT: %impl.elem0.loc33_20: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%Op.ff4] -// CHECK:STDOUT: %bound_method.loc33_20: = bound_method %type.and.loc33_12, %impl.elem0.loc33_20 [concrete = constants.%Op.bound.44b] -// CHECK:STDOUT: %.loc33_12.1: type = value_of_initializer %type.and.loc33_12 [concrete = constants.%facet_type.d5f] -// CHECK:STDOUT: %.loc33_12.2: type = converted %type.and.loc33_12, %.loc33_12.1 [concrete = constants.%facet_type.d5f] -// CHECK:STDOUT: %type.and.loc33_20: init type = call %bound_method.loc33_20(%.loc33_12.2, %B.ref.loc33) [concrete = constants.%facet_type.242] -// CHECK:STDOUT: %.loc33_20.2: type = value_of_initializer %type.and.loc33_20 [concrete = constants.%facet_type.242] -// CHECK:STDOUT: %.loc33_20.3: type = converted %type.and.loc33_20, %.loc33_20.2 [concrete = constants.%facet_type.242] +// CHECK:STDOUT: %impl.elem0.loc33_20: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%type.as.BitAndWith.impl.Op] +// CHECK:STDOUT: %bound_method.loc33_20: = bound_method %type.as.BitAndWith.impl.Op.call.loc33_12, %impl.elem0.loc33_20 [concrete = constants.%type.as.BitAndWith.impl.Op.bound.44b] +// CHECK:STDOUT: %.loc33_12.1: type = value_of_initializer %type.as.BitAndWith.impl.Op.call.loc33_12 [concrete = constants.%facet_type.d5f] +// CHECK:STDOUT: %.loc33_12.2: type = converted %type.as.BitAndWith.impl.Op.call.loc33_12, %.loc33_12.1 [concrete = constants.%facet_type.d5f] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.call.loc33_20: init type = call %bound_method.loc33_20(%.loc33_12.2, %B.ref.loc33) [concrete = constants.%facet_type.242] +// CHECK:STDOUT: %.loc33_20.2: type = value_of_initializer %type.as.BitAndWith.impl.Op.call.loc33_20 [concrete = constants.%facet_type.242] +// CHECK:STDOUT: %.loc33_20.3: type = converted %type.as.BitAndWith.impl.Op.call.loc33_20, %.loc33_20.2 [concrete = constants.%facet_type.242] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc33_6.2: %facet_type.242 = bind_symbolic_name T, 0 [symbolic = %T.loc33_6.1 (constants.%T.2df)] // CHECK:STDOUT: %t.param: @G.%T.as_type.loc33_28.1 (%T.as_type) = value_param call_param0 @@ -210,46 +210,46 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: interface @A { // CHECK:STDOUT: %Self: %A.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.31d] -// CHECK:STDOUT: %AA.decl: %AA.type.b97 = fn_decl @AA.loc18 [concrete = constants.%AA.c3a] {} {} -// CHECK:STDOUT: %assoc0: %A.assoc_type = assoc_entity element0, %AA.decl [concrete = constants.%assoc0.6e7] +// CHECK:STDOUT: %A.AA.decl: %A.AA.type = fn_decl @A.AA [concrete = constants.%A.AA] {} {} +// CHECK:STDOUT: %assoc0: %A.assoc_type = assoc_entity element0, %A.AA.decl [concrete = constants.%assoc0.6e7] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .AA = %assoc0 // CHECK:STDOUT: .BB = -// CHECK:STDOUT: witness = (%AA.decl) +// CHECK:STDOUT: witness = (%A.AA.decl) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @B { // CHECK:STDOUT: %Self: %B.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.783] -// CHECK:STDOUT: %BB.decl: %BB.type.64d = fn_decl @BB.loc21 [concrete = constants.%BB.11b] {} {} -// CHECK:STDOUT: %assoc0: %B.assoc_type = assoc_entity element0, %BB.decl [concrete = constants.%assoc0.a29] +// CHECK:STDOUT: %B.BB.decl: %B.BB.type = fn_decl @B.BB [concrete = constants.%B.BB] {} {} +// CHECK:STDOUT: %assoc0: %B.assoc_type = assoc_entity element0, %B.BB.decl [concrete = constants.%assoc0.a29] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .BB = %assoc0 // CHECK:STDOUT: .AA = -// CHECK:STDOUT: witness = (%BB.decl) +// CHECK:STDOUT: witness = (%B.BB.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Empty.impl: %C.ref as %Empty.ref { +// CHECK:STDOUT: impl @C.as.Empty.impl: %C.ref as %Empty.ref { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%Empty.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @A.impl: %C.ref as %A.ref { -// CHECK:STDOUT: %AA.decl: %AA.type.c29 = fn_decl @AA.loc27 [concrete = constants.%AA.95d] {} {} +// CHECK:STDOUT: impl @C.as.A.impl: %C.ref as %A.ref { +// CHECK:STDOUT: %C.as.A.impl.AA.decl: %C.as.A.impl.AA.type = fn_decl @C.as.A.impl.AA [concrete = constants.%C.as.A.impl.AA] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .AA = %AA.decl +// CHECK:STDOUT: .AA = %C.as.A.impl.AA.decl // CHECK:STDOUT: witness = file.%A.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @B.impl: %C.ref as %B.ref { -// CHECK:STDOUT: %BB.decl: %BB.type.24d = fn_decl @BB.loc30 [concrete = constants.%BB.fe8] {} {} +// CHECK:STDOUT: impl @C.as.B.impl: %C.ref as %B.ref { +// CHECK:STDOUT: %C.as.B.impl.BB.decl: %C.as.B.impl.BB.type = fn_decl @C.as.B.impl.BB [concrete = constants.%C.as.B.impl.BB] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .BB = %BB.decl +// CHECK:STDOUT: .BB = %C.as.B.impl.BB.decl // CHECK:STDOUT: witness = file.%B.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: @@ -262,20 +262,20 @@ fn F() { // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @AA.loc18(@A.%Self: %A.type) { +// CHECK:STDOUT: generic fn @A.AA(@A.%Self: %A.type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @BB.loc21(@B.%Self: %B.type) { +// CHECK:STDOUT: generic fn @B.BB(@B.%Self: %B.type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @AA.loc27() { +// CHECK:STDOUT: fn @C.as.A.impl.AA() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @BB.loc30() { +// CHECK:STDOUT: fn @C.as.B.impl.BB() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -289,14 +289,14 @@ fn F() { // CHECK:STDOUT: %require_complete: = require_complete_type %T.as_type.loc33_28.1 [symbolic = %require_complete (constants.%require_complete.383)] // CHECK:STDOUT: %A.lookup_impl_witness: = lookup_impl_witness %T.loc33_6.1, @A [symbolic = %A.lookup_impl_witness (constants.%A.lookup_impl_witness)] // CHECK:STDOUT: %A.facet.loc34: %A.type = facet_value %T.as_type.loc33_28.1, (%A.lookup_impl_witness) [symbolic = %A.facet.loc34 (constants.%A.facet.487)] -// CHECK:STDOUT: %.loc34_4.2: type = fn_type_with_self_type constants.%AA.type.b97, %A.facet.loc34 [symbolic = %.loc34_4.2 (constants.%.fde)] +// CHECK:STDOUT: %.loc34_4.2: type = fn_type_with_self_type constants.%A.AA.type, %A.facet.loc34 [symbolic = %.loc34_4.2 (constants.%.fde)] // CHECK:STDOUT: %impl.elem0.loc34_4.2: @G.%.loc34_4.2 (%.fde) = impl_witness_access %A.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc34_4.2 (constants.%impl.elem0.de2)] -// CHECK:STDOUT: %specific_impl_fn.loc34_4.2: = specific_impl_function %impl.elem0.loc34_4.2, @AA.loc18(%A.facet.loc34) [symbolic = %specific_impl_fn.loc34_4.2 (constants.%specific_impl_fn.086)] +// CHECK:STDOUT: %specific_impl_fn.loc34_4.2: = specific_impl_function %impl.elem0.loc34_4.2, @A.AA(%A.facet.loc34) [symbolic = %specific_impl_fn.loc34_4.2 (constants.%specific_impl_fn.086)] // CHECK:STDOUT: %B.lookup_impl_witness: = lookup_impl_witness %T.loc33_6.1, @B [symbolic = %B.lookup_impl_witness (constants.%B.lookup_impl_witness)] // CHECK:STDOUT: %B.facet.loc35: %B.type = facet_value %T.as_type.loc33_28.1, (%B.lookup_impl_witness) [symbolic = %B.facet.loc35 (constants.%B.facet.8d1)] -// CHECK:STDOUT: %.loc35_4.2: type = fn_type_with_self_type constants.%BB.type.64d, %B.facet.loc35 [symbolic = %.loc35_4.2 (constants.%.368)] +// CHECK:STDOUT: %.loc35_4.2: type = fn_type_with_self_type constants.%B.BB.type, %B.facet.loc35 [symbolic = %.loc35_4.2 (constants.%.368)] // CHECK:STDOUT: %impl.elem0.loc35_4.2: @G.%.loc35_4.2 (%.368) = impl_witness_access %B.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc35_4.2 (constants.%impl.elem0.43b)] -// CHECK:STDOUT: %specific_impl_fn.loc35_4.2: = specific_impl_function %impl.elem0.loc35_4.2, @BB.loc21(%B.facet.loc35) [symbolic = %specific_impl_fn.loc35_4.2 (constants.%specific_impl_fn.573)] +// CHECK:STDOUT: %specific_impl_fn.loc35_4.2: = specific_impl_function %impl.elem0.loc35_4.2, @B.BB(%B.facet.loc35) [symbolic = %specific_impl_fn.loc35_4.2 (constants.%specific_impl_fn.573)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%t.param: @G.%T.as_type.loc33_28.1 (%T.as_type)) { // CHECK:STDOUT: !entry: @@ -305,28 +305,28 @@ fn F() { // CHECK:STDOUT: %T.as_type.loc34: type = facet_access_type constants.%T.2df [symbolic = %T.as_type.loc33_28.1 (constants.%T.as_type)] // CHECK:STDOUT: %.loc34_4.1: type = converted constants.%T.2df, %T.as_type.loc34 [symbolic = %T.as_type.loc33_28.1 (constants.%T.as_type)] // CHECK:STDOUT: %impl.elem0.loc34_4.1: @G.%.loc34_4.2 (%.fde) = impl_witness_access constants.%A.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc34_4.2 (constants.%impl.elem0.de2)] -// CHECK:STDOUT: %specific_impl_fn.loc34_4.1: = specific_impl_function %impl.elem0.loc34_4.1, @AA.loc18(constants.%A.facet.487) [symbolic = %specific_impl_fn.loc34_4.2 (constants.%specific_impl_fn.086)] +// CHECK:STDOUT: %specific_impl_fn.loc34_4.1: = specific_impl_function %impl.elem0.loc34_4.1, @A.AA(constants.%A.facet.487) [symbolic = %specific_impl_fn.loc34_4.2 (constants.%specific_impl_fn.086)] // CHECK:STDOUT: %.loc34_8: init %empty_tuple.type = call %specific_impl_fn.loc34_4.1() // CHECK:STDOUT: %t.ref.loc35: @G.%T.as_type.loc33_28.1 (%T.as_type) = name_ref t, %t // CHECK:STDOUT: %BB.ref.loc35: %B.assoc_type = name_ref BB, @B.%assoc0 [concrete = constants.%assoc0.a29] // CHECK:STDOUT: %T.as_type.loc35: type = facet_access_type constants.%T.2df [symbolic = %T.as_type.loc33_28.1 (constants.%T.as_type)] // CHECK:STDOUT: %.loc35_4.1: type = converted constants.%T.2df, %T.as_type.loc35 [symbolic = %T.as_type.loc33_28.1 (constants.%T.as_type)] // CHECK:STDOUT: %impl.elem0.loc35_4.1: @G.%.loc35_4.2 (%.368) = impl_witness_access constants.%B.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc35_4.2 (constants.%impl.elem0.43b)] -// CHECK:STDOUT: %specific_impl_fn.loc35_4.1: = specific_impl_function %impl.elem0.loc35_4.1, @BB.loc21(constants.%B.facet.8d1) [symbolic = %specific_impl_fn.loc35_4.2 (constants.%specific_impl_fn.573)] +// CHECK:STDOUT: %specific_impl_fn.loc35_4.1: = specific_impl_function %impl.elem0.loc35_4.1, @B.BB(constants.%B.facet.8d1) [symbolic = %specific_impl_fn.loc35_4.2 (constants.%specific_impl_fn.573)] // CHECK:STDOUT: %.loc35_8: init %empty_tuple.type = call %specific_impl_fn.loc35_4.1() // CHECK:STDOUT: %T.ref.loc37: %facet_type.242 = name_ref T, %T.loc33_6.2 [symbolic = %T.loc33_6.1 (constants.%T.2df)] // CHECK:STDOUT: %AA.ref.loc37: %A.assoc_type = name_ref AA, @A.%assoc0 [concrete = constants.%assoc0.6e7] // CHECK:STDOUT: %T.as_type.loc37: type = facet_access_type %T.ref.loc37 [symbolic = %T.as_type.loc33_28.1 (constants.%T.as_type)] // CHECK:STDOUT: %.loc37_4: type = converted %T.ref.loc37, %T.as_type.loc37 [symbolic = %T.as_type.loc33_28.1 (constants.%T.as_type)] // CHECK:STDOUT: %impl.elem0.loc37: @G.%.loc34_4.2 (%.fde) = impl_witness_access constants.%A.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc34_4.2 (constants.%impl.elem0.de2)] -// CHECK:STDOUT: %specific_impl_fn.loc37: = specific_impl_function %impl.elem0.loc37, @AA.loc18(constants.%A.facet.487) [symbolic = %specific_impl_fn.loc34_4.2 (constants.%specific_impl_fn.086)] +// CHECK:STDOUT: %specific_impl_fn.loc37: = specific_impl_function %impl.elem0.loc37, @A.AA(constants.%A.facet.487) [symbolic = %specific_impl_fn.loc34_4.2 (constants.%specific_impl_fn.086)] // CHECK:STDOUT: %.loc37_8: init %empty_tuple.type = call %specific_impl_fn.loc37() // CHECK:STDOUT: %T.ref.loc38: %facet_type.242 = name_ref T, %T.loc33_6.2 [symbolic = %T.loc33_6.1 (constants.%T.2df)] // CHECK:STDOUT: %BB.ref.loc38: %B.assoc_type = name_ref BB, @B.%assoc0 [concrete = constants.%assoc0.a29] // CHECK:STDOUT: %T.as_type.loc38: type = facet_access_type %T.ref.loc38 [symbolic = %T.as_type.loc33_28.1 (constants.%T.as_type)] // CHECK:STDOUT: %.loc38_4: type = converted %T.ref.loc38, %T.as_type.loc38 [symbolic = %T.as_type.loc33_28.1 (constants.%T.as_type)] // CHECK:STDOUT: %impl.elem0.loc38: @G.%.loc35_4.2 (%.368) = impl_witness_access constants.%B.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc35_4.2 (constants.%impl.elem0.43b)] -// CHECK:STDOUT: %specific_impl_fn.loc38: = specific_impl_function %impl.elem0.loc38, @BB.loc21(constants.%B.facet.8d1) [symbolic = %specific_impl_fn.loc35_4.2 (constants.%specific_impl_fn.573)] +// CHECK:STDOUT: %specific_impl_fn.loc38: = specific_impl_function %impl.elem0.loc38, @B.BB(constants.%B.facet.8d1) [symbolic = %specific_impl_fn.loc35_4.2 (constants.%specific_impl_fn.573)] // CHECK:STDOUT: %.loc38_8: init %empty_tuple.type = call %specific_impl_fn.loc38() // CHECK:STDOUT: %T.ref.loc40: %facet_type.242 = name_ref T, %T.loc33_6.2 [symbolic = %T.loc33_6.1 (constants.%T.2df)] // CHECK:STDOUT: %A.ref.loc40: type = name_ref A, file.%A.decl [concrete = constants.%A.type] @@ -335,7 +335,7 @@ fn F() { // CHECK:STDOUT: %A.facet.loc40: %A.type = facet_value %T.as_type.loc40, (constants.%A.lookup_impl_witness) [symbolic = %A.facet.loc34 (constants.%A.facet.487)] // CHECK:STDOUT: %.loc40_4: %A.type = converted %T.ref.loc40, %A.facet.loc40 [symbolic = %A.facet.loc34 (constants.%A.facet.487)] // CHECK:STDOUT: %impl.elem0.loc40: @G.%.loc34_4.2 (%.fde) = impl_witness_access constants.%A.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc34_4.2 (constants.%impl.elem0.de2)] -// CHECK:STDOUT: %specific_impl_fn.loc40: = specific_impl_function %impl.elem0.loc40, @AA.loc18(constants.%A.facet.487) [symbolic = %specific_impl_fn.loc34_4.2 (constants.%specific_impl_fn.086)] +// CHECK:STDOUT: %specific_impl_fn.loc40: = specific_impl_function %impl.elem0.loc40, @A.AA(constants.%A.facet.487) [symbolic = %specific_impl_fn.loc34_4.2 (constants.%specific_impl_fn.086)] // CHECK:STDOUT: %.loc40_12: init %empty_tuple.type = call %specific_impl_fn.loc40() // CHECK:STDOUT: %T.ref.loc41: %facet_type.242 = name_ref T, %T.loc33_6.2 [symbolic = %T.loc33_6.1 (constants.%T.2df)] // CHECK:STDOUT: %B.ref.loc41: type = name_ref B, file.%B.decl [concrete = constants.%B.type] @@ -344,7 +344,7 @@ fn F() { // CHECK:STDOUT: %B.facet.loc41: %B.type = facet_value %T.as_type.loc41, (constants.%B.lookup_impl_witness) [symbolic = %B.facet.loc35 (constants.%B.facet.8d1)] // CHECK:STDOUT: %.loc41_4: %B.type = converted %T.ref.loc41, %B.facet.loc41 [symbolic = %B.facet.loc35 (constants.%B.facet.8d1)] // CHECK:STDOUT: %impl.elem0.loc41: @G.%.loc35_4.2 (%.368) = impl_witness_access constants.%B.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc35_4.2 (constants.%impl.elem0.43b)] -// CHECK:STDOUT: %specific_impl_fn.loc41: = specific_impl_function %impl.elem0.loc41, @BB.loc21(constants.%B.facet.8d1) [symbolic = %specific_impl_fn.loc35_4.2 (constants.%specific_impl_fn.573)] +// CHECK:STDOUT: %specific_impl_fn.loc41: = specific_impl_function %impl.elem0.loc41, @B.BB(constants.%B.facet.8d1) [symbolic = %specific_impl_fn.loc35_4.2 (constants.%specific_impl_fn.573)] // CHECK:STDOUT: %.loc41_12: init %empty_tuple.type = call %specific_impl_fn.loc41() // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -366,21 +366,21 @@ fn F() { // CHECK:STDOUT: %G.specific_fn: = specific_function %G.ref, @G(constants.%facet_value) [concrete = constants.%G.specific_fn] // CHECK:STDOUT: %.loc45_8.2: %C = bind_value %.loc45_8.1 // CHECK:STDOUT: %G.call: init %empty_tuple.type = call %G.specific_fn(%.loc45_8.2) -// CHECK:STDOUT: %Op.bound: = bound_method %.loc45_6.2, constants.%Op.5d7 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.5d7, @Op.3(constants.%C) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc45_6.2, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc45_6.2, constants.%T.as.Destroy.impl.Op.5d7 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(constants.%C) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %.loc45_6.2, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc45_6.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @AA.loc18(constants.%Self.31d) {} +// CHECK:STDOUT: specific @A.AA(constants.%Self.31d) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @BB.loc21(constants.%Self.783) {} +// CHECK:STDOUT: specific @B.BB(constants.%Self.783) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @AA.loc18(constants.%A.facet.66c) {} +// CHECK:STDOUT: specific @A.AA(constants.%A.facet.66c) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @BB.loc21(constants.%B.facet.82f) {} +// CHECK:STDOUT: specific @B.BB(constants.%B.facet.82f) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @G(constants.%T.2df) { // CHECK:STDOUT: %T.loc33_6.1 => constants.%T.2df @@ -388,9 +388,9 @@ fn F() { // CHECK:STDOUT: %pattern_type => constants.%pattern_type.9a0 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @AA.loc18(constants.%A.facet.487) {} +// CHECK:STDOUT: specific @A.AA(constants.%A.facet.487) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @BB.loc21(constants.%B.facet.8d1) {} +// CHECK:STDOUT: specific @B.BB(constants.%B.facet.8d1) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @G(constants.%facet_value) { // CHECK:STDOUT: %T.loc33_6.1 => constants.%facet_value @@ -402,12 +402,12 @@ fn F() { // CHECK:STDOUT: %A.lookup_impl_witness => constants.%A.impl_witness // CHECK:STDOUT: %A.facet.loc34 => constants.%A.facet.66c // CHECK:STDOUT: %.loc34_4.2 => constants.%.7ab -// CHECK:STDOUT: %impl.elem0.loc34_4.2 => constants.%AA.95d -// CHECK:STDOUT: %specific_impl_fn.loc34_4.2 => constants.%AA.95d +// CHECK:STDOUT: %impl.elem0.loc34_4.2 => constants.%C.as.A.impl.AA +// CHECK:STDOUT: %specific_impl_fn.loc34_4.2 => constants.%C.as.A.impl.AA // CHECK:STDOUT: %B.lookup_impl_witness => constants.%B.impl_witness // CHECK:STDOUT: %B.facet.loc35 => constants.%B.facet.82f // CHECK:STDOUT: %.loc35_4.2 => constants.%.b43 -// CHECK:STDOUT: %impl.elem0.loc35_4.2 => constants.%BB.fe8 -// CHECK:STDOUT: %specific_impl_fn.loc35_4.2 => constants.%BB.fe8 +// CHECK:STDOUT: %impl.elem0.loc35_4.2 => constants.%C.as.B.impl.BB +// CHECK:STDOUT: %specific_impl_fn.loc35_4.2 => constants.%C.as.B.impl.BB // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/facet/convert_class_type_to_facet_type.carbon b/toolchain/check/testdata/facet/convert_class_type_to_facet_type.carbon index 798f5902c255..0b0ee09f6b9d 100644 --- a/toolchain/check/testdata/facet/convert_class_type_to_facet_type.carbon +++ b/toolchain/check/testdata/facet/convert_class_type_to_facet_type.carbon @@ -61,11 +61,11 @@ fn F() { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Animal.decl: type = interface_decl @Animal [concrete = constants.%Animal.type] {} {} // CHECK:STDOUT: %Goat.decl: type = class_decl @Goat [concrete = constants.%Goat] {} {} -// CHECK:STDOUT: impl_decl @Animal.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @Goat.as.Animal.impl [concrete] {} { // CHECK:STDOUT: %Goat.ref: type = name_ref Goat, file.%Goat.decl [concrete = constants.%Goat] // CHECK:STDOUT: %Animal.ref: type = name_ref Animal, file.%Animal.decl [concrete = constants.%Animal.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %Animal.impl_witness_table = impl_witness_table (), @Animal.impl [concrete] +// CHECK:STDOUT: %Animal.impl_witness_table = impl_witness_table (), @Goat.as.Animal.impl [concrete] // CHECK:STDOUT: %Animal.impl_witness: = impl_witness %Animal.impl_witness_table [concrete = constants.%Animal.impl_witness] // CHECK:STDOUT: %WalkAnimal.decl: %WalkAnimal.type = fn_decl @WalkAnimal [concrete = constants.%WalkAnimal] { // CHECK:STDOUT: %A.patt: %pattern_type = symbolic_binding_pattern A, 0 [concrete] @@ -84,7 +84,7 @@ fn F() { // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Animal.impl: %Goat.ref as %Animal.ref { +// CHECK:STDOUT: impl @Goat.as.Animal.impl: %Goat.ref as %Animal.ref { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%Animal.impl_witness // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/facet/convert_class_type_to_generic_facet_value.carbon b/toolchain/check/testdata/facet/convert_class_type_to_generic_facet_value.carbon index 9f079fec4999..418e5af5bdbf 100644 --- a/toolchain/check/testdata/facet/convert_class_type_to_generic_facet_value.carbon +++ b/toolchain/check/testdata/facet/convert_class_type_to_generic_facet_value.carbon @@ -72,23 +72,23 @@ fn G() { // CHECK:STDOUT: %Generic.generic: %Generic.type.c21 = struct_value () [concrete] // CHECK:STDOUT: %Generic.type.91ccba.1: type = facet_type <@Generic, @Generic(%Scalar)> [symbolic] // CHECK:STDOUT: %Self.dee: %Generic.type.91ccba.1 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %F.type.f43: type = fn_type @F.loc5, @Generic(%Scalar) [symbolic] -// CHECK:STDOUT: %F.8a2: %F.type.f43 = struct_value () [symbolic] +// CHECK:STDOUT: %Generic.F.type.f43: type = fn_type @Generic.F, @Generic(%Scalar) [symbolic] +// CHECK:STDOUT: %Generic.F.8a2: %Generic.F.type.f43 = struct_value () [symbolic] // CHECK:STDOUT: %Generic.assoc_type.0fd: type = assoc_entity_type @Generic, @Generic(%Scalar) [symbolic] -// CHECK:STDOUT: %assoc0.296: %Generic.assoc_type.0fd = assoc_entity element0, @Generic.%F.decl [symbolic] +// CHECK:STDOUT: %assoc0.296: %Generic.assoc_type.0fd = assoc_entity element0, @Generic.%Generic.F.decl [symbolic] // CHECK:STDOUT: %GenericParam: type = class_type @GenericParam [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %ImplsGeneric: type = class_type @ImplsGeneric [concrete] // CHECK:STDOUT: %Generic.type.769: type = facet_type <@Generic, @Generic(%GenericParam)> [concrete] // CHECK:STDOUT: %Self.f84: %Generic.type.769 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %F.type.4cf: type = fn_type @F.loc5, @Generic(%GenericParam) [concrete] -// CHECK:STDOUT: %F.118: %F.type.4cf = struct_value () [concrete] +// CHECK:STDOUT: %Generic.F.type.4cf: type = fn_type @Generic.F, @Generic(%GenericParam) [concrete] +// CHECK:STDOUT: %Generic.F.118: %Generic.F.type.4cf = struct_value () [concrete] // CHECK:STDOUT: %Generic.assoc_type.713: type = assoc_entity_type @Generic, @Generic(%GenericParam) [concrete] -// CHECK:STDOUT: %assoc0.9b7: %Generic.assoc_type.713 = assoc_entity element0, @Generic.%F.decl [concrete] +// CHECK:STDOUT: %assoc0.9b7: %Generic.assoc_type.713 = assoc_entity element0, @Generic.%Generic.F.decl [concrete] // CHECK:STDOUT: %Generic.impl_witness: = impl_witness file.%Generic.impl_witness_table [concrete] -// CHECK:STDOUT: %F.type.17b: type = fn_type @F.loc12 [concrete] -// CHECK:STDOUT: %F.a56: %F.type.17b = struct_value () [concrete] +// CHECK:STDOUT: %ImplsGeneric.as.Generic.impl.F.type: type = fn_type @ImplsGeneric.as.Generic.impl.F [concrete] +// CHECK:STDOUT: %ImplsGeneric.as.Generic.impl.F: %ImplsGeneric.as.Generic.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %Generic.facet: %Generic.type.769 = facet_value %ImplsGeneric, (%Generic.impl_witness) [concrete] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %Generic.type.91ccba.2: type = facet_type <@Generic, @Generic(%T)> [symbolic] @@ -134,13 +134,13 @@ fn G() { // CHECK:STDOUT: } // CHECK:STDOUT: %GenericParam.decl: type = class_decl @GenericParam [concrete = constants.%GenericParam] {} {} // CHECK:STDOUT: %ImplsGeneric.decl: type = class_decl @ImplsGeneric [concrete = constants.%ImplsGeneric] {} {} -// CHECK:STDOUT: impl_decl @Generic.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @ImplsGeneric.as.Generic.impl [concrete] {} { // CHECK:STDOUT: %ImplsGeneric.ref: type = name_ref ImplsGeneric, file.%ImplsGeneric.decl [concrete = constants.%ImplsGeneric] // CHECK:STDOUT: %Generic.ref: %Generic.type.c21 = name_ref Generic, file.%Generic.decl [concrete = constants.%Generic.generic] // CHECK:STDOUT: %GenericParam.ref: type = name_ref GenericParam, file.%GenericParam.decl [concrete = constants.%GenericParam] // CHECK:STDOUT: %Generic.type: type = facet_type <@Generic, @Generic(constants.%GenericParam)> [concrete = constants.%Generic.type.769] // CHECK:STDOUT: } -// CHECK:STDOUT: %Generic.impl_witness_table = impl_witness_table (@Generic.impl.%F.decl), @Generic.impl [concrete] +// CHECK:STDOUT: %Generic.impl_witness_table = impl_witness_table (@ImplsGeneric.as.Generic.impl.%ImplsGeneric.as.Generic.impl.F.decl), @ImplsGeneric.as.Generic.impl [concrete] // CHECK:STDOUT: %Generic.impl_witness: = impl_witness %Generic.impl_witness_table [concrete = constants.%Generic.impl_witness] // CHECK:STDOUT: %CallGenericMethod.decl: %CallGenericMethod.type = fn_decl @CallGenericMethod [concrete = constants.%CallGenericMethod] { // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete] @@ -176,28 +176,28 @@ fn G() { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Generic.type: type = facet_type <@Generic, @Generic(%Scalar.loc4_19.1)> [symbolic = %Generic.type (constants.%Generic.type.91ccba.1)] // CHECK:STDOUT: %Self.2: @Generic.%Generic.type (%Generic.type.91ccba.1) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.dee)] -// CHECK:STDOUT: %F.type: type = fn_type @F.loc5, @Generic(%Scalar.loc4_19.1) [symbolic = %F.type (constants.%F.type.f43)] -// CHECK:STDOUT: %F: @Generic.%F.type (%F.type.f43) = struct_value () [symbolic = %F (constants.%F.8a2)] +// CHECK:STDOUT: %Generic.F.type: type = fn_type @Generic.F, @Generic(%Scalar.loc4_19.1) [symbolic = %Generic.F.type (constants.%Generic.F.type.f43)] +// CHECK:STDOUT: %Generic.F: @Generic.%Generic.F.type (%Generic.F.type.f43) = struct_value () [symbolic = %Generic.F (constants.%Generic.F.8a2)] // CHECK:STDOUT: %Generic.assoc_type: type = assoc_entity_type @Generic, @Generic(%Scalar.loc4_19.1) [symbolic = %Generic.assoc_type (constants.%Generic.assoc_type.0fd)] -// CHECK:STDOUT: %assoc0.loc5_9.2: @Generic.%Generic.assoc_type (%Generic.assoc_type.0fd) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc5_9.2 (constants.%assoc0.296)] +// CHECK:STDOUT: %assoc0.loc5_9.2: @Generic.%Generic.assoc_type (%Generic.assoc_type.0fd) = assoc_entity element0, %Generic.F.decl [symbolic = %assoc0.loc5_9.2 (constants.%assoc0.296)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: %Self.1: @Generic.%Generic.type (%Generic.type.91ccba.1) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.dee)] -// CHECK:STDOUT: %F.decl: @Generic.%F.type (%F.type.f43) = fn_decl @F.loc5 [symbolic = @Generic.%F (constants.%F.8a2)] {} {} -// CHECK:STDOUT: %assoc0.loc5_9.1: @Generic.%Generic.assoc_type (%Generic.assoc_type.0fd) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc5_9.2 (constants.%assoc0.296)] +// CHECK:STDOUT: %Generic.F.decl: @Generic.%Generic.F.type (%Generic.F.type.f43) = fn_decl @Generic.F [symbolic = @Generic.%Generic.F (constants.%Generic.F.8a2)] {} {} +// CHECK:STDOUT: %assoc0.loc5_9.1: @Generic.%Generic.assoc_type (%Generic.assoc_type.0fd) = assoc_entity element0, %Generic.F.decl [symbolic = %assoc0.loc5_9.2 (constants.%assoc0.296)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 // CHECK:STDOUT: .F = %assoc0.loc5_9.1 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%Generic.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Generic.impl: %ImplsGeneric.ref as %Generic.type { -// CHECK:STDOUT: %F.decl: %F.type.17b = fn_decl @F.loc12 [concrete = constants.%F.a56] {} {} +// CHECK:STDOUT: impl @ImplsGeneric.as.Generic.impl: %ImplsGeneric.ref as %Generic.type { +// CHECK:STDOUT: %ImplsGeneric.as.Generic.impl.F.decl: %ImplsGeneric.as.Generic.impl.F.type = fn_decl @ImplsGeneric.as.Generic.impl.F [concrete = constants.%ImplsGeneric.as.Generic.impl.F] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %ImplsGeneric.as.Generic.impl.F.decl // CHECK:STDOUT: witness = file.%Generic.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: @@ -219,11 +219,11 @@ fn G() { // CHECK:STDOUT: .Self = constants.%ImplsGeneric // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc5(@Generic.%Scalar.loc4_19.2: type, @Generic.%Self.1: @Generic.%Generic.type (%Generic.type.91ccba.1)) { +// CHECK:STDOUT: generic fn @Generic.F(@Generic.%Scalar.loc4_19.2: type, @Generic.%Self.1: @Generic.%Generic.type (%Generic.type.91ccba.1)) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc12() { +// CHECK:STDOUT: fn @ImplsGeneric.as.Generic.impl.F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -290,7 +290,7 @@ fn G() { // CHECK:STDOUT: %Scalar.loc4_19.1 => constants.%Scalar // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%Scalar, constants.%Self.dee) {} +// CHECK:STDOUT: specific @Generic.F(constants.%Scalar, constants.%Self.dee) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @Generic(constants.%GenericParam) { // CHECK:STDOUT: %Scalar.loc4_19.1 => constants.%GenericParam @@ -298,13 +298,13 @@ fn G() { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Generic.type => constants.%Generic.type.769 // CHECK:STDOUT: %Self.2 => constants.%Self.f84 -// CHECK:STDOUT: %F.type => constants.%F.type.4cf -// CHECK:STDOUT: %F => constants.%F.118 +// CHECK:STDOUT: %Generic.F.type => constants.%Generic.F.type.4cf +// CHECK:STDOUT: %Generic.F => constants.%Generic.F.118 // CHECK:STDOUT: %Generic.assoc_type => constants.%Generic.assoc_type.713 // CHECK:STDOUT: %assoc0.loc5_9.2 => constants.%assoc0.9b7 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%GenericParam, constants.%Generic.facet) {} +// CHECK:STDOUT: specific @Generic.F(constants.%GenericParam, constants.%Generic.facet) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @Generic(constants.%T) { // CHECK:STDOUT: %Scalar.loc4_19.1 => constants.%T @@ -355,23 +355,23 @@ fn G() { // CHECK:STDOUT: %Generic.generic: %Generic.type.c21 = struct_value () [concrete] // CHECK:STDOUT: %Generic.type.91ccba.1: type = facet_type <@Generic, @Generic(%Scalar)> [symbolic] // CHECK:STDOUT: %Self.dee: %Generic.type.91ccba.1 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %F.type.f43: type = fn_type @F.loc5, @Generic(%Scalar) [symbolic] -// CHECK:STDOUT: %F.8a2: %F.type.f43 = struct_value () [symbolic] +// CHECK:STDOUT: %Generic.F.type.f43: type = fn_type @Generic.F, @Generic(%Scalar) [symbolic] +// CHECK:STDOUT: %Generic.F.8a2: %Generic.F.type.f43 = struct_value () [symbolic] // CHECK:STDOUT: %Generic.assoc_type.0fd: type = assoc_entity_type @Generic, @Generic(%Scalar) [symbolic] -// CHECK:STDOUT: %assoc0.296: %Generic.assoc_type.0fd = assoc_entity element0, @Generic.%F.decl [symbolic] +// CHECK:STDOUT: %assoc0.296: %Generic.assoc_type.0fd = assoc_entity element0, @Generic.%Generic.F.decl [symbolic] // CHECK:STDOUT: %GenericParam: type = class_type @GenericParam [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %ImplsGeneric: type = class_type @ImplsGeneric [concrete] // CHECK:STDOUT: %Generic.type.769: type = facet_type <@Generic, @Generic(%GenericParam)> [concrete] // CHECK:STDOUT: %Self.f84: %Generic.type.769 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %F.type.4cf: type = fn_type @F.loc5, @Generic(%GenericParam) [concrete] -// CHECK:STDOUT: %F.118: %F.type.4cf = struct_value () [concrete] +// CHECK:STDOUT: %Generic.F.type.4cf: type = fn_type @Generic.F, @Generic(%GenericParam) [concrete] +// CHECK:STDOUT: %Generic.F.118: %Generic.F.type.4cf = struct_value () [concrete] // CHECK:STDOUT: %Generic.assoc_type.713: type = assoc_entity_type @Generic, @Generic(%GenericParam) [concrete] -// CHECK:STDOUT: %assoc0.9b7: %Generic.assoc_type.713 = assoc_entity element0, @Generic.%F.decl [concrete] +// CHECK:STDOUT: %assoc0.9b7: %Generic.assoc_type.713 = assoc_entity element0, @Generic.%Generic.F.decl [concrete] // CHECK:STDOUT: %Generic.impl_witness: = impl_witness file.%Generic.impl_witness_table [concrete] -// CHECK:STDOUT: %F.type.17b: type = fn_type @F.loc12 [concrete] -// CHECK:STDOUT: %F.a56: %F.type.17b = struct_value () [concrete] +// CHECK:STDOUT: %ImplsGeneric.as.Generic.impl.F.type: type = fn_type @ImplsGeneric.as.Generic.impl.F [concrete] +// CHECK:STDOUT: %ImplsGeneric.as.Generic.impl.F: %ImplsGeneric.as.Generic.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %Generic.facet: %Generic.type.769 = facet_value %ImplsGeneric, (%Generic.impl_witness) [concrete] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %Generic.type.91ccba.2: type = facet_type <@Generic, @Generic(%T)> [symbolic] @@ -388,10 +388,10 @@ fn G() { // CHECK:STDOUT: %pattern_type.589: type = pattern_type %GenericParam [concrete] // CHECK:STDOUT: %CallGenericMethod.specific_fn: = specific_function %CallGenericMethod, @CallGenericMethod(%GenericParam, %Generic.facet) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.ae1: type = fn_type @Op.1, @Destroy.impl(%GenericParam) [concrete] -// CHECK:STDOUT: %Op.0cc: %Op.type.ae1 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.ae1: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%GenericParam) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.0cc: %T.as.Destroy.impl.Op.type.ae1 = struct_value () [concrete] // CHECK:STDOUT: %ptr.f73: type = ptr_type %GenericParam [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.0cc, @Op.1(%GenericParam) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.0cc, @T.as.Destroy.impl.Op(%GenericParam) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -420,13 +420,13 @@ fn G() { // CHECK:STDOUT: } // CHECK:STDOUT: %GenericParam.decl: type = class_decl @GenericParam [concrete = constants.%GenericParam] {} {} // CHECK:STDOUT: %ImplsGeneric.decl: type = class_decl @ImplsGeneric [concrete = constants.%ImplsGeneric] {} {} -// CHECK:STDOUT: impl_decl @Generic.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @ImplsGeneric.as.Generic.impl [concrete] {} { // CHECK:STDOUT: %ImplsGeneric.ref: type = name_ref ImplsGeneric, file.%ImplsGeneric.decl [concrete = constants.%ImplsGeneric] // CHECK:STDOUT: %Generic.ref: %Generic.type.c21 = name_ref Generic, file.%Generic.decl [concrete = constants.%Generic.generic] // CHECK:STDOUT: %GenericParam.ref: type = name_ref GenericParam, file.%GenericParam.decl [concrete = constants.%GenericParam] // CHECK:STDOUT: %Generic.type: type = facet_type <@Generic, @Generic(constants.%GenericParam)> [concrete = constants.%Generic.type.769] // CHECK:STDOUT: } -// CHECK:STDOUT: %Generic.impl_witness_table = impl_witness_table (@Generic.impl.%F.decl), @Generic.impl [concrete] +// CHECK:STDOUT: %Generic.impl_witness_table = impl_witness_table (@ImplsGeneric.as.Generic.impl.%ImplsGeneric.as.Generic.impl.F.decl), @ImplsGeneric.as.Generic.impl [concrete] // CHECK:STDOUT: %Generic.impl_witness: = impl_witness %Generic.impl_witness_table [concrete = constants.%Generic.impl_witness] // CHECK:STDOUT: %CallGenericMethod.decl: %CallGenericMethod.type = fn_decl @CallGenericMethod [concrete = constants.%CallGenericMethod] { // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete] @@ -454,28 +454,28 @@ fn G() { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Generic.type: type = facet_type <@Generic, @Generic(%Scalar.loc4_19.1)> [symbolic = %Generic.type (constants.%Generic.type.91ccba.1)] // CHECK:STDOUT: %Self.2: @Generic.%Generic.type (%Generic.type.91ccba.1) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.dee)] -// CHECK:STDOUT: %F.type: type = fn_type @F.loc5, @Generic(%Scalar.loc4_19.1) [symbolic = %F.type (constants.%F.type.f43)] -// CHECK:STDOUT: %F: @Generic.%F.type (%F.type.f43) = struct_value () [symbolic = %F (constants.%F.8a2)] +// CHECK:STDOUT: %Generic.F.type: type = fn_type @Generic.F, @Generic(%Scalar.loc4_19.1) [symbolic = %Generic.F.type (constants.%Generic.F.type.f43)] +// CHECK:STDOUT: %Generic.F: @Generic.%Generic.F.type (%Generic.F.type.f43) = struct_value () [symbolic = %Generic.F (constants.%Generic.F.8a2)] // CHECK:STDOUT: %Generic.assoc_type: type = assoc_entity_type @Generic, @Generic(%Scalar.loc4_19.1) [symbolic = %Generic.assoc_type (constants.%Generic.assoc_type.0fd)] -// CHECK:STDOUT: %assoc0.loc5_9.2: @Generic.%Generic.assoc_type (%Generic.assoc_type.0fd) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc5_9.2 (constants.%assoc0.296)] +// CHECK:STDOUT: %assoc0.loc5_9.2: @Generic.%Generic.assoc_type (%Generic.assoc_type.0fd) = assoc_entity element0, %Generic.F.decl [symbolic = %assoc0.loc5_9.2 (constants.%assoc0.296)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: %Self.1: @Generic.%Generic.type (%Generic.type.91ccba.1) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.dee)] -// CHECK:STDOUT: %F.decl: @Generic.%F.type (%F.type.f43) = fn_decl @F.loc5 [symbolic = @Generic.%F (constants.%F.8a2)] {} {} -// CHECK:STDOUT: %assoc0.loc5_9.1: @Generic.%Generic.assoc_type (%Generic.assoc_type.0fd) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc5_9.2 (constants.%assoc0.296)] +// CHECK:STDOUT: %Generic.F.decl: @Generic.%Generic.F.type (%Generic.F.type.f43) = fn_decl @Generic.F [symbolic = @Generic.%Generic.F (constants.%Generic.F.8a2)] {} {} +// CHECK:STDOUT: %assoc0.loc5_9.1: @Generic.%Generic.assoc_type (%Generic.assoc_type.0fd) = assoc_entity element0, %Generic.F.decl [symbolic = %assoc0.loc5_9.2 (constants.%assoc0.296)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 // CHECK:STDOUT: .F = %assoc0.loc5_9.1 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%Generic.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Generic.impl: %ImplsGeneric.ref as %Generic.type { -// CHECK:STDOUT: %F.decl: %F.type.17b = fn_decl @F.loc12 [concrete = constants.%F.a56] {} {} +// CHECK:STDOUT: impl @ImplsGeneric.as.Generic.impl: %ImplsGeneric.ref as %Generic.type { +// CHECK:STDOUT: %ImplsGeneric.as.Generic.impl.F.decl: %ImplsGeneric.as.Generic.impl.F.type = fn_decl @ImplsGeneric.as.Generic.impl.F [concrete = constants.%ImplsGeneric.as.Generic.impl.F] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %ImplsGeneric.as.Generic.impl.F.decl // CHECK:STDOUT: witness = file.%Generic.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: @@ -497,11 +497,11 @@ fn G() { // CHECK:STDOUT: .Self = constants.%ImplsGeneric // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc5(@Generic.%Scalar.loc4_19.2: type, @Generic.%Self.1: @Generic.%Generic.type (%Generic.type.91ccba.1)) { +// CHECK:STDOUT: generic fn @Generic.F(@Generic.%Scalar.loc4_19.2: type, @Generic.%Self.1: @Generic.%Generic.type (%Generic.type.91ccba.1)) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc12() { +// CHECK:STDOUT: fn @ImplsGeneric.as.Generic.impl.F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -537,11 +537,11 @@ fn G() { // CHECK:STDOUT: %CallGenericMethod.specific_fn: = specific_function %CallGenericMethod.ref, @CallGenericMethod(constants.%GenericParam, constants.%Generic.facet) [concrete = constants.%CallGenericMethod.specific_fn] // CHECK:STDOUT: %.loc18_38.2: %GenericParam = bind_value %.loc18_38.1 // CHECK:STDOUT: %CallGenericMethod.call: init %empty_tuple.type = call %CallGenericMethod.specific_fn(%.loc18_38.2) -// CHECK:STDOUT: %Op.bound: = bound_method %.loc18_36.2, constants.%Op.0cc -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.0cc, @Op.1(constants.%GenericParam) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc18_36.2, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc18_36.2, constants.%T.as.Destroy.impl.Op.0cc +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.0cc, @T.as.Destroy.impl.Op(constants.%GenericParam) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %.loc18_36.2, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.f73 = addr_of %.loc18_36.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -549,7 +549,7 @@ fn G() { // CHECK:STDOUT: %Scalar.loc4_19.1 => constants.%Scalar // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%Scalar, constants.%Self.dee) {} +// CHECK:STDOUT: specific @Generic.F(constants.%Scalar, constants.%Self.dee) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @Generic(constants.%GenericParam) { // CHECK:STDOUT: %Scalar.loc4_19.1 => constants.%GenericParam @@ -557,13 +557,13 @@ fn G() { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Generic.type => constants.%Generic.type.769 // CHECK:STDOUT: %Self.2 => constants.%Self.f84 -// CHECK:STDOUT: %F.type => constants.%F.type.4cf -// CHECK:STDOUT: %F => constants.%F.118 +// CHECK:STDOUT: %Generic.F.type => constants.%Generic.F.type.4cf +// CHECK:STDOUT: %Generic.F => constants.%Generic.F.118 // CHECK:STDOUT: %Generic.assoc_type => constants.%Generic.assoc_type.713 // CHECK:STDOUT: %assoc0.loc5_9.2 => constants.%assoc0.9b7 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%GenericParam, constants.%Generic.facet) {} +// CHECK:STDOUT: specific @Generic.F(constants.%GenericParam, constants.%Generic.facet) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @Generic(constants.%T) { // CHECK:STDOUT: %Scalar.loc4_19.1 => constants.%T diff --git a/toolchain/check/testdata/facet/convert_class_value_to_facet_value_value.carbon b/toolchain/check/testdata/facet/convert_class_value_to_facet_value_value.carbon index f11acac0d1ad..14442ec857ce 100644 --- a/toolchain/check/testdata/facet/convert_class_value_to_facet_value_value.carbon +++ b/toolchain/check/testdata/facet/convert_class_value_to_facet_value_value.carbon @@ -47,10 +47,10 @@ fn F() { // CHECK:STDOUT: %pattern_type.ab7: type = pattern_type %Goat [concrete] // CHECK:STDOUT: %WalkAnimal.specific_fn: = specific_function %WalkAnimal, @WalkAnimal(%Animal.facet) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.e7a: type = fn_type @Op.1, @Destroy.impl(%Goat) [concrete] -// CHECK:STDOUT: %Op.55a: %Op.type.e7a = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.e7a: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%Goat) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.55a: %T.as.Destroy.impl.Op.type.e7a = struct_value () [concrete] // CHECK:STDOUT: %ptr.940: type = ptr_type %Goat [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.55a, @Op.1(%Goat) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.55a, @T.as.Destroy.impl.Op(%Goat) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -88,11 +88,11 @@ fn F() { // CHECK:STDOUT: %a: @WalkAnimal.%T.as_type.loc17_30.1 (%T.as_type) = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: %Goat.decl: type = class_decl @Goat [concrete = constants.%Goat] {} {} -// CHECK:STDOUT: impl_decl @Animal.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @Goat.as.Animal.impl [concrete] {} { // CHECK:STDOUT: %Goat.ref: type = name_ref Goat, file.%Goat.decl [concrete = constants.%Goat] // CHECK:STDOUT: %Animal.ref: type = name_ref Animal, file.%Animal.decl [concrete = constants.%Animal.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %Animal.impl_witness_table = impl_witness_table (), @Animal.impl [concrete] +// CHECK:STDOUT: %Animal.impl_witness_table = impl_witness_table (), @Goat.as.Animal.impl [concrete] // CHECK:STDOUT: %Animal.impl_witness: = impl_witness %Animal.impl_witness_table [concrete = constants.%Animal.impl_witness] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} // CHECK:STDOUT: } @@ -105,7 +105,7 @@ fn F() { // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Animal.impl: %Goat.ref as %Animal.ref { +// CHECK:STDOUT: impl @Goat.as.Animal.impl: %Goat.ref as %Animal.ref { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%Animal.impl_witness // CHECK:STDOUT: } @@ -149,11 +149,11 @@ fn F() { // CHECK:STDOUT: %WalkAnimal.specific_fn: = specific_function %WalkAnimal.ref, @WalkAnimal(constants.%Animal.facet) [concrete = constants.%WalkAnimal.specific_fn] // CHECK:STDOUT: %.loc23_17.2: %Goat = bind_value %.loc23_17.1 // CHECK:STDOUT: %WalkAnimal.call: init %empty_tuple.type = call %WalkAnimal.specific_fn(%.loc23_17.2) -// CHECK:STDOUT: %Op.bound: = bound_method %.loc23_15.2, constants.%Op.55a -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.55a, @Op.1(constants.%Goat) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc23_15.2, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc23_15.2, constants.%T.as.Destroy.impl.Op.55a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.55a, @T.as.Destroy.impl.Op(constants.%Goat) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %.loc23_15.2, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.940 = addr_of %.loc23_15.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/facet/convert_class_value_to_generic_facet_value_value.carbon b/toolchain/check/testdata/facet/convert_class_value_to_generic_facet_value_value.carbon index 8754b381faea..855f09d68a4d 100644 --- a/toolchain/check/testdata/facet/convert_class_value_to_generic_facet_value_value.carbon +++ b/toolchain/check/testdata/facet/convert_class_value_to_generic_facet_value_value.carbon @@ -104,23 +104,23 @@ fn B() { // CHECK:STDOUT: %Generic.generic: %Generic.type.c21 = struct_value () [concrete] // CHECK:STDOUT: %Generic.type.91ccba.1: type = facet_type <@Generic, @Generic(%Scalar)> [symbolic] // CHECK:STDOUT: %Self.dee8d8.1: %Generic.type.91ccba.1 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %F.type.f439a9.1: type = fn_type @F.loc5, @Generic(%Scalar) [symbolic] -// CHECK:STDOUT: %F.8a2d67.1: %F.type.f439a9.1 = struct_value () [symbolic] +// CHECK:STDOUT: %Generic.F.type.f439a9.1: type = fn_type @Generic.F, @Generic(%Scalar) [symbolic] +// CHECK:STDOUT: %Generic.F.8a2d67.1: %Generic.F.type.f439a9.1 = struct_value () [symbolic] // CHECK:STDOUT: %Generic.assoc_type.0fd877.1: type = assoc_entity_type @Generic, @Generic(%Scalar) [symbolic] -// CHECK:STDOUT: %assoc0.2966cb.1: %Generic.assoc_type.0fd877.1 = assoc_entity element0, @Generic.%F.decl [symbolic] +// CHECK:STDOUT: %assoc0.2966cb.1: %Generic.assoc_type.0fd877.1 = assoc_entity element0, @Generic.%Generic.F.decl [symbolic] // CHECK:STDOUT: %GenericParam: type = class_type @GenericParam [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %ImplsGeneric: type = class_type @ImplsGeneric [concrete] // CHECK:STDOUT: %Generic.type.769: type = facet_type <@Generic, @Generic(%GenericParam)> [concrete] // CHECK:STDOUT: %Self.f84: %Generic.type.769 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %F.type.4cf: type = fn_type @F.loc5, @Generic(%GenericParam) [concrete] -// CHECK:STDOUT: %F.118: %F.type.4cf = struct_value () [concrete] +// CHECK:STDOUT: %Generic.F.type.4cf: type = fn_type @Generic.F, @Generic(%GenericParam) [concrete] +// CHECK:STDOUT: %Generic.F.118: %Generic.F.type.4cf = struct_value () [concrete] // CHECK:STDOUT: %Generic.assoc_type.713: type = assoc_entity_type @Generic, @Generic(%GenericParam) [concrete] -// CHECK:STDOUT: %assoc0.9b7: %Generic.assoc_type.713 = assoc_entity element0, @Generic.%F.decl [concrete] +// CHECK:STDOUT: %assoc0.9b7: %Generic.assoc_type.713 = assoc_entity element0, @Generic.%Generic.F.decl [concrete] // CHECK:STDOUT: %Generic.impl_witness: = impl_witness file.%Generic.impl_witness_table [concrete] -// CHECK:STDOUT: %F.type.17b: type = fn_type @F.loc12 [concrete] -// CHECK:STDOUT: %F.a56: %F.type.17b = struct_value () [concrete] +// CHECK:STDOUT: %ImplsGeneric.as.Generic.impl.F.type: type = fn_type @ImplsGeneric.as.Generic.impl.F [concrete] +// CHECK:STDOUT: %ImplsGeneric.as.Generic.impl.F: %ImplsGeneric.as.Generic.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %Generic.facet.8ff: %Generic.type.769 = facet_value %ImplsGeneric, (%Generic.impl_witness) [concrete] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %Generic.type.91ccba.2: type = facet_type <@Generic, @Generic(%T)> [symbolic] @@ -134,16 +134,16 @@ fn B() { // CHECK:STDOUT: %require_complete.7b2: = require_complete_type %U.as_type [symbolic] // CHECK:STDOUT: %require_complete.4ae: = require_complete_type %T [symbolic] // CHECK:STDOUT: %Self.dee8d8.2: %Generic.type.91ccba.2 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %F.type.f439a9.2: type = fn_type @F.loc5, @Generic(%T) [symbolic] -// CHECK:STDOUT: %F.8a2d67.2: %F.type.f439a9.2 = struct_value () [symbolic] +// CHECK:STDOUT: %Generic.F.type.f439a9.2: type = fn_type @Generic.F, @Generic(%T) [symbolic] +// CHECK:STDOUT: %Generic.F.8a2d67.2: %Generic.F.type.f439a9.2 = struct_value () [symbolic] // CHECK:STDOUT: %Generic.assoc_type.0fd877.2: type = assoc_entity_type @Generic, @Generic(%T) [symbolic] -// CHECK:STDOUT: %assoc0.2966cb.2: %Generic.assoc_type.0fd877.2 = assoc_entity element0, @Generic.%F.decl [symbolic] +// CHECK:STDOUT: %assoc0.2966cb.2: %Generic.assoc_type.0fd877.2 = assoc_entity element0, @Generic.%Generic.F.decl [symbolic] // CHECK:STDOUT: %require_complete.02a: = require_complete_type %Generic.type.91ccba.2 [symbolic] // CHECK:STDOUT: %Generic.lookup_impl_witness: = lookup_impl_witness %U, @Generic, @Generic(%T) [symbolic] // CHECK:STDOUT: %Generic.facet.680: %Generic.type.91ccba.2 = facet_value %U.as_type, (%Generic.lookup_impl_witness) [symbolic] -// CHECK:STDOUT: %.177: type = fn_type_with_self_type %F.type.f439a9.2, %Generic.facet.680 [symbolic] +// CHECK:STDOUT: %.177: type = fn_type_with_self_type %Generic.F.type.f439a9.2, %Generic.facet.680 [symbolic] // CHECK:STDOUT: %impl.elem0: %.177 = impl_witness_access %Generic.lookup_impl_witness, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @F.loc5(%T, %Generic.facet.680) [symbolic] +// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Generic.F(%T, %Generic.facet.680) [symbolic] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %ImplsGeneric.val: %ImplsGeneric = struct_value () [concrete] @@ -153,16 +153,16 @@ fn B() { // CHECK:STDOUT: %pattern_type.589: type = pattern_type %GenericParam [concrete] // CHECK:STDOUT: %CallGenericMethod.specific_fn: = specific_function %CallGenericMethod, @CallGenericMethod(%GenericParam, %Generic.facet.8ff) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.ae1: type = fn_type @Op.1, @Destroy.impl(%GenericParam) [concrete] -// CHECK:STDOUT: %Op.0cc: %Op.type.ae1 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.ae1: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%GenericParam) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.0cc: %T.as.Destroy.impl.Op.type.ae1 = struct_value () [concrete] // CHECK:STDOUT: %ptr.f73: type = ptr_type %GenericParam [concrete] -// CHECK:STDOUT: %Op.specific_fn.934: = specific_function %Op.0cc, @Op.1(%GenericParam) [concrete] -// CHECK:STDOUT: %Op.type.e98: type = fn_type @Op.1, @Destroy.impl(%ImplsGeneric) [concrete] -// CHECK:STDOUT: %Op.51a: %Op.type.e98 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.934: = specific_function %T.as.Destroy.impl.Op.0cc, @T.as.Destroy.impl.Op(%GenericParam) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.e98: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%ImplsGeneric) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.51a: %T.as.Destroy.impl.Op.type.e98 = struct_value () [concrete] // CHECK:STDOUT: %ptr.011: type = ptr_type %ImplsGeneric [concrete] -// CHECK:STDOUT: %Op.specific_fn.7b0: = specific_function %Op.51a, @Op.1(%ImplsGeneric) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.7b0: = specific_function %T.as.Destroy.impl.Op.51a, @T.as.Destroy.impl.Op(%ImplsGeneric) [concrete] // CHECK:STDOUT: %complete_type.997: = complete_type_witness %Generic.type.769 [concrete] -// CHECK:STDOUT: %.3e6: type = fn_type_with_self_type %F.type.4cf, %Generic.facet.8ff [concrete] +// CHECK:STDOUT: %.3e6: type = fn_type_with_self_type %Generic.F.type.4cf, %Generic.facet.8ff [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -191,13 +191,13 @@ fn B() { // CHECK:STDOUT: } // CHECK:STDOUT: %GenericParam.decl: type = class_decl @GenericParam [concrete = constants.%GenericParam] {} {} // CHECK:STDOUT: %ImplsGeneric.decl: type = class_decl @ImplsGeneric [concrete = constants.%ImplsGeneric] {} {} -// CHECK:STDOUT: impl_decl @Generic.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @ImplsGeneric.as.Generic.impl [concrete] {} { // CHECK:STDOUT: %ImplsGeneric.ref: type = name_ref ImplsGeneric, file.%ImplsGeneric.decl [concrete = constants.%ImplsGeneric] // CHECK:STDOUT: %Generic.ref: %Generic.type.c21 = name_ref Generic, file.%Generic.decl [concrete = constants.%Generic.generic] // CHECK:STDOUT: %GenericParam.ref: type = name_ref GenericParam, file.%GenericParam.decl [concrete = constants.%GenericParam] // CHECK:STDOUT: %Generic.type: type = facet_type <@Generic, @Generic(constants.%GenericParam)> [concrete = constants.%Generic.type.769] // CHECK:STDOUT: } -// CHECK:STDOUT: %Generic.impl_witness_table = impl_witness_table (@Generic.impl.%F.decl), @Generic.impl [concrete] +// CHECK:STDOUT: %Generic.impl_witness_table = impl_witness_table (@ImplsGeneric.as.Generic.impl.%ImplsGeneric.as.Generic.impl.F.decl), @ImplsGeneric.as.Generic.impl [concrete] // CHECK:STDOUT: %Generic.impl_witness: = impl_witness %Generic.impl_witness_table [concrete = constants.%Generic.impl_witness] // CHECK:STDOUT: %CallGenericMethod.decl: %CallGenericMethod.type = fn_decl @CallGenericMethod [concrete = constants.%CallGenericMethod] { // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete] @@ -234,28 +234,28 @@ fn B() { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Generic.type: type = facet_type <@Generic, @Generic(%Scalar.loc4_19.1)> [symbolic = %Generic.type (constants.%Generic.type.91ccba.1)] // CHECK:STDOUT: %Self.2: @Generic.%Generic.type (%Generic.type.91ccba.1) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.dee8d8.1)] -// CHECK:STDOUT: %F.type: type = fn_type @F.loc5, @Generic(%Scalar.loc4_19.1) [symbolic = %F.type (constants.%F.type.f439a9.1)] -// CHECK:STDOUT: %F: @Generic.%F.type (%F.type.f439a9.1) = struct_value () [symbolic = %F (constants.%F.8a2d67.1)] +// CHECK:STDOUT: %Generic.F.type: type = fn_type @Generic.F, @Generic(%Scalar.loc4_19.1) [symbolic = %Generic.F.type (constants.%Generic.F.type.f439a9.1)] +// CHECK:STDOUT: %Generic.F: @Generic.%Generic.F.type (%Generic.F.type.f439a9.1) = struct_value () [symbolic = %Generic.F (constants.%Generic.F.8a2d67.1)] // CHECK:STDOUT: %Generic.assoc_type: type = assoc_entity_type @Generic, @Generic(%Scalar.loc4_19.1) [symbolic = %Generic.assoc_type (constants.%Generic.assoc_type.0fd877.1)] -// CHECK:STDOUT: %assoc0.loc5_9.2: @Generic.%Generic.assoc_type (%Generic.assoc_type.0fd877.1) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc5_9.2 (constants.%assoc0.2966cb.1)] +// CHECK:STDOUT: %assoc0.loc5_9.2: @Generic.%Generic.assoc_type (%Generic.assoc_type.0fd877.1) = assoc_entity element0, %Generic.F.decl [symbolic = %assoc0.loc5_9.2 (constants.%assoc0.2966cb.1)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: %Self.1: @Generic.%Generic.type (%Generic.type.91ccba.1) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.dee8d8.1)] -// CHECK:STDOUT: %F.decl: @Generic.%F.type (%F.type.f439a9.1) = fn_decl @F.loc5 [symbolic = @Generic.%F (constants.%F.8a2d67.1)] {} {} -// CHECK:STDOUT: %assoc0.loc5_9.1: @Generic.%Generic.assoc_type (%Generic.assoc_type.0fd877.1) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc5_9.2 (constants.%assoc0.2966cb.1)] +// CHECK:STDOUT: %Generic.F.decl: @Generic.%Generic.F.type (%Generic.F.type.f439a9.1) = fn_decl @Generic.F [symbolic = @Generic.%Generic.F (constants.%Generic.F.8a2d67.1)] {} {} +// CHECK:STDOUT: %assoc0.loc5_9.1: @Generic.%Generic.assoc_type (%Generic.assoc_type.0fd877.1) = assoc_entity element0, %Generic.F.decl [symbolic = %assoc0.loc5_9.2 (constants.%assoc0.2966cb.1)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 // CHECK:STDOUT: .F = %assoc0.loc5_9.1 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%Generic.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Generic.impl: %ImplsGeneric.ref as %Generic.type { -// CHECK:STDOUT: %F.decl: %F.type.17b = fn_decl @F.loc12 [concrete = constants.%F.a56] {} {} +// CHECK:STDOUT: impl @ImplsGeneric.as.Generic.impl: %ImplsGeneric.ref as %Generic.type { +// CHECK:STDOUT: %ImplsGeneric.as.Generic.impl.F.decl: %ImplsGeneric.as.Generic.impl.F.type = fn_decl @ImplsGeneric.as.Generic.impl.F [concrete = constants.%ImplsGeneric.as.Generic.impl.F] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %ImplsGeneric.as.Generic.impl.F.decl // CHECK:STDOUT: witness = file.%Generic.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: @@ -277,11 +277,11 @@ fn B() { // CHECK:STDOUT: .Self = constants.%ImplsGeneric // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc5(@Generic.%Scalar.loc4_19.2: type, @Generic.%Self.1: @Generic.%Generic.type (%Generic.type.91ccba.1)) { +// CHECK:STDOUT: generic fn @Generic.F(@Generic.%Scalar.loc4_19.2: type, @Generic.%Self.1: @Generic.%Generic.type (%Generic.type.91ccba.1)) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc12() { +// CHECK:STDOUT: fn @ImplsGeneric.as.Generic.impl.F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -300,13 +300,13 @@ fn B() { // CHECK:STDOUT: %require_complete.loc15_55: = require_complete_type %T.loc15_22.1 [symbolic = %require_complete.loc15_55 (constants.%require_complete.4ae)] // CHECK:STDOUT: %require_complete.loc16: = require_complete_type %Generic.type.loc15_45.1 [symbolic = %require_complete.loc16 (constants.%require_complete.02a)] // CHECK:STDOUT: %Generic.assoc_type: type = assoc_entity_type @Generic, @Generic(%T.loc15_22.1) [symbolic = %Generic.assoc_type (constants.%Generic.assoc_type.0fd877.2)] -// CHECK:STDOUT: %assoc0: @CallGenericMethod.%Generic.assoc_type (%Generic.assoc_type.0fd877.2) = assoc_entity element0, @Generic.%F.decl [symbolic = %assoc0 (constants.%assoc0.2966cb.2)] +// CHECK:STDOUT: %assoc0: @CallGenericMethod.%Generic.assoc_type (%Generic.assoc_type.0fd877.2) = assoc_entity element0, @Generic.%Generic.F.decl [symbolic = %assoc0 (constants.%assoc0.2966cb.2)] // CHECK:STDOUT: %Generic.lookup_impl_witness: = lookup_impl_witness %U.loc15_32.1, @Generic, @Generic(%T.loc15_22.1) [symbolic = %Generic.lookup_impl_witness (constants.%Generic.lookup_impl_witness)] -// CHECK:STDOUT: %F.type: type = fn_type @F.loc5, @Generic(%T.loc15_22.1) [symbolic = %F.type (constants.%F.type.f439a9.2)] +// CHECK:STDOUT: %Generic.F.type: type = fn_type @Generic.F, @Generic(%T.loc15_22.1) [symbolic = %Generic.F.type (constants.%Generic.F.type.f439a9.2)] // CHECK:STDOUT: %Generic.facet: @CallGenericMethod.%Generic.type.loc15_45.1 (%Generic.type.91ccba.2) = facet_value %U.as_type.loc15_51.1, (%Generic.lookup_impl_witness) [symbolic = %Generic.facet (constants.%Generic.facet.680)] -// CHECK:STDOUT: %.loc16_4.3: type = fn_type_with_self_type %F.type, %Generic.facet [symbolic = %.loc16_4.3 (constants.%.177)] +// CHECK:STDOUT: %.loc16_4.3: type = fn_type_with_self_type %Generic.F.type, %Generic.facet [symbolic = %.loc16_4.3 (constants.%.177)] // CHECK:STDOUT: %impl.elem0.loc16_4.2: @CallGenericMethod.%.loc16_4.3 (%.177) = impl_witness_access %Generic.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc16_4.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %specific_impl_fn.loc16_4.2: = specific_impl_function %impl.elem0.loc16_4.2, @F.loc5(%T.loc15_22.1, %Generic.facet) [symbolic = %specific_impl_fn.loc16_4.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc16_4.2: = specific_impl_function %impl.elem0.loc16_4.2, @Generic.F(%T.loc15_22.1, %Generic.facet) [symbolic = %specific_impl_fn.loc16_4.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%a.param: @CallGenericMethod.%U.as_type.loc15_51.1 (%U.as_type), %s.param: @CallGenericMethod.%T.loc15_22.1 (%T)) { // CHECK:STDOUT: !entry: @@ -316,7 +316,7 @@ fn B() { // CHECK:STDOUT: %U.as_type.loc16: type = facet_access_type %U.ref.loc16 [symbolic = %U.as_type.loc15_51.1 (constants.%U.as_type)] // CHECK:STDOUT: %.loc16_4.2: type = converted %U.ref.loc16, %U.as_type.loc16 [symbolic = %U.as_type.loc15_51.1 (constants.%U.as_type)] // CHECK:STDOUT: %impl.elem0.loc16_4.1: @CallGenericMethod.%.loc16_4.3 (%.177) = impl_witness_access constants.%Generic.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc16_4.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %specific_impl_fn.loc16_4.1: = specific_impl_function %impl.elem0.loc16_4.1, @F.loc5(constants.%T, constants.%Generic.facet.680) [symbolic = %specific_impl_fn.loc16_4.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc16_4.1: = specific_impl_function %impl.elem0.loc16_4.1, @Generic.F(constants.%T, constants.%Generic.facet.680) [symbolic = %specific_impl_fn.loc16_4.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %.loc16_7: init %empty_tuple.type = call %specific_impl_fn.loc16_4.1() // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -343,16 +343,16 @@ fn B() { // CHECK:STDOUT: %.loc20_24.2: %ImplsGeneric = bind_value %.loc20_24.1 // CHECK:STDOUT: %.loc20_44.2: %GenericParam = bind_value %.loc20_44.1 // CHECK:STDOUT: %CallGenericMethod.call: init %empty_tuple.type = call %CallGenericMethod.specific_fn(%.loc20_24.2, %.loc20_44.2) -// CHECK:STDOUT: %Op.bound.loc20_42: = bound_method %.loc20_42.2, constants.%Op.0cc -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.0cc, @Op.1(constants.%GenericParam) [concrete = constants.%Op.specific_fn.934] -// CHECK:STDOUT: %bound_method.loc20_42: = bound_method %.loc20_42.2, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc20_42: = bound_method %.loc20_42.2, constants.%T.as.Destroy.impl.Op.0cc +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.0cc, @T.as.Destroy.impl.Op(constants.%GenericParam) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.934] +// CHECK:STDOUT: %bound_method.loc20_42: = bound_method %.loc20_42.2, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc20_42: %ptr.f73 = addr_of %.loc20_42.2 -// CHECK:STDOUT: %no_op.loc20_42: init %empty_tuple.type = call %bound_method.loc20_42(%addr.loc20_42) -// CHECK:STDOUT: %Op.bound.loc20_22: = bound_method %.loc20_22.2, constants.%Op.51a -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.51a, @Op.1(constants.%ImplsGeneric) [concrete = constants.%Op.specific_fn.7b0] -// CHECK:STDOUT: %bound_method.loc20_22: = bound_method %.loc20_22.2, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc20_42: init %empty_tuple.type = call %bound_method.loc20_42(%addr.loc20_42) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc20_22: = bound_method %.loc20_22.2, constants.%T.as.Destroy.impl.Op.51a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.51a, @T.as.Destroy.impl.Op(constants.%ImplsGeneric) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.7b0] +// CHECK:STDOUT: %bound_method.loc20_22: = bound_method %.loc20_22.2, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc20_22: %ptr.011 = addr_of %.loc20_22.2 -// CHECK:STDOUT: %no_op.loc20_22: init %empty_tuple.type = call %bound_method.loc20_22(%addr.loc20_22) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc20_22: init %empty_tuple.type = call %bound_method.loc20_22(%addr.loc20_22) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -360,7 +360,7 @@ fn B() { // CHECK:STDOUT: %Scalar.loc4_19.1 => constants.%Scalar // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%Scalar, constants.%Self.dee8d8.1) {} +// CHECK:STDOUT: specific @Generic.F(constants.%Scalar, constants.%Self.dee8d8.1) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @Generic(constants.%GenericParam) { // CHECK:STDOUT: %Scalar.loc4_19.1 => constants.%GenericParam @@ -368,13 +368,13 @@ fn B() { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Generic.type => constants.%Generic.type.769 // CHECK:STDOUT: %Self.2 => constants.%Self.f84 -// CHECK:STDOUT: %F.type => constants.%F.type.4cf -// CHECK:STDOUT: %F => constants.%F.118 +// CHECK:STDOUT: %Generic.F.type => constants.%Generic.F.type.4cf +// CHECK:STDOUT: %Generic.F => constants.%Generic.F.118 // CHECK:STDOUT: %Generic.assoc_type => constants.%Generic.assoc_type.713 // CHECK:STDOUT: %assoc0.loc5_9.2 => constants.%assoc0.9b7 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%GenericParam, constants.%Generic.facet.8ff) {} +// CHECK:STDOUT: specific @Generic.F(constants.%GenericParam, constants.%Generic.facet.8ff) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @Generic(constants.%T) { // CHECK:STDOUT: %Scalar.loc4_19.1 => constants.%T @@ -382,8 +382,8 @@ fn B() { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Generic.type => constants.%Generic.type.91ccba.2 // CHECK:STDOUT: %Self.2 => constants.%Self.dee8d8.2 -// CHECK:STDOUT: %F.type => constants.%F.type.f439a9.2 -// CHECK:STDOUT: %F => constants.%F.8a2d67.2 +// CHECK:STDOUT: %Generic.F.type => constants.%Generic.F.type.f439a9.2 +// CHECK:STDOUT: %Generic.F => constants.%Generic.F.8a2d67.2 // CHECK:STDOUT: %Generic.assoc_type => constants.%Generic.assoc_type.0fd877.2 // CHECK:STDOUT: %assoc0.loc5_9.2 => constants.%assoc0.2966cb.2 // CHECK:STDOUT: } @@ -398,7 +398,7 @@ fn B() { // CHECK:STDOUT: %pattern_type.loc15_54 => constants.%pattern_type.7dc // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%T, constants.%Generic.facet.680) {} +// CHECK:STDOUT: specific @Generic.F(constants.%T, constants.%Generic.facet.680) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @CallGenericMethod(constants.%GenericParam, constants.%Generic.facet.8ff) { // CHECK:STDOUT: %T.loc15_22.1 => constants.%GenericParam @@ -416,11 +416,11 @@ fn B() { // CHECK:STDOUT: %Generic.assoc_type => constants.%Generic.assoc_type.713 // CHECK:STDOUT: %assoc0 => constants.%assoc0.9b7 // CHECK:STDOUT: %Generic.lookup_impl_witness => constants.%Generic.impl_witness -// CHECK:STDOUT: %F.type => constants.%F.type.4cf +// CHECK:STDOUT: %Generic.F.type => constants.%Generic.F.type.4cf // CHECK:STDOUT: %Generic.facet => constants.%Generic.facet.8ff // CHECK:STDOUT: %.loc16_4.3 => constants.%.3e6 -// CHECK:STDOUT: %impl.elem0.loc16_4.2 => constants.%F.a56 -// CHECK:STDOUT: %specific_impl_fn.loc16_4.2 => constants.%F.a56 +// CHECK:STDOUT: %impl.elem0.loc16_4.2 => constants.%ImplsGeneric.as.Generic.impl.F +// CHECK:STDOUT: %specific_impl_fn.loc16_4.2 => constants.%ImplsGeneric.as.Generic.impl.F // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- multiple_generic_params_one_fixed_one_deduced.carbon @@ -441,7 +441,7 @@ fn B() { // CHECK:STDOUT: %I.type.bea: type = facet_type <@I, @I(%T.8b3, %empty_tuple.type)> [symbolic] // CHECK:STDOUT: %Self.ec5: %I.type.bea = bind_symbolic_name Self, 2 [symbolic] // CHECK:STDOUT: %require_complete.5ce: = require_complete_type %I.type.bea [symbolic] -// CHECK:STDOUT: %I.impl_witness.989: = impl_witness file.%I.impl_witness_table, @I.impl(%T.8b3) [symbolic] +// CHECK:STDOUT: %I.impl_witness.989: = impl_witness file.%I.impl_witness_table, @C.as.I.impl(%T.8b3) [symbolic] // CHECK:STDOUT: %I.type.202: type = facet_type <@I, @I(%empty_struct_type, %empty_tuple.type)> [concrete] // CHECK:STDOUT: %T.e96: %I.type.202 = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.a84: type = pattern_type %I.type.202 [concrete] @@ -455,15 +455,15 @@ fn B() { // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %Self.38c: %I.type.202 = bind_symbolic_name Self, 2 [symbolic] // CHECK:STDOUT: %complete_type.3d9: = complete_type_witness %I.type.202 [concrete] -// CHECK:STDOUT: %I.impl_witness.806: = impl_witness file.%I.impl_witness_table, @I.impl(%empty_struct_type) [concrete] +// CHECK:STDOUT: %I.impl_witness.806: = impl_witness file.%I.impl_witness_table, @C.as.I.impl(%empty_struct_type) [concrete] // CHECK:STDOUT: %I.facet: %I.type.202 = facet_value %C, (%I.impl_witness.806) [concrete] // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] // CHECK:STDOUT: %A.specific_fn: = specific_function %A, @A(%I.facet) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.153: type = fn_type @Op.1, @Destroy.impl(%C) [concrete] -// CHECK:STDOUT: %Op.5d7: %Op.type.153 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.153: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.5d7: %T.as.Destroy.impl.Op.type.153 = struct_value () [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.5d7, @Op.1(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(%C) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -492,7 +492,7 @@ fn B() { // CHECK:STDOUT: %W.loc3_23.2: type = bind_symbolic_name W, 1 [symbolic = %W.loc3_23.1 (constants.%W)] // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} -// CHECK:STDOUT: impl_decl @I.impl [concrete] { +// CHECK:STDOUT: impl_decl @C.as.I.impl [concrete] { // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] @@ -503,8 +503,8 @@ fn B() { // CHECK:STDOUT: %I.type.loc7_36.1: type = facet_type <@I, @I(constants.%T.8b3, constants.%empty_tuple.type)> [symbolic = %I.type.loc7_36.2 (constants.%I.type.bea)] // CHECK:STDOUT: %T.loc7_14.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc7_14.2 (constants.%T.8b3)] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @I.impl [concrete] -// CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table, @I.impl(constants.%T.8b3) [symbolic = @I.impl.%I.impl_witness (constants.%I.impl_witness.989)] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @C.as.I.impl [concrete] +// CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table, @C.as.I.impl(constants.%T.8b3) [symbolic = @C.as.I.impl.%I.impl_witness (constants.%I.impl_witness.989)] // CHECK:STDOUT: %A.decl: %A.type = fn_decl @A [concrete = constants.%A] { // CHECK:STDOUT: %T.patt: %pattern_type.a84 = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: %t.patt: @A.%pattern_type (%pattern_type.3ff) = binding_pattern t [concrete] @@ -547,11 +547,11 @@ fn B() { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @I.impl(%T.loc7_14.1: type) { +// CHECK:STDOUT: generic impl @C.as.I.impl(%T.loc7_14.1: type) { // CHECK:STDOUT: %T.loc7_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc7_14.2 (constants.%T.8b3)] // CHECK:STDOUT: %I.type.loc7_36.2: type = facet_type <@I, @I(%T.loc7_14.2, constants.%empty_tuple.type)> [symbolic = %I.type.loc7_36.2 (constants.%I.type.bea)] // CHECK:STDOUT: %require_complete: = require_complete_type %I.type.loc7_36.2 [symbolic = %require_complete (constants.%require_complete.5ce)] -// CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table, @I.impl(%T.loc7_14.2) [symbolic = %I.impl_witness (constants.%I.impl_witness.989)] +// CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table, @C.as.I.impl(%T.loc7_14.2) [symbolic = %I.impl_witness (constants.%I.impl_witness.989)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -600,11 +600,11 @@ fn B() { // CHECK:STDOUT: %A.specific_fn: = specific_function %A.ref, @A(constants.%I.facet) [concrete = constants.%A.specific_fn] // CHECK:STDOUT: %.loc12_8.2: %C = bind_value %.loc12_8.1 // CHECK:STDOUT: %A.call: init %empty_tuple.type = call %A.specific_fn(%.loc12_8.2) -// CHECK:STDOUT: %Op.bound: = bound_method %.loc12_6.2, constants.%Op.5d7 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.5d7, @Op.1(constants.%C) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc12_6.2, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc12_6.2, constants.%T.as.Destroy.impl.Op.5d7 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(constants.%C) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %.loc12_6.2, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc12_6.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -622,7 +622,7 @@ fn B() { // CHECK:STDOUT: %Self.2 => constants.%Self.ec5 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.impl(constants.%T.8b3) { +// CHECK:STDOUT: specific @C.as.I.impl(constants.%T.8b3) { // CHECK:STDOUT: %T.loc7_14.2 => constants.%T.8b3 // CHECK:STDOUT: %I.type.loc7_36.2 => constants.%I.type.bea // CHECK:STDOUT: %require_complete => constants.%require_complete.5ce @@ -644,7 +644,7 @@ fn B() { // CHECK:STDOUT: %pattern_type => constants.%pattern_type.3ff // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.impl(constants.%empty_struct_type) { +// CHECK:STDOUT: specific @C.as.I.impl(constants.%empty_struct_type) { // CHECK:STDOUT: %T.loc7_14.2 => constants.%empty_struct_type // CHECK:STDOUT: %I.type.loc7_36.2 => constants.%I.type.202 // CHECK:STDOUT: %require_complete => constants.%complete_type.3d9 @@ -680,7 +680,7 @@ fn B() { // CHECK:STDOUT: %I.type.bea: type = facet_type <@I, @I(%T.8b3, %empty_tuple.type)> [symbolic] // CHECK:STDOUT: %Self.ec5: %I.type.bea = bind_symbolic_name Self, 2 [symbolic] // CHECK:STDOUT: %require_complete.5ce: = require_complete_type %I.type.bea [symbolic] -// CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table, @I.impl(%T.8b3) [symbolic] +// CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table, @C.as.I.impl(%T.8b3) [symbolic] // CHECK:STDOUT: %I.type.906: type = facet_type <@I, @I(%empty_struct_type, %empty_struct_type)> [concrete] // CHECK:STDOUT: %T.4b2: %I.type.906 = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.a62: type = pattern_type %I.type.906 [concrete] @@ -693,10 +693,10 @@ fn B() { // CHECK:STDOUT: %B: %B.type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.153: type = fn_type @Op.1, @Destroy.impl(%C) [concrete] -// CHECK:STDOUT: %Op.5d7: %Op.type.153 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.153: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.5d7: %T.as.Destroy.impl.Op.type.153 = struct_value () [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.5d7, @Op.1(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(%C) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -725,7 +725,7 @@ fn B() { // CHECK:STDOUT: %W.loc3_23.2: type = bind_symbolic_name W, 1 [symbolic = %W.loc3_23.1 (constants.%W)] // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} -// CHECK:STDOUT: impl_decl @I.impl [concrete] { +// CHECK:STDOUT: impl_decl @C.as.I.impl [concrete] { // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] @@ -736,8 +736,8 @@ fn B() { // CHECK:STDOUT: %I.type.loc7_36.1: type = facet_type <@I, @I(constants.%T.8b3, constants.%empty_tuple.type)> [symbolic = %I.type.loc7_36.2 (constants.%I.type.bea)] // CHECK:STDOUT: %T.loc7_14.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc7_14.2 (constants.%T.8b3)] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @I.impl [concrete] -// CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table, @I.impl(constants.%T.8b3) [symbolic = @I.impl.%I.impl_witness (constants.%I.impl_witness)] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @C.as.I.impl [concrete] +// CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table, @C.as.I.impl(constants.%T.8b3) [symbolic = @C.as.I.impl.%I.impl_witness (constants.%I.impl_witness)] // CHECK:STDOUT: %A.decl: %A.type = fn_decl @A [concrete = constants.%A] { // CHECK:STDOUT: %T.patt: %pattern_type.a62 = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: %t.patt: @A.%pattern_type (%pattern_type.f1c) = binding_pattern t [concrete] @@ -780,11 +780,11 @@ fn B() { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @I.impl(%T.loc7_14.1: type) { +// CHECK:STDOUT: generic impl @C.as.I.impl(%T.loc7_14.1: type) { // CHECK:STDOUT: %T.loc7_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc7_14.2 (constants.%T.8b3)] // CHECK:STDOUT: %I.type.loc7_36.2: type = facet_type <@I, @I(%T.loc7_14.2, constants.%empty_tuple.type)> [symbolic = %I.type.loc7_36.2 (constants.%I.type.bea)] // CHECK:STDOUT: %require_complete: = require_complete_type %I.type.loc7_36.2 [symbolic = %require_complete (constants.%require_complete.5ce)] -// CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table, @I.impl(%T.loc7_14.2) [symbolic = %I.impl_witness (constants.%I.impl_witness)] +// CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table, @C.as.I.impl(%T.loc7_14.2) [symbolic = %I.impl_witness (constants.%I.impl_witness)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -826,11 +826,11 @@ fn B() { // CHECK:STDOUT: %.loc19_6.3: init %C = class_init (), %.loc19_6.2 [concrete = constants.%C.val] // CHECK:STDOUT: %.loc19_6.4: ref %C = temporary %.loc19_6.2, %.loc19_6.3 // CHECK:STDOUT: %.loc19_8: ref %C = converted %.loc19_6.1, %.loc19_6.4 -// CHECK:STDOUT: %Op.bound: = bound_method %.loc19_6.2, constants.%Op.5d7 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.5d7, @Op.1(constants.%C) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc19_6.2, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc19_6.2, constants.%T.as.Destroy.impl.Op.5d7 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(constants.%C) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %.loc19_6.2, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc19_6.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -848,7 +848,7 @@ fn B() { // CHECK:STDOUT: %Self.2 => constants.%Self.ec5 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.impl(constants.%T.8b3) { +// CHECK:STDOUT: specific @C.as.I.impl(constants.%T.8b3) { // CHECK:STDOUT: %T.loc7_14.2 => constants.%T.8b3 // CHECK:STDOUT: %I.type.loc7_36.2 => constants.%I.type.bea // CHECK:STDOUT: %require_complete => constants.%require_complete.5ce @@ -882,7 +882,7 @@ fn B() { // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %T.8b3: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %C.463: type = class_type @C, @C(%T.8b3, %empty_tuple.type) [symbolic] -// CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table, @I.impl(%T.8b3) [symbolic] +// CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table, @C.as.I.impl(%T.8b3) [symbolic] // CHECK:STDOUT: %T.826: %I.type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.2b5: type = pattern_type %I.type [concrete] // CHECK:STDOUT: %T.as_type: type = facet_access_type %T.826 [symbolic] @@ -895,10 +895,10 @@ fn B() { // CHECK:STDOUT: %C.c74: type = class_type @C, @C(%empty_struct_type, %empty_struct_type) [concrete] // CHECK:STDOUT: %C.val: %C.c74 = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.53e: type = fn_type @Op.1, @Destroy.impl(%C.c74) [concrete] -// CHECK:STDOUT: %Op.2b8: %Op.type.53e = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.53e: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C.c74) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.2b8: %T.as.Destroy.impl.Op.type.53e = struct_value () [concrete] // CHECK:STDOUT: %ptr.128: type = ptr_type %C.c74 [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.2b8, @Op.1(%C.c74) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.2b8, @T.as.Destroy.impl.Op(%C.c74) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -927,7 +927,7 @@ fn B() { // CHECK:STDOUT: %V.loc5_9.2: type = bind_symbolic_name V, 0 [symbolic = %V.loc5_9.1 (constants.%V)] // CHECK:STDOUT: %W.loc5_19.2: type = bind_symbolic_name W, 1 [symbolic = %W.loc5_19.1 (constants.%W)] // CHECK:STDOUT: } -// CHECK:STDOUT: impl_decl @I.impl [concrete] { +// CHECK:STDOUT: impl_decl @C.as.I.impl [concrete] { // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] @@ -938,8 +938,8 @@ fn B() { // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: %T.loc7_14.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc7_14.2 (constants.%T.8b3)] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @I.impl [concrete] -// CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table, @I.impl(constants.%T.8b3) [symbolic = @I.impl.%I.impl_witness (constants.%I.impl_witness)] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @C.as.I.impl [concrete] +// CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table, @C.as.I.impl(constants.%T.8b3) [symbolic = @C.as.I.impl.%I.impl_witness (constants.%I.impl_witness)] // CHECK:STDOUT: %A.decl: %A.type = fn_decl @A [concrete = constants.%A] { // CHECK:STDOUT: %T.patt: %pattern_type.2b5 = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: %t.patt: @A.%pattern_type (%pattern_type.6de) = binding_pattern t [concrete] @@ -966,10 +966,10 @@ fn B() { // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @I.impl(%T.loc7_14.1: type) { +// CHECK:STDOUT: generic impl @C.as.I.impl(%T.loc7_14.1: type) { // CHECK:STDOUT: %T.loc7_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc7_14.2 (constants.%T.8b3)] // CHECK:STDOUT: %C.loc7_31.2: type = class_type @C, @C(%T.loc7_14.2, constants.%empty_tuple.type) [symbolic = %C.loc7_31.2 (constants.%C.463)] -// CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table, @I.impl(%T.loc7_14.2) [symbolic = %I.impl_witness (constants.%I.impl_witness)] +// CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table, @C.as.I.impl(%T.loc7_14.2) [symbolic = %I.impl_witness (constants.%I.impl_witness)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -1023,11 +1023,11 @@ fn B() { // CHECK:STDOUT: %.loc19_6.3: init %C.c74 = class_init (), %.loc19_6.2 [concrete = constants.%C.val] // CHECK:STDOUT: %.loc19_6.4: ref %C.c74 = temporary %.loc19_6.2, %.loc19_6.3 // CHECK:STDOUT: %.loc19_8: ref %C.c74 = converted %.loc19_6.1, %.loc19_6.4 -// CHECK:STDOUT: %Op.bound: = bound_method %.loc19_6.2, constants.%Op.2b8 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.2b8, @Op.1(constants.%C.c74) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc19_6.2, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc19_6.2, constants.%T.as.Destroy.impl.Op.2b8 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.2b8, @T.as.Destroy.impl.Op(constants.%C.c74) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %.loc19_6.2, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.128 = addr_of %.loc19_6.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1041,7 +1041,7 @@ fn B() { // CHECK:STDOUT: %W.loc5_19.1 => constants.%empty_tuple.type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.impl(constants.%T.8b3) { +// CHECK:STDOUT: specific @C.as.I.impl(constants.%T.8b3) { // CHECK:STDOUT: %T.loc7_14.2 => constants.%T.8b3 // CHECK:STDOUT: %C.loc7_31.2 => constants.%C.463 // CHECK:STDOUT: %I.impl_witness => constants.%I.impl_witness diff --git a/toolchain/check/testdata/facet/convert_facet_value_as_type_knows_original_type.carbon b/toolchain/check/testdata/facet/convert_facet_value_as_type_knows_original_type.carbon index a5abccd1226b..41c3044041bd 100644 --- a/toolchain/check/testdata/facet/convert_facet_value_as_type_knows_original_type.carbon +++ b/toolchain/check/testdata/facet/convert_facet_value_as_type_knows_original_type.carbon @@ -103,17 +103,17 @@ fn F() { // CHECK:STDOUT: %Eats.decl: type = interface_decl @Eats [concrete = constants.%Eats.type] {} {} // CHECK:STDOUT: %Animal.decl: type = interface_decl @Animal [concrete = constants.%Animal.type] {} {} // CHECK:STDOUT: %Goat.decl: type = class_decl @Goat [concrete = constants.%Goat] {} {} -// CHECK:STDOUT: impl_decl @Animal.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @Goat.as.Animal.impl [concrete] {} { // CHECK:STDOUT: %Goat.ref: type = name_ref Goat, file.%Goat.decl [concrete = constants.%Goat] // CHECK:STDOUT: %Animal.ref: type = name_ref Animal, file.%Animal.decl [concrete = constants.%Animal.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %Animal.impl_witness_table = impl_witness_table (), @Animal.impl [concrete] +// CHECK:STDOUT: %Animal.impl_witness_table = impl_witness_table (), @Goat.as.Animal.impl [concrete] // CHECK:STDOUT: %Animal.impl_witness: = impl_witness %Animal.impl_witness_table [concrete = constants.%Animal.impl_witness] -// CHECK:STDOUT: impl_decl @Eats.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @Goat.as.Eats.impl [concrete] {} { // CHECK:STDOUT: %Goat.ref: type = name_ref Goat, file.%Goat.decl [concrete = constants.%Goat] // CHECK:STDOUT: %Eats.ref: type = name_ref Eats, file.%Eats.decl [concrete = constants.%Eats.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %Eats.impl_witness_table = impl_witness_table (), @Eats.impl [concrete] +// CHECK:STDOUT: %Eats.impl_witness_table = impl_witness_table (), @Goat.as.Eats.impl [concrete] // CHECK:STDOUT: %Eats.impl_witness: = impl_witness %Eats.impl_witness_table [concrete = constants.%Eats.impl_witness] // CHECK:STDOUT: %Feed.decl: %Feed.type = fn_decl @Feed [concrete = constants.%Feed] { // CHECK:STDOUT: %e.patt: %pattern_type = symbolic_binding_pattern e, 0 [concrete] @@ -140,12 +140,12 @@ fn F() { // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Animal.impl: %Goat.ref as %Animal.ref { +// CHECK:STDOUT: impl @Goat.as.Animal.impl: %Goat.ref as %Animal.ref { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%Animal.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Eats.impl: %Goat.ref as %Eats.ref { +// CHECK:STDOUT: impl @Goat.as.Eats.impl: %Goat.ref as %Eats.ref { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%Eats.impl_witness // CHECK:STDOUT: } @@ -201,20 +201,20 @@ fn F() { // CHECK:STDOUT: constants { // CHECK:STDOUT: %Eats.type: type = facet_type <@Eats> [concrete] // CHECK:STDOUT: %Self.1b5: %Eats.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %Eat.type.e5d: type = fn_type @Eat.loc5 [concrete] +// CHECK:STDOUT: %Eats.Eat.type: type = fn_type @Eats.Eat [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %Eat.7cd: %Eat.type.e5d = struct_value () [concrete] +// CHECK:STDOUT: %Eats.Eat: %Eats.Eat.type = struct_value () [concrete] // CHECK:STDOUT: %Eats.assoc_type: type = assoc_entity_type @Eats [concrete] -// CHECK:STDOUT: %assoc0.e43: %Eats.assoc_type = assoc_entity element0, @Eats.%Eat.decl [concrete] +// CHECK:STDOUT: %assoc0.e43: %Eats.assoc_type = assoc_entity element0, @Eats.%Eats.Eat.decl [concrete] // CHECK:STDOUT: %Animal.type: type = facet_type <@Animal> [concrete] // CHECK:STDOUT: %Self.fd4: %Animal.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Goat: type = class_type @Goat [concrete] -// CHECK:STDOUT: %Bleet.type: type = fn_type @Bleet [concrete] -// CHECK:STDOUT: %Bleet: %Bleet.type = struct_value () [concrete] +// CHECK:STDOUT: %Goat.Bleet.type: type = fn_type @Goat.Bleet [concrete] +// CHECK:STDOUT: %Goat.Bleet: %Goat.Bleet.type = struct_value () [concrete] // CHECK:STDOUT: %Animal.impl_witness: = impl_witness @Goat.%Animal.impl_witness_table [concrete] // CHECK:STDOUT: %Eats.impl_witness: = impl_witness @Goat.%Eats.impl_witness_table [concrete] -// CHECK:STDOUT: %Eat.type.1b3: type = fn_type @Eat.loc14 [concrete] -// CHECK:STDOUT: %Eat.73e: %Eat.type.1b3 = struct_value () [concrete] +// CHECK:STDOUT: %Goat.as.Eats.impl.Eat.type: type = fn_type @Goat.as.Eats.impl.Eat [concrete] +// CHECK:STDOUT: %Goat.as.Eats.impl.Eat: %Goat.as.Eats.impl.Eat.type = struct_value () [concrete] // CHECK:STDOUT: %Eats.facet: %Eats.type = facet_value %Goat, (%Eats.impl_witness) [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] @@ -223,12 +223,12 @@ fn F() { // CHECK:STDOUT: %Animal.facet: %Animal.type = facet_value %Goat, (%Animal.impl_witness) [concrete] // CHECK:STDOUT: %pattern_type.ab7: type = pattern_type %Goat [concrete] // CHECK:STDOUT: %Goat.val: %Goat = struct_value () [concrete] -// CHECK:STDOUT: %.f6e: type = fn_type_with_self_type %Eat.type.e5d, %Eats.facet [concrete] +// CHECK:STDOUT: %.f6e: type = fn_type_with_self_type %Eats.Eat.type, %Eats.facet [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.e7a: type = fn_type @Op.1, @Destroy.impl(%Goat) [concrete] -// CHECK:STDOUT: %Op.55a: %Op.type.e7a = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.e7a: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%Goat) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.55a: %T.as.Destroy.impl.Op.type.e7a = struct_value () [concrete] // CHECK:STDOUT: %ptr.940: type = ptr_type %Goat [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.55a, @Op.1(%Goat) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.55a, @T.as.Destroy.impl.Op(%Goat) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -257,13 +257,13 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: interface @Eats { // CHECK:STDOUT: %Self: %Eats.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.1b5] -// CHECK:STDOUT: %Eat.decl: %Eat.type.e5d = fn_decl @Eat.loc5 [concrete = constants.%Eat.7cd] {} {} -// CHECK:STDOUT: %assoc0: %Eats.assoc_type = assoc_entity element0, %Eat.decl [concrete = constants.%assoc0.e43] +// CHECK:STDOUT: %Eats.Eat.decl: %Eats.Eat.type = fn_decl @Eats.Eat [concrete = constants.%Eats.Eat] {} {} +// CHECK:STDOUT: %assoc0: %Eats.assoc_type = assoc_entity element0, %Eats.Eat.decl [concrete = constants.%assoc0.e43] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .Eat = %assoc0 -// CHECK:STDOUT: witness = (%Eat.decl) +// CHECK:STDOUT: witness = (%Eats.Eat.decl) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Animal { @@ -274,32 +274,32 @@ fn F() { // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Animal.impl: %Self.ref as %Animal.ref { +// CHECK:STDOUT: impl @Goat.as.Animal.impl: %Self.ref as %Animal.ref { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = @Goat.%Animal.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Eats.impl: %Self.ref as %Eats.ref { -// CHECK:STDOUT: %Eat.decl: %Eat.type.1b3 = fn_decl @Eat.loc14 [concrete = constants.%Eat.73e] {} {} +// CHECK:STDOUT: impl @Goat.as.Eats.impl: %Self.ref as %Eats.ref { +// CHECK:STDOUT: %Goat.as.Eats.impl.Eat.decl: %Goat.as.Eats.impl.Eat.type = fn_decl @Goat.as.Eats.impl.Eat [concrete = constants.%Goat.as.Eats.impl.Eat] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Eat = %Eat.decl +// CHECK:STDOUT: .Eat = %Goat.as.Eats.impl.Eat.decl // CHECK:STDOUT: witness = @Goat.%Eats.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Goat { -// CHECK:STDOUT: %Bleet.decl: %Bleet.type = fn_decl @Bleet [concrete = constants.%Bleet] {} {} -// CHECK:STDOUT: impl_decl @Animal.impl [concrete] {} { +// CHECK:STDOUT: %Goat.Bleet.decl: %Goat.Bleet.type = fn_decl @Goat.Bleet [concrete = constants.%Goat.Bleet] {} {} +// CHECK:STDOUT: impl_decl @Goat.as.Animal.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Goat [concrete = constants.%Goat] // CHECK:STDOUT: %Animal.ref: type = name_ref Animal, file.%Animal.decl [concrete = constants.%Animal.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %Animal.impl_witness_table = impl_witness_table (), @Animal.impl [concrete] +// CHECK:STDOUT: %Animal.impl_witness_table = impl_witness_table (), @Goat.as.Animal.impl [concrete] // CHECK:STDOUT: %Animal.impl_witness: = impl_witness %Animal.impl_witness_table [concrete = constants.%Animal.impl_witness] -// CHECK:STDOUT: impl_decl @Eats.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @Goat.as.Eats.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Goat [concrete = constants.%Goat] // CHECK:STDOUT: %Eats.ref: type = name_ref Eats, file.%Eats.decl [concrete = constants.%Eats.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %Eats.impl_witness_table = impl_witness_table (@Eats.impl.%Eat.decl), @Eats.impl [concrete] +// CHECK:STDOUT: %Eats.impl_witness_table = impl_witness_table (@Goat.as.Eats.impl.%Goat.as.Eats.impl.Eat.decl), @Goat.as.Eats.impl [concrete] // CHECK:STDOUT: %Eats.impl_witness: = impl_witness %Eats.impl_witness_table [concrete = constants.%Eats.impl_witness] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] @@ -307,23 +307,23 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Goat -// CHECK:STDOUT: .Bleet = %Bleet.decl +// CHECK:STDOUT: .Bleet = %Goat.Bleet.decl // CHECK:STDOUT: .Animal = // CHECK:STDOUT: .Eats = // CHECK:STDOUT: .Eat = -// CHECK:STDOUT: extend @Eats.impl.%Eats.ref +// CHECK:STDOUT: extend @Goat.as.Eats.impl.%Eats.ref // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Eat.loc5(@Eats.%Self: %Eats.type) { +// CHECK:STDOUT: generic fn @Eats.Eat(@Eats.%Self: %Eats.type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Bleet() { +// CHECK:STDOUT: fn @Goat.Bleet() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Eat.loc14() { +// CHECK:STDOUT: fn @Goat.as.Eats.impl.Eat() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -350,12 +350,12 @@ fn F() { // CHECK:STDOUT: %.loc22_30.2: %Goat = bind_value %.loc22_30.1 // CHECK:STDOUT: %x: %Goat = bind_name x, %.loc22_30.2 // CHECK:STDOUT: %x.ref.loc23: %Goat = name_ref x, %x -// CHECK:STDOUT: %Bleet.ref.loc23: %Bleet.type = name_ref Bleet, @Goat.%Bleet.decl [concrete = constants.%Bleet] -// CHECK:STDOUT: %Bleet.call.loc23: init %empty_tuple.type = call %Bleet.ref.loc23() +// CHECK:STDOUT: %Bleet.ref.loc23: %Goat.Bleet.type = name_ref Bleet, @Goat.%Goat.Bleet.decl [concrete = constants.%Goat.Bleet] +// CHECK:STDOUT: %Goat.Bleet.call.loc23: init %empty_tuple.type = call %Bleet.ref.loc23() // CHECK:STDOUT: %x.ref.loc24: %Goat = name_ref x, %x // CHECK:STDOUT: %Eat.ref.loc24: %Eats.assoc_type = name_ref Eat, @Eats.%assoc0 [concrete = constants.%assoc0.e43] -// CHECK:STDOUT: %impl.elem0.loc24: %.f6e = impl_witness_access constants.%Eats.impl_witness, element0 [concrete = constants.%Eat.73e] -// CHECK:STDOUT: %Eat.call.loc24: init %empty_tuple.type = call %impl.elem0.loc24() +// CHECK:STDOUT: %impl.elem0.loc24: %.f6e = impl_witness_access constants.%Eats.impl_witness, element0 [concrete = constants.%Goat.as.Eats.impl.Eat] +// CHECK:STDOUT: %Goat.as.Eats.impl.Eat.call.loc24: init %empty_tuple.type = call %impl.elem0.loc24() // CHECK:STDOUT: %.loc26_6.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %Goat.ref.loc26_11: type = name_ref Goat, file.%Goat.decl [concrete = constants.%Goat] // CHECK:STDOUT: %.loc26_6.2: ref %Goat = temporary_storage @@ -368,8 +368,8 @@ fn F() { // CHECK:STDOUT: %.loc26_26: %Animal.type = converted %Goat.ref.loc26_21, %Animal.facet.loc26 [concrete = constants.%Animal.facet] // CHECK:STDOUT: %as_type.loc26: type = facet_access_type %.loc26_26 [concrete = constants.%Goat] // CHECK:STDOUT: %.loc26_35: type = converted %.loc26_26, %as_type.loc26 [concrete = constants.%Goat] -// CHECK:STDOUT: %Bleet.ref.loc26: %Bleet.type = name_ref Bleet, @Goat.%Bleet.decl [concrete = constants.%Bleet] -// CHECK:STDOUT: %Bleet.call.loc26: init %empty_tuple.type = call %Bleet.ref.loc26() +// CHECK:STDOUT: %Bleet.ref.loc26: %Goat.Bleet.type = name_ref Bleet, @Goat.%Goat.Bleet.decl [concrete = constants.%Goat.Bleet] +// CHECK:STDOUT: %Goat.Bleet.call.loc26: init %empty_tuple.type = call %Bleet.ref.loc26() // CHECK:STDOUT: %.loc27_6.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %Goat.ref.loc27_11: type = name_ref Goat, file.%Goat.decl [concrete = constants.%Goat] // CHECK:STDOUT: %.loc27_6.2: ref %Goat = temporary_storage @@ -383,27 +383,27 @@ fn F() { // CHECK:STDOUT: %as_type.loc27: type = facet_access_type %.loc27_26 [concrete = constants.%Goat] // CHECK:STDOUT: %.loc27_35: type = converted %.loc27_26, %as_type.loc27 [concrete = constants.%Goat] // CHECK:STDOUT: %Eat.ref.loc27: %Eats.assoc_type = name_ref Eat, @Eats.%assoc0 [concrete = constants.%assoc0.e43] -// CHECK:STDOUT: %impl.elem0.loc27: %.f6e = impl_witness_access constants.%Eats.impl_witness, element0 [concrete = constants.%Eat.73e] -// CHECK:STDOUT: %Eat.call.loc27: init %empty_tuple.type = call %impl.elem0.loc27() -// CHECK:STDOUT: %Op.bound.loc27: = bound_method %.loc27_6.2, constants.%Op.55a -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.55a, @Op.1(constants.%Goat) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc27: = bound_method %.loc27_6.2, %Op.specific_fn.1 +// CHECK:STDOUT: %impl.elem0.loc27: %.f6e = impl_witness_access constants.%Eats.impl_witness, element0 [concrete = constants.%Goat.as.Eats.impl.Eat] +// CHECK:STDOUT: %Goat.as.Eats.impl.Eat.call.loc27: init %empty_tuple.type = call %impl.elem0.loc27() +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc27: = bound_method %.loc27_6.2, constants.%T.as.Destroy.impl.Op.55a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.55a, @T.as.Destroy.impl.Op(constants.%Goat) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc27: = bound_method %.loc27_6.2, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc27: %ptr.940 = addr_of %.loc27_6.2 -// CHECK:STDOUT: %no_op.loc27: init %empty_tuple.type = call %bound_method.loc27(%addr.loc27) -// CHECK:STDOUT: %Op.bound.loc26: = bound_method %.loc26_6.2, constants.%Op.55a -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.55a, @Op.1(constants.%Goat) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc26: = bound_method %.loc26_6.2, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc27: init %empty_tuple.type = call %bound_method.loc27(%addr.loc27) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc26: = bound_method %.loc26_6.2, constants.%T.as.Destroy.impl.Op.55a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.55a, @T.as.Destroy.impl.Op(constants.%Goat) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc26: = bound_method %.loc26_6.2, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc26: %ptr.940 = addr_of %.loc26_6.2 -// CHECK:STDOUT: %no_op.loc26: init %empty_tuple.type = call %bound_method.loc26(%addr.loc26) -// CHECK:STDOUT: %Op.bound.loc22: = bound_method %.loc22_28.2, constants.%Op.55a -// CHECK:STDOUT: %Op.specific_fn.3: = specific_function constants.%Op.55a, @Op.1(constants.%Goat) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc22: = bound_method %.loc22_28.2, %Op.specific_fn.3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc26: init %empty_tuple.type = call %bound_method.loc26(%addr.loc26) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc22: = bound_method %.loc22_28.2, constants.%T.as.Destroy.impl.Op.55a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.3: = specific_function constants.%T.as.Destroy.impl.Op.55a, @T.as.Destroy.impl.Op(constants.%Goat) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc22: = bound_method %.loc22_28.2, %T.as.Destroy.impl.Op.specific_fn.3 // CHECK:STDOUT: %addr.loc22: %ptr.940 = addr_of %.loc22_28.2 -// CHECK:STDOUT: %no_op.loc22: init %empty_tuple.type = call %bound_method.loc22(%addr.loc22) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc22: init %empty_tuple.type = call %bound_method.loc22(%addr.loc22) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Eat.loc5(constants.%Self.1b5) {} +// CHECK:STDOUT: specific @Eats.Eat(constants.%Self.1b5) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @Eat.loc5(constants.%Eats.facet) {} +// CHECK:STDOUT: specific @Eats.Eat(constants.%Eats.facet) {} // CHECK:STDOUT: diff --git a/toolchain/check/testdata/facet/convert_facet_value_to_itself.carbon b/toolchain/check/testdata/facet/convert_facet_value_to_itself.carbon index 2923bf3fae5c..5c344f64721e 100644 --- a/toolchain/check/testdata/facet/convert_facet_value_to_itself.carbon +++ b/toolchain/check/testdata/facet/convert_facet_value_to_itself.carbon @@ -80,11 +80,11 @@ fn F() { // CHECK:STDOUT: %T.loc19_17.2: %Animal.type = bind_symbolic_name T, 0 [symbolic = %T.loc19_17.1 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %Goat.decl: type = class_decl @Goat [concrete = constants.%Goat] {} {} -// CHECK:STDOUT: impl_decl @Animal.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @Goat.as.Animal.impl [concrete] {} { // CHECK:STDOUT: %Goat.ref: type = name_ref Goat, file.%Goat.decl [concrete = constants.%Goat] // CHECK:STDOUT: %Animal.ref: type = name_ref Animal, file.%Animal.decl [concrete = constants.%Animal.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %Animal.impl_witness_table = impl_witness_table (), @Animal.impl [concrete] +// CHECK:STDOUT: %Animal.impl_witness_table = impl_witness_table (), @Goat.as.Animal.impl [concrete] // CHECK:STDOUT: %Animal.impl_witness: = impl_witness %Animal.impl_witness_table [concrete = constants.%Animal.impl_witness] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} // CHECK:STDOUT: } @@ -97,7 +97,7 @@ fn F() { // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Animal.impl: %Goat.ref as %Animal.ref { +// CHECK:STDOUT: impl @Goat.as.Animal.impl: %Goat.ref as %Animal.ref { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%Animal.impl_witness // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/facet/convert_facet_value_to_narrowed_facet_type.carbon b/toolchain/check/testdata/facet/convert_facet_value_to_narrowed_facet_type.carbon index f373f43ec337..fbac4bed1980 100644 --- a/toolchain/check/testdata/facet/convert_facet_value_to_narrowed_facet_type.carbon +++ b/toolchain/check/testdata/facet/convert_facet_value_to_narrowed_facet_type.carbon @@ -107,13 +107,13 @@ fn CallsWithTypeExplicit(U:! type) { // CHECK:STDOUT: %BitAndWith.type.f2e: type = generic_interface_type @BitAndWith [concrete] // CHECK:STDOUT: %BitAndWith.generic: %BitAndWith.type.f2e = struct_value () [concrete] // CHECK:STDOUT: %BitAndWith.type.e8c: type = facet_type <@BitAndWith, @BitAndWith(type)> [concrete] -// CHECK:STDOUT: %Op.type.9a3: type = fn_type @Op.1, @BitAndWith(type) [concrete] +// CHECK:STDOUT: %BitAndWith.Op.type.9a3: type = fn_type @BitAndWith.Op, @BitAndWith(type) [concrete] // CHECK:STDOUT: %BitAndWith.impl_witness: = impl_witness imports.%BitAndWith.impl_witness_table [concrete] // CHECK:STDOUT: %BitAndWith.facet: %BitAndWith.type.e8c = facet_value type, (%BitAndWith.impl_witness) [concrete] -// CHECK:STDOUT: %.2af: type = fn_type_with_self_type %Op.type.9a3, %BitAndWith.facet [concrete] -// CHECK:STDOUT: %Op.type.1cc: type = fn_type @Op.2 [concrete] -// CHECK:STDOUT: %Op.ff4: %Op.type.1cc = struct_value () [concrete] -// CHECK:STDOUT: %Op.bound: = bound_method %Animal.type, %Op.ff4 [concrete] +// CHECK:STDOUT: %.2af: type = fn_type_with_self_type %BitAndWith.Op.type.9a3, %BitAndWith.facet [concrete] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.type: type = fn_type @type.as.BitAndWith.impl.Op [concrete] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op: %type.as.BitAndWith.impl.Op.type = struct_value () [concrete] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.bound: = bound_method %Animal.type, %type.as.BitAndWith.impl.Op [concrete] // CHECK:STDOUT: %facet_type: type = facet_type <@Eats & @Animal> [concrete] // CHECK:STDOUT: %U: %facet_type = bind_symbolic_name U, 0 [symbolic] // CHECK:STDOUT: %pattern_type.787: type = pattern_type %facet_type [concrete] @@ -134,8 +134,8 @@ fn CallsWithTypeExplicit(U:! type) { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.BitAndWith: %BitAndWith.type.f2e = import_ref Core//prelude, BitAndWith, loaded [concrete = constants.%BitAndWith.generic] -// CHECK:STDOUT: %Core.import_ref.012: %Op.type.1cc = import_ref Core//prelude, loc13_42, loaded [concrete = constants.%Op.ff4] -// CHECK:STDOUT: %BitAndWith.impl_witness_table = impl_witness_table (%Core.import_ref.012), @BitAndWith.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.012: %type.as.BitAndWith.impl.Op.type = import_ref Core//prelude, loc13_42, loaded [concrete = constants.%type.as.BitAndWith.impl.Op] +// CHECK:STDOUT: %BitAndWith.impl_witness_table = impl_witness_table (%Core.import_ref.012), @type.as.BitAndWith.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -172,11 +172,11 @@ fn CallsWithTypeExplicit(U:! type) { // CHECK:STDOUT: %.loc8_28.1: type = splice_block %.loc8_28.3 [concrete = constants.%facet_type] { // CHECK:STDOUT: %Animal.ref: type = name_ref Animal, file.%Animal.decl [concrete = constants.%Animal.type] // CHECK:STDOUT: %Eats.ref: type = name_ref Eats, file.%Eats.decl [concrete = constants.%Eats.type] -// CHECK:STDOUT: %impl.elem0: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%Op.ff4] -// CHECK:STDOUT: %bound_method: = bound_method %Animal.ref, %impl.elem0 [concrete = constants.%Op.bound] -// CHECK:STDOUT: %type.and: init type = call %bound_method(%Animal.ref, %Eats.ref) [concrete = constants.%facet_type] -// CHECK:STDOUT: %.loc8_28.2: type = value_of_initializer %type.and [concrete = constants.%facet_type] -// CHECK:STDOUT: %.loc8_28.3: type = converted %type.and, %.loc8_28.2 [concrete = constants.%facet_type] +// CHECK:STDOUT: %impl.elem0: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%type.as.BitAndWith.impl.Op] +// CHECK:STDOUT: %bound_method: = bound_method %Animal.ref, %impl.elem0 [concrete = constants.%type.as.BitAndWith.impl.Op.bound] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.call: init type = call %bound_method(%Animal.ref, %Eats.ref) [concrete = constants.%facet_type] +// CHECK:STDOUT: %.loc8_28.2: type = value_of_initializer %type.as.BitAndWith.impl.Op.call [concrete = constants.%facet_type] +// CHECK:STDOUT: %.loc8_28.3: type = converted %type.as.BitAndWith.impl.Op.call, %.loc8_28.2 [concrete = constants.%facet_type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc8_17.2: %facet_type = bind_symbolic_name U, 0 [symbolic = %U.loc8_17.1 (constants.%U)] // CHECK:STDOUT: %a.param: @HandleAnimal.%U.as_type.loc8_39.1 (%U.as_type) = value_param call_param0 @@ -278,13 +278,13 @@ fn CallsWithTypeExplicit(U:! type) { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %BitAndWith.generic: %BitAndWith.type.f2e = struct_value () [concrete] // CHECK:STDOUT: %BitAndWith.type.e8c: type = facet_type <@BitAndWith, @BitAndWith(type)> [concrete] -// CHECK:STDOUT: %Op.type.9a3: type = fn_type @Op.1, @BitAndWith(type) [concrete] +// CHECK:STDOUT: %BitAndWith.Op.type.9a3: type = fn_type @BitAndWith.Op, @BitAndWith(type) [concrete] // CHECK:STDOUT: %BitAndWith.impl_witness: = impl_witness imports.%BitAndWith.impl_witness_table [concrete] // CHECK:STDOUT: %BitAndWith.facet: %BitAndWith.type.e8c = facet_value type, (%BitAndWith.impl_witness) [concrete] -// CHECK:STDOUT: %.2af: type = fn_type_with_self_type %Op.type.9a3, %BitAndWith.facet [concrete] -// CHECK:STDOUT: %Op.type.1cc: type = fn_type @Op.2 [concrete] -// CHECK:STDOUT: %Op.ff4: %Op.type.1cc = struct_value () [concrete] -// CHECK:STDOUT: %Op.bound.0c8: = bound_method %Tame.type, %Op.ff4 [concrete] +// CHECK:STDOUT: %.2af: type = fn_type_with_self_type %BitAndWith.Op.type.9a3, %BitAndWith.facet [concrete] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.type: type = fn_type @type.as.BitAndWith.impl.Op [concrete] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op: %type.as.BitAndWith.impl.Op.type = struct_value () [concrete] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.bound.0c8: = bound_method %Tame.type, %type.as.BitAndWith.impl.Op [concrete] // CHECK:STDOUT: %facet_type.6ff: type = facet_type <@Eats & @Tame> [concrete] // CHECK:STDOUT: %V: %facet_type.6ff = bind_symbolic_name V, 0 [symbolic] // CHECK:STDOUT: %pattern_type.9f3: type = pattern_type %facet_type.6ff [concrete] @@ -293,9 +293,9 @@ fn CallsWithTypeExplicit(U:! type) { // CHECK:STDOUT: %FeedTame.type: type = fn_type @FeedTame [concrete] // CHECK:STDOUT: %FeedTame: %FeedTame.type = struct_value () [concrete] // CHECK:STDOUT: %require_complete.940: = require_complete_type %V.as_type [symbolic] -// CHECK:STDOUT: %Op.bound.a5f: = bound_method %Eats.type, %Op.ff4 [concrete] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.bound.a5f: = bound_method %Eats.type, %type.as.BitAndWith.impl.Op [concrete] // CHECK:STDOUT: %facet_type.c3f: type = facet_type <@Eats & @Animal> [concrete] -// CHECK:STDOUT: %Op.bound.70b: = bound_method %facet_type.c3f, %Op.ff4 [concrete] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.bound.70b: = bound_method %facet_type.c3f, %type.as.BitAndWith.impl.Op [concrete] // CHECK:STDOUT: %facet_type.a95: type = facet_type <@Eats & @Animal & @Tame> [concrete] // CHECK:STDOUT: %W: %facet_type.a95 = bind_symbolic_name W, 0 [symbolic] // CHECK:STDOUT: %pattern_type.f1b: type = pattern_type %facet_type.a95 [concrete] @@ -317,8 +317,8 @@ fn CallsWithTypeExplicit(U:! type) { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.BitAndWith: %BitAndWith.type.f2e = import_ref Core//prelude, BitAndWith, loaded [concrete = constants.%BitAndWith.generic] -// CHECK:STDOUT: %Core.import_ref.012: %Op.type.1cc = import_ref Core//prelude, loc13_42, loaded [concrete = constants.%Op.ff4] -// CHECK:STDOUT: %BitAndWith.impl_witness_table = impl_witness_table (%Core.import_ref.012), @BitAndWith.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.012: %type.as.BitAndWith.impl.Op.type = import_ref Core//prelude, loc13_42, loaded [concrete = constants.%type.as.BitAndWith.impl.Op] +// CHECK:STDOUT: %BitAndWith.impl_witness_table = impl_witness_table (%Core.import_ref.012), @type.as.BitAndWith.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -342,11 +342,11 @@ fn CallsWithTypeExplicit(U:! type) { // CHECK:STDOUT: %.loc7_22.1: type = splice_block %.loc7_22.3 [concrete = constants.%facet_type.6ff] { // CHECK:STDOUT: %Tame.ref: type = name_ref Tame, file.%Tame.decl [concrete = constants.%Tame.type] // CHECK:STDOUT: %Eats.ref: type = name_ref Eats, file.%Eats.decl [concrete = constants.%Eats.type] -// CHECK:STDOUT: %impl.elem0: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%Op.ff4] -// CHECK:STDOUT: %bound_method: = bound_method %Tame.ref, %impl.elem0 [concrete = constants.%Op.bound.0c8] -// CHECK:STDOUT: %type.and: init type = call %bound_method(%Tame.ref, %Eats.ref) [concrete = constants.%facet_type.6ff] -// CHECK:STDOUT: %.loc7_22.2: type = value_of_initializer %type.and [concrete = constants.%facet_type.6ff] -// CHECK:STDOUT: %.loc7_22.3: type = converted %type.and, %.loc7_22.2 [concrete = constants.%facet_type.6ff] +// CHECK:STDOUT: %impl.elem0: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%type.as.BitAndWith.impl.Op] +// CHECK:STDOUT: %bound_method: = bound_method %Tame.ref, %impl.elem0 [concrete = constants.%type.as.BitAndWith.impl.Op.bound.0c8] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.call: init type = call %bound_method(%Tame.ref, %Eats.ref) [concrete = constants.%facet_type.6ff] +// CHECK:STDOUT: %.loc7_22.2: type = value_of_initializer %type.as.BitAndWith.impl.Op.call [concrete = constants.%facet_type.6ff] +// CHECK:STDOUT: %.loc7_22.3: type = converted %type.as.BitAndWith.impl.Op.call, %.loc7_22.2 [concrete = constants.%facet_type.6ff] // CHECK:STDOUT: } // CHECK:STDOUT: %V.loc7_13.2: %facet_type.6ff = bind_symbolic_name V, 0 [symbolic = %V.loc7_13.1 (constants.%V)] // CHECK:STDOUT: %v.param: @FeedTame.%V.as_type.loc7_33.1 (%V.as_type) = value_param call_param0 @@ -365,17 +365,17 @@ fn CallsWithTypeExplicit(U:! type) { // CHECK:STDOUT: %.loc9_39.1: type = splice_block %.loc9_39.3 [concrete = constants.%facet_type.a95] { // CHECK:STDOUT: %Eats.ref: type = name_ref Eats, file.%Eats.decl [concrete = constants.%Eats.type] // CHECK:STDOUT: %Animal.ref: type = name_ref Animal, file.%Animal.decl [concrete = constants.%Animal.type] -// CHECK:STDOUT: %impl.elem0.loc9_30: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%Op.ff4] -// CHECK:STDOUT: %bound_method.loc9_30: = bound_method %Eats.ref, %impl.elem0.loc9_30 [concrete = constants.%Op.bound.a5f] -// CHECK:STDOUT: %type.and.loc9_30: init type = call %bound_method.loc9_30(%Eats.ref, %Animal.ref) [concrete = constants.%facet_type.c3f] +// CHECK:STDOUT: %impl.elem0.loc9_30: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%type.as.BitAndWith.impl.Op] +// CHECK:STDOUT: %bound_method.loc9_30: = bound_method %Eats.ref, %impl.elem0.loc9_30 [concrete = constants.%type.as.BitAndWith.impl.Op.bound.a5f] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.call.loc9_30: init type = call %bound_method.loc9_30(%Eats.ref, %Animal.ref) [concrete = constants.%facet_type.c3f] // CHECK:STDOUT: %Tame.ref: type = name_ref Tame, file.%Tame.decl [concrete = constants.%Tame.type] -// CHECK:STDOUT: %impl.elem0.loc9_39: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%Op.ff4] -// CHECK:STDOUT: %bound_method.loc9_39: = bound_method %type.and.loc9_30, %impl.elem0.loc9_39 [concrete = constants.%Op.bound.70b] -// CHECK:STDOUT: %.loc9_30.1: type = value_of_initializer %type.and.loc9_30 [concrete = constants.%facet_type.c3f] -// CHECK:STDOUT: %.loc9_30.2: type = converted %type.and.loc9_30, %.loc9_30.1 [concrete = constants.%facet_type.c3f] -// CHECK:STDOUT: %type.and.loc9_39: init type = call %bound_method.loc9_39(%.loc9_30.2, %Tame.ref) [concrete = constants.%facet_type.a95] -// CHECK:STDOUT: %.loc9_39.2: type = value_of_initializer %type.and.loc9_39 [concrete = constants.%facet_type.a95] -// CHECK:STDOUT: %.loc9_39.3: type = converted %type.and.loc9_39, %.loc9_39.2 [concrete = constants.%facet_type.a95] +// CHECK:STDOUT: %impl.elem0.loc9_39: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%type.as.BitAndWith.impl.Op] +// CHECK:STDOUT: %bound_method.loc9_39: = bound_method %type.as.BitAndWith.impl.Op.call.loc9_30, %impl.elem0.loc9_39 [concrete = constants.%type.as.BitAndWith.impl.Op.bound.70b] +// CHECK:STDOUT: %.loc9_30.1: type = value_of_initializer %type.as.BitAndWith.impl.Op.call.loc9_30 [concrete = constants.%facet_type.c3f] +// CHECK:STDOUT: %.loc9_30.2: type = converted %type.as.BitAndWith.impl.Op.call.loc9_30, %.loc9_30.1 [concrete = constants.%facet_type.c3f] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.call.loc9_39: init type = call %bound_method.loc9_39(%.loc9_30.2, %Tame.ref) [concrete = constants.%facet_type.a95] +// CHECK:STDOUT: %.loc9_39.2: type = value_of_initializer %type.as.BitAndWith.impl.Op.call.loc9_39 [concrete = constants.%facet_type.a95] +// CHECK:STDOUT: %.loc9_39.3: type = converted %type.as.BitAndWith.impl.Op.call.loc9_39, %.loc9_39.2 [concrete = constants.%facet_type.a95] // CHECK:STDOUT: } // CHECK:STDOUT: %W.loc9_21.2: %facet_type.a95 = bind_symbolic_name W, 0 [symbolic = %W.loc9_21.1 (constants.%W)] // CHECK:STDOUT: %w.param: @HandleTameAnimal.%W.as_type.loc9_50.1 (%W.as_type) = value_param call_param0 @@ -485,18 +485,18 @@ fn CallsWithTypeExplicit(U:! type) { // CHECK:STDOUT: %A: %Animal.type = bind_symbolic_name A, 0 [symbolic] // CHECK:STDOUT: %pattern_type.3b0: type = pattern_type %Animal.type [concrete] // CHECK:STDOUT: %A.as_type: type = facet_access_type %A [symbolic] -// CHECK:STDOUT: %Eats.impl_witness.8ab: = impl_witness file.%Eats.impl_witness_table, @Eats.impl(%A) [symbolic] +// CHECK:STDOUT: %Eats.impl_witness.8ab: = impl_witness file.%Eats.impl_witness_table, @A.as_type.as.Eats.impl(%A) [symbolic] // CHECK:STDOUT: %BitAndWith.type.f2e: type = generic_interface_type @BitAndWith [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %BitAndWith.generic: %BitAndWith.type.f2e = struct_value () [concrete] // CHECK:STDOUT: %BitAndWith.type.e8c: type = facet_type <@BitAndWith, @BitAndWith(type)> [concrete] -// CHECK:STDOUT: %Op.type.9a3: type = fn_type @Op.1, @BitAndWith(type) [concrete] +// CHECK:STDOUT: %BitAndWith.Op.type.9a3: type = fn_type @BitAndWith.Op, @BitAndWith(type) [concrete] // CHECK:STDOUT: %BitAndWith.impl_witness: = impl_witness imports.%BitAndWith.impl_witness_table [concrete] // CHECK:STDOUT: %BitAndWith.facet: %BitAndWith.type.e8c = facet_value type, (%BitAndWith.impl_witness) [concrete] -// CHECK:STDOUT: %.2af: type = fn_type_with_self_type %Op.type.9a3, %BitAndWith.facet [concrete] -// CHECK:STDOUT: %Op.type.1cc: type = fn_type @Op.2 [concrete] -// CHECK:STDOUT: %Op.ff4: %Op.type.1cc = struct_value () [concrete] -// CHECK:STDOUT: %Op.bound.0c8: = bound_method %Tame.type, %Op.ff4 [concrete] +// CHECK:STDOUT: %.2af: type = fn_type_with_self_type %BitAndWith.Op.type.9a3, %BitAndWith.facet [concrete] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.type: type = fn_type @type.as.BitAndWith.impl.Op [concrete] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op: %type.as.BitAndWith.impl.Op.type = struct_value () [concrete] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.bound.0c8: = bound_method %Tame.type, %type.as.BitAndWith.impl.Op [concrete] // CHECK:STDOUT: %facet_type.6ff: type = facet_type <@Eats & @Tame> [concrete] // CHECK:STDOUT: %V: %facet_type.6ff = bind_symbolic_name V, 0 [symbolic] // CHECK:STDOUT: %pattern_type.9f3: type = pattern_type %facet_type.6ff [concrete] @@ -505,7 +505,7 @@ fn CallsWithTypeExplicit(U:! type) { // CHECK:STDOUT: %FeedTame2.type: type = fn_type @FeedTame2 [concrete] // CHECK:STDOUT: %FeedTame2: %FeedTame2.type = struct_value () [concrete] // CHECK:STDOUT: %require_complete.940: = require_complete_type %V.as_type [symbolic] -// CHECK:STDOUT: %Op.bound.cb0: = bound_method %Animal.type, %Op.ff4 [concrete] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.bound.cb0: = bound_method %Animal.type, %type.as.BitAndWith.impl.Op [concrete] // CHECK:STDOUT: %facet_type.65c: type = facet_type <@Animal & @Tame> [concrete] // CHECK:STDOUT: %W: %facet_type.65c = bind_symbolic_name W, 0 [symbolic] // CHECK:STDOUT: %pattern_type.6e8: type = pattern_type %facet_type.65c [concrete] @@ -516,7 +516,7 @@ fn CallsWithTypeExplicit(U:! type) { // CHECK:STDOUT: %require_complete.ba9: = require_complete_type %W.as_type [symbolic] // CHECK:STDOUT: %Animal.lookup_impl_witness: = lookup_impl_witness %W, @Animal [symbolic] // CHECK:STDOUT: %Animal.facet: %Animal.type = facet_value %W.as_type, (%Animal.lookup_impl_witness) [symbolic] -// CHECK:STDOUT: %Eats.impl_witness.e5d: = impl_witness file.%Eats.impl_witness_table, @Eats.impl(%Animal.facet) [symbolic] +// CHECK:STDOUT: %Eats.impl_witness.e5d: = impl_witness file.%Eats.impl_witness_table, @A.as_type.as.Eats.impl(%Animal.facet) [symbolic] // CHECK:STDOUT: %Eats.lookup_impl_witness: = lookup_impl_witness %W, @Eats [symbolic] // CHECK:STDOUT: %Tame.lookup_impl_witness: = lookup_impl_witness %W, @Tame [symbolic] // CHECK:STDOUT: %facet_value: %facet_type.6ff = facet_value %W.as_type, (%Eats.lookup_impl_witness, %Tame.lookup_impl_witness) [symbolic] @@ -530,8 +530,8 @@ fn CallsWithTypeExplicit(U:! type) { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.BitAndWith: %BitAndWith.type.f2e = import_ref Core//prelude, BitAndWith, loaded [concrete = constants.%BitAndWith.generic] -// CHECK:STDOUT: %Core.import_ref.012: %Op.type.1cc = import_ref Core//prelude, loc13_42, loaded [concrete = constants.%Op.ff4] -// CHECK:STDOUT: %BitAndWith.impl_witness_table = impl_witness_table (%Core.import_ref.012), @BitAndWith.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.012: %type.as.BitAndWith.impl.Op.type = import_ref Core//prelude, loc13_42, loaded [concrete = constants.%type.as.BitAndWith.impl.Op] +// CHECK:STDOUT: %BitAndWith.impl_witness_table = impl_witness_table (%Core.import_ref.012), @type.as.BitAndWith.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -547,7 +547,7 @@ fn CallsWithTypeExplicit(U:! type) { // CHECK:STDOUT: %Eats.decl: type = interface_decl @Eats [concrete = constants.%Eats.type] {} {} // CHECK:STDOUT: %Animal.decl: type = interface_decl @Animal [concrete = constants.%Animal.type] {} {} // CHECK:STDOUT: %Tame.decl: type = interface_decl @Tame [concrete = constants.%Tame.type] {} {} -// CHECK:STDOUT: impl_decl @Eats.impl [concrete] { +// CHECK:STDOUT: impl_decl @A.as_type.as.Eats.impl [concrete] { // CHECK:STDOUT: %A.patt: %pattern_type.3b0 = symbolic_binding_pattern A, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %A.ref: %Animal.type = name_ref A, %A.loc7_14.1 [symbolic = %A.loc7_14.2 (constants.%A)] @@ -557,8 +557,8 @@ fn CallsWithTypeExplicit(U:! type) { // CHECK:STDOUT: %Animal.ref: type = name_ref Animal, file.%Animal.decl [concrete = constants.%Animal.type] // CHECK:STDOUT: %A.loc7_14.1: %Animal.type = bind_symbolic_name A, 0 [symbolic = %A.loc7_14.2 (constants.%A)] // CHECK:STDOUT: } -// CHECK:STDOUT: %Eats.impl_witness_table = impl_witness_table (), @Eats.impl [concrete] -// CHECK:STDOUT: %Eats.impl_witness: = impl_witness %Eats.impl_witness_table, @Eats.impl(constants.%A) [symbolic = @Eats.impl.%Eats.impl_witness (constants.%Eats.impl_witness.8ab)] +// CHECK:STDOUT: %Eats.impl_witness_table = impl_witness_table (), @A.as_type.as.Eats.impl [concrete] +// CHECK:STDOUT: %Eats.impl_witness: = impl_witness %Eats.impl_witness_table, @A.as_type.as.Eats.impl(constants.%A) [symbolic = @A.as_type.as.Eats.impl.%Eats.impl_witness (constants.%Eats.impl_witness.8ab)] // CHECK:STDOUT: %FeedTame2.decl: %FeedTame2.type = fn_decl @FeedTame2 [concrete = constants.%FeedTame2] { // CHECK:STDOUT: %V.patt: %pattern_type.9f3 = symbolic_binding_pattern V, 0 [concrete] // CHECK:STDOUT: %v.patt: @FeedTame2.%pattern_type (%pattern_type.760) = binding_pattern v [concrete] @@ -567,11 +567,11 @@ fn CallsWithTypeExplicit(U:! type) { // CHECK:STDOUT: %.loc9_23.1: type = splice_block %.loc9_23.3 [concrete = constants.%facet_type.6ff] { // CHECK:STDOUT: %Tame.ref: type = name_ref Tame, file.%Tame.decl [concrete = constants.%Tame.type] // CHECK:STDOUT: %Eats.ref: type = name_ref Eats, file.%Eats.decl [concrete = constants.%Eats.type] -// CHECK:STDOUT: %impl.elem0: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%Op.ff4] -// CHECK:STDOUT: %bound_method: = bound_method %Tame.ref, %impl.elem0 [concrete = constants.%Op.bound.0c8] -// CHECK:STDOUT: %type.and: init type = call %bound_method(%Tame.ref, %Eats.ref) [concrete = constants.%facet_type.6ff] -// CHECK:STDOUT: %.loc9_23.2: type = value_of_initializer %type.and [concrete = constants.%facet_type.6ff] -// CHECK:STDOUT: %.loc9_23.3: type = converted %type.and, %.loc9_23.2 [concrete = constants.%facet_type.6ff] +// CHECK:STDOUT: %impl.elem0: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%type.as.BitAndWith.impl.Op] +// CHECK:STDOUT: %bound_method: = bound_method %Tame.ref, %impl.elem0 [concrete = constants.%type.as.BitAndWith.impl.Op.bound.0c8] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.call: init type = call %bound_method(%Tame.ref, %Eats.ref) [concrete = constants.%facet_type.6ff] +// CHECK:STDOUT: %.loc9_23.2: type = value_of_initializer %type.as.BitAndWith.impl.Op.call [concrete = constants.%facet_type.6ff] +// CHECK:STDOUT: %.loc9_23.3: type = converted %type.as.BitAndWith.impl.Op.call, %.loc9_23.2 [concrete = constants.%facet_type.6ff] // CHECK:STDOUT: } // CHECK:STDOUT: %V.loc9_14.2: %facet_type.6ff = bind_symbolic_name V, 0 [symbolic = %V.loc9_14.1 (constants.%V)] // CHECK:STDOUT: %v.param: @FeedTame2.%V.as_type.loc9_34.1 (%V.as_type) = value_param call_param0 @@ -590,11 +590,11 @@ fn CallsWithTypeExplicit(U:! type) { // CHECK:STDOUT: %.loc11_33.1: type = splice_block %.loc11_33.3 [concrete = constants.%facet_type.65c] { // CHECK:STDOUT: %Animal.ref: type = name_ref Animal, file.%Animal.decl [concrete = constants.%Animal.type] // CHECK:STDOUT: %Tame.ref: type = name_ref Tame, file.%Tame.decl [concrete = constants.%Tame.type] -// CHECK:STDOUT: %impl.elem0: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%Op.ff4] -// CHECK:STDOUT: %bound_method: = bound_method %Animal.ref, %impl.elem0 [concrete = constants.%Op.bound.cb0] -// CHECK:STDOUT: %type.and: init type = call %bound_method(%Animal.ref, %Tame.ref) [concrete = constants.%facet_type.65c] -// CHECK:STDOUT: %.loc11_33.2: type = value_of_initializer %type.and [concrete = constants.%facet_type.65c] -// CHECK:STDOUT: %.loc11_33.3: type = converted %type.and, %.loc11_33.2 [concrete = constants.%facet_type.65c] +// CHECK:STDOUT: %impl.elem0: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%type.as.BitAndWith.impl.Op] +// CHECK:STDOUT: %bound_method: = bound_method %Animal.ref, %impl.elem0 [concrete = constants.%type.as.BitAndWith.impl.Op.bound.cb0] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.call: init type = call %bound_method(%Animal.ref, %Tame.ref) [concrete = constants.%facet_type.65c] +// CHECK:STDOUT: %.loc11_33.2: type = value_of_initializer %type.as.BitAndWith.impl.Op.call [concrete = constants.%facet_type.65c] +// CHECK:STDOUT: %.loc11_33.3: type = converted %type.as.BitAndWith.impl.Op.call, %.loc11_33.2 [concrete = constants.%facet_type.65c] // CHECK:STDOUT: } // CHECK:STDOUT: %W.loc11_22.2: %facet_type.65c = bind_symbolic_name W, 0 [symbolic = %W.loc11_22.1 (constants.%W)] // CHECK:STDOUT: %w.param: @HandleTameAnimal2.%W.as_type.loc11_44.1 (%W.as_type) = value_param call_param0 @@ -631,10 +631,10 @@ fn CallsWithTypeExplicit(U:! type) { // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @Eats.impl(%A.loc7_14.1: %Animal.type) { +// CHECK:STDOUT: generic impl @A.as_type.as.Eats.impl(%A.loc7_14.1: %Animal.type) { // CHECK:STDOUT: %A.loc7_14.2: %Animal.type = bind_symbolic_name A, 0 [symbolic = %A.loc7_14.2 (constants.%A)] // CHECK:STDOUT: %A.as_type.loc7_26.2: type = facet_access_type %A.loc7_14.2 [symbolic = %A.as_type.loc7_26.2 (constants.%A.as_type)] -// CHECK:STDOUT: %Eats.impl_witness: = impl_witness file.%Eats.impl_witness_table, @Eats.impl(%A.loc7_14.2) [symbolic = %Eats.impl_witness (constants.%Eats.impl_witness.8ab)] +// CHECK:STDOUT: %Eats.impl_witness: = impl_witness file.%Eats.impl_witness_table, @A.as_type.as.Eats.impl(%A.loc7_14.2) [symbolic = %Eats.impl_witness (constants.%Eats.impl_witness.8ab)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -694,7 +694,7 @@ fn CallsWithTypeExplicit(U:! type) { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Eats.impl(constants.%A) { +// CHECK:STDOUT: specific @A.as_type.as.Eats.impl(constants.%A) { // CHECK:STDOUT: %A.loc7_14.2 => constants.%A // CHECK:STDOUT: %A.as_type.loc7_26.2 => constants.%A.as_type // CHECK:STDOUT: %Eats.impl_witness => constants.%Eats.impl_witness.8ab @@ -712,7 +712,7 @@ fn CallsWithTypeExplicit(U:! type) { // CHECK:STDOUT: %pattern_type => constants.%pattern_type.5d1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Eats.impl(constants.%Animal.facet) { +// CHECK:STDOUT: specific @A.as_type.as.Eats.impl(constants.%Animal.facet) { // CHECK:STDOUT: %A.loc7_14.2 => constants.%Animal.facet // CHECK:STDOUT: %A.as_type.loc7_26.2 => constants.%W.as_type // CHECK:STDOUT: %Eats.impl_witness => constants.%Eats.impl_witness.e5d diff --git a/toolchain/check/testdata/facet/convert_facet_value_value_to_blanket_impl.carbon b/toolchain/check/testdata/facet/convert_facet_value_value_to_blanket_impl.carbon index a7a824c3a1d1..7606a3ad0dae 100644 --- a/toolchain/check/testdata/facet/convert_facet_value_value_to_blanket_impl.carbon +++ b/toolchain/check/testdata/facet/convert_facet_value_value_to_blanket_impl.carbon @@ -31,7 +31,7 @@ fn HandleAnimal[T:! Animal](a: T) { Feed(a); } // CHECK:STDOUT: %A: %Animal.type = bind_symbolic_name A, 0 [symbolic] // CHECK:STDOUT: %pattern_type.3b0: type = pattern_type %Animal.type [concrete] // CHECK:STDOUT: %A.as_type: type = facet_access_type %A [symbolic] -// CHECK:STDOUT: %Eats.impl_witness.8abeaf.1: = impl_witness file.%Eats.impl_witness_table, @Eats.impl(%A) [symbolic] +// CHECK:STDOUT: %Eats.impl_witness.8abeaf.1: = impl_witness file.%Eats.impl_witness_table, @A.as_type.as.Eats.impl(%A) [symbolic] // CHECK:STDOUT: %T.1b5: %Eats.type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.a05: type = pattern_type %Eats.type [concrete] // CHECK:STDOUT: %T.as_type.27d: type = facet_access_type %T.1b5 [symbolic] @@ -46,7 +46,7 @@ fn HandleAnimal[T:! Animal](a: T) { Feed(a); } // CHECK:STDOUT: %HandleAnimal.type: type = fn_type @HandleAnimal [concrete] // CHECK:STDOUT: %HandleAnimal: %HandleAnimal.type = struct_value () [concrete] // CHECK:STDOUT: %require_complete.234: = require_complete_type %T.as_type.2ad [symbolic] -// CHECK:STDOUT: %Eats.impl_witness.8abeaf.2: = impl_witness file.%Eats.impl_witness_table, @Eats.impl(%T.fd4) [symbolic] +// CHECK:STDOUT: %Eats.impl_witness.8abeaf.2: = impl_witness file.%Eats.impl_witness_table, @A.as_type.as.Eats.impl(%T.fd4) [symbolic] // CHECK:STDOUT: %Eats.lookup_impl_witness: = lookup_impl_witness %T.fd4, @Eats [symbolic] // CHECK:STDOUT: %Eats.facet: %Eats.type = facet_value %T.as_type.2ad, (%Eats.lookup_impl_witness) [symbolic] // CHECK:STDOUT: %Feed.specific_fn: = specific_function %Feed, @Feed(%Eats.facet) [symbolic] @@ -70,7 +70,7 @@ fn HandleAnimal[T:! Animal](a: T) { Feed(a); } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Eats.decl: type = interface_decl @Eats [concrete = constants.%Eats.type] {} {} // CHECK:STDOUT: %Animal.decl: type = interface_decl @Animal [concrete = constants.%Animal.type] {} {} -// CHECK:STDOUT: impl_decl @Eats.impl [concrete] { +// CHECK:STDOUT: impl_decl @A.as_type.as.Eats.impl [concrete] { // CHECK:STDOUT: %A.patt: %pattern_type.3b0 = symbolic_binding_pattern A, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %A.ref: %Animal.type = name_ref A, %A.loc18_14.1 [symbolic = %A.loc18_14.2 (constants.%A)] @@ -80,8 +80,8 @@ fn HandleAnimal[T:! Animal](a: T) { Feed(a); } // CHECK:STDOUT: %Animal.ref: type = name_ref Animal, file.%Animal.decl [concrete = constants.%Animal.type] // CHECK:STDOUT: %A.loc18_14.1: %Animal.type = bind_symbolic_name A, 0 [symbolic = %A.loc18_14.2 (constants.%A)] // CHECK:STDOUT: } -// CHECK:STDOUT: %Eats.impl_witness_table = impl_witness_table (), @Eats.impl [concrete] -// CHECK:STDOUT: %Eats.impl_witness: = impl_witness %Eats.impl_witness_table, @Eats.impl(constants.%A) [symbolic = @Eats.impl.%Eats.impl_witness (constants.%Eats.impl_witness.8abeaf.1)] +// CHECK:STDOUT: %Eats.impl_witness_table = impl_witness_table (), @A.as_type.as.Eats.impl [concrete] +// CHECK:STDOUT: %Eats.impl_witness: = impl_witness %Eats.impl_witness_table, @A.as_type.as.Eats.impl(constants.%A) [symbolic = @A.as_type.as.Eats.impl.%Eats.impl_witness (constants.%Eats.impl_witness.8abeaf.1)] // CHECK:STDOUT: %Feed.decl: %Feed.type = fn_decl @Feed [concrete = constants.%Feed] { // CHECK:STDOUT: %T.patt: %pattern_type.a05 = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: %e.patt: @Feed.%pattern_type (%pattern_type.2b4) = binding_pattern e [concrete] @@ -130,10 +130,10 @@ fn HandleAnimal[T:! Animal](a: T) { Feed(a); } // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @Eats.impl(%A.loc18_14.1: %Animal.type) { +// CHECK:STDOUT: generic impl @A.as_type.as.Eats.impl(%A.loc18_14.1: %Animal.type) { // CHECK:STDOUT: %A.loc18_14.2: %Animal.type = bind_symbolic_name A, 0 [symbolic = %A.loc18_14.2 (constants.%A)] // CHECK:STDOUT: %A.as_type.loc18_26.2: type = facet_access_type %A.loc18_14.2 [symbolic = %A.as_type.loc18_26.2 (constants.%A.as_type)] -// CHECK:STDOUT: %Eats.impl_witness: = impl_witness file.%Eats.impl_witness_table, @Eats.impl(%A.loc18_14.2) [symbolic = %Eats.impl_witness (constants.%Eats.impl_witness.8abeaf.1)] +// CHECK:STDOUT: %Eats.impl_witness: = impl_witness file.%Eats.impl_witness_table, @A.as_type.as.Eats.impl(%A.loc18_14.2) [symbolic = %Eats.impl_witness (constants.%Eats.impl_witness.8abeaf.1)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -188,7 +188,7 @@ fn HandleAnimal[T:! Animal](a: T) { Feed(a); } // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Eats.impl(constants.%A) { +// CHECK:STDOUT: specific @A.as_type.as.Eats.impl(constants.%A) { // CHECK:STDOUT: %A.loc18_14.2 => constants.%A // CHECK:STDOUT: %A.as_type.loc18_26.2 => constants.%A.as_type // CHECK:STDOUT: %Eats.impl_witness => constants.%Eats.impl_witness.8abeaf.1 @@ -206,7 +206,7 @@ fn HandleAnimal[T:! Animal](a: T) { Feed(a); } // CHECK:STDOUT: %pattern_type => constants.%pattern_type.36a // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Eats.impl(constants.%T.fd4) { +// CHECK:STDOUT: specific @A.as_type.as.Eats.impl(constants.%T.fd4) { // CHECK:STDOUT: %A.loc18_14.2 => constants.%T.fd4 // CHECK:STDOUT: %A.as_type.loc18_26.2 => constants.%T.as_type.2ad // CHECK:STDOUT: %Eats.impl_witness => constants.%Eats.impl_witness.8abeaf.2 diff --git a/toolchain/check/testdata/facet/convert_facet_value_value_to_generic_facet_value_value.carbon b/toolchain/check/testdata/facet/convert_facet_value_value_to_generic_facet_value_value.carbon index 8b0321630100..8ee2e0b1b988 100644 --- a/toolchain/check/testdata/facet/convert_facet_value_value_to_generic_facet_value_value.carbon +++ b/toolchain/check/testdata/facet/convert_facet_value_value_to_generic_facet_value_value.carbon @@ -62,7 +62,7 @@ fn F() { // CHECK:STDOUT: %Eats.type.f54c3d.1: type = facet_type <@Eats, @Eats(%U.as_type)> [symbolic] // CHECK:STDOUT: %Self.c30: %Eats.type.f54c3d.1 = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %require_complete.42532a.1: = require_complete_type %Eats.type.f54c3d.1 [symbolic] -// CHECK:STDOUT: %Eats.impl_witness.fabf92.1: = impl_witness file.%Eats.impl_witness_table, @Eats.impl(%T.fd4, %U) [symbolic] +// CHECK:STDOUT: %Eats.impl_witness.fabf92.1: = impl_witness file.%Eats.impl_witness_table, @T.as_type.as.Eats.impl(%T.fd4, %U) [symbolic] // CHECK:STDOUT: %Goat: type = class_type @Goat [concrete] // CHECK:STDOUT: %Animal.impl_witness: = impl_witness file.%Animal.impl_witness_table [concrete] // CHECK:STDOUT: %Food.9af: %Edible.type = bind_symbolic_name Food, 0 [symbolic] @@ -87,7 +87,7 @@ fn F() { // CHECK:STDOUT: %require_complete.444: = require_complete_type %Food.as_type.fae [symbolic] // CHECK:STDOUT: %Eats.type.f54c3d.2: type = facet_type <@Eats, @Eats(%Food.as_type.fae)> [symbolic] // CHECK:STDOUT: %require_complete.42532a.2: = require_complete_type %Eats.type.f54c3d.2 [symbolic] -// CHECK:STDOUT: %Eats.impl_witness.fabf92.2: = impl_witness file.%Eats.impl_witness_table, @Eats.impl(%T.fd4, %Food.5fe) [symbolic] +// CHECK:STDOUT: %Eats.impl_witness.fabf92.2: = impl_witness file.%Eats.impl_witness_table, @T.as_type.as.Eats.impl(%T.fd4, %Food.5fe) [symbolic] // CHECK:STDOUT: %Eats.lookup_impl_witness: = lookup_impl_witness %T.fd4, @Eats, @Eats(%Food.as_type.fae) [symbolic] // CHECK:STDOUT: %Eats.facet.512: %Eats.type.f54c3d.2 = facet_value %T.as_type.2ad, (%Eats.lookup_impl_witness) [symbolic] // CHECK:STDOUT: %pattern_type.bb9: type = pattern_type %Eats.type.f54c3d.2 [symbolic] @@ -102,18 +102,18 @@ fn F() { // CHECK:STDOUT: %pattern_type.aff: type = pattern_type %Grass [concrete] // CHECK:STDOUT: %HandleAnimal.specific_fn: = specific_function %HandleAnimal, @HandleAnimal(%Animal.facet, %Edible.facet) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.7fb: type = fn_type @Op.1, @Destroy.impl(%Grass) [concrete] -// CHECK:STDOUT: %Op.d66: %Op.type.7fb = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.7fb: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%Grass) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.d66: %T.as.Destroy.impl.Op.type.7fb = struct_value () [concrete] // CHECK:STDOUT: %ptr.2bd: type = ptr_type %Grass [concrete] -// CHECK:STDOUT: %Op.specific_fn.9e2: = specific_function %Op.d66, @Op.1(%Grass) [concrete] -// CHECK:STDOUT: %Op.type.e7a: type = fn_type @Op.1, @Destroy.impl(%Goat) [concrete] -// CHECK:STDOUT: %Op.55a: %Op.type.e7a = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.9e2: = specific_function %T.as.Destroy.impl.Op.d66, @T.as.Destroy.impl.Op(%Grass) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.e7a: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%Goat) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.55a: %T.as.Destroy.impl.Op.type.e7a = struct_value () [concrete] // CHECK:STDOUT: %ptr.940: type = ptr_type %Goat [concrete] -// CHECK:STDOUT: %Op.specific_fn.d9f: = specific_function %Op.55a, @Op.1(%Goat) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.d9f: = specific_function %T.as.Destroy.impl.Op.55a, @T.as.Destroy.impl.Op(%Goat) [concrete] // CHECK:STDOUT: %Eats.type.1ae: type = facet_type <@Eats, @Eats(%Grass)> [concrete] // CHECK:STDOUT: %Self.016: %Eats.type.1ae = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %complete_type.004: = complete_type_witness %Eats.type.1ae [concrete] -// CHECK:STDOUT: %Eats.impl_witness.1cf: = impl_witness file.%Eats.impl_witness_table, @Eats.impl(%Animal.facet, %Edible.facet) [concrete] +// CHECK:STDOUT: %Eats.impl_witness.1cf: = impl_witness file.%Eats.impl_witness_table, @T.as_type.as.Eats.impl(%Animal.facet, %Edible.facet) [concrete] // CHECK:STDOUT: %Eats.facet.cb1: %Eats.type.1ae = facet_value %Goat, (%Eats.impl_witness.1cf) [concrete] // CHECK:STDOUT: %pattern_type.d77: type = pattern_type %Eats.type.1ae [concrete] // CHECK:STDOUT: %Feed.specific_fn.86c: = specific_function %Feed, @Feed(%Edible.facet, %Eats.facet.cb1) [concrete] @@ -143,11 +143,11 @@ fn F() { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Edible.decl: type = interface_decl @Edible [concrete = constants.%Edible.type] {} {} // CHECK:STDOUT: %Grass.decl: type = class_decl @Grass [concrete = constants.%Grass] {} {} -// CHECK:STDOUT: impl_decl @Edible.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @Grass.as.Edible.impl [concrete] {} { // CHECK:STDOUT: %Grass.ref: type = name_ref Grass, file.%Grass.decl [concrete = constants.%Grass] // CHECK:STDOUT: %Edible.ref: type = name_ref Edible, file.%Edible.decl [concrete = constants.%Edible.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %Edible.impl_witness_table = impl_witness_table (), @Edible.impl [concrete] +// CHECK:STDOUT: %Edible.impl_witness_table = impl_witness_table (), @Grass.as.Edible.impl [concrete] // CHECK:STDOUT: %Edible.impl_witness: = impl_witness %Edible.impl_witness_table [concrete = constants.%Edible.impl_witness] // CHECK:STDOUT: %Animal.decl: type = interface_decl @Animal [concrete = constants.%Animal.type] {} {} // CHECK:STDOUT: %Eats.decl: %Eats.type.ba2 = interface_decl @Eats [concrete = constants.%Eats.generic] { @@ -155,7 +155,7 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: %Food.loc21_16.2: type = bind_symbolic_name Food, 0 [symbolic = %Food.loc21_16.1 (constants.%Food.8b3)] // CHECK:STDOUT: } -// CHECK:STDOUT: impl_decl @Eats.impl [concrete] { +// CHECK:STDOUT: impl_decl @T.as_type.as.Eats.impl [concrete] { // CHECK:STDOUT: %T.patt: %pattern_type.3b0 = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: %U.patt: %pattern_type.939 = symbolic_binding_pattern U, 1 [concrete] // CHECK:STDOUT: } { @@ -172,14 +172,14 @@ fn F() { // CHECK:STDOUT: %Edible.ref: type = name_ref Edible, file.%Edible.decl [concrete = constants.%Edible.type] // CHECK:STDOUT: %U.loc26_26.1: %Edible.type = bind_symbolic_name U, 1 [symbolic = %U.loc26_26.2 (constants.%U)] // CHECK:STDOUT: } -// CHECK:STDOUT: %Eats.impl_witness_table = impl_witness_table (), @Eats.impl [concrete] -// CHECK:STDOUT: %Eats.impl_witness: = impl_witness %Eats.impl_witness_table, @Eats.impl(constants.%T.fd4, constants.%U) [symbolic = @Eats.impl.%Eats.impl_witness (constants.%Eats.impl_witness.fabf92.1)] +// CHECK:STDOUT: %Eats.impl_witness_table = impl_witness_table (), @T.as_type.as.Eats.impl [concrete] +// CHECK:STDOUT: %Eats.impl_witness: = impl_witness %Eats.impl_witness_table, @T.as_type.as.Eats.impl(constants.%T.fd4, constants.%U) [symbolic = @T.as_type.as.Eats.impl.%Eats.impl_witness (constants.%Eats.impl_witness.fabf92.1)] // CHECK:STDOUT: %Goat.decl: type = class_decl @Goat [concrete = constants.%Goat] {} {} -// CHECK:STDOUT: impl_decl @Animal.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @Goat.as.Animal.impl [concrete] {} { // CHECK:STDOUT: %Goat.ref: type = name_ref Goat, file.%Goat.decl [concrete = constants.%Goat] // CHECK:STDOUT: %Animal.ref: type = name_ref Animal, file.%Animal.decl [concrete = constants.%Animal.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %Animal.impl_witness_table = impl_witness_table (), @Animal.impl [concrete] +// CHECK:STDOUT: %Animal.impl_witness_table = impl_witness_table (), @Goat.as.Animal.impl [concrete] // CHECK:STDOUT: %Animal.impl_witness: = impl_witness %Animal.impl_witness_table [concrete = constants.%Animal.impl_witness] // CHECK:STDOUT: %Feed.decl: %Feed.type = fn_decl @Feed [concrete = constants.%Feed] { // CHECK:STDOUT: %Food.patt: %pattern_type.939 = symbolic_binding_pattern Food, 0 [concrete] @@ -280,19 +280,19 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Edible.impl: %Grass.ref as %Edible.ref { +// CHECK:STDOUT: impl @Grass.as.Edible.impl: %Grass.ref as %Edible.ref { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%Edible.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @Eats.impl(%T.loc26_14.1: %Animal.type, %U.loc26_26.1: %Edible.type) { +// CHECK:STDOUT: generic impl @T.as_type.as.Eats.impl(%T.loc26_14.1: %Animal.type, %U.loc26_26.1: %Edible.type) { // CHECK:STDOUT: %T.loc26_14.2: %Animal.type = bind_symbolic_name T, 0 [symbolic = %T.loc26_14.2 (constants.%T.fd4)] // CHECK:STDOUT: %U.loc26_26.2: %Edible.type = bind_symbolic_name U, 1 [symbolic = %U.loc26_26.2 (constants.%U)] // CHECK:STDOUT: %T.as_type.loc26_38.2: type = facet_access_type %T.loc26_14.2 [symbolic = %T.as_type.loc26_38.2 (constants.%T.as_type.2ad)] // CHECK:STDOUT: %U.as_type.loc26_49.2: type = facet_access_type %U.loc26_26.2 [symbolic = %U.as_type.loc26_49.2 (constants.%U.as_type)] // CHECK:STDOUT: %Eats.type.loc26_49.2: type = facet_type <@Eats, @Eats(%U.as_type.loc26_49.2)> [symbolic = %Eats.type.loc26_49.2 (constants.%Eats.type.f54c3d.1)] // CHECK:STDOUT: %require_complete: = require_complete_type %Eats.type.loc26_49.2 [symbolic = %require_complete (constants.%require_complete.42532a.1)] -// CHECK:STDOUT: %Eats.impl_witness: = impl_witness file.%Eats.impl_witness_table, @Eats.impl(%T.loc26_14.2, %U.loc26_26.2) [symbolic = %Eats.impl_witness (constants.%Eats.impl_witness.fabf92.1)] +// CHECK:STDOUT: %Eats.impl_witness: = impl_witness file.%Eats.impl_witness_table, @T.as_type.as.Eats.impl(%T.loc26_14.2, %U.loc26_26.2) [symbolic = %Eats.impl_witness (constants.%Eats.impl_witness.fabf92.1)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -302,7 +302,7 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Animal.impl: %Goat.ref as %Animal.ref { +// CHECK:STDOUT: impl @Goat.as.Animal.impl: %Goat.ref as %Animal.ref { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%Animal.impl_witness // CHECK:STDOUT: } @@ -407,16 +407,16 @@ fn F() { // CHECK:STDOUT: %.loc35_19.2: %Goat = bind_value %.loc35_19.1 // CHECK:STDOUT: %.loc35_31.2: %Grass = bind_value %.loc35_31.1 // CHECK:STDOUT: %HandleAnimal.call: init %empty_tuple.type = call %HandleAnimal.specific_fn(%.loc35_19.2, %.loc35_31.2) -// CHECK:STDOUT: %Op.bound.loc35_29: = bound_method %.loc35_29.2, constants.%Op.d66 -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.d66, @Op.1(constants.%Grass) [concrete = constants.%Op.specific_fn.9e2] -// CHECK:STDOUT: %bound_method.loc35_29: = bound_method %.loc35_29.2, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc35_29: = bound_method %.loc35_29.2, constants.%T.as.Destroy.impl.Op.d66 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.d66, @T.as.Destroy.impl.Op(constants.%Grass) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.9e2] +// CHECK:STDOUT: %bound_method.loc35_29: = bound_method %.loc35_29.2, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc35_29: %ptr.2bd = addr_of %.loc35_29.2 -// CHECK:STDOUT: %no_op.loc35_29: init %empty_tuple.type = call %bound_method.loc35_29(%addr.loc35_29) -// CHECK:STDOUT: %Op.bound.loc35_17: = bound_method %.loc35_17.2, constants.%Op.55a -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.55a, @Op.1(constants.%Goat) [concrete = constants.%Op.specific_fn.d9f] -// CHECK:STDOUT: %bound_method.loc35_17: = bound_method %.loc35_17.2, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc35_29: init %empty_tuple.type = call %bound_method.loc35_29(%addr.loc35_29) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc35_17: = bound_method %.loc35_17.2, constants.%T.as.Destroy.impl.Op.55a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.55a, @T.as.Destroy.impl.Op(constants.%Goat) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.d9f] +// CHECK:STDOUT: %bound_method.loc35_17: = bound_method %.loc35_17.2, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc35_17: %ptr.940 = addr_of %.loc35_17.2 -// CHECK:STDOUT: %no_op.loc35_17: init %empty_tuple.type = call %bound_method.loc35_17(%addr.loc35_17) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc35_17: init %empty_tuple.type = call %bound_method.loc35_17(%addr.loc35_17) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -432,7 +432,7 @@ fn F() { // CHECK:STDOUT: %Self.2 => constants.%Self.c30 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Eats.impl(constants.%T.fd4, constants.%U) { +// CHECK:STDOUT: specific @T.as_type.as.Eats.impl(constants.%T.fd4, constants.%U) { // CHECK:STDOUT: %T.loc26_14.2 => constants.%T.fd4 // CHECK:STDOUT: %U.loc26_26.2 => constants.%U // CHECK:STDOUT: %T.as_type.loc26_38.2 => constants.%T.as_type.2ad @@ -470,7 +470,7 @@ fn F() { // CHECK:STDOUT: %Food.loc21_16.1 => constants.%Food.as_type.fae // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Eats.impl(constants.%T.fd4, constants.%Food.5fe) { +// CHECK:STDOUT: specific @T.as_type.as.Eats.impl(constants.%T.fd4, constants.%Food.5fe) { // CHECK:STDOUT: %T.loc26_14.2 => constants.%T.fd4 // CHECK:STDOUT: %U.loc26_26.2 => constants.%Food.5fe // CHECK:STDOUT: %T.as_type.loc26_38.2 => constants.%T.as_type.2ad @@ -522,7 +522,7 @@ fn F() { // CHECK:STDOUT: %Self.2 => constants.%Self.016 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Eats.impl(constants.%Animal.facet, constants.%Edible.facet) { +// CHECK:STDOUT: specific @T.as_type.as.Eats.impl(constants.%Animal.facet, constants.%Edible.facet) { // CHECK:STDOUT: %T.loc26_14.2 => constants.%Animal.facet // CHECK:STDOUT: %U.loc26_26.2 => constants.%Edible.facet // CHECK:STDOUT: %T.as_type.loc26_38.2 => constants.%Goat diff --git a/toolchain/check/testdata/facet/convert_facet_value_value_to_itself.carbon b/toolchain/check/testdata/facet/convert_facet_value_value_to_itself.carbon index e7b0514bfee5..fee596180a16 100644 --- a/toolchain/check/testdata/facet/convert_facet_value_value_to_itself.carbon +++ b/toolchain/check/testdata/facet/convert_facet_value_value_to_itself.carbon @@ -52,10 +52,10 @@ fn F() { // CHECK:STDOUT: %pattern_type.ab7: type = pattern_type %Goat [concrete] // CHECK:STDOUT: %HandleAnimal.specific_fn: = specific_function %HandleAnimal, @HandleAnimal(%Animal.facet) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.e7a: type = fn_type @Op.1, @Destroy.impl(%Goat) [concrete] -// CHECK:STDOUT: %Op.55a: %Op.type.e7a = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.e7a: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%Goat) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.55a: %T.as.Destroy.impl.Op.type.e7a = struct_value () [concrete] // CHECK:STDOUT: %ptr.940: type = ptr_type %Goat [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.55a, @Op.1(%Goat) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.55a, @T.as.Destroy.impl.Op(%Goat) [concrete] // CHECK:STDOUT: %FeedAnimal.specific_fn.82e: = specific_function %FeedAnimal, @FeedAnimal(%Animal.facet) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -110,11 +110,11 @@ fn F() { // CHECK:STDOUT: %a: @HandleAnimal.%T.as_type.loc19_32.1 (%T.as_type) = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: %Goat.decl: type = class_decl @Goat [concrete = constants.%Goat] {} {} -// CHECK:STDOUT: impl_decl @Animal.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @Goat.as.Animal.impl [concrete] {} { // CHECK:STDOUT: %Goat.ref: type = name_ref Goat, file.%Goat.decl [concrete = constants.%Goat] // CHECK:STDOUT: %Animal.ref: type = name_ref Animal, file.%Animal.decl [concrete = constants.%Animal.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %Animal.impl_witness_table = impl_witness_table (), @Animal.impl [concrete] +// CHECK:STDOUT: %Animal.impl_witness_table = impl_witness_table (), @Goat.as.Animal.impl [concrete] // CHECK:STDOUT: %Animal.impl_witness: = impl_witness %Animal.impl_witness_table [concrete = constants.%Animal.impl_witness] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} // CHECK:STDOUT: } @@ -127,7 +127,7 @@ fn F() { // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Animal.impl: %Goat.ref as %Animal.ref { +// CHECK:STDOUT: impl @Goat.as.Animal.impl: %Goat.ref as %Animal.ref { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%Animal.impl_witness // CHECK:STDOUT: } @@ -192,11 +192,11 @@ fn F() { // CHECK:STDOUT: %HandleAnimal.specific_fn: = specific_function %HandleAnimal.ref, @HandleAnimal(constants.%Animal.facet) [concrete = constants.%HandleAnimal.specific_fn] // CHECK:STDOUT: %.loc25_19.2: %Goat = bind_value %.loc25_19.1 // CHECK:STDOUT: %HandleAnimal.call: init %empty_tuple.type = call %HandleAnimal.specific_fn(%.loc25_19.2) -// CHECK:STDOUT: %Op.bound: = bound_method %.loc25_17.2, constants.%Op.55a -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.55a, @Op.1(constants.%Goat) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc25_17.2, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc25_17.2, constants.%T.as.Destroy.impl.Op.55a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.55a, @T.as.Destroy.impl.Op(constants.%Goat) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %.loc25_17.2, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.940 = addr_of %.loc25_17.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/facet/convert_interface.carbon b/toolchain/check/testdata/facet/convert_interface.carbon index 7e1bdfefede8..174eae0af9ed 100644 --- a/toolchain/check/testdata/facet/convert_interface.carbon +++ b/toolchain/check/testdata/facet/convert_interface.carbon @@ -57,11 +57,11 @@ fn G() { F(Animal); } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Eats.decl: type = interface_decl @Eats [concrete = constants.%Eats.type] {} {} // CHECK:STDOUT: %Animal.decl: type = interface_decl @Animal [concrete = constants.%Animal.type] {} {} -// CHECK:STDOUT: impl_decl @Eats.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @Animal.type.as.Eats.impl [concrete] {} { // CHECK:STDOUT: %Animal.ref: type = name_ref Animal, file.%Animal.decl [concrete = constants.%Animal.type] // CHECK:STDOUT: %Eats.ref: type = name_ref Eats, file.%Eats.decl [concrete = constants.%Eats.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %Eats.impl_witness_table = impl_witness_table (), @Eats.impl [concrete] +// CHECK:STDOUT: %Eats.impl_witness_table = impl_witness_table (), @Animal.type.as.Eats.impl [concrete] // CHECK:STDOUT: %Eats.impl_witness: = impl_witness %Eats.impl_witness_table [concrete = constants.%Eats.impl_witness] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { // CHECK:STDOUT: %e.patt: %pattern_type = binding_pattern e [concrete] @@ -90,7 +90,7 @@ fn G() { F(Animal); } // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Eats.impl: %Animal.ref as %Eats.ref { +// CHECK:STDOUT: impl @Animal.type.as.Eats.impl: %Animal.ref as %Eats.ref { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%Eats.impl_witness // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/facet/fail_convert_class_type_to_generic_facet_value.carbon b/toolchain/check/testdata/facet/fail_convert_class_type_to_generic_facet_value.carbon index 7eda73719535..8e9dd743757d 100644 --- a/toolchain/check/testdata/facet/fail_convert_class_type_to_generic_facet_value.carbon +++ b/toolchain/check/testdata/facet/fail_convert_class_type_to_generic_facet_value.carbon @@ -46,10 +46,10 @@ fn G() { // CHECK:STDOUT: %Generic.generic: %Generic.type.c21 = struct_value () [concrete] // CHECK:STDOUT: %Generic.type.91ccba.1: type = facet_type <@Generic, @Generic(%Scalar)> [symbolic] // CHECK:STDOUT: %Self.dee: %Generic.type.91ccba.1 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %F.type.f43: type = fn_type @F.loc16, @Generic(%Scalar) [symbolic] -// CHECK:STDOUT: %F.8a2: %F.type.f43 = struct_value () [symbolic] +// CHECK:STDOUT: %Generic.F.type.f43: type = fn_type @Generic.F, @Generic(%Scalar) [symbolic] +// CHECK:STDOUT: %Generic.F.8a2: %Generic.F.type.f43 = struct_value () [symbolic] // CHECK:STDOUT: %Generic.assoc_type.0fd: type = assoc_entity_type @Generic, @Generic(%Scalar) [symbolic] -// CHECK:STDOUT: %assoc0.296: %Generic.assoc_type.0fd = assoc_entity element0, @Generic.%F.decl [symbolic] +// CHECK:STDOUT: %assoc0.296: %Generic.assoc_type.0fd = assoc_entity element0, @Generic.%Generic.F.decl [symbolic] // CHECK:STDOUT: %GenericParam: type = class_type @GenericParam [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] @@ -57,13 +57,13 @@ fn G() { // CHECK:STDOUT: %ImplsGeneric: type = class_type @ImplsGeneric [concrete] // CHECK:STDOUT: %Generic.type.769: type = facet_type <@Generic, @Generic(%GenericParam)> [concrete] // CHECK:STDOUT: %Self.f84: %Generic.type.769 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %F.type.4cf: type = fn_type @F.loc16, @Generic(%GenericParam) [concrete] -// CHECK:STDOUT: %F.118: %F.type.4cf = struct_value () [concrete] +// CHECK:STDOUT: %Generic.F.type.4cf: type = fn_type @Generic.F, @Generic(%GenericParam) [concrete] +// CHECK:STDOUT: %Generic.F.118: %Generic.F.type.4cf = struct_value () [concrete] // CHECK:STDOUT: %Generic.assoc_type.713: type = assoc_entity_type @Generic, @Generic(%GenericParam) [concrete] -// CHECK:STDOUT: %assoc0.9b7: %Generic.assoc_type.713 = assoc_entity element0, @Generic.%F.decl [concrete] +// CHECK:STDOUT: %assoc0.9b7: %Generic.assoc_type.713 = assoc_entity element0, @Generic.%Generic.F.decl [concrete] // CHECK:STDOUT: %Generic.impl_witness: = impl_witness file.%Generic.impl_witness_table [concrete] -// CHECK:STDOUT: %F.type.17b: type = fn_type @F.loc24 [concrete] -// CHECK:STDOUT: %F.a56: %F.type.17b = struct_value () [concrete] +// CHECK:STDOUT: %ImplsGeneric.as.Generic.impl.F.type: type = fn_type @ImplsGeneric.as.Generic.impl.F [concrete] +// CHECK:STDOUT: %ImplsGeneric.as.Generic.impl.F: %ImplsGeneric.as.Generic.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %Generic.facet: %Generic.type.769 = facet_value %ImplsGeneric, (%Generic.impl_witness) [concrete] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %Generic.type.91ccba.2: type = facet_type <@Generic, @Generic(%T)> [symbolic] @@ -101,13 +101,13 @@ fn G() { // CHECK:STDOUT: %GenericParam.decl: type = class_decl @GenericParam [concrete = constants.%GenericParam] {} {} // CHECK:STDOUT: %WrongGenericParam.decl: type = class_decl @WrongGenericParam [concrete = constants.%WrongGenericParam] {} {} // CHECK:STDOUT: %ImplsGeneric.decl: type = class_decl @ImplsGeneric [concrete = constants.%ImplsGeneric] {} {} -// CHECK:STDOUT: impl_decl @Generic.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @ImplsGeneric.as.Generic.impl [concrete] {} { // CHECK:STDOUT: %ImplsGeneric.ref: type = name_ref ImplsGeneric, file.%ImplsGeneric.decl [concrete = constants.%ImplsGeneric] // CHECK:STDOUT: %Generic.ref: %Generic.type.c21 = name_ref Generic, file.%Generic.decl [concrete = constants.%Generic.generic] // CHECK:STDOUT: %GenericParam.ref: type = name_ref GenericParam, file.%GenericParam.decl [concrete = constants.%GenericParam] // CHECK:STDOUT: %Generic.type: type = facet_type <@Generic, @Generic(constants.%GenericParam)> [concrete = constants.%Generic.type.769] // CHECK:STDOUT: } -// CHECK:STDOUT: %Generic.impl_witness_table = impl_witness_table (@Generic.impl.%F.decl), @Generic.impl [concrete] +// CHECK:STDOUT: %Generic.impl_witness_table = impl_witness_table (@ImplsGeneric.as.Generic.impl.%ImplsGeneric.as.Generic.impl.F.decl), @ImplsGeneric.as.Generic.impl [concrete] // CHECK:STDOUT: %Generic.impl_witness: = impl_witness %Generic.impl_witness_table [concrete = constants.%Generic.impl_witness] // CHECK:STDOUT: %CallGenericMethod.decl: %CallGenericMethod.type = fn_decl @CallGenericMethod [concrete = constants.%CallGenericMethod] { // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete] @@ -130,28 +130,28 @@ fn G() { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Generic.type: type = facet_type <@Generic, @Generic(%Scalar.loc15_19.1)> [symbolic = %Generic.type (constants.%Generic.type.91ccba.1)] // CHECK:STDOUT: %Self.2: @Generic.%Generic.type (%Generic.type.91ccba.1) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.dee)] -// CHECK:STDOUT: %F.type: type = fn_type @F.loc16, @Generic(%Scalar.loc15_19.1) [symbolic = %F.type (constants.%F.type.f43)] -// CHECK:STDOUT: %F: @Generic.%F.type (%F.type.f43) = struct_value () [symbolic = %F (constants.%F.8a2)] +// CHECK:STDOUT: %Generic.F.type: type = fn_type @Generic.F, @Generic(%Scalar.loc15_19.1) [symbolic = %Generic.F.type (constants.%Generic.F.type.f43)] +// CHECK:STDOUT: %Generic.F: @Generic.%Generic.F.type (%Generic.F.type.f43) = struct_value () [symbolic = %Generic.F (constants.%Generic.F.8a2)] // CHECK:STDOUT: %Generic.assoc_type: type = assoc_entity_type @Generic, @Generic(%Scalar.loc15_19.1) [symbolic = %Generic.assoc_type (constants.%Generic.assoc_type.0fd)] -// CHECK:STDOUT: %assoc0.loc16_9.2: @Generic.%Generic.assoc_type (%Generic.assoc_type.0fd) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc16_9.2 (constants.%assoc0.296)] +// CHECK:STDOUT: %assoc0.loc16_9.2: @Generic.%Generic.assoc_type (%Generic.assoc_type.0fd) = assoc_entity element0, %Generic.F.decl [symbolic = %assoc0.loc16_9.2 (constants.%assoc0.296)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: %Self.1: @Generic.%Generic.type (%Generic.type.91ccba.1) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.dee)] -// CHECK:STDOUT: %F.decl: @Generic.%F.type (%F.type.f43) = fn_decl @F.loc16 [symbolic = @Generic.%F (constants.%F.8a2)] {} {} -// CHECK:STDOUT: %assoc0.loc16_9.1: @Generic.%Generic.assoc_type (%Generic.assoc_type.0fd) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc16_9.2 (constants.%assoc0.296)] +// CHECK:STDOUT: %Generic.F.decl: @Generic.%Generic.F.type (%Generic.F.type.f43) = fn_decl @Generic.F [symbolic = @Generic.%Generic.F (constants.%Generic.F.8a2)] {} {} +// CHECK:STDOUT: %assoc0.loc16_9.1: @Generic.%Generic.assoc_type (%Generic.assoc_type.0fd) = assoc_entity element0, %Generic.F.decl [symbolic = %assoc0.loc16_9.2 (constants.%assoc0.296)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 // CHECK:STDOUT: .F = %assoc0.loc16_9.1 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%Generic.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Generic.impl: %ImplsGeneric.ref as %Generic.type { -// CHECK:STDOUT: %F.decl: %F.type.17b = fn_decl @F.loc24 [concrete = constants.%F.a56] {} {} +// CHECK:STDOUT: impl @ImplsGeneric.as.Generic.impl: %ImplsGeneric.ref as %Generic.type { +// CHECK:STDOUT: %ImplsGeneric.as.Generic.impl.F.decl: %ImplsGeneric.as.Generic.impl.F.type = fn_decl @ImplsGeneric.as.Generic.impl.F [concrete = constants.%ImplsGeneric.as.Generic.impl.F] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %ImplsGeneric.as.Generic.impl.F.decl // CHECK:STDOUT: witness = file.%Generic.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: @@ -182,11 +182,11 @@ fn G() { // CHECK:STDOUT: .Self = constants.%ImplsGeneric // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc16(@Generic.%Scalar.loc15_19.2: type, @Generic.%Self.1: @Generic.%Generic.type (%Generic.type.91ccba.1)) { +// CHECK:STDOUT: generic fn @Generic.F(@Generic.%Scalar.loc15_19.2: type, @Generic.%Self.1: @Generic.%Generic.type (%Generic.type.91ccba.1)) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc24() { +// CHECK:STDOUT: fn @ImplsGeneric.as.Generic.impl.F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -217,7 +217,7 @@ fn G() { // CHECK:STDOUT: %Scalar.loc15_19.1 => constants.%Scalar // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc16(constants.%Scalar, constants.%Self.dee) {} +// CHECK:STDOUT: specific @Generic.F(constants.%Scalar, constants.%Self.dee) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @Generic(constants.%GenericParam) { // CHECK:STDOUT: %Scalar.loc15_19.1 => constants.%GenericParam @@ -225,13 +225,13 @@ fn G() { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Generic.type => constants.%Generic.type.769 // CHECK:STDOUT: %Self.2 => constants.%Self.f84 -// CHECK:STDOUT: %F.type => constants.%F.type.4cf -// CHECK:STDOUT: %F => constants.%F.118 +// CHECK:STDOUT: %Generic.F.type => constants.%Generic.F.type.4cf +// CHECK:STDOUT: %Generic.F => constants.%Generic.F.118 // CHECK:STDOUT: %Generic.assoc_type => constants.%Generic.assoc_type.713 // CHECK:STDOUT: %assoc0.loc16_9.2 => constants.%assoc0.9b7 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc16(constants.%GenericParam, constants.%Generic.facet) {} +// CHECK:STDOUT: specific @Generic.F(constants.%GenericParam, constants.%Generic.facet) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @Generic(constants.%T) { // CHECK:STDOUT: %Scalar.loc15_19.1 => constants.%T diff --git a/toolchain/check/testdata/facet/fail_convert_type_erased_type_to_facet.carbon b/toolchain/check/testdata/facet/fail_convert_type_erased_type_to_facet.carbon index eed8d4371a2c..11209cfda9e2 100644 --- a/toolchain/check/testdata/facet/fail_convert_type_erased_type_to_facet.carbon +++ b/toolchain/check/testdata/facet/fail_convert_type_erased_type_to_facet.carbon @@ -68,11 +68,11 @@ fn F() { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Animal.decl: type = interface_decl @Animal [concrete = constants.%Animal.type] {} {} // CHECK:STDOUT: %Goat.decl: type = class_decl @Goat [concrete = constants.%Goat] {} {} -// CHECK:STDOUT: impl_decl @Animal.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @Goat.as.Animal.impl [concrete] {} { // CHECK:STDOUT: %Goat.ref: type = name_ref Goat, file.%Goat.decl [concrete = constants.%Goat] // CHECK:STDOUT: %Animal.ref: type = name_ref Animal, file.%Animal.decl [concrete = constants.%Animal.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %Animal.impl_witness_table = impl_witness_table (), @Animal.impl [concrete] +// CHECK:STDOUT: %Animal.impl_witness_table = impl_witness_table (), @Goat.as.Animal.impl [concrete] // CHECK:STDOUT: %Animal.impl_witness: = impl_witness %Animal.impl_witness_table [concrete = constants.%Animal.impl_witness] // CHECK:STDOUT: %WalkAnimal.decl: %WalkAnimal.type = fn_decl @WalkAnimal [concrete = constants.%WalkAnimal] { // CHECK:STDOUT: %a.patt: %pattern_type.3b0 = symbolic_binding_pattern a, 0 [concrete] @@ -91,7 +91,7 @@ fn F() { // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Animal.impl: %Goat.ref as %Animal.ref { +// CHECK:STDOUT: impl @Goat.as.Animal.impl: %Goat.ref as %Animal.ref { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%Animal.impl_witness // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/facet/fail_deduction_uses_runtime_type_conversion.carbon b/toolchain/check/testdata/facet/fail_deduction_uses_runtime_type_conversion.carbon index e62f51933f4e..bbbf54478e9e 100644 --- a/toolchain/check/testdata/facet/fail_deduction_uses_runtime_type_conversion.carbon +++ b/toolchain/check/testdata/facet/fail_deduction_uses_runtime_type_conversion.carbon @@ -58,12 +58,12 @@ fn G(holds_to: HoldsType((RuntimeConvertTo, ))) { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.580: type = facet_type <@ImplicitAs, @ImplicitAs(%RuntimeConvertTo)> [concrete] -// CHECK:STDOUT: %Convert.type.50a: type = fn_type @Convert.1, @ImplicitAs(%RuntimeConvertTo) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.50a: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%RuntimeConvertTo) [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness: = impl_witness file.%ImplicitAs.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.f64: type = pattern_type %RuntimeConvertFrom [concrete] // CHECK:STDOUT: %pattern_type.109: type = pattern_type %RuntimeConvertTo [concrete] -// CHECK:STDOUT: %Convert.type.e8b: type = fn_type @Convert.loc24 [concrete] -// CHECK:STDOUT: %Convert.e81: %Convert.type.e8b = struct_value () [concrete] +// CHECK:STDOUT: %RuntimeConvertFrom.as.ImplicitAs.impl.Convert.type: type = fn_type @RuntimeConvertFrom.as.ImplicitAs.impl.Convert [concrete] +// CHECK:STDOUT: %RuntimeConvertFrom.as.ImplicitAs.impl.Convert: %RuntimeConvertFrom.as.ImplicitAs.impl.Convert.type = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.580 = facet_value %RuntimeConvertFrom, (%ImplicitAs.impl_witness) [concrete] // CHECK:STDOUT: %RuntimeConvertTo.val: %RuntimeConvertTo = struct_value () [concrete] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] @@ -81,17 +81,17 @@ fn G(holds_to: HoldsType((RuntimeConvertTo, ))) { // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %from: %RuntimeConvertFrom = bind_symbolic_name from, 0 [symbolic] // CHECK:STDOUT: %RuntimeConvertFrom.val: %RuntimeConvertFrom = struct_value () [concrete] -// CHECK:STDOUT: %.f4e: type = fn_type_with_self_type %Convert.type.50a, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %from, %Convert.e81 [symbolic] +// CHECK:STDOUT: %.f4e: type = fn_type_with_self_type %ImplicitAs.Convert.type.50a, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %RuntimeConvertFrom.as.ImplicitAs.impl.Convert.bound: = bound_method %from, %RuntimeConvertFrom.as.ImplicitAs.impl.Convert [symbolic] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.139: type = fn_type @Op.1, @Destroy.impl(%RuntimeConvertTo) [concrete] -// CHECK:STDOUT: %Op.d2d: %Op.type.139 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.139: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%RuntimeConvertTo) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.d2d: %T.as.Destroy.impl.Op.type.139 = struct_value () [concrete] // CHECK:STDOUT: %ptr.339: type = ptr_type %RuntimeConvertTo [concrete] -// CHECK:STDOUT: %Op.specific_fn.373: = specific_function %Op.d2d, @Op.1(%RuntimeConvertTo) [concrete] -// CHECK:STDOUT: %Op.type.147: type = fn_type @Op.1, @Destroy.impl(%RuntimeConvertFrom) [concrete] -// CHECK:STDOUT: %Op.3f3: %Op.type.147 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.373: = specific_function %T.as.Destroy.impl.Op.d2d, @T.as.Destroy.impl.Op(%RuntimeConvertTo) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.147: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%RuntimeConvertFrom) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.3f3: %T.as.Destroy.impl.Op.type.147 = struct_value () [concrete] // CHECK:STDOUT: %ptr.415: type = ptr_type %RuntimeConvertFrom [concrete] -// CHECK:STDOUT: %Op.specific_fn.5db: = specific_function %Op.3f3, @Op.1(%RuntimeConvertFrom) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.5db: = specific_function %T.as.Destroy.impl.Op.3f3, @T.as.Destroy.impl.Op(%RuntimeConvertFrom) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -126,14 +126,14 @@ fn G(holds_to: HoldsType((RuntimeConvertTo, ))) { // CHECK:STDOUT: } // CHECK:STDOUT: %RuntimeConvertFrom.decl: type = class_decl @RuntimeConvertFrom [concrete = constants.%RuntimeConvertFrom] {} {} // CHECK:STDOUT: %RuntimeConvertTo.decl: type = class_decl @RuntimeConvertTo [concrete = constants.%RuntimeConvertTo] {} {} -// CHECK:STDOUT: impl_decl @ImplicitAs.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @RuntimeConvertFrom.as.ImplicitAs.impl [concrete] {} { // CHECK:STDOUT: %RuntimeConvertFrom.ref: type = name_ref RuntimeConvertFrom, file.%RuntimeConvertFrom.decl [concrete = constants.%RuntimeConvertFrom] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %ImplicitAs.ref: %ImplicitAs.type.cc7 = name_ref ImplicitAs, imports.%Core.ImplicitAs [concrete = constants.%ImplicitAs.generic] // CHECK:STDOUT: %RuntimeConvertTo.ref: type = name_ref RuntimeConvertTo, file.%RuntimeConvertTo.decl [concrete = constants.%RuntimeConvertTo] // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%RuntimeConvertTo)> [concrete = constants.%ImplicitAs.type.580] // CHECK:STDOUT: } -// CHECK:STDOUT: %ImplicitAs.impl_witness_table = impl_witness_table (@ImplicitAs.impl.%Convert.decl), @ImplicitAs.impl [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table = impl_witness_table (@RuntimeConvertFrom.as.ImplicitAs.impl.%RuntimeConvertFrom.as.ImplicitAs.impl.Convert.decl), @RuntimeConvertFrom.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness: = impl_witness %ImplicitAs.impl_witness_table [concrete = constants.%ImplicitAs.impl_witness] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { // CHECK:STDOUT: %T.patt: %pattern_type.f1e = symbolic_binding_pattern T, 0 [concrete] @@ -177,8 +177,8 @@ fn G(holds_to: HoldsType((RuntimeConvertTo, ))) { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @ImplicitAs.impl: %RuntimeConvertFrom.ref as %ImplicitAs.type { -// CHECK:STDOUT: %Convert.decl: %Convert.type.e8b = fn_decl @Convert.loc24 [concrete = constants.%Convert.e81] { +// CHECK:STDOUT: impl @RuntimeConvertFrom.as.ImplicitAs.impl: %RuntimeConvertFrom.ref as %ImplicitAs.type { +// CHECK:STDOUT: %RuntimeConvertFrom.as.ImplicitAs.impl.Convert.decl: %RuntimeConvertFrom.as.ImplicitAs.impl.Convert.type = fn_decl @RuntimeConvertFrom.as.ImplicitAs.impl.Convert [concrete = constants.%RuntimeConvertFrom.as.ImplicitAs.impl.Convert] { // CHECK:STDOUT: %self.patt: %pattern_type.f64 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.f64 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.109 = return_slot_pattern [concrete] @@ -186,7 +186,7 @@ fn G(holds_to: HoldsType((RuntimeConvertTo, ))) { // CHECK:STDOUT: } { // CHECK:STDOUT: %RuntimeConvertTo.ref: type = name_ref RuntimeConvertTo, file.%RuntimeConvertTo.decl [concrete = constants.%RuntimeConvertTo] // CHECK:STDOUT: %self.param: %RuntimeConvertFrom = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @ImplicitAs.impl.%RuntimeConvertFrom.ref [concrete = constants.%RuntimeConvertFrom] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @RuntimeConvertFrom.as.ImplicitAs.impl.%RuntimeConvertFrom.ref [concrete = constants.%RuntimeConvertFrom] // CHECK:STDOUT: %self: %RuntimeConvertFrom = bind_name self, %self.param // CHECK:STDOUT: %return.param: ref %RuntimeConvertTo = out_param call_param1 // CHECK:STDOUT: %return: ref %RuntimeConvertTo = return_slot %return.param @@ -194,7 +194,7 @@ fn G(holds_to: HoldsType((RuntimeConvertTo, ))) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .RuntimeConvertTo = -// CHECK:STDOUT: .Convert = %Convert.decl +// CHECK:STDOUT: .Convert = %RuntimeConvertFrom.as.ImplicitAs.impl.Convert.decl // CHECK:STDOUT: witness = file.%ImplicitAs.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: @@ -231,7 +231,7 @@ fn G(holds_to: HoldsType((RuntimeConvertTo, ))) { // CHECK:STDOUT: .Self = constants.%RuntimeConvertTo // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert.loc24(%self.param: %RuntimeConvertFrom) -> %return.param: %RuntimeConvertTo { +// CHECK:STDOUT: fn @RuntimeConvertFrom.as.ImplicitAs.impl.Convert(%self.param: %RuntimeConvertFrom) -> %return.param: %RuntimeConvertTo { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %.loc24_58.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc24_58.2: init %RuntimeConvertTo = class_init (), %return [concrete = constants.%RuntimeConvertTo.val] @@ -273,25 +273,25 @@ fn G(holds_to: HoldsType((RuntimeConvertTo, ))) { // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [concrete = constants.%F] // CHECK:STDOUT: %from.ref: %RuntimeConvertFrom = name_ref from, %from [symbolic = constants.%from] // CHECK:STDOUT: %holds_to.ref: %HoldsType.066 = name_ref holds_to, %holds_to -// CHECK:STDOUT: %impl.elem0: %.f4e = impl_witness_access constants.%ImplicitAs.impl_witness, element0 [concrete = constants.%Convert.e81] -// CHECK:STDOUT: %bound_method.loc41_19.1: = bound_method constants.%from, %impl.elem0 [symbolic = constants.%Convert.bound] +// CHECK:STDOUT: %impl.elem0: %.f4e = impl_witness_access constants.%ImplicitAs.impl_witness, element0 [concrete = constants.%RuntimeConvertFrom.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %bound_method.loc41_19.1: = bound_method constants.%from, %impl.elem0 [symbolic = constants.%RuntimeConvertFrom.as.ImplicitAs.impl.Convert.bound] // CHECK:STDOUT: %.loc41_19.1: ref %RuntimeConvertTo = temporary_storage -// CHECK:STDOUT: %Convert.call: init %RuntimeConvertTo = call %bound_method.loc41_19.1(constants.%from) to %.loc41_19.1 -// CHECK:STDOUT: %.loc41_19.2: init %RuntimeConvertTo = converted constants.%from, %Convert.call +// CHECK:STDOUT: %RuntimeConvertFrom.as.ImplicitAs.impl.Convert.call: init %RuntimeConvertTo = call %bound_method.loc41_19.1(constants.%from) to %.loc41_19.1 +// CHECK:STDOUT: %.loc41_19.2: init %RuntimeConvertTo = converted constants.%from, %RuntimeConvertFrom.as.ImplicitAs.impl.Convert.call // CHECK:STDOUT: %.loc41_19.3: ref %RuntimeConvertTo = temporary %.loc41_19.1, %.loc41_19.2 // CHECK:STDOUT: %.loc41_19.4: %RuntimeConvertTo = bind_value %.loc41_19.3 // CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%tuple, ) [concrete = ] // CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.specific_fn(%holds_to.ref) -// CHECK:STDOUT: %Op.bound.loc41: = bound_method %.loc41_19.1, constants.%Op.d2d -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.d2d, @Op.1(constants.%RuntimeConvertTo) [concrete = constants.%Op.specific_fn.373] -// CHECK:STDOUT: %bound_method.loc41_19.2: = bound_method %.loc41_19.1, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc41: = bound_method %.loc41_19.1, constants.%T.as.Destroy.impl.Op.d2d +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.d2d, @T.as.Destroy.impl.Op(constants.%RuntimeConvertTo) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.373] +// CHECK:STDOUT: %bound_method.loc41_19.2: = bound_method %.loc41_19.1, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc41: %ptr.339 = addr_of %.loc41_19.1 -// CHECK:STDOUT: %no_op.loc41: init %empty_tuple.type = call %bound_method.loc41_19.2(%addr.loc41) -// CHECK:STDOUT: %Op.bound.loc30: = bound_method %.loc30_36.2, constants.%Op.3f3 -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.3f3, @Op.1(constants.%RuntimeConvertFrom) [concrete = constants.%Op.specific_fn.5db] -// CHECK:STDOUT: %bound_method.loc30: = bound_method %.loc30_36.2, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc41: init %empty_tuple.type = call %bound_method.loc41_19.2(%addr.loc41) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc30: = bound_method %.loc30_36.2, constants.%T.as.Destroy.impl.Op.3f3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.3f3, @T.as.Destroy.impl.Op(constants.%RuntimeConvertFrom) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.5db] +// CHECK:STDOUT: %bound_method.loc30: = bound_method %.loc30_36.2, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc30: %ptr.415 = addr_of %.loc30_36.2 -// CHECK:STDOUT: %no_op.loc30: init %empty_tuple.type = call %bound_method.loc30(%addr.loc30) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc30: init %empty_tuple.type = call %bound_method.loc30(%addr.loc30) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/for/actual.carbon b/toolchain/check/testdata/for/actual.carbon index 0297b20e3c94..45b337a5ac44 100644 --- a/toolchain/check/testdata/for/actual.carbon +++ b/toolchain/check/testdata/for/actual.carbon @@ -66,8 +66,8 @@ fn Read() { // CHECK:STDOUT: %Int.49d0e6.1: type = class_type @Int, @Int(%N) [symbolic] // CHECK:STDOUT: %pattern_type.8963eb.1: type = pattern_type %Int.49d0e6.1 [symbolic] // CHECK:STDOUT: %pattern_type.dcd: type = pattern_type %IntRange.349 [symbolic] -// CHECK:STDOUT: %Make.type.51f: type = fn_type @Make, @IntRange(%N) [symbolic] -// CHECK:STDOUT: %Make.2ec: %Make.type.51f = struct_value () [symbolic] +// CHECK:STDOUT: %IntRange.Make.type.51f: type = fn_type @IntRange.Make, @IntRange(%N) [symbolic] +// CHECK:STDOUT: %IntRange.Make.2ec: %IntRange.Make.type.51f = struct_value () [symbolic] // CHECK:STDOUT: %Iterate.type: type = facet_type <@Iterate> [concrete] // CHECK:STDOUT: %Self.a96: %Iterate.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %.Self.ef1: %Iterate.type = bind_symbolic_name .Self [symbolic_self] @@ -84,38 +84,38 @@ fn Read() { // CHECK:STDOUT: %Optional.type: type = generic_class_type @Optional [concrete] // CHECK:STDOUT: %Optional.generic: %Optional.type = struct_value () [concrete] // CHECK:STDOUT: %T.8b3: type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %None.type.ef2: type = fn_type @None, @Optional(%T.8b3) [symbolic] -// CHECK:STDOUT: %None.fd6: %None.type.ef2 = struct_value () [symbolic] -// CHECK:STDOUT: %Some.type.b2c: type = fn_type @Some, @Optional(%T.8b3) [symbolic] -// CHECK:STDOUT: %Some.d0d: %Some.type.b2c = struct_value () [symbolic] -// CHECK:STDOUT: %Iterate.impl_witness: = impl_witness @IntRange.%Iterate.impl_witness_table, @Iterate.impl(%N) [symbolic] -// CHECK:STDOUT: %NewCursor.type.b02: type = fn_type @NewCursor.loc10, @Iterate.impl(%N) [symbolic] -// CHECK:STDOUT: %NewCursor.f32: %NewCursor.type.b02 = struct_value () [symbolic] +// CHECK:STDOUT: %Optional.None.type.ef2: type = fn_type @Optional.None, @Optional(%T.8b3) [symbolic] +// CHECK:STDOUT: %Optional.None.fd6: %Optional.None.type.ef2 = struct_value () [symbolic] +// CHECK:STDOUT: %Optional.Some.type.b2c: type = fn_type @Optional.Some, @Optional(%T.8b3) [symbolic] +// CHECK:STDOUT: %Optional.Some.d0d: %Optional.Some.type.b2c = struct_value () [symbolic] +// CHECK:STDOUT: %Iterate.impl_witness: = impl_witness @IntRange.%Iterate.impl_witness_table, @IntRange.as.Iterate.impl(%N) [symbolic] +// CHECK:STDOUT: %IntRange.as.Iterate.impl.NewCursor.type: type = fn_type @IntRange.as.Iterate.impl.NewCursor, @IntRange.as.Iterate.impl(%N) [symbolic] +// CHECK:STDOUT: %IntRange.as.Iterate.impl.NewCursor: %IntRange.as.Iterate.impl.NewCursor.type = struct_value () [symbolic] // CHECK:STDOUT: %ptr.784: type = ptr_type %Int.49d0e6.1 [symbolic] // CHECK:STDOUT: %pattern_type.4dc: type = pattern_type %ptr.784 [symbolic] // CHECK:STDOUT: %Optional.708: type = class_type @Optional, @Optional(%Int.49d0e6.1) [symbolic] // CHECK:STDOUT: %pattern_type.4b1: type = pattern_type %Optional.708 [symbolic] -// CHECK:STDOUT: %Next.type.2c8: type = fn_type @Next.loc11, @Iterate.impl(%N) [symbolic] -// CHECK:STDOUT: %Next.259: %Next.type.2c8 = struct_value () [symbolic] +// CHECK:STDOUT: %IntRange.as.Iterate.impl.Next.type: type = fn_type @IntRange.as.Iterate.impl.Next, @IntRange.as.Iterate.impl(%N) [symbolic] +// CHECK:STDOUT: %IntRange.as.Iterate.impl.Next: %IntRange.as.Iterate.impl.Next.type = struct_value () [symbolic] // CHECK:STDOUT: %require_complete.b4f426.1: = require_complete_type %Int.49d0e6.1 [symbolic] // CHECK:STDOUT: %IntRange.elem.e7c: type = unbound_element_type %IntRange.349, %Int.49d0e6.1 [symbolic] // CHECK:STDOUT: %struct_type.start.end.78d: type = struct_type {.start: %Int.49d0e6.1, .end: %Int.49d0e6.1} [symbolic] // CHECK:STDOUT: %complete_type.9d5: = complete_type_witness %struct_type.start.end.78d [symbolic] // CHECK:STDOUT: %require_complete.524: = require_complete_type %IntRange.349 [symbolic] -// CHECK:STDOUT: %None.type.73a: type = fn_type @None, @Optional(%Int.49d0e6.1) [symbolic] -// CHECK:STDOUT: %None.83e: %None.type.73a = struct_value () [symbolic] -// CHECK:STDOUT: %Some.type.185: type = fn_type @Some, @Optional(%Int.49d0e6.1) [symbolic] -// CHECK:STDOUT: %Some.58a: %Some.type.185 = struct_value () [symbolic] +// CHECK:STDOUT: %Optional.None.type.73a: type = fn_type @Optional.None, @Optional(%Int.49d0e6.1) [symbolic] +// CHECK:STDOUT: %Optional.None.83e: %Optional.None.type.73a = struct_value () [symbolic] +// CHECK:STDOUT: %Optional.Some.type.185: type = fn_type @Optional.Some, @Optional(%Int.49d0e6.1) [symbolic] +// CHECK:STDOUT: %Optional.Some.58a: %Optional.Some.type.185 = struct_value () [symbolic] // CHECK:STDOUT: %require_complete.b74: = require_complete_type %Optional.708 [symbolic] // CHECK:STDOUT: %require_complete.0f5: = require_complete_type %ptr.784 [symbolic] // CHECK:STDOUT: %OrderedWith.type.270: type = generic_interface_type @OrderedWith [concrete] // CHECK:STDOUT: %OrderedWith.generic: %OrderedWith.type.270 = struct_value () [concrete] // CHECK:STDOUT: %Other: type = bind_symbolic_name Other, 0 [symbolic] -// CHECK:STDOUT: %Less.type.f19: type = fn_type @Less.1, @OrderedWith(%Other) [symbolic] -// CHECK:STDOUT: %Less.02e: %Less.type.f19 = struct_value () [symbolic] +// CHECK:STDOUT: %OrderedWith.Less.type.f19: type = fn_type @OrderedWith.Less, @OrderedWith(%Other) [symbolic] +// CHECK:STDOUT: %OrderedWith.Less.02e: %OrderedWith.Less.type.f19 = struct_value () [symbolic] // CHECK:STDOUT: %OrderedWith.assoc_type.03c: type = assoc_entity_type @OrderedWith, @OrderedWith(%Other) [symbolic] // CHECK:STDOUT: %OrderedWith.type.872: type = facet_type <@OrderedWith, @OrderedWith(%Int.49d0e6.1)> [symbolic] -// CHECK:STDOUT: %Less.type.8fe: type = fn_type @Less.1, @OrderedWith(%Int.49d0e6.1) [symbolic] +// CHECK:STDOUT: %OrderedWith.Less.type.8fe: type = fn_type @OrderedWith.Less, @OrderedWith(%Int.49d0e6.1) [symbolic] // CHECK:STDOUT: %OrderedWith.assoc_type.d92: type = assoc_entity_type @OrderedWith, @OrderedWith(%Int.49d0e6.1) [symbolic] // CHECK:STDOUT: %assoc0.2ae: %OrderedWith.assoc_type.d92 = assoc_entity element0, imports.%Core.import_ref.910 [symbolic] // CHECK:STDOUT: %require_complete.66b6: = require_complete_type %OrderedWith.type.872 [symbolic] @@ -123,40 +123,40 @@ fn Read() { // CHECK:STDOUT: %To.c80: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%To.c80) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To.c80) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] // CHECK:STDOUT: %M: Core.IntLiteral = bind_symbolic_name M, 1 [symbolic] -// CHECK:STDOUT: %Less.type.2c7: type = fn_type @Less.2, @OrderedWith.impl.db3(%N, %M) [symbolic] -// CHECK:STDOUT: %Less.a5a: %Less.type.2c7 = struct_value () [symbolic] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Less.type.2c7: type = fn_type @Int.as.OrderedWith.impl.Less.1, @Int.as.OrderedWith.impl.db3(%N, %M) [symbolic] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Less.a5a: %Int.as.OrderedWith.impl.Less.type.2c7 = struct_value () [symbolic] // CHECK:STDOUT: %Inc.type: type = facet_type <@Inc> [concrete] -// CHECK:STDOUT: %OrderedWith.impl_witness.df5: = impl_witness imports.%OrderedWith.impl_witness_table.2b2, @OrderedWith.impl.db3(%N, %N) [symbolic] -// CHECK:STDOUT: %Less.type.98c: type = fn_type @Less.2, @OrderedWith.impl.db3(%N, %N) [symbolic] -// CHECK:STDOUT: %Less.4be: %Less.type.98c = struct_value () [symbolic] +// CHECK:STDOUT: %OrderedWith.impl_witness.df5: = impl_witness imports.%OrderedWith.impl_witness_table.2b2, @Int.as.OrderedWith.impl.db3(%N, %N) [symbolic] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Less.type.98c: type = fn_type @Int.as.OrderedWith.impl.Less.1, @Int.as.OrderedWith.impl.db3(%N, %N) [symbolic] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Less.4be: %Int.as.OrderedWith.impl.Less.type.98c = struct_value () [symbolic] // CHECK:STDOUT: %OrderedWith.facet: %OrderedWith.type.872 = facet_value %Int.49d0e6.1, (%OrderedWith.impl_witness.df5) [symbolic] -// CHECK:STDOUT: %.99c: type = fn_type_with_self_type %Less.type.8fe, %OrderedWith.facet [symbolic] -// CHECK:STDOUT: %Less.specific_fn.bb3: = specific_function %Less.4be, @Less.2(%N, %N) [symbolic] -// CHECK:STDOUT: %Op.type.e3a: type = fn_type @Op.95 [concrete] +// CHECK:STDOUT: %.99c: type = fn_type_with_self_type %OrderedWith.Less.type.8fe, %OrderedWith.facet [symbolic] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Less.specific_fn.bb3: = specific_function %Int.as.OrderedWith.impl.Less.4be, @Int.as.OrderedWith.impl.Less.1(%N, %N) [symbolic] +// CHECK:STDOUT: %Inc.Op.type: type = fn_type @Inc.Op [concrete] // CHECK:STDOUT: %Inc.lookup_impl_witness: = lookup_impl_witness %Int.49d0e6.1, @Inc [symbolic] // CHECK:STDOUT: %Inc.facet: %Inc.type = facet_value %Int.49d0e6.1, (%Inc.lookup_impl_witness) [symbolic] -// CHECK:STDOUT: %.a0d: type = fn_type_with_self_type %Op.type.e3a, %Inc.facet [symbolic] +// CHECK:STDOUT: %.a0d: type = fn_type_with_self_type %Inc.Op.type, %Inc.facet [symbolic] // CHECK:STDOUT: %impl.elem0.437: %.a0d = impl_witness_access %Inc.lookup_impl_witness, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.a5f: = specific_impl_function %impl.elem0.437, @Op.95(%Inc.facet) [symbolic] -// CHECK:STDOUT: %Some.specific_fn: = specific_function %Some.58a, @Some(%Int.49d0e6.1) [symbolic] +// CHECK:STDOUT: %specific_impl_fn.a5f: = specific_impl_function %impl.elem0.437, @Inc.Op(%Inc.facet) [symbolic] +// CHECK:STDOUT: %Optional.Some.specific_fn: = specific_function %Optional.Some.58a, @Optional.Some(%Int.49d0e6.1) [symbolic] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.bae: type = fn_type @Op.96 [concrete] +// CHECK:STDOUT: %Destroy.Op.type: type = fn_type @Destroy.Op [concrete] // CHECK:STDOUT: %ptr.2aa: type = ptr_type %Optional.708 [symbolic] // CHECK:STDOUT: %require_complete.a5e: = require_complete_type %ptr.2aa [symbolic] // CHECK:STDOUT: %Destroy.lookup_impl_witness.f9d: = lookup_impl_witness %Optional.708, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.be9: %Destroy.type = facet_value %Optional.708, (%Destroy.lookup_impl_witness.f9d) [symbolic] -// CHECK:STDOUT: %.1ee: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.be9 [symbolic] +// CHECK:STDOUT: %.1ee: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.be9 [symbolic] // CHECK:STDOUT: %impl.elem0.5fd: %.1ee = impl_witness_access %Destroy.lookup_impl_witness.f9d, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.79e: = specific_impl_function %impl.elem0.5fd, @Op.96(%Destroy.facet.be9) [symbolic] +// CHECK:STDOUT: %specific_impl_fn.79e: = specific_impl_function %impl.elem0.5fd, @Destroy.Op(%Destroy.facet.be9) [symbolic] // CHECK:STDOUT: %Destroy.lookup_impl_witness.34a: = lookup_impl_witness %Int.49d0e6.1, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.13d: %Destroy.type = facet_value %Int.49d0e6.1, (%Destroy.lookup_impl_witness.34a) [symbolic] -// CHECK:STDOUT: %.bbc: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.13d [symbolic] +// CHECK:STDOUT: %.bbc: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.13d [symbolic] // CHECK:STDOUT: %impl.elem0.fe8: %.bbc = impl_witness_access %Destroy.lookup_impl_witness.34a, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.f4e: = specific_impl_function %impl.elem0.fe8, @Op.96(%Destroy.facet.13d) [symbolic] -// CHECK:STDOUT: %None.specific_fn: = specific_function %None.83e, @None(%Int.49d0e6.1) [symbolic] +// CHECK:STDOUT: %specific_impl_fn.f4e: = specific_impl_function %impl.elem0.fe8, @Destroy.Op(%Destroy.facet.13d) [symbolic] +// CHECK:STDOUT: %Optional.None.specific_fn: = specific_function %Optional.None.83e, @Optional.None(%Int.49d0e6.1) [symbolic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] @@ -164,30 +164,30 @@ fn Read() { // CHECK:STDOUT: %pattern_type.d16: type = pattern_type %IntRange.365 [concrete] // CHECK:STDOUT: %Range.type: type = fn_type @Range [concrete] // CHECK:STDOUT: %Range: %Range.type = struct_value () [concrete] -// CHECK:STDOUT: %Make.type.cef: type = fn_type @Make, @IntRange(%int_32) [concrete] -// CHECK:STDOUT: %Make.0dc: %Make.type.cef = struct_value () [concrete] +// CHECK:STDOUT: %IntRange.Make.type.cef: type = fn_type @IntRange.Make, @IntRange(%int_32) [concrete] +// CHECK:STDOUT: %IntRange.Make.0dc: %IntRange.Make.type.cef = struct_value () [concrete] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [concrete] // CHECK:STDOUT: %complete_type.f8a: = complete_type_witness %i32.builtin [concrete] // CHECK:STDOUT: %IntRange.elem.e33: type = unbound_element_type %IntRange.365, %i32 [concrete] // CHECK:STDOUT: %struct_type.start.end.d0a: type = struct_type {.start: %i32, .end: %i32} [concrete] // CHECK:STDOUT: %complete_type.c45: = complete_type_witness %struct_type.start.end.d0a [concrete] // CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [concrete] -// CHECK:STDOUT: %Make.specific_fn: = specific_function %Make.0dc, @Make(%int_32) [concrete] +// CHECK:STDOUT: %IntRange.Make.specific_fn: = specific_function %IntRange.Make.0dc, @IntRange.Make(%int_32) [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet.921: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet.921 [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet.921 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] -// CHECK:STDOUT: %Op.type.2d1: type = fn_type @Op.97, @Destroy.impl(%IntRange.365) [concrete] -// CHECK:STDOUT: %Op.fa8: %Op.type.2d1 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.2d1: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%IntRange.365) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.fa8: %T.as.Destroy.impl.Op.type.2d1 = struct_value () [concrete] // CHECK:STDOUT: %ptr.049: type = ptr_type %IntRange.365 [concrete] -// CHECK:STDOUT: %Op.specific_fn.df8: = specific_function %Op.fa8, @Op.97(%IntRange.365) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.fa8, @T.as.Destroy.impl.Op(%IntRange.365) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -212,20 +212,20 @@ fn Read() { // CHECK:STDOUT: %CursorType: type = assoc_const_decl @CursorType [concrete] {} // CHECK:STDOUT: %Core.import_ref.4f9: type = import_ref Core//prelude/iterate, loc10_18, loaded [concrete = %ElementType] // CHECK:STDOUT: %ElementType: type = assoc_const_decl @ElementType [concrete] {} -// CHECK:STDOUT: %Core.import_ref.2b7: @Optional.%None.type (%None.type.ef2) = import_ref Core//prelude/iterate, inst96 [indirect], loaded [symbolic = @Optional.%None (constants.%None.fd6)] -// CHECK:STDOUT: %Core.import_ref.5c6: @Optional.%Some.type (%Some.type.b2c) = import_ref Core//prelude/iterate, inst97 [indirect], loaded [symbolic = @Optional.%Some (constants.%Some.d0d)] +// CHECK:STDOUT: %Core.import_ref.2b7: @Optional.%Optional.None.type (%Optional.None.type.ef2) = import_ref Core//prelude/iterate, inst96 [indirect], loaded [symbolic = @Optional.%Optional.None (constants.%Optional.None.fd6)] +// CHECK:STDOUT: %Core.import_ref.5c6: @Optional.%Optional.Some.type (%Optional.Some.type.b2c) = import_ref Core//prelude/iterate, inst97 [indirect], loaded [symbolic = @Optional.%Optional.Some (constants.%Optional.Some.d0d)] // CHECK:STDOUT: %Core.Optional: %Optional.type = import_ref Core//prelude/types/optional, Optional, loaded [concrete = constants.%Optional.generic] // CHECK:STDOUT: %Core.OrderedWith: %OrderedWith.type.270 = import_ref Core//prelude/operators/comparison, OrderedWith, loaded [concrete = constants.%OrderedWith.generic] // CHECK:STDOUT: %Core.import_ref.1cc: @OrderedWith.%OrderedWith.assoc_type (%OrderedWith.assoc_type.03c) = import_ref Core//prelude/operators/comparison, loc26_44, loaded [symbolic = @OrderedWith.%assoc0 (constants.%assoc0.3c6)] -// CHECK:STDOUT: %Core.import_ref.910: @OrderedWith.%Less.type (%Less.type.f19) = import_ref Core//prelude/operators/comparison, loc26_44, loaded [symbolic = @OrderedWith.%Less (constants.%Less.02e)] +// CHECK:STDOUT: %Core.import_ref.910: @OrderedWith.%OrderedWith.Less.type (%OrderedWith.Less.type.f19) = import_ref Core//prelude/operators/comparison, loc26_44, loaded [symbolic = @OrderedWith.%OrderedWith.Less (constants.%OrderedWith.Less.02e)] // CHECK:STDOUT: %Core.import_ref.146ebd.1 = import_ref Core//prelude/operators/comparison, loc26_44, unloaded -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] -// CHECK:STDOUT: %Core.import_ref.a5f: @OrderedWith.impl.db3.%Less.type (%Less.type.2c7) = import_ref Core//prelude/types/int, loc51_46, loaded [symbolic = @OrderedWith.impl.db3.%Less (constants.%Less.a5a)] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.a5f: @Int.as.OrderedWith.impl.db3.%Int.as.OrderedWith.impl.Less.type (%Int.as.OrderedWith.impl.Less.type.2c7) = import_ref Core//prelude/types/int, loc51_46, loaded [symbolic = @Int.as.OrderedWith.impl.db3.%Int.as.OrderedWith.impl.Less (constants.%Int.as.OrderedWith.impl.Less.a5a)] // CHECK:STDOUT: %Core.import_ref.a58 = import_ref Core//prelude/types/int, loc52_58, unloaded // CHECK:STDOUT: %Core.import_ref.a39 = import_ref Core//prelude/types/int, loc53_49, unloaded // CHECK:STDOUT: %Core.import_ref.c4c = import_ref Core//prelude/types/int, loc54_61, unloaded -// CHECK:STDOUT: %OrderedWith.impl_witness_table.2b2 = impl_witness_table (%Core.import_ref.a5f, %Core.import_ref.a58, %Core.import_ref.a39, %Core.import_ref.c4c), @OrderedWith.impl.db3 [concrete] +// CHECK:STDOUT: %OrderedWith.impl_witness_table.2b2 = impl_witness_table (%Core.import_ref.a5f, %Core.import_ref.a58, %Core.import_ref.a39, %Core.import_ref.c4c), @Int.as.OrderedWith.impl.db3 [concrete] // CHECK:STDOUT: %Core.Inc: type = import_ref Core//prelude/operators/arithmetic, Inc, loaded [concrete = constants.%Inc.type] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] @@ -244,9 +244,9 @@ fn Read() { // CHECK:STDOUT: %.loc4_36.1: type = splice_block %.loc4_36.3 [concrete = Core.IntLiteral] { // CHECK:STDOUT: %Core.ref.loc4: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, imports.%Core.IntLiteral [concrete = constants.%IntLiteral] -// CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc4_36.2: type = value_of_initializer %int_literal.make_type [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc4_36.3: type = converted %int_literal.make_type, %.loc4_36.2 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %IntLiteral.call: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc4_36.2: type = value_of_initializer %IntLiteral.call [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc4_36.3: type = converted %IntLiteral.call, %.loc4_36.2 [concrete = Core.IntLiteral] // CHECK:STDOUT: } // CHECK:STDOUT: %N.loc4_16.2: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N.loc4_16.1 (constants.%N)] // CHECK:STDOUT: } @@ -270,78 +270,78 @@ fn Read() { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @Iterate.impl(@IntRange.%N.loc4_16.2: Core.IntLiteral) { +// CHECK:STDOUT: generic impl @IntRange.as.Iterate.impl(@IntRange.%N.loc4_16.2: Core.IntLiteral) { // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)] // CHECK:STDOUT: %IntRange: type = class_type @IntRange, @IntRange(%N) [symbolic = %IntRange (constants.%IntRange.349)] -// CHECK:STDOUT: %Int.loc9_54.2: type = class_type @Int, @Int(%N) [symbolic = %Int.loc9_54.2 (constants.%Int.49d0e6.1)] -// CHECK:STDOUT: %Iterate_where.type: type = facet_type <@Iterate where constants.%impl.elem1.164 = %Int.loc9_54.2 and constants.%impl.elem0.19f = %Int.loc9_54.2> [symbolic = %Iterate_where.type (constants.%Iterate_where.type)] +// CHECK:STDOUT: %Int.loc9_54.1: type = class_type @Int, @Int(%N) [symbolic = %Int.loc9_54.1 (constants.%Int.49d0e6.1)] +// CHECK:STDOUT: %Iterate_where.type: type = facet_type <@Iterate where constants.%impl.elem1.164 = %Int.loc9_54.1 and constants.%impl.elem0.19f = %Int.loc9_54.1> [symbolic = %Iterate_where.type (constants.%Iterate_where.type)] // CHECK:STDOUT: %require_complete: = require_complete_type %Iterate_where.type [symbolic = %require_complete (constants.%require_complete.d96)] -// CHECK:STDOUT: %Iterate.impl_witness: = impl_witness @IntRange.%Iterate.impl_witness_table, @Iterate.impl(%N) [symbolic = %Iterate.impl_witness (constants.%Iterate.impl_witness)] +// CHECK:STDOUT: %Iterate.impl_witness: = impl_witness @IntRange.%Iterate.impl_witness_table, @IntRange.as.Iterate.impl(%N) [symbolic = %Iterate.impl_witness (constants.%Iterate.impl_witness)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %NewCursor.type: type = fn_type @NewCursor.loc10, @Iterate.impl(%N) [symbolic = %NewCursor.type (constants.%NewCursor.type.b02)] -// CHECK:STDOUT: %NewCursor: @Iterate.impl.%NewCursor.type (%NewCursor.type.b02) = struct_value () [symbolic = %NewCursor (constants.%NewCursor.f32)] -// CHECK:STDOUT: %Next.type: type = fn_type @Next.loc11, @Iterate.impl(%N) [symbolic = %Next.type (constants.%Next.type.2c8)] -// CHECK:STDOUT: %Next: @Iterate.impl.%Next.type (%Next.type.2c8) = struct_value () [symbolic = %Next (constants.%Next.259)] +// CHECK:STDOUT: %IntRange.as.Iterate.impl.NewCursor.type: type = fn_type @IntRange.as.Iterate.impl.NewCursor, @IntRange.as.Iterate.impl(%N) [symbolic = %IntRange.as.Iterate.impl.NewCursor.type (constants.%IntRange.as.Iterate.impl.NewCursor.type)] +// CHECK:STDOUT: %IntRange.as.Iterate.impl.NewCursor: @IntRange.as.Iterate.impl.%IntRange.as.Iterate.impl.NewCursor.type (%IntRange.as.Iterate.impl.NewCursor.type) = struct_value () [symbolic = %IntRange.as.Iterate.impl.NewCursor (constants.%IntRange.as.Iterate.impl.NewCursor)] +// CHECK:STDOUT: %IntRange.as.Iterate.impl.Next.type: type = fn_type @IntRange.as.Iterate.impl.Next, @IntRange.as.Iterate.impl(%N) [symbolic = %IntRange.as.Iterate.impl.Next.type (constants.%IntRange.as.Iterate.impl.Next.type)] +// CHECK:STDOUT: %IntRange.as.Iterate.impl.Next: @IntRange.as.Iterate.impl.%IntRange.as.Iterate.impl.Next.type (%IntRange.as.Iterate.impl.Next.type) = struct_value () [symbolic = %IntRange.as.Iterate.impl.Next (constants.%IntRange.as.Iterate.impl.Next)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %Self.ref as %.loc9_24 { -// CHECK:STDOUT: %NewCursor.decl: @Iterate.impl.%NewCursor.type (%NewCursor.type.b02) = fn_decl @NewCursor.loc10 [symbolic = @Iterate.impl.%NewCursor (constants.%NewCursor.f32)] { -// CHECK:STDOUT: %self.patt: @NewCursor.loc10.%pattern_type.loc10_18 (%pattern_type.dcd) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @NewCursor.loc10.%pattern_type.loc10_18 (%pattern_type.dcd) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: @NewCursor.loc10.%pattern_type.loc10_32 (%pattern_type.8963eb.1) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @NewCursor.loc10.%pattern_type.loc10_32 (%pattern_type.8963eb.1) = out_param_pattern %return.patt, call_param1 [concrete] +// CHECK:STDOUT: %IntRange.as.Iterate.impl.NewCursor.decl: @IntRange.as.Iterate.impl.%IntRange.as.Iterate.impl.NewCursor.type (%IntRange.as.Iterate.impl.NewCursor.type) = fn_decl @IntRange.as.Iterate.impl.NewCursor [symbolic = @IntRange.as.Iterate.impl.%IntRange.as.Iterate.impl.NewCursor (constants.%IntRange.as.Iterate.impl.NewCursor)] { +// CHECK:STDOUT: %self.patt: @IntRange.as.Iterate.impl.NewCursor.%pattern_type.loc10_18 (%pattern_type.dcd) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @IntRange.as.Iterate.impl.NewCursor.%pattern_type.loc10_18 (%pattern_type.dcd) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %return.patt: @IntRange.as.Iterate.impl.NewCursor.%pattern_type.loc10_32 (%pattern_type.8963eb.1) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @IntRange.as.Iterate.impl.NewCursor.%pattern_type.loc10_32 (%pattern_type.8963eb.1) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %Int.ref: %Int.type = name_ref Int, imports.%Core.Int [concrete = constants.%Int.generic] // CHECK:STDOUT: %N.ref: Core.IntLiteral = name_ref N, @IntRange.%N.loc4_16.2 [symbolic = %N (constants.%N)] -// CHECK:STDOUT: %Int.loc10_45.1: type = class_type @Int, @Int(constants.%N) [symbolic = %Int.loc10_45.2 (constants.%Int.49d0e6.1)] -// CHECK:STDOUT: %self.param: @NewCursor.loc10.%IntRange (%IntRange.349) = value_param call_param0 +// CHECK:STDOUT: %Int.loc10_45.2: type = class_type @Int, @Int(constants.%N) [symbolic = %Int.loc10_45.1 (constants.%Int.49d0e6.1)] +// CHECK:STDOUT: %self.param: @IntRange.as.Iterate.impl.NewCursor.%IntRange (%IntRange.349) = value_param call_param0 // CHECK:STDOUT: %.loc10_24.1: type = splice_block %Self.ref [symbolic = %IntRange (constants.%IntRange.349)] { // CHECK:STDOUT: %.loc10_24.2: type = specific_constant constants.%IntRange.349, @IntRange(constants.%N) [symbolic = %IntRange (constants.%IntRange.349)] // CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc10_24.2 [symbolic = %IntRange (constants.%IntRange.349)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @NewCursor.loc10.%IntRange (%IntRange.349) = bind_name self, %self.param -// CHECK:STDOUT: %return.param: ref @NewCursor.loc10.%Int.loc10_45.2 (%Int.49d0e6.1) = out_param call_param1 -// CHECK:STDOUT: %return: ref @NewCursor.loc10.%Int.loc10_45.2 (%Int.49d0e6.1) = return_slot %return.param +// CHECK:STDOUT: %self: @IntRange.as.Iterate.impl.NewCursor.%IntRange (%IntRange.349) = bind_name self, %self.param +// CHECK:STDOUT: %return.param: ref @IntRange.as.Iterate.impl.NewCursor.%Int.loc10_45.1 (%Int.49d0e6.1) = out_param call_param1 +// CHECK:STDOUT: %return: ref @IntRange.as.Iterate.impl.NewCursor.%Int.loc10_45.1 (%Int.49d0e6.1) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %Next.decl: @Iterate.impl.%Next.type (%Next.type.2c8) = fn_decl @Next.loc11 [symbolic = @Iterate.impl.%Next (constants.%Next.259)] { -// CHECK:STDOUT: %self.patt: @Next.loc11.%pattern_type.loc11_13 (%pattern_type.dcd) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @Next.loc11.%pattern_type.loc11_13 (%pattern_type.dcd) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %cursor.patt: @Next.loc11.%pattern_type.loc11_25 (%pattern_type.4dc) = binding_pattern cursor [concrete] -// CHECK:STDOUT: %cursor.param_patt: @Next.loc11.%pattern_type.loc11_25 (%pattern_type.4dc) = value_param_pattern %cursor.patt, call_param1 [concrete] -// CHECK:STDOUT: %return.patt: @Next.loc11.%pattern_type.loc11_47 (%pattern_type.4b1) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @Next.loc11.%pattern_type.loc11_47 (%pattern_type.4b1) = out_param_pattern %return.patt, call_param2 [concrete] +// CHECK:STDOUT: %IntRange.as.Iterate.impl.Next.decl: @IntRange.as.Iterate.impl.%IntRange.as.Iterate.impl.Next.type (%IntRange.as.Iterate.impl.Next.type) = fn_decl @IntRange.as.Iterate.impl.Next [symbolic = @IntRange.as.Iterate.impl.%IntRange.as.Iterate.impl.Next (constants.%IntRange.as.Iterate.impl.Next)] { +// CHECK:STDOUT: %self.patt: @IntRange.as.Iterate.impl.Next.%pattern_type.loc11_13 (%pattern_type.dcd) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @IntRange.as.Iterate.impl.Next.%pattern_type.loc11_13 (%pattern_type.dcd) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %cursor.patt: @IntRange.as.Iterate.impl.Next.%pattern_type.loc11_25 (%pattern_type.4dc) = binding_pattern cursor [concrete] +// CHECK:STDOUT: %cursor.param_patt: @IntRange.as.Iterate.impl.Next.%pattern_type.loc11_25 (%pattern_type.4dc) = value_param_pattern %cursor.patt, call_param1 [concrete] +// CHECK:STDOUT: %return.patt: @IntRange.as.Iterate.impl.Next.%pattern_type.loc11_47 (%pattern_type.4b1) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @IntRange.as.Iterate.impl.Next.%pattern_type.loc11_47 (%pattern_type.4b1) = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Core.ref.loc11_50: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %Optional.ref.loc11: %Optional.type = name_ref Optional, imports.%Core.Optional [concrete = constants.%Optional.generic] // CHECK:STDOUT: %Core.ref.loc11_64: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %Int.ref.loc11_68: %Int.type = name_ref Int, imports.%Core.Int [concrete = constants.%Int.generic] // CHECK:STDOUT: %N.ref.loc11_73: Core.IntLiteral = name_ref N, @IntRange.%N.loc4_16.2 [symbolic = %N (constants.%N)] -// CHECK:STDOUT: %Int.loc11_74: type = class_type @Int, @Int(constants.%N) [symbolic = %Int.loc11_43.2 (constants.%Int.49d0e6.1)] -// CHECK:STDOUT: %Optional.loc11_75.1: type = class_type @Optional, @Optional(constants.%Int.49d0e6.1) [symbolic = %Optional.loc11_75.2 (constants.%Optional.708)] -// CHECK:STDOUT: %self.param: @Next.loc11.%IntRange (%IntRange.349) = value_param call_param0 +// CHECK:STDOUT: %Int.loc11_74: type = class_type @Int, @Int(constants.%N) [symbolic = %Int.loc11_43.1 (constants.%Int.49d0e6.1)] +// CHECK:STDOUT: %Optional.loc11_75.2: type = class_type @Optional, @Optional(constants.%Int.49d0e6.1) [symbolic = %Optional.loc11_75.1 (constants.%Optional.708)] +// CHECK:STDOUT: %self.param: @IntRange.as.Iterate.impl.Next.%IntRange (%IntRange.349) = value_param call_param0 // CHECK:STDOUT: %.loc11_19.1: type = splice_block %Self.ref [symbolic = %IntRange (constants.%IntRange.349)] { // CHECK:STDOUT: %.loc11_19.2: type = specific_constant constants.%IntRange.349, @IntRange(constants.%N) [symbolic = %IntRange (constants.%IntRange.349)] // CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc11_19.2 [symbolic = %IntRange (constants.%IntRange.349)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @Next.loc11.%IntRange (%IntRange.349) = bind_name self, %self.param -// CHECK:STDOUT: %cursor.param: @Next.loc11.%ptr.loc11_44.2 (%ptr.784) = value_param call_param1 -// CHECK:STDOUT: %.loc11_44: type = splice_block %ptr.loc11_44.1 [symbolic = %ptr.loc11_44.2 (constants.%ptr.784)] { +// CHECK:STDOUT: %self: @IntRange.as.Iterate.impl.Next.%IntRange (%IntRange.349) = bind_name self, %self.param +// CHECK:STDOUT: %cursor.param: @IntRange.as.Iterate.impl.Next.%ptr.loc11_44.1 (%ptr.784) = value_param call_param1 +// CHECK:STDOUT: %.loc11_44: type = splice_block %ptr.loc11_44.2 [symbolic = %ptr.loc11_44.1 (constants.%ptr.784)] { // CHECK:STDOUT: %Core.ref.loc11_33: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %Int.ref.loc11_37: %Int.type = name_ref Int, imports.%Core.Int [concrete = constants.%Int.generic] // CHECK:STDOUT: %N.ref.loc11_42: Core.IntLiteral = name_ref N, @IntRange.%N.loc4_16.2 [symbolic = %N (constants.%N)] -// CHECK:STDOUT: %Int.loc11_43.1: type = class_type @Int, @Int(constants.%N) [symbolic = %Int.loc11_43.2 (constants.%Int.49d0e6.1)] -// CHECK:STDOUT: %ptr.loc11_44.1: type = ptr_type %Int.loc11_43.1 [symbolic = %ptr.loc11_44.2 (constants.%ptr.784)] +// CHECK:STDOUT: %Int.loc11_43.2: type = class_type @Int, @Int(constants.%N) [symbolic = %Int.loc11_43.1 (constants.%Int.49d0e6.1)] +// CHECK:STDOUT: %ptr.loc11_44.2: type = ptr_type %Int.loc11_43.2 [symbolic = %ptr.loc11_44.1 (constants.%ptr.784)] // CHECK:STDOUT: } -// CHECK:STDOUT: %cursor: @Next.loc11.%ptr.loc11_44.2 (%ptr.784) = bind_name cursor, %cursor.param -// CHECK:STDOUT: %return.param: ref @Next.loc11.%Optional.loc11_75.2 (%Optional.708) = out_param call_param2 -// CHECK:STDOUT: %return: ref @Next.loc11.%Optional.loc11_75.2 (%Optional.708) = return_slot %return.param +// CHECK:STDOUT: %cursor: @IntRange.as.Iterate.impl.Next.%ptr.loc11_44.1 (%ptr.784) = bind_name cursor, %cursor.param +// CHECK:STDOUT: %return.param: ref @IntRange.as.Iterate.impl.Next.%Optional.loc11_75.1 (%Optional.708) = out_param call_param2 +// CHECK:STDOUT: %return: ref @IntRange.as.Iterate.impl.Next.%Optional.loc11_75.1 (%Optional.708) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .N = -// CHECK:STDOUT: .NewCursor = %NewCursor.decl -// CHECK:STDOUT: .Next = %Next.decl +// CHECK:STDOUT: .NewCursor = %IntRange.as.Iterate.impl.NewCursor.decl +// CHECK:STDOUT: .Next = %IntRange.as.Iterate.impl.Next.decl // CHECK:STDOUT: witness = @IntRange.%Iterate.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -350,8 +350,8 @@ fn Read() { // CHECK:STDOUT: %N.loc4_16.1: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N.loc4_16.1 (constants.%N)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Make.type: type = fn_type @Make, @IntRange(%N.loc4_16.1) [symbolic = %Make.type (constants.%Make.type.51f)] -// CHECK:STDOUT: %Make: @IntRange.%Make.type (%Make.type.51f) = struct_value () [symbolic = %Make (constants.%Make.2ec)] +// CHECK:STDOUT: %IntRange.Make.type: type = fn_type @IntRange.Make, @IntRange(%N.loc4_16.1) [symbolic = %IntRange.Make.type (constants.%IntRange.Make.type.51f)] +// CHECK:STDOUT: %IntRange.Make: @IntRange.%IntRange.Make.type (%IntRange.Make.type.51f) = struct_value () [symbolic = %IntRange.Make (constants.%IntRange.Make.2ec)] // CHECK:STDOUT: %Int.loc22_32.2: type = class_type @Int, @Int(%N.loc4_16.1) [symbolic = %Int.loc22_32.2 (constants.%Int.49d0e6.1)] // CHECK:STDOUT: %require_complete: = require_complete_type %Int.loc22_32.2 [symbolic = %require_complete (constants.%require_complete.b4f426.1)] // CHECK:STDOUT: %IntRange: type = class_type @IntRange, @IntRange(%N.loc4_16.1) [symbolic = %IntRange (constants.%IntRange.349)] @@ -360,36 +360,36 @@ fn Read() { // CHECK:STDOUT: %complete_type.loc24_1.2: = complete_type_witness %struct_type.start.end.loc24_1.2 [symbolic = %complete_type.loc24_1.2 (constants.%complete_type.9d5)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %Make.decl: @IntRange.%Make.type (%Make.type.51f) = fn_decl @Make [symbolic = @IntRange.%Make (constants.%Make.2ec)] { -// CHECK:STDOUT: %start.patt: @Make.%pattern_type.loc5_11 (%pattern_type.8963eb.1) = binding_pattern start [concrete] -// CHECK:STDOUT: %start.param_patt: @Make.%pattern_type.loc5_11 (%pattern_type.8963eb.1) = value_param_pattern %start.patt, call_param0 [concrete] -// CHECK:STDOUT: %end.patt: @Make.%pattern_type.loc5_11 (%pattern_type.8963eb.1) = binding_pattern end [concrete] -// CHECK:STDOUT: %end.param_patt: @Make.%pattern_type.loc5_11 (%pattern_type.8963eb.1) = value_param_pattern %end.patt, call_param1 [concrete] -// CHECK:STDOUT: %return.patt: @Make.%pattern_type.loc5_49 (%pattern_type.dcd) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @Make.%pattern_type.loc5_49 (%pattern_type.dcd) = out_param_pattern %return.patt, call_param2 [concrete] +// CHECK:STDOUT: %IntRange.Make.decl: @IntRange.%IntRange.Make.type (%IntRange.Make.type.51f) = fn_decl @IntRange.Make [symbolic = @IntRange.%IntRange.Make (constants.%IntRange.Make.2ec)] { +// CHECK:STDOUT: %start.patt: @IntRange.Make.%pattern_type.loc5_11 (%pattern_type.8963eb.1) = binding_pattern start [concrete] +// CHECK:STDOUT: %start.param_patt: @IntRange.Make.%pattern_type.loc5_11 (%pattern_type.8963eb.1) = value_param_pattern %start.patt, call_param0 [concrete] +// CHECK:STDOUT: %end.patt: @IntRange.Make.%pattern_type.loc5_11 (%pattern_type.8963eb.1) = binding_pattern end [concrete] +// CHECK:STDOUT: %end.param_patt: @IntRange.Make.%pattern_type.loc5_11 (%pattern_type.8963eb.1) = value_param_pattern %end.patt, call_param1 [concrete] +// CHECK:STDOUT: %return.patt: @IntRange.Make.%pattern_type.loc5_49 (%pattern_type.dcd) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @IntRange.Make.%pattern_type.loc5_49 (%pattern_type.dcd) = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc5_52: type = specific_constant constants.%IntRange.349, @IntRange(constants.%N) [symbolic = %IntRange (constants.%IntRange.349)] // CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc5_52 [symbolic = %IntRange (constants.%IntRange.349)] -// CHECK:STDOUT: %start.param: @Make.%Int.loc5_28.2 (%Int.49d0e6.1) = value_param call_param0 -// CHECK:STDOUT: %.loc5_28: type = splice_block %Int.loc5_28.1 [symbolic = %Int.loc5_28.2 (constants.%Int.49d0e6.1)] { +// CHECK:STDOUT: %start.param: @IntRange.Make.%Int.loc5_28.1 (%Int.49d0e6.1) = value_param call_param0 +// CHECK:STDOUT: %.loc5_28: type = splice_block %Int.loc5_28.2 [symbolic = %Int.loc5_28.1 (constants.%Int.49d0e6.1)] { // CHECK:STDOUT: %Core.ref.loc5_18: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %Int.ref.loc5_22: %Int.type = name_ref Int, imports.%Core.Int [concrete = constants.%Int.generic] // CHECK:STDOUT: %N.ref.loc5_27: Core.IntLiteral = name_ref N, @IntRange.%N.loc4_16.2 [symbolic = %N (constants.%N)] -// CHECK:STDOUT: %Int.loc5_28.1: type = class_type @Int, @Int(constants.%N) [symbolic = %Int.loc5_28.2 (constants.%Int.49d0e6.1)] +// CHECK:STDOUT: %Int.loc5_28.2: type = class_type @Int, @Int(constants.%N) [symbolic = %Int.loc5_28.1 (constants.%Int.49d0e6.1)] // CHECK:STDOUT: } -// CHECK:STDOUT: %start: @Make.%Int.loc5_28.2 (%Int.49d0e6.1) = bind_name start, %start.param -// CHECK:STDOUT: %end.param: @Make.%Int.loc5_28.2 (%Int.49d0e6.1) = value_param call_param1 -// CHECK:STDOUT: %.loc5_46: type = splice_block %Int.loc5_46 [symbolic = %Int.loc5_28.2 (constants.%Int.49d0e6.1)] { +// CHECK:STDOUT: %start: @IntRange.Make.%Int.loc5_28.1 (%Int.49d0e6.1) = bind_name start, %start.param +// CHECK:STDOUT: %end.param: @IntRange.Make.%Int.loc5_28.1 (%Int.49d0e6.1) = value_param call_param1 +// CHECK:STDOUT: %.loc5_46: type = splice_block %Int.loc5_46 [symbolic = %Int.loc5_28.1 (constants.%Int.49d0e6.1)] { // CHECK:STDOUT: %Core.ref.loc5_36: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %Int.ref.loc5_40: %Int.type = name_ref Int, imports.%Core.Int [concrete = constants.%Int.generic] // CHECK:STDOUT: %N.ref.loc5_45: Core.IntLiteral = name_ref N, @IntRange.%N.loc4_16.2 [symbolic = %N (constants.%N)] -// CHECK:STDOUT: %Int.loc5_46: type = class_type @Int, @Int(constants.%N) [symbolic = %Int.loc5_28.2 (constants.%Int.49d0e6.1)] +// CHECK:STDOUT: %Int.loc5_46: type = class_type @Int, @Int(constants.%N) [symbolic = %Int.loc5_28.1 (constants.%Int.49d0e6.1)] // CHECK:STDOUT: } -// CHECK:STDOUT: %end: @Make.%Int.loc5_28.2 (%Int.49d0e6.1) = bind_name end, %end.param -// CHECK:STDOUT: %return.param: ref @Make.%IntRange (%IntRange.349) = out_param call_param2 -// CHECK:STDOUT: %return: ref @Make.%IntRange (%IntRange.349) = return_slot %return.param +// CHECK:STDOUT: %end: @IntRange.Make.%Int.loc5_28.1 (%Int.49d0e6.1) = bind_name end, %end.param +// CHECK:STDOUT: %return.param: ref @IntRange.Make.%IntRange (%IntRange.349) = out_param call_param2 +// CHECK:STDOUT: %return: ref @IntRange.Make.%IntRange (%IntRange.349) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: impl_decl @Iterate.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @IntRange.as.Iterate.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%IntRange.349 [symbolic = %IntRange (constants.%IntRange.349)] // CHECK:STDOUT: %Core.ref.loc9_11: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %Iterate.ref: type = name_ref Iterate, imports.%Core.Iterate [concrete = constants.%Iterate.type] @@ -402,7 +402,7 @@ fn Read() { // CHECK:STDOUT: %Core.ref.loc9_44: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %Int.ref.loc9_48: %Int.type = name_ref Int, imports.%Core.Int [concrete = constants.%Int.generic] // CHECK:STDOUT: %N.ref.loc9_53: Core.IntLiteral = name_ref N, @IntRange.%N.loc4_16.2 [symbolic = %N (constants.%N)] -// CHECK:STDOUT: %Int.loc9_54.1: type = class_type @Int, @Int(constants.%N) [symbolic = %Int.loc9_54.2 (constants.%Int.49d0e6.1)] +// CHECK:STDOUT: %Int.loc9_54.2: type = class_type @Int, @Int(constants.%N) [symbolic = %Int.loc9_54.1 (constants.%Int.49d0e6.1)] // CHECK:STDOUT: %.Self.ref.loc9_60: %Iterate.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self.ef1] // CHECK:STDOUT: %ElementType.ref: %Iterate.assoc_type = name_ref ElementType, imports.%Core.import_ref.1c9 [concrete = constants.%assoc0.724] // CHECK:STDOUT: %.Self.as_type.loc9_60: type = facet_access_type %.Self.ref.loc9_60 [symbolic_self = constants.%.Self.as_type.935] @@ -411,16 +411,16 @@ fn Read() { // CHECK:STDOUT: %Core.ref.loc9_75: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %Int.ref.loc9_79: %Int.type = name_ref Int, imports.%Core.Int [concrete = constants.%Int.generic] // CHECK:STDOUT: %N.ref.loc9_84: Core.IntLiteral = name_ref N, @IntRange.%N.loc4_16.2 [symbolic = %N (constants.%N)] -// CHECK:STDOUT: %Int.loc9_85: type = class_type @Int, @Int(constants.%N) [symbolic = %Int.loc9_54.2 (constants.%Int.49d0e6.1)] +// CHECK:STDOUT: %Int.loc9_85: type = class_type @Int, @Int(constants.%N) [symbolic = %Int.loc9_54.1 (constants.%Int.49d0e6.1)] // CHECK:STDOUT: %.loc9_24: type = where_expr %.Self [symbolic = %Iterate_where.type (constants.%Iterate_where.type)] { -// CHECK:STDOUT: requirement_rewrite %impl.elem1, %Int.loc9_54.1 +// CHECK:STDOUT: requirement_rewrite %impl.elem1, %Int.loc9_54.2 // CHECK:STDOUT: requirement_rewrite %impl.elem0, %Int.loc9_85 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %Iterate.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant.loc9_87.2, %impl_witness_assoc_constant.loc9_87.1, @Iterate.impl.%NewCursor.decl, @Iterate.impl.%Next.decl), @Iterate.impl [concrete] -// CHECK:STDOUT: %Iterate.impl_witness: = impl_witness %Iterate.impl_witness_table, @Iterate.impl(constants.%N) [symbolic = @Iterate.impl.%Iterate.impl_witness (constants.%Iterate.impl_witness)] -// CHECK:STDOUT: %impl_witness_assoc_constant.loc9_87.1: type = impl_witness_assoc_constant constants.%Int.49d0e6.1 [symbolic = @Iterate.impl.%Int.loc9_54.2 (constants.%Int.49d0e6.1)] -// CHECK:STDOUT: %impl_witness_assoc_constant.loc9_87.2: type = impl_witness_assoc_constant constants.%Int.49d0e6.1 [symbolic = @Iterate.impl.%Int.loc9_54.2 (constants.%Int.49d0e6.1)] +// CHECK:STDOUT: %Iterate.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant.loc9_87.2, %impl_witness_assoc_constant.loc9_87.1, @IntRange.as.Iterate.impl.%IntRange.as.Iterate.impl.NewCursor.decl, @IntRange.as.Iterate.impl.%IntRange.as.Iterate.impl.Next.decl), @IntRange.as.Iterate.impl [concrete] +// CHECK:STDOUT: %Iterate.impl_witness: = impl_witness %Iterate.impl_witness_table, @IntRange.as.Iterate.impl(constants.%N) [symbolic = @IntRange.as.Iterate.impl.%Iterate.impl_witness (constants.%Iterate.impl_witness)] +// CHECK:STDOUT: %impl_witness_assoc_constant.loc9_87.1: type = impl_witness_assoc_constant constants.%Int.49d0e6.1 [symbolic = @IntRange.as.Iterate.impl.%Int.loc9_54.1 (constants.%Int.49d0e6.1)] +// CHECK:STDOUT: %impl_witness_assoc_constant.loc9_87.2: type = impl_witness_assoc_constant constants.%Int.49d0e6.1 [symbolic = @IntRange.as.Iterate.impl.%Int.loc9_54.1 (constants.%Int.49d0e6.1)] // CHECK:STDOUT: %Core.ref.loc22: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %Int.ref.loc22: %Int.type = name_ref Int, imports.%Core.Int [concrete = constants.%Int.generic] // CHECK:STDOUT: %N.ref.loc22: Core.IntLiteral = name_ref N, %N.loc4_16.2 [symbolic = %N.loc4_16.1 (constants.%N)] @@ -438,185 +438,185 @@ fn Read() { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%IntRange.349 // CHECK:STDOUT: .N = -// CHECK:STDOUT: .Make = %Make.decl +// CHECK:STDOUT: .Make = %IntRange.Make.decl // CHECK:STDOUT: .start [private] = %.loc22 // CHECK:STDOUT: .end [private] = %.loc23 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Make(@IntRange.%N.loc4_16.2: Core.IntLiteral) { +// CHECK:STDOUT: generic fn @IntRange.Make(@IntRange.%N.loc4_16.2: Core.IntLiteral) { // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)] -// CHECK:STDOUT: %Int.loc5_28.2: type = class_type @Int, @Int(%N) [symbolic = %Int.loc5_28.2 (constants.%Int.49d0e6.1)] -// CHECK:STDOUT: %pattern_type.loc5_11: type = pattern_type %Int.loc5_28.2 [symbolic = %pattern_type.loc5_11 (constants.%pattern_type.8963eb.1)] +// CHECK:STDOUT: %Int.loc5_28.1: type = class_type @Int, @Int(%N) [symbolic = %Int.loc5_28.1 (constants.%Int.49d0e6.1)] +// CHECK:STDOUT: %pattern_type.loc5_11: type = pattern_type %Int.loc5_28.1 [symbolic = %pattern_type.loc5_11 (constants.%pattern_type.8963eb.1)] // CHECK:STDOUT: %IntRange: type = class_type @IntRange, @IntRange(%N) [symbolic = %IntRange (constants.%IntRange.349)] // CHECK:STDOUT: %pattern_type.loc5_49: type = pattern_type %IntRange [symbolic = %pattern_type.loc5_49 (constants.%pattern_type.dcd)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete.loc5_49: = require_complete_type %IntRange [symbolic = %require_complete.loc5_49 (constants.%require_complete.524)] -// CHECK:STDOUT: %require_complete.loc5_16: = require_complete_type %Int.loc5_28.2 [symbolic = %require_complete.loc5_16 (constants.%require_complete.b4f426.1)] -// CHECK:STDOUT: %struct_type.start.end: type = struct_type {.start: @Make.%Int.loc5_28.2 (%Int.49d0e6.1), .end: @Make.%Int.loc5_28.2 (%Int.49d0e6.1)} [symbolic = %struct_type.start.end (constants.%struct_type.start.end.78d)] +// CHECK:STDOUT: %require_complete.loc5_16: = require_complete_type %Int.loc5_28.1 [symbolic = %require_complete.loc5_16 (constants.%require_complete.b4f426.1)] +// CHECK:STDOUT: %struct_type.start.end: type = struct_type {.start: @IntRange.Make.%Int.loc5_28.1 (%Int.49d0e6.1), .end: @IntRange.Make.%Int.loc5_28.1 (%Int.49d0e6.1)} [symbolic = %struct_type.start.end (constants.%struct_type.start.end.78d)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%start.param: @Make.%Int.loc5_28.2 (%Int.49d0e6.1), %end.param: @Make.%Int.loc5_28.2 (%Int.49d0e6.1)) -> %return.param: @Make.%IntRange (%IntRange.349) { +// CHECK:STDOUT: fn(%start.param: @IntRange.Make.%Int.loc5_28.1 (%Int.49d0e6.1), %end.param: @IntRange.Make.%Int.loc5_28.1 (%Int.49d0e6.1)) -> %return.param: @IntRange.Make.%IntRange (%IntRange.349) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %start.ref: @Make.%Int.loc5_28.2 (%Int.49d0e6.1) = name_ref start, %start -// CHECK:STDOUT: %end.ref: @Make.%Int.loc5_28.2 (%Int.49d0e6.1) = name_ref end, %end -// CHECK:STDOUT: %.loc6_39.1: @Make.%struct_type.start.end (%struct_type.start.end.78d) = struct_literal (%start.ref, %end.ref) -// CHECK:STDOUT: %.loc6_39.2: ref @Make.%Int.loc5_28.2 (%Int.49d0e6.1) = class_element_access %return, element0 -// CHECK:STDOUT: %.loc6_39.3: init @Make.%Int.loc5_28.2 (%Int.49d0e6.1) = initialize_from %start.ref to %.loc6_39.2 -// CHECK:STDOUT: %.loc6_39.4: ref @Make.%Int.loc5_28.2 (%Int.49d0e6.1) = class_element_access %return, element1 -// CHECK:STDOUT: %.loc6_39.5: init @Make.%Int.loc5_28.2 (%Int.49d0e6.1) = initialize_from %end.ref to %.loc6_39.4 -// CHECK:STDOUT: %.loc6_39.6: init @Make.%IntRange (%IntRange.349) = class_init (%.loc6_39.3, %.loc6_39.5), %return -// CHECK:STDOUT: %.loc6_40: init @Make.%IntRange (%IntRange.349) = converted %.loc6_39.1, %.loc6_39.6 +// CHECK:STDOUT: %start.ref: @IntRange.Make.%Int.loc5_28.1 (%Int.49d0e6.1) = name_ref start, %start +// CHECK:STDOUT: %end.ref: @IntRange.Make.%Int.loc5_28.1 (%Int.49d0e6.1) = name_ref end, %end +// CHECK:STDOUT: %.loc6_39.1: @IntRange.Make.%struct_type.start.end (%struct_type.start.end.78d) = struct_literal (%start.ref, %end.ref) +// CHECK:STDOUT: %.loc6_39.2: ref @IntRange.Make.%Int.loc5_28.1 (%Int.49d0e6.1) = class_element_access %return, element0 +// CHECK:STDOUT: %.loc6_39.3: init @IntRange.Make.%Int.loc5_28.1 (%Int.49d0e6.1) = initialize_from %start.ref to %.loc6_39.2 +// CHECK:STDOUT: %.loc6_39.4: ref @IntRange.Make.%Int.loc5_28.1 (%Int.49d0e6.1) = class_element_access %return, element1 +// CHECK:STDOUT: %.loc6_39.5: init @IntRange.Make.%Int.loc5_28.1 (%Int.49d0e6.1) = initialize_from %end.ref to %.loc6_39.4 +// CHECK:STDOUT: %.loc6_39.6: init @IntRange.Make.%IntRange (%IntRange.349) = class_init (%.loc6_39.3, %.loc6_39.5), %return +// CHECK:STDOUT: %.loc6_40: init @IntRange.Make.%IntRange (%IntRange.349) = converted %.loc6_39.1, %.loc6_39.6 // CHECK:STDOUT: return %.loc6_40 to %return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @NewCursor.loc10(@IntRange.%N.loc4_16.2: Core.IntLiteral) { +// CHECK:STDOUT: generic fn @IntRange.as.Iterate.impl.NewCursor(@IntRange.%N.loc4_16.2: Core.IntLiteral) { // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)] // CHECK:STDOUT: %IntRange: type = class_type @IntRange, @IntRange(%N) [symbolic = %IntRange (constants.%IntRange.349)] // CHECK:STDOUT: %pattern_type.loc10_18: type = pattern_type %IntRange [symbolic = %pattern_type.loc10_18 (constants.%pattern_type.dcd)] -// CHECK:STDOUT: %Int.loc10_45.2: type = class_type @Int, @Int(%N) [symbolic = %Int.loc10_45.2 (constants.%Int.49d0e6.1)] -// CHECK:STDOUT: %pattern_type.loc10_32: type = pattern_type %Int.loc10_45.2 [symbolic = %pattern_type.loc10_32 (constants.%pattern_type.8963eb.1)] +// CHECK:STDOUT: %Int.loc10_45.1: type = class_type @Int, @Int(%N) [symbolic = %Int.loc10_45.1 (constants.%Int.49d0e6.1)] +// CHECK:STDOUT: %pattern_type.loc10_32: type = pattern_type %Int.loc10_45.1 [symbolic = %pattern_type.loc10_32 (constants.%pattern_type.8963eb.1)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete.loc10_22: = require_complete_type %IntRange [symbolic = %require_complete.loc10_22 (constants.%require_complete.524)] -// CHECK:STDOUT: %IntRange.elem: type = unbound_element_type %IntRange, %Int.loc10_45.2 [symbolic = %IntRange.elem (constants.%IntRange.elem.e7c)] -// CHECK:STDOUT: %require_complete.loc10_60: = require_complete_type %Int.loc10_45.2 [symbolic = %require_complete.loc10_60 (constants.%require_complete.b4f426.1)] +// CHECK:STDOUT: %IntRange.elem: type = unbound_element_type %IntRange, %Int.loc10_45.1 [symbolic = %IntRange.elem (constants.%IntRange.elem.e7c)] +// CHECK:STDOUT: %require_complete.loc10_60: = require_complete_type %Int.loc10_45.1 [symbolic = %require_complete.loc10_60 (constants.%require_complete.b4f426.1)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @NewCursor.loc10.%IntRange (%IntRange.349)) -> @NewCursor.loc10.%Int.loc10_45.2 (%Int.49d0e6.1) { +// CHECK:STDOUT: fn(%self.param: @IntRange.as.Iterate.impl.NewCursor.%IntRange (%IntRange.349)) -> @IntRange.as.Iterate.impl.NewCursor.%Int.loc10_45.1 (%Int.49d0e6.1) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %self.ref: @NewCursor.loc10.%IntRange (%IntRange.349) = name_ref self, %self -// CHECK:STDOUT: %start.ref: @NewCursor.loc10.%IntRange.elem (%IntRange.elem.e7c) = name_ref start, @IntRange.%.loc22 [concrete = @IntRange.%.loc22] -// CHECK:STDOUT: %.loc10_60.1: ref @NewCursor.loc10.%Int.loc10_45.2 (%Int.49d0e6.1) = class_element_access %self.ref, element0 -// CHECK:STDOUT: %.loc10_60.2: @NewCursor.loc10.%Int.loc10_45.2 (%Int.49d0e6.1) = bind_value %.loc10_60.1 +// CHECK:STDOUT: %self.ref: @IntRange.as.Iterate.impl.NewCursor.%IntRange (%IntRange.349) = name_ref self, %self +// CHECK:STDOUT: %start.ref: @IntRange.as.Iterate.impl.NewCursor.%IntRange.elem (%IntRange.elem.e7c) = name_ref start, @IntRange.%.loc22 [concrete = @IntRange.%.loc22] +// CHECK:STDOUT: %.loc10_60.1: ref @IntRange.as.Iterate.impl.NewCursor.%Int.loc10_45.1 (%Int.49d0e6.1) = class_element_access %self.ref, element0 +// CHECK:STDOUT: %.loc10_60.2: @IntRange.as.Iterate.impl.NewCursor.%Int.loc10_45.1 (%Int.49d0e6.1) = bind_value %.loc10_60.1 // CHECK:STDOUT: return %.loc10_60.2 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Next.loc11(@IntRange.%N.loc4_16.2: Core.IntLiteral) { +// CHECK:STDOUT: generic fn @IntRange.as.Iterate.impl.Next(@IntRange.%N.loc4_16.2: Core.IntLiteral) { // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)] // CHECK:STDOUT: %IntRange: type = class_type @IntRange, @IntRange(%N) [symbolic = %IntRange (constants.%IntRange.349)] // CHECK:STDOUT: %pattern_type.loc11_13: type = pattern_type %IntRange [symbolic = %pattern_type.loc11_13 (constants.%pattern_type.dcd)] -// CHECK:STDOUT: %Int.loc11_43.2: type = class_type @Int, @Int(%N) [symbolic = %Int.loc11_43.2 (constants.%Int.49d0e6.1)] -// CHECK:STDOUT: %ptr.loc11_44.2: type = ptr_type %Int.loc11_43.2 [symbolic = %ptr.loc11_44.2 (constants.%ptr.784)] -// CHECK:STDOUT: %pattern_type.loc11_25: type = pattern_type %ptr.loc11_44.2 [symbolic = %pattern_type.loc11_25 (constants.%pattern_type.4dc)] -// CHECK:STDOUT: %Optional.loc11_75.2: type = class_type @Optional, @Optional(%Int.loc11_43.2) [symbolic = %Optional.loc11_75.2 (constants.%Optional.708)] -// CHECK:STDOUT: %pattern_type.loc11_47: type = pattern_type %Optional.loc11_75.2 [symbolic = %pattern_type.loc11_47 (constants.%pattern_type.4b1)] +// CHECK:STDOUT: %Int.loc11_43.1: type = class_type @Int, @Int(%N) [symbolic = %Int.loc11_43.1 (constants.%Int.49d0e6.1)] +// CHECK:STDOUT: %ptr.loc11_44.1: type = ptr_type %Int.loc11_43.1 [symbolic = %ptr.loc11_44.1 (constants.%ptr.784)] +// CHECK:STDOUT: %pattern_type.loc11_25: type = pattern_type %ptr.loc11_44.1 [symbolic = %pattern_type.loc11_25 (constants.%pattern_type.4dc)] +// CHECK:STDOUT: %Optional.loc11_75.1: type = class_type @Optional, @Optional(%Int.loc11_43.1) [symbolic = %Optional.loc11_75.1 (constants.%Optional.708)] +// CHECK:STDOUT: %pattern_type.loc11_47: type = pattern_type %Optional.loc11_75.1 [symbolic = %pattern_type.loc11_47 (constants.%pattern_type.4b1)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc11_47.1: = require_complete_type %Optional.loc11_75.2 [symbolic = %require_complete.loc11_47.1 (constants.%require_complete.b74)] +// CHECK:STDOUT: %require_complete.loc11_47.1: = require_complete_type %Optional.loc11_75.1 [symbolic = %require_complete.loc11_47.1 (constants.%require_complete.b74)] // CHECK:STDOUT: %require_complete.loc11_17: = require_complete_type %IntRange [symbolic = %require_complete.loc11_17 (constants.%require_complete.524)] -// CHECK:STDOUT: %require_complete.loc11_31: = require_complete_type %ptr.loc11_44.2 [symbolic = %require_complete.loc11_31 (constants.%require_complete.0f5)] -// CHECK:STDOUT: %require_complete.loc12: = require_complete_type %Int.loc11_43.2 [symbolic = %require_complete.loc12 (constants.%require_complete.b4f426.1)] -// CHECK:STDOUT: %pattern_type.loc12: type = pattern_type %Int.loc11_43.2 [symbolic = %pattern_type.loc12 (constants.%pattern_type.8963eb.1)] -// CHECK:STDOUT: %IntRange.elem: type = unbound_element_type %IntRange, %Int.loc11_43.2 [symbolic = %IntRange.elem (constants.%IntRange.elem.e7c)] -// CHECK:STDOUT: %OrderedWith.type.loc13_17.2: type = facet_type <@OrderedWith, @OrderedWith(%Int.loc11_43.2)> [symbolic = %OrderedWith.type.loc13_17.2 (constants.%OrderedWith.type.872)] +// CHECK:STDOUT: %require_complete.loc11_31: = require_complete_type %ptr.loc11_44.1 [symbolic = %require_complete.loc11_31 (constants.%require_complete.0f5)] +// CHECK:STDOUT: %require_complete.loc12: = require_complete_type %Int.loc11_43.1 [symbolic = %require_complete.loc12 (constants.%require_complete.b4f426.1)] +// CHECK:STDOUT: %pattern_type.loc12: type = pattern_type %Int.loc11_43.1 [symbolic = %pattern_type.loc12 (constants.%pattern_type.8963eb.1)] +// CHECK:STDOUT: %IntRange.elem: type = unbound_element_type %IntRange, %Int.loc11_43.1 [symbolic = %IntRange.elem (constants.%IntRange.elem.e7c)] +// CHECK:STDOUT: %OrderedWith.type.loc13_17.2: type = facet_type <@OrderedWith, @OrderedWith(%Int.loc11_43.1)> [symbolic = %OrderedWith.type.loc13_17.2 (constants.%OrderedWith.type.872)] // CHECK:STDOUT: %require_complete.loc13: = require_complete_type %OrderedWith.type.loc13_17.2 [symbolic = %require_complete.loc13 (constants.%require_complete.66b6)] -// CHECK:STDOUT: %OrderedWith.assoc_type: type = assoc_entity_type @OrderedWith, @OrderedWith(%Int.loc11_43.2) [symbolic = %OrderedWith.assoc_type (constants.%OrderedWith.assoc_type.d92)] -// CHECK:STDOUT: %assoc0: @Next.loc11.%OrderedWith.assoc_type (%OrderedWith.assoc_type.d92) = assoc_entity element0, imports.%Core.import_ref.910 [symbolic = %assoc0 (constants.%assoc0.2ae)] -// CHECK:STDOUT: %OrderedWith.impl_witness: = impl_witness imports.%OrderedWith.impl_witness_table.2b2, @OrderedWith.impl.db3(%N, %N) [symbolic = %OrderedWith.impl_witness (constants.%OrderedWith.impl_witness.df5)] -// CHECK:STDOUT: %Less.type.loc13_17.1: type = fn_type @Less.1, @OrderedWith(%Int.loc11_43.2) [symbolic = %Less.type.loc13_17.1 (constants.%Less.type.8fe)] -// CHECK:STDOUT: %OrderedWith.facet: @Next.loc11.%OrderedWith.type.loc13_17.2 (%OrderedWith.type.872) = facet_value %Int.loc11_43.2, (%OrderedWith.impl_witness) [symbolic = %OrderedWith.facet (constants.%OrderedWith.facet)] -// CHECK:STDOUT: %.loc13_17.2: type = fn_type_with_self_type %Less.type.loc13_17.1, %OrderedWith.facet [symbolic = %.loc13_17.2 (constants.%.99c)] -// CHECK:STDOUT: %Less.type.loc13_17.2: type = fn_type @Less.2, @OrderedWith.impl.db3(%N, %N) [symbolic = %Less.type.loc13_17.2 (constants.%Less.type.98c)] -// CHECK:STDOUT: %Less: @Next.loc11.%Less.type.loc13_17.2 (%Less.type.98c) = struct_value () [symbolic = %Less (constants.%Less.4be)] -// CHECK:STDOUT: %Less.specific_fn: = specific_function %Less, @Less.2(%N, %N) [symbolic = %Less.specific_fn (constants.%Less.specific_fn.bb3)] -// CHECK:STDOUT: %Inc.lookup_impl_witness: = lookup_impl_witness %Int.loc11_43.2, @Inc [symbolic = %Inc.lookup_impl_witness (constants.%Inc.lookup_impl_witness)] -// CHECK:STDOUT: %Inc.facet: %Inc.type = facet_value %Int.loc11_43.2, (%Inc.lookup_impl_witness) [symbolic = %Inc.facet (constants.%Inc.facet)] -// CHECK:STDOUT: %.loc14_9.2: type = fn_type_with_self_type constants.%Op.type.e3a, %Inc.facet [symbolic = %.loc14_9.2 (constants.%.a0d)] -// CHECK:STDOUT: %impl.elem0.loc14_9.2: @Next.loc11.%.loc14_9.2 (%.a0d) = impl_witness_access %Inc.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc14_9.2 (constants.%impl.elem0.437)] -// CHECK:STDOUT: %specific_impl_fn.loc14_9.2: = specific_impl_function %impl.elem0.loc14_9.2, @Op.95(%Inc.facet) [symbolic = %specific_impl_fn.loc14_9.2 (constants.%specific_impl_fn.a5f)] -// CHECK:STDOUT: %Some.type: type = fn_type @Some, @Optional(%Int.loc11_43.2) [symbolic = %Some.type (constants.%Some.type.185)] -// CHECK:STDOUT: %Some: @Next.loc11.%Some.type (%Some.type.185) = struct_value () [symbolic = %Some (constants.%Some.58a)] -// CHECK:STDOUT: %Some.specific_fn.loc15_42.2: = specific_function %Some, @Some(%Int.loc11_43.2) [symbolic = %Some.specific_fn.loc15_42.2 (constants.%Some.specific_fn)] -// CHECK:STDOUT: %Destroy.lookup_impl_witness.loc11: = lookup_impl_witness %Optional.loc11_75.2, @Destroy [symbolic = %Destroy.lookup_impl_witness.loc11 (constants.%Destroy.lookup_impl_witness.f9d)] -// CHECK:STDOUT: %Destroy.facet.loc11: %Destroy.type = facet_value %Optional.loc11_75.2, (%Destroy.lookup_impl_witness.loc11) [symbolic = %Destroy.facet.loc11 (constants.%Destroy.facet.be9)] -// CHECK:STDOUT: %.loc11_47.6: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet.loc11 [symbolic = %.loc11_47.6 (constants.%.1ee)] -// CHECK:STDOUT: %impl.elem0.loc11_47.4: @Next.loc11.%.loc11_47.6 (%.1ee) = impl_witness_access %Destroy.lookup_impl_witness.loc11, element0 [symbolic = %impl.elem0.loc11_47.4 (constants.%impl.elem0.5fd)] -// CHECK:STDOUT: %specific_impl_fn.loc11_47.4: = specific_impl_function %impl.elem0.loc11_47.4, @Op.96(%Destroy.facet.loc11) [symbolic = %specific_impl_fn.loc11_47.4 (constants.%specific_impl_fn.79e)] -// CHECK:STDOUT: %ptr.loc11_47: type = ptr_type %Optional.loc11_75.2 [symbolic = %ptr.loc11_47 (constants.%ptr.2aa)] +// CHECK:STDOUT: %OrderedWith.assoc_type: type = assoc_entity_type @OrderedWith, @OrderedWith(%Int.loc11_43.1) [symbolic = %OrderedWith.assoc_type (constants.%OrderedWith.assoc_type.d92)] +// CHECK:STDOUT: %assoc0: @IntRange.as.Iterate.impl.Next.%OrderedWith.assoc_type (%OrderedWith.assoc_type.d92) = assoc_entity element0, imports.%Core.import_ref.910 [symbolic = %assoc0 (constants.%assoc0.2ae)] +// CHECK:STDOUT: %OrderedWith.impl_witness: = impl_witness imports.%OrderedWith.impl_witness_table.2b2, @Int.as.OrderedWith.impl.db3(%N, %N) [symbolic = %OrderedWith.impl_witness (constants.%OrderedWith.impl_witness.df5)] +// CHECK:STDOUT: %OrderedWith.Less.type: type = fn_type @OrderedWith.Less, @OrderedWith(%Int.loc11_43.1) [symbolic = %OrderedWith.Less.type (constants.%OrderedWith.Less.type.8fe)] +// CHECK:STDOUT: %OrderedWith.facet: @IntRange.as.Iterate.impl.Next.%OrderedWith.type.loc13_17.2 (%OrderedWith.type.872) = facet_value %Int.loc11_43.1, (%OrderedWith.impl_witness) [symbolic = %OrderedWith.facet (constants.%OrderedWith.facet)] +// CHECK:STDOUT: %.loc13_17.2: type = fn_type_with_self_type %OrderedWith.Less.type, %OrderedWith.facet [symbolic = %.loc13_17.2 (constants.%.99c)] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Less.type: type = fn_type @Int.as.OrderedWith.impl.Less.1, @Int.as.OrderedWith.impl.db3(%N, %N) [symbolic = %Int.as.OrderedWith.impl.Less.type (constants.%Int.as.OrderedWith.impl.Less.type.98c)] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Less: @IntRange.as.Iterate.impl.Next.%Int.as.OrderedWith.impl.Less.type (%Int.as.OrderedWith.impl.Less.type.98c) = struct_value () [symbolic = %Int.as.OrderedWith.impl.Less (constants.%Int.as.OrderedWith.impl.Less.4be)] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Less.specific_fn: = specific_function %Int.as.OrderedWith.impl.Less, @Int.as.OrderedWith.impl.Less.1(%N, %N) [symbolic = %Int.as.OrderedWith.impl.Less.specific_fn (constants.%Int.as.OrderedWith.impl.Less.specific_fn.bb3)] +// CHECK:STDOUT: %Inc.lookup_impl_witness: = lookup_impl_witness %Int.loc11_43.1, @Inc [symbolic = %Inc.lookup_impl_witness (constants.%Inc.lookup_impl_witness)] +// CHECK:STDOUT: %Inc.facet: %Inc.type = facet_value %Int.loc11_43.1, (%Inc.lookup_impl_witness) [symbolic = %Inc.facet (constants.%Inc.facet)] +// CHECK:STDOUT: %.loc14_9.2: type = fn_type_with_self_type constants.%Inc.Op.type, %Inc.facet [symbolic = %.loc14_9.2 (constants.%.a0d)] +// CHECK:STDOUT: %impl.elem0.loc14_9.2: @IntRange.as.Iterate.impl.Next.%.loc14_9.2 (%.a0d) = impl_witness_access %Inc.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc14_9.2 (constants.%impl.elem0.437)] +// CHECK:STDOUT: %specific_impl_fn.loc14_9.2: = specific_impl_function %impl.elem0.loc14_9.2, @Inc.Op(%Inc.facet) [symbolic = %specific_impl_fn.loc14_9.2 (constants.%specific_impl_fn.a5f)] +// CHECK:STDOUT: %Optional.Some.type: type = fn_type @Optional.Some, @Optional(%Int.loc11_43.1) [symbolic = %Optional.Some.type (constants.%Optional.Some.type.185)] +// CHECK:STDOUT: %Optional.Some: @IntRange.as.Iterate.impl.Next.%Optional.Some.type (%Optional.Some.type.185) = struct_value () [symbolic = %Optional.Some (constants.%Optional.Some.58a)] +// CHECK:STDOUT: %Optional.Some.specific_fn.loc15_42.2: = specific_function %Optional.Some, @Optional.Some(%Int.loc11_43.1) [symbolic = %Optional.Some.specific_fn.loc15_42.2 (constants.%Optional.Some.specific_fn)] +// CHECK:STDOUT: %Destroy.lookup_impl_witness.loc11: = lookup_impl_witness %Optional.loc11_75.1, @Destroy [symbolic = %Destroy.lookup_impl_witness.loc11 (constants.%Destroy.lookup_impl_witness.f9d)] +// CHECK:STDOUT: %Destroy.facet.loc11: %Destroy.type = facet_value %Optional.loc11_75.1, (%Destroy.lookup_impl_witness.loc11) [symbolic = %Destroy.facet.loc11 (constants.%Destroy.facet.be9)] +// CHECK:STDOUT: %.loc11_47.6: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet.loc11 [symbolic = %.loc11_47.6 (constants.%.1ee)] +// CHECK:STDOUT: %impl.elem0.loc11_47.4: @IntRange.as.Iterate.impl.Next.%.loc11_47.6 (%.1ee) = impl_witness_access %Destroy.lookup_impl_witness.loc11, element0 [symbolic = %impl.elem0.loc11_47.4 (constants.%impl.elem0.5fd)] +// CHECK:STDOUT: %specific_impl_fn.loc11_47.4: = specific_impl_function %impl.elem0.loc11_47.4, @Destroy.Op(%Destroy.facet.loc11) [symbolic = %specific_impl_fn.loc11_47.4 (constants.%specific_impl_fn.79e)] +// CHECK:STDOUT: %ptr.loc11_47: type = ptr_type %Optional.loc11_75.1 [symbolic = %ptr.loc11_47 (constants.%ptr.2aa)] // CHECK:STDOUT: %require_complete.loc11_47.2: = require_complete_type %ptr.loc11_47 [symbolic = %require_complete.loc11_47.2 (constants.%require_complete.a5e)] -// CHECK:STDOUT: %Destroy.lookup_impl_witness.loc12: = lookup_impl_witness %Int.loc11_43.2, @Destroy [symbolic = %Destroy.lookup_impl_witness.loc12 (constants.%Destroy.lookup_impl_witness.34a)] -// CHECK:STDOUT: %Destroy.facet.loc12: %Destroy.type = facet_value %Int.loc11_43.2, (%Destroy.lookup_impl_witness.loc12) [symbolic = %Destroy.facet.loc12 (constants.%Destroy.facet.13d)] -// CHECK:STDOUT: %.loc12_7.3: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet.loc12 [symbolic = %.loc12_7.3 (constants.%.bbc)] -// CHECK:STDOUT: %impl.elem0.loc12_7.3: @Next.loc11.%.loc12_7.3 (%.bbc) = impl_witness_access %Destroy.lookup_impl_witness.loc12, element0 [symbolic = %impl.elem0.loc12_7.3 (constants.%impl.elem0.fe8)] -// CHECK:STDOUT: %specific_impl_fn.loc12_7.3: = specific_impl_function %impl.elem0.loc12_7.3, @Op.96(%Destroy.facet.loc12) [symbolic = %specific_impl_fn.loc12_7.3 (constants.%specific_impl_fn.f4e)] -// CHECK:STDOUT: %None.type: type = fn_type @None, @Optional(%Int.loc11_43.2) [symbolic = %None.type (constants.%None.type.73a)] -// CHECK:STDOUT: %None: @Next.loc11.%None.type (%None.type.73a) = struct_value () [symbolic = %None (constants.%None.83e)] -// CHECK:STDOUT: %None.specific_fn.loc17_42.2: = specific_function %None, @None(%Int.loc11_43.2) [symbolic = %None.specific_fn.loc17_42.2 (constants.%None.specific_fn)] +// CHECK:STDOUT: %Destroy.lookup_impl_witness.loc12: = lookup_impl_witness %Int.loc11_43.1, @Destroy [symbolic = %Destroy.lookup_impl_witness.loc12 (constants.%Destroy.lookup_impl_witness.34a)] +// CHECK:STDOUT: %Destroy.facet.loc12: %Destroy.type = facet_value %Int.loc11_43.1, (%Destroy.lookup_impl_witness.loc12) [symbolic = %Destroy.facet.loc12 (constants.%Destroy.facet.13d)] +// CHECK:STDOUT: %.loc12_7.3: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet.loc12 [symbolic = %.loc12_7.3 (constants.%.bbc)] +// CHECK:STDOUT: %impl.elem0.loc12_7.3: @IntRange.as.Iterate.impl.Next.%.loc12_7.3 (%.bbc) = impl_witness_access %Destroy.lookup_impl_witness.loc12, element0 [symbolic = %impl.elem0.loc12_7.3 (constants.%impl.elem0.fe8)] +// CHECK:STDOUT: %specific_impl_fn.loc12_7.3: = specific_impl_function %impl.elem0.loc12_7.3, @Destroy.Op(%Destroy.facet.loc12) [symbolic = %specific_impl_fn.loc12_7.3 (constants.%specific_impl_fn.f4e)] +// CHECK:STDOUT: %Optional.None.type: type = fn_type @Optional.None, @Optional(%Int.loc11_43.1) [symbolic = %Optional.None.type (constants.%Optional.None.type.73a)] +// CHECK:STDOUT: %Optional.None: @IntRange.as.Iterate.impl.Next.%Optional.None.type (%Optional.None.type.73a) = struct_value () [symbolic = %Optional.None (constants.%Optional.None.83e)] +// CHECK:STDOUT: %Optional.None.specific_fn.loc17_42.2: = specific_function %Optional.None, @Optional.None(%Int.loc11_43.1) [symbolic = %Optional.None.specific_fn.loc17_42.2 (constants.%Optional.None.specific_fn)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @Next.loc11.%IntRange (%IntRange.349), %cursor.param: @Next.loc11.%ptr.loc11_44.2 (%ptr.784)) -> %return.param: @Next.loc11.%Optional.loc11_75.2 (%Optional.708) { +// CHECK:STDOUT: fn(%self.param: @IntRange.as.Iterate.impl.Next.%IntRange (%IntRange.349), %cursor.param: @IntRange.as.Iterate.impl.Next.%ptr.loc11_44.1 (%ptr.784)) -> %return.param: @IntRange.as.Iterate.impl.Next.%Optional.loc11_75.1 (%Optional.708) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %value.patt: @Next.loc11.%pattern_type.loc12 (%pattern_type.8963eb.1) = binding_pattern value [concrete] -// CHECK:STDOUT: %value.var_patt: @Next.loc11.%pattern_type.loc12 (%pattern_type.8963eb.1) = var_pattern %value.patt [concrete] +// CHECK:STDOUT: %value.patt: @IntRange.as.Iterate.impl.Next.%pattern_type.loc12 (%pattern_type.8963eb.1) = binding_pattern value [concrete] +// CHECK:STDOUT: %value.var_patt: @IntRange.as.Iterate.impl.Next.%pattern_type.loc12 (%pattern_type.8963eb.1) = var_pattern %value.patt [concrete] // CHECK:STDOUT: } -// CHECK:STDOUT: %value.var: ref @Next.loc11.%Int.loc11_43.2 (%Int.49d0e6.1) = var %value.var_patt -// CHECK:STDOUT: %cursor.ref.loc12: @Next.loc11.%ptr.loc11_44.2 (%ptr.784) = name_ref cursor, %cursor -// CHECK:STDOUT: %.loc12_32.1: ref @Next.loc11.%Int.loc11_43.2 (%Int.49d0e6.1) = deref %cursor.ref.loc12 -// CHECK:STDOUT: %.loc12_32.2: @Next.loc11.%Int.loc11_43.2 (%Int.49d0e6.1) = bind_value %.loc12_32.1 +// CHECK:STDOUT: %value.var: ref @IntRange.as.Iterate.impl.Next.%Int.loc11_43.1 (%Int.49d0e6.1) = var %value.var_patt +// CHECK:STDOUT: %cursor.ref.loc12: @IntRange.as.Iterate.impl.Next.%ptr.loc11_44.1 (%ptr.784) = name_ref cursor, %cursor +// CHECK:STDOUT: %.loc12_32.1: ref @IntRange.as.Iterate.impl.Next.%Int.loc11_43.1 (%Int.49d0e6.1) = deref %cursor.ref.loc12 +// CHECK:STDOUT: %.loc12_32.2: @IntRange.as.Iterate.impl.Next.%Int.loc11_43.1 (%Int.49d0e6.1) = bind_value %.loc12_32.1 // CHECK:STDOUT: assign %value.var, %.loc12_32.2 -// CHECK:STDOUT: %.loc12_28: type = splice_block %Int.loc12 [symbolic = %Int.loc11_43.2 (constants.%Int.49d0e6.1)] { +// CHECK:STDOUT: %.loc12_28: type = splice_block %Int.loc12 [symbolic = %Int.loc11_43.1 (constants.%Int.49d0e6.1)] { // CHECK:STDOUT: %Core.ref.loc12: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %Int.ref.loc12: %Int.type = name_ref Int, imports.%Core.Int [concrete = constants.%Int.generic] // CHECK:STDOUT: %N.ref.loc12: Core.IntLiteral = name_ref N, @IntRange.%N.loc4_16.2 [symbolic = %N (constants.%N)] -// CHECK:STDOUT: %Int.loc12: type = class_type @Int, @Int(constants.%N) [symbolic = %Int.loc11_43.2 (constants.%Int.49d0e6.1)] +// CHECK:STDOUT: %Int.loc12: type = class_type @Int, @Int(constants.%N) [symbolic = %Int.loc11_43.1 (constants.%Int.49d0e6.1)] // CHECK:STDOUT: } -// CHECK:STDOUT: %value: ref @Next.loc11.%Int.loc11_43.2 (%Int.49d0e6.1) = bind_name value, %value.var -// CHECK:STDOUT: %value.ref.loc13: ref @Next.loc11.%Int.loc11_43.2 (%Int.49d0e6.1) = name_ref value, %value -// CHECK:STDOUT: %self.ref: @Next.loc11.%IntRange (%IntRange.349) = name_ref self, %self -// CHECK:STDOUT: %end.ref: @Next.loc11.%IntRange.elem (%IntRange.elem.e7c) = name_ref end, @IntRange.%.loc23 [concrete = @IntRange.%.loc23] -// CHECK:STDOUT: %.loc13_23.1: ref @Next.loc11.%Int.loc11_43.2 (%Int.49d0e6.1) = class_element_access %self.ref, element1 -// CHECK:STDOUT: %.loc13_23.2: @Next.loc11.%Int.loc11_43.2 (%Int.49d0e6.1) = bind_value %.loc13_23.1 +// CHECK:STDOUT: %value: ref @IntRange.as.Iterate.impl.Next.%Int.loc11_43.1 (%Int.49d0e6.1) = bind_name value, %value.var +// CHECK:STDOUT: %value.ref.loc13: ref @IntRange.as.Iterate.impl.Next.%Int.loc11_43.1 (%Int.49d0e6.1) = name_ref value, %value +// CHECK:STDOUT: %self.ref: @IntRange.as.Iterate.impl.Next.%IntRange (%IntRange.349) = name_ref self, %self +// CHECK:STDOUT: %end.ref: @IntRange.as.Iterate.impl.Next.%IntRange.elem (%IntRange.elem.e7c) = name_ref end, @IntRange.%.loc23 [concrete = @IntRange.%.loc23] +// CHECK:STDOUT: %.loc13_23.1: ref @IntRange.as.Iterate.impl.Next.%Int.loc11_43.1 (%Int.49d0e6.1) = class_element_access %self.ref, element1 +// CHECK:STDOUT: %.loc13_23.2: @IntRange.as.Iterate.impl.Next.%Int.loc11_43.1 (%Int.49d0e6.1) = bind_value %.loc13_23.1 // CHECK:STDOUT: %OrderedWith.type.loc13_17.1: type = facet_type <@OrderedWith, @OrderedWith(constants.%Int.49d0e6.1)> [symbolic = %OrderedWith.type.loc13_17.2 (constants.%OrderedWith.type.872)] -// CHECK:STDOUT: %.loc13_17.1: @Next.loc11.%OrderedWith.assoc_type (%OrderedWith.assoc_type.d92) = specific_constant imports.%Core.import_ref.1cc, @OrderedWith(constants.%Int.49d0e6.1) [symbolic = %assoc0 (constants.%assoc0.2ae)] -// CHECK:STDOUT: %Less.ref: @Next.loc11.%OrderedWith.assoc_type (%OrderedWith.assoc_type.d92) = name_ref Less, %.loc13_17.1 [symbolic = %assoc0 (constants.%assoc0.2ae)] -// CHECK:STDOUT: %impl.elem0.loc13: @Next.loc11.%.loc13_17.2 (%.99c) = impl_witness_access constants.%OrderedWith.impl_witness.df5, element0 [symbolic = %Less (constants.%Less.4be)] +// CHECK:STDOUT: %.loc13_17.1: @IntRange.as.Iterate.impl.Next.%OrderedWith.assoc_type (%OrderedWith.assoc_type.d92) = specific_constant imports.%Core.import_ref.1cc, @OrderedWith(constants.%Int.49d0e6.1) [symbolic = %assoc0 (constants.%assoc0.2ae)] +// CHECK:STDOUT: %Less.ref: @IntRange.as.Iterate.impl.Next.%OrderedWith.assoc_type (%OrderedWith.assoc_type.d92) = name_ref Less, %.loc13_17.1 [symbolic = %assoc0 (constants.%assoc0.2ae)] +// CHECK:STDOUT: %impl.elem0.loc13: @IntRange.as.Iterate.impl.Next.%.loc13_17.2 (%.99c) = impl_witness_access constants.%OrderedWith.impl_witness.df5, element0 [symbolic = %Int.as.OrderedWith.impl.Less (constants.%Int.as.OrderedWith.impl.Less.4be)] // CHECK:STDOUT: %bound_method.loc13_17.1: = bound_method %value.ref.loc13, %impl.elem0.loc13 -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0.loc13, @Less.2(constants.%N, constants.%N) [symbolic = %Less.specific_fn (constants.%Less.specific_fn.bb3)] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0.loc13, @Int.as.OrderedWith.impl.Less.1(constants.%N, constants.%N) [symbolic = %Int.as.OrderedWith.impl.Less.specific_fn (constants.%Int.as.OrderedWith.impl.Less.specific_fn.bb3)] // CHECK:STDOUT: %bound_method.loc13_17.2: = bound_method %value.ref.loc13, %specific_fn -// CHECK:STDOUT: %.loc13_11: @Next.loc11.%Int.loc11_43.2 (%Int.49d0e6.1) = bind_value %value.ref.loc13 -// CHECK:STDOUT: %int.less: init bool = call %bound_method.loc13_17.2(%.loc13_11, %.loc13_23.2) -// CHECK:STDOUT: %.loc13_27.1: bool = value_of_initializer %int.less -// CHECK:STDOUT: %.loc13_27.2: bool = converted %int.less, %.loc13_27.1 +// CHECK:STDOUT: %.loc13_11: @IntRange.as.Iterate.impl.Next.%Int.loc11_43.1 (%Int.49d0e6.1) = bind_value %value.ref.loc13 +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Less.call: init bool = call %bound_method.loc13_17.2(%.loc13_11, %.loc13_23.2) +// CHECK:STDOUT: %.loc13_27.1: bool = value_of_initializer %Int.as.OrderedWith.impl.Less.call +// CHECK:STDOUT: %.loc13_27.2: bool = converted %Int.as.OrderedWith.impl.Less.call, %.loc13_27.1 // CHECK:STDOUT: if %.loc13_27.2 br !if.then else br !if.else // CHECK:STDOUT: // CHECK:STDOUT: !if.then: -// CHECK:STDOUT: %cursor.ref.loc14: @Next.loc11.%ptr.loc11_44.2 (%ptr.784) = name_ref cursor, %cursor -// CHECK:STDOUT: %.loc14_11: ref @Next.loc11.%Int.loc11_43.2 (%Int.49d0e6.1) = deref %cursor.ref.loc14 -// CHECK:STDOUT: %impl.elem0.loc14_9.1: @Next.loc11.%.loc14_9.2 (%.a0d) = impl_witness_access constants.%Inc.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc14_9.2 (constants.%impl.elem0.437)] +// CHECK:STDOUT: %cursor.ref.loc14: @IntRange.as.Iterate.impl.Next.%ptr.loc11_44.1 (%ptr.784) = name_ref cursor, %cursor +// CHECK:STDOUT: %.loc14_11: ref @IntRange.as.Iterate.impl.Next.%Int.loc11_43.1 (%Int.49d0e6.1) = deref %cursor.ref.loc14 +// CHECK:STDOUT: %impl.elem0.loc14_9.1: @IntRange.as.Iterate.impl.Next.%.loc14_9.2 (%.a0d) = impl_witness_access constants.%Inc.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc14_9.2 (constants.%impl.elem0.437)] // CHECK:STDOUT: %bound_method.loc14_9.1: = bound_method %.loc14_11, %impl.elem0.loc14_9.1 -// CHECK:STDOUT: %specific_impl_fn.loc14_9.1: = specific_impl_function %impl.elem0.loc14_9.1, @Op.95(constants.%Inc.facet) [symbolic = %specific_impl_fn.loc14_9.2 (constants.%specific_impl_fn.a5f)] +// CHECK:STDOUT: %specific_impl_fn.loc14_9.1: = specific_impl_function %impl.elem0.loc14_9.1, @Inc.Op(constants.%Inc.facet) [symbolic = %specific_impl_fn.loc14_9.2 (constants.%specific_impl_fn.a5f)] // CHECK:STDOUT: %bound_method.loc14_9.2: = bound_method %.loc14_11, %specific_impl_fn.loc14_9.1 -// CHECK:STDOUT: %addr.loc14: @Next.loc11.%ptr.loc11_44.2 (%ptr.784) = addr_of %.loc14_11 +// CHECK:STDOUT: %addr.loc14: @IntRange.as.Iterate.impl.Next.%ptr.loc11_44.1 (%ptr.784) = addr_of %.loc14_11 // CHECK:STDOUT: %.loc14_9.1: init %empty_tuple.type = call %bound_method.loc14_9.2(%addr.loc14) // CHECK:STDOUT: %Core.ref.loc15_16: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %Optional.ref.loc15: %Optional.type = name_ref Optional, imports.%Core.Optional [concrete = constants.%Optional.generic] // CHECK:STDOUT: %Core.ref.loc15_30: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %Int.ref.loc15: %Int.type = name_ref Int, imports.%Core.Int [concrete = constants.%Int.generic] // CHECK:STDOUT: %N.ref.loc15: Core.IntLiteral = name_ref N, @IntRange.%N.loc4_16.2 [symbolic = %N (constants.%N)] -// CHECK:STDOUT: %Int.loc15: type = class_type @Int, @Int(constants.%N) [symbolic = %Int.loc11_43.2 (constants.%Int.49d0e6.1)] -// CHECK:STDOUT: %Optional.loc15: type = class_type @Optional, @Optional(constants.%Int.49d0e6.1) [symbolic = %Optional.loc11_75.2 (constants.%Optional.708)] -// CHECK:STDOUT: %.loc15_42: @Next.loc11.%Some.type (%Some.type.185) = specific_constant imports.%Core.import_ref.5c6, @Optional(constants.%Int.49d0e6.1) [symbolic = %Some (constants.%Some.58a)] -// CHECK:STDOUT: %Some.ref: @Next.loc11.%Some.type (%Some.type.185) = name_ref Some, %.loc15_42 [symbolic = %Some (constants.%Some.58a)] -// CHECK:STDOUT: %value.ref.loc15: ref @Next.loc11.%Int.loc11_43.2 (%Int.49d0e6.1) = name_ref value, %value -// CHECK:STDOUT: %Some.specific_fn.loc15_42.1: = specific_function %Some.ref, @Some(constants.%Int.49d0e6.1) [symbolic = %Some.specific_fn.loc15_42.2 (constants.%Some.specific_fn)] -// CHECK:STDOUT: %.loc11_47.1: ref @Next.loc11.%Optional.loc11_75.2 (%Optional.708) = splice_block %return {} -// CHECK:STDOUT: %.loc15_48: @Next.loc11.%Int.loc11_43.2 (%Int.49d0e6.1) = bind_value %value.ref.loc15 -// CHECK:STDOUT: %Some.call: init @Next.loc11.%Optional.loc11_75.2 (%Optional.708) = call %Some.specific_fn.loc15_42.1(%.loc15_48) to %.loc11_47.1 -// CHECK:STDOUT: %impl.elem0.loc11_47.1: @Next.loc11.%.loc11_47.6 (%.1ee) = impl_witness_access constants.%Destroy.lookup_impl_witness.f9d, element0 [symbolic = %impl.elem0.loc11_47.4 (constants.%impl.elem0.5fd)] +// CHECK:STDOUT: %Int.loc15: type = class_type @Int, @Int(constants.%N) [symbolic = %Int.loc11_43.1 (constants.%Int.49d0e6.1)] +// CHECK:STDOUT: %Optional.loc15: type = class_type @Optional, @Optional(constants.%Int.49d0e6.1) [symbolic = %Optional.loc11_75.1 (constants.%Optional.708)] +// CHECK:STDOUT: %.loc15_42: @IntRange.as.Iterate.impl.Next.%Optional.Some.type (%Optional.Some.type.185) = specific_constant imports.%Core.import_ref.5c6, @Optional(constants.%Int.49d0e6.1) [symbolic = %Optional.Some (constants.%Optional.Some.58a)] +// CHECK:STDOUT: %Some.ref: @IntRange.as.Iterate.impl.Next.%Optional.Some.type (%Optional.Some.type.185) = name_ref Some, %.loc15_42 [symbolic = %Optional.Some (constants.%Optional.Some.58a)] +// CHECK:STDOUT: %value.ref.loc15: ref @IntRange.as.Iterate.impl.Next.%Int.loc11_43.1 (%Int.49d0e6.1) = name_ref value, %value +// CHECK:STDOUT: %Optional.Some.specific_fn.loc15_42.1: = specific_function %Some.ref, @Optional.Some(constants.%Int.49d0e6.1) [symbolic = %Optional.Some.specific_fn.loc15_42.2 (constants.%Optional.Some.specific_fn)] +// CHECK:STDOUT: %.loc11_47.1: ref @IntRange.as.Iterate.impl.Next.%Optional.loc11_75.1 (%Optional.708) = splice_block %return {} +// CHECK:STDOUT: %.loc15_48: @IntRange.as.Iterate.impl.Next.%Int.loc11_43.1 (%Int.49d0e6.1) = bind_value %value.ref.loc15 +// CHECK:STDOUT: %Optional.Some.call: init @IntRange.as.Iterate.impl.Next.%Optional.loc11_75.1 (%Optional.708) = call %Optional.Some.specific_fn.loc15_42.1(%.loc15_48) to %.loc11_47.1 +// CHECK:STDOUT: %impl.elem0.loc11_47.1: @IntRange.as.Iterate.impl.Next.%.loc11_47.6 (%.1ee) = impl_witness_access constants.%Destroy.lookup_impl_witness.f9d, element0 [symbolic = %impl.elem0.loc11_47.4 (constants.%impl.elem0.5fd)] // CHECK:STDOUT: %bound_method.loc11_47.1: = bound_method %.loc11_47.1, %impl.elem0.loc11_47.1 -// CHECK:STDOUT: %specific_impl_fn.loc11_47.1: = specific_impl_function %impl.elem0.loc11_47.1, @Op.96(constants.%Destroy.facet.be9) [symbolic = %specific_impl_fn.loc11_47.4 (constants.%specific_impl_fn.79e)] +// CHECK:STDOUT: %specific_impl_fn.loc11_47.1: = specific_impl_function %impl.elem0.loc11_47.1, @Destroy.Op(constants.%Destroy.facet.be9) [symbolic = %specific_impl_fn.loc11_47.4 (constants.%specific_impl_fn.79e)] // CHECK:STDOUT: %bound_method.loc11_47.2: = bound_method %.loc11_47.1, %specific_impl_fn.loc11_47.1 -// CHECK:STDOUT: %addr.loc11_47.1: @Next.loc11.%ptr.loc11_47 (%ptr.2aa) = addr_of %.loc11_47.1 +// CHECK:STDOUT: %addr.loc11_47.1: @IntRange.as.Iterate.impl.Next.%ptr.loc11_47 (%ptr.2aa) = addr_of %.loc11_47.1 // CHECK:STDOUT: %.loc11_47.2: init %empty_tuple.type = call %bound_method.loc11_47.2(%addr.loc11_47.1) -// CHECK:STDOUT: %impl.elem0.loc12_7.1: @Next.loc11.%.loc12_7.3 (%.bbc) = impl_witness_access constants.%Destroy.lookup_impl_witness.34a, element0 [symbolic = %impl.elem0.loc12_7.3 (constants.%impl.elem0.fe8)] +// CHECK:STDOUT: %impl.elem0.loc12_7.1: @IntRange.as.Iterate.impl.Next.%.loc12_7.3 (%.bbc) = impl_witness_access constants.%Destroy.lookup_impl_witness.34a, element0 [symbolic = %impl.elem0.loc12_7.3 (constants.%impl.elem0.fe8)] // CHECK:STDOUT: %bound_method.loc12_7.1: = bound_method %value.var, %impl.elem0.loc12_7.1 -// CHECK:STDOUT: %specific_impl_fn.loc12_7.1: = specific_impl_function %impl.elem0.loc12_7.1, @Op.96(constants.%Destroy.facet.13d) [symbolic = %specific_impl_fn.loc12_7.3 (constants.%specific_impl_fn.f4e)] +// CHECK:STDOUT: %specific_impl_fn.loc12_7.1: = specific_impl_function %impl.elem0.loc12_7.1, @Destroy.Op(constants.%Destroy.facet.13d) [symbolic = %specific_impl_fn.loc12_7.3 (constants.%specific_impl_fn.f4e)] // CHECK:STDOUT: %bound_method.loc12_7.2: = bound_method %value.var, %specific_impl_fn.loc12_7.1 -// CHECK:STDOUT: %addr.loc12_7.1: @Next.loc11.%ptr.loc11_44.2 (%ptr.784) = addr_of %value.var +// CHECK:STDOUT: %addr.loc12_7.1: @IntRange.as.Iterate.impl.Next.%ptr.loc11_44.1 (%ptr.784) = addr_of %value.var // CHECK:STDOUT: %.loc12_7.1: init %empty_tuple.type = call %bound_method.loc12_7.2(%addr.loc12_7.1) -// CHECK:STDOUT: return %Some.call to %return +// CHECK:STDOUT: return %Optional.Some.call to %return // CHECK:STDOUT: // CHECK:STDOUT: !if.else: // CHECK:STDOUT: %Core.ref.loc17_16: = name_ref Core, imports.%Core [concrete = imports.%Core] @@ -624,32 +624,32 @@ fn Read() { // CHECK:STDOUT: %Core.ref.loc17_30: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %Int.ref.loc17: %Int.type = name_ref Int, imports.%Core.Int [concrete = constants.%Int.generic] // CHECK:STDOUT: %N.ref.loc17: Core.IntLiteral = name_ref N, @IntRange.%N.loc4_16.2 [symbolic = %N (constants.%N)] -// CHECK:STDOUT: %Int.loc17: type = class_type @Int, @Int(constants.%N) [symbolic = %Int.loc11_43.2 (constants.%Int.49d0e6.1)] -// CHECK:STDOUT: %Optional.loc17: type = class_type @Optional, @Optional(constants.%Int.49d0e6.1) [symbolic = %Optional.loc11_75.2 (constants.%Optional.708)] -// CHECK:STDOUT: %.loc17: @Next.loc11.%None.type (%None.type.73a) = specific_constant imports.%Core.import_ref.2b7, @Optional(constants.%Int.49d0e6.1) [symbolic = %None (constants.%None.83e)] -// CHECK:STDOUT: %None.ref: @Next.loc11.%None.type (%None.type.73a) = name_ref None, %.loc17 [symbolic = %None (constants.%None.83e)] -// CHECK:STDOUT: %None.specific_fn.loc17_42.1: = specific_function %None.ref, @None(constants.%Int.49d0e6.1) [symbolic = %None.specific_fn.loc17_42.2 (constants.%None.specific_fn)] -// CHECK:STDOUT: %.loc11_47.3: ref @Next.loc11.%Optional.loc11_75.2 (%Optional.708) = splice_block %return {} -// CHECK:STDOUT: %None.call: init @Next.loc11.%Optional.loc11_75.2 (%Optional.708) = call %None.specific_fn.loc17_42.1() to %.loc11_47.3 -// CHECK:STDOUT: %impl.elem0.loc11_47.2: @Next.loc11.%.loc11_47.6 (%.1ee) = impl_witness_access constants.%Destroy.lookup_impl_witness.f9d, element0 [symbolic = %impl.elem0.loc11_47.4 (constants.%impl.elem0.5fd)] +// CHECK:STDOUT: %Int.loc17: type = class_type @Int, @Int(constants.%N) [symbolic = %Int.loc11_43.1 (constants.%Int.49d0e6.1)] +// CHECK:STDOUT: %Optional.loc17: type = class_type @Optional, @Optional(constants.%Int.49d0e6.1) [symbolic = %Optional.loc11_75.1 (constants.%Optional.708)] +// CHECK:STDOUT: %.loc17: @IntRange.as.Iterate.impl.Next.%Optional.None.type (%Optional.None.type.73a) = specific_constant imports.%Core.import_ref.2b7, @Optional(constants.%Int.49d0e6.1) [symbolic = %Optional.None (constants.%Optional.None.83e)] +// CHECK:STDOUT: %None.ref: @IntRange.as.Iterate.impl.Next.%Optional.None.type (%Optional.None.type.73a) = name_ref None, %.loc17 [symbolic = %Optional.None (constants.%Optional.None.83e)] +// CHECK:STDOUT: %Optional.None.specific_fn.loc17_42.1: = specific_function %None.ref, @Optional.None(constants.%Int.49d0e6.1) [symbolic = %Optional.None.specific_fn.loc17_42.2 (constants.%Optional.None.specific_fn)] +// CHECK:STDOUT: %.loc11_47.3: ref @IntRange.as.Iterate.impl.Next.%Optional.loc11_75.1 (%Optional.708) = splice_block %return {} +// CHECK:STDOUT: %Optional.None.call: init @IntRange.as.Iterate.impl.Next.%Optional.loc11_75.1 (%Optional.708) = call %Optional.None.specific_fn.loc17_42.1() to %.loc11_47.3 +// CHECK:STDOUT: %impl.elem0.loc11_47.2: @IntRange.as.Iterate.impl.Next.%.loc11_47.6 (%.1ee) = impl_witness_access constants.%Destroy.lookup_impl_witness.f9d, element0 [symbolic = %impl.elem0.loc11_47.4 (constants.%impl.elem0.5fd)] // CHECK:STDOUT: %bound_method.loc11_47.3: = bound_method %.loc11_47.3, %impl.elem0.loc11_47.2 -// CHECK:STDOUT: %specific_impl_fn.loc11_47.2: = specific_impl_function %impl.elem0.loc11_47.2, @Op.96(constants.%Destroy.facet.be9) [symbolic = %specific_impl_fn.loc11_47.4 (constants.%specific_impl_fn.79e)] +// CHECK:STDOUT: %specific_impl_fn.loc11_47.2: = specific_impl_function %impl.elem0.loc11_47.2, @Destroy.Op(constants.%Destroy.facet.be9) [symbolic = %specific_impl_fn.loc11_47.4 (constants.%specific_impl_fn.79e)] // CHECK:STDOUT: %bound_method.loc11_47.4: = bound_method %.loc11_47.3, %specific_impl_fn.loc11_47.2 -// CHECK:STDOUT: %addr.loc11_47.2: @Next.loc11.%ptr.loc11_47 (%ptr.2aa) = addr_of %.loc11_47.3 +// CHECK:STDOUT: %addr.loc11_47.2: @IntRange.as.Iterate.impl.Next.%ptr.loc11_47 (%ptr.2aa) = addr_of %.loc11_47.3 // CHECK:STDOUT: %.loc11_47.4: init %empty_tuple.type = call %bound_method.loc11_47.4(%addr.loc11_47.2) -// CHECK:STDOUT: %impl.elem0.loc11_47.3: @Next.loc11.%.loc11_47.6 (%.1ee) = impl_witness_access constants.%Destroy.lookup_impl_witness.f9d, element0 [symbolic = %impl.elem0.loc11_47.4 (constants.%impl.elem0.5fd)] +// CHECK:STDOUT: %impl.elem0.loc11_47.3: @IntRange.as.Iterate.impl.Next.%.loc11_47.6 (%.1ee) = impl_witness_access constants.%Destroy.lookup_impl_witness.f9d, element0 [symbolic = %impl.elem0.loc11_47.4 (constants.%impl.elem0.5fd)] // CHECK:STDOUT: %bound_method.loc11_47.5: = bound_method %.loc11_47.1, %impl.elem0.loc11_47.3 -// CHECK:STDOUT: %specific_impl_fn.loc11_47.3: = specific_impl_function %impl.elem0.loc11_47.3, @Op.96(constants.%Destroy.facet.be9) [symbolic = %specific_impl_fn.loc11_47.4 (constants.%specific_impl_fn.79e)] +// CHECK:STDOUT: %specific_impl_fn.loc11_47.3: = specific_impl_function %impl.elem0.loc11_47.3, @Destroy.Op(constants.%Destroy.facet.be9) [symbolic = %specific_impl_fn.loc11_47.4 (constants.%specific_impl_fn.79e)] // CHECK:STDOUT: %bound_method.loc11_47.6: = bound_method %.loc11_47.1, %specific_impl_fn.loc11_47.3 -// CHECK:STDOUT: %addr.loc11_47.3: @Next.loc11.%ptr.loc11_47 (%ptr.2aa) = addr_of %.loc11_47.1 +// CHECK:STDOUT: %addr.loc11_47.3: @IntRange.as.Iterate.impl.Next.%ptr.loc11_47 (%ptr.2aa) = addr_of %.loc11_47.1 // CHECK:STDOUT: %.loc11_47.5: init %empty_tuple.type = call %bound_method.loc11_47.6(%addr.loc11_47.3) -// CHECK:STDOUT: %impl.elem0.loc12_7.2: @Next.loc11.%.loc12_7.3 (%.bbc) = impl_witness_access constants.%Destroy.lookup_impl_witness.34a, element0 [symbolic = %impl.elem0.loc12_7.3 (constants.%impl.elem0.fe8)] +// CHECK:STDOUT: %impl.elem0.loc12_7.2: @IntRange.as.Iterate.impl.Next.%.loc12_7.3 (%.bbc) = impl_witness_access constants.%Destroy.lookup_impl_witness.34a, element0 [symbolic = %impl.elem0.loc12_7.3 (constants.%impl.elem0.fe8)] // CHECK:STDOUT: %bound_method.loc12_7.3: = bound_method %value.var, %impl.elem0.loc12_7.2 -// CHECK:STDOUT: %specific_impl_fn.loc12_7.2: = specific_impl_function %impl.elem0.loc12_7.2, @Op.96(constants.%Destroy.facet.13d) [symbolic = %specific_impl_fn.loc12_7.3 (constants.%specific_impl_fn.f4e)] +// CHECK:STDOUT: %specific_impl_fn.loc12_7.2: = specific_impl_function %impl.elem0.loc12_7.2, @Destroy.Op(constants.%Destroy.facet.13d) [symbolic = %specific_impl_fn.loc12_7.3 (constants.%specific_impl_fn.f4e)] // CHECK:STDOUT: %bound_method.loc12_7.4: = bound_method %value.var, %specific_impl_fn.loc12_7.2 -// CHECK:STDOUT: %addr.loc12_7.2: @Next.loc11.%ptr.loc11_44.2 (%ptr.784) = addr_of %value.var +// CHECK:STDOUT: %addr.loc12_7.2: @IntRange.as.Iterate.impl.Next.%ptr.loc11_44.1 (%ptr.784) = addr_of %value.var // CHECK:STDOUT: %.loc12_7.2: init %empty_tuple.type = call %bound_method.loc12_7.4(%addr.loc12_7.2) -// CHECK:STDOUT: return %None.call to %return +// CHECK:STDOUT: return %Optional.None.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -658,34 +658,34 @@ fn Read() { // CHECK:STDOUT: %IntRange.ref.loc27: %IntRange.type = name_ref IntRange, file.%IntRange.decl [concrete = constants.%IntRange.generic] // CHECK:STDOUT: %int_32.loc27: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %IntRange.loc27: type = class_type @IntRange, @IntRange(constants.%int_32) [concrete = constants.%IntRange.365] -// CHECK:STDOUT: %.loc27_22: %Make.type.cef = specific_constant @IntRange.%Make.decl, @IntRange(constants.%int_32) [concrete = constants.%Make.0dc] -// CHECK:STDOUT: %Make.ref: %Make.type.cef = name_ref Make, %.loc27_22 [concrete = constants.%Make.0dc] +// CHECK:STDOUT: %.loc27_22: %IntRange.Make.type.cef = specific_constant @IntRange.%IntRange.Make.decl, @IntRange(constants.%int_32) [concrete = constants.%IntRange.Make.0dc] +// CHECK:STDOUT: %Make.ref: %IntRange.Make.type.cef = name_ref Make, %.loc27_22 [concrete = constants.%IntRange.Make.0dc] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] // CHECK:STDOUT: %end.ref: %i32 = name_ref end, %end -// CHECK:STDOUT: %Make.specific_fn: = specific_function %Make.ref, @Make(constants.%int_32) [concrete = constants.%Make.specific_fn] +// CHECK:STDOUT: %IntRange.Make.specific_fn: = specific_function %Make.ref, @IntRange.Make(constants.%int_32) [concrete = constants.%IntRange.Make.specific_fn] // CHECK:STDOUT: %.loc26_20: ref %IntRange.365 = splice_block %return {} -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc27_28.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc27_28.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc27_28.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc27_28.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc27_28.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc27_28.2(%int_0) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc27_28.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc27_28.2: %i32 = converted %int_0, %.loc27_28.1 [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %Make.call: init %IntRange.365 = call %Make.specific_fn(%.loc27_28.2, %end.ref) to %.loc26_20 -// CHECK:STDOUT: %Op.bound: = bound_method %.loc26_20, constants.%Op.fa8 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.fa8, @Op.97(constants.%IntRange.365) [concrete = constants.%Op.specific_fn.df8] -// CHECK:STDOUT: %bound_method.loc26: = bound_method %.loc26_20, %Op.specific_fn +// CHECK:STDOUT: %IntRange.Make.call: init %IntRange.365 = call %IntRange.Make.specific_fn(%.loc27_28.2, %end.ref) to %.loc26_20 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc26_20, constants.%T.as.Destroy.impl.Op.fa8 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.fa8, @T.as.Destroy.impl.Op(constants.%IntRange.365) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc26: = bound_method %.loc26_20, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.049 = addr_of %.loc26_20 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc26(%addr) -// CHECK:STDOUT: return %Make.call to %return +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc26(%addr) +// CHECK:STDOUT: return %IntRange.Make.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @IntRange(constants.%N) { // CHECK:STDOUT: %N.loc4_16.1 => constants.%N // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Make.type => constants.%Make.type.51f -// CHECK:STDOUT: %Make => constants.%Make.2ec +// CHECK:STDOUT: %IntRange.Make.type => constants.%IntRange.Make.type.51f +// CHECK:STDOUT: %IntRange.Make => constants.%IntRange.Make.2ec // CHECK:STDOUT: %Int.loc22_32.2 => constants.%Int.49d0e6.1 // CHECK:STDOUT: %require_complete => constants.%require_complete.b4f426.1 // CHECK:STDOUT: %IntRange => constants.%IntRange.349 @@ -694,9 +694,9 @@ fn Read() { // CHECK:STDOUT: %complete_type.loc24_1.2 => constants.%complete_type.9d5 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Make(constants.%N) { +// CHECK:STDOUT: specific @IntRange.Make(constants.%N) { // CHECK:STDOUT: %N => constants.%N -// CHECK:STDOUT: %Int.loc5_28.2 => constants.%Int.49d0e6.1 +// CHECK:STDOUT: %Int.loc5_28.1 => constants.%Int.49d0e6.1 // CHECK:STDOUT: %pattern_type.loc5_11 => constants.%pattern_type.8963eb.1 // CHECK:STDOUT: %IntRange => constants.%IntRange.349 // CHECK:STDOUT: %pattern_type.loc5_49 => constants.%pattern_type.dcd @@ -710,37 +710,37 @@ fn Read() { // CHECK:STDOUT: // CHECK:STDOUT: specific @ElementType(constants.%Iterate.facet.7f1) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @Iterate.impl(constants.%N) { +// CHECK:STDOUT: specific @IntRange.as.Iterate.impl(constants.%N) { // CHECK:STDOUT: %N => constants.%N // CHECK:STDOUT: %IntRange => constants.%IntRange.349 -// CHECK:STDOUT: %Int.loc9_54.2 => constants.%Int.49d0e6.1 +// CHECK:STDOUT: %Int.loc9_54.1 => constants.%Int.49d0e6.1 // CHECK:STDOUT: %Iterate_where.type => constants.%Iterate_where.type // CHECK:STDOUT: %require_complete => constants.%require_complete.d96 // CHECK:STDOUT: %Iterate.impl_witness => constants.%Iterate.impl_witness // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %NewCursor.type => constants.%NewCursor.type.b02 -// CHECK:STDOUT: %NewCursor => constants.%NewCursor.f32 -// CHECK:STDOUT: %Next.type => constants.%Next.type.2c8 -// CHECK:STDOUT: %Next => constants.%Next.259 +// CHECK:STDOUT: %IntRange.as.Iterate.impl.NewCursor.type => constants.%IntRange.as.Iterate.impl.NewCursor.type +// CHECK:STDOUT: %IntRange.as.Iterate.impl.NewCursor => constants.%IntRange.as.Iterate.impl.NewCursor +// CHECK:STDOUT: %IntRange.as.Iterate.impl.Next.type => constants.%IntRange.as.Iterate.impl.Next.type +// CHECK:STDOUT: %IntRange.as.Iterate.impl.Next => constants.%IntRange.as.Iterate.impl.Next // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @NewCursor.loc10(constants.%N) { +// CHECK:STDOUT: specific @IntRange.as.Iterate.impl.NewCursor(constants.%N) { // CHECK:STDOUT: %N => constants.%N // CHECK:STDOUT: %IntRange => constants.%IntRange.349 // CHECK:STDOUT: %pattern_type.loc10_18 => constants.%pattern_type.dcd -// CHECK:STDOUT: %Int.loc10_45.2 => constants.%Int.49d0e6.1 +// CHECK:STDOUT: %Int.loc10_45.1 => constants.%Int.49d0e6.1 // CHECK:STDOUT: %pattern_type.loc10_32 => constants.%pattern_type.8963eb.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Next.loc11(constants.%N) { +// CHECK:STDOUT: specific @IntRange.as.Iterate.impl.Next(constants.%N) { // CHECK:STDOUT: %N => constants.%N // CHECK:STDOUT: %IntRange => constants.%IntRange.349 // CHECK:STDOUT: %pattern_type.loc11_13 => constants.%pattern_type.dcd -// CHECK:STDOUT: %Int.loc11_43.2 => constants.%Int.49d0e6.1 -// CHECK:STDOUT: %ptr.loc11_44.2 => constants.%ptr.784 +// CHECK:STDOUT: %Int.loc11_43.1 => constants.%Int.49d0e6.1 +// CHECK:STDOUT: %ptr.loc11_44.1 => constants.%ptr.784 // CHECK:STDOUT: %pattern_type.loc11_25 => constants.%pattern_type.4dc -// CHECK:STDOUT: %Optional.loc11_75.2 => constants.%Optional.708 +// CHECK:STDOUT: %Optional.loc11_75.1 => constants.%Optional.708 // CHECK:STDOUT: %pattern_type.loc11_47 => constants.%pattern_type.4b1 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -748,8 +748,8 @@ fn Read() { // CHECK:STDOUT: %N.loc4_16.1 => constants.%int_32 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Make.type => constants.%Make.type.cef -// CHECK:STDOUT: %Make => constants.%Make.0dc +// CHECK:STDOUT: %IntRange.Make.type => constants.%IntRange.Make.type.cef +// CHECK:STDOUT: %IntRange.Make => constants.%IntRange.Make.0dc // CHECK:STDOUT: %Int.loc22_32.2 => constants.%i32 // CHECK:STDOUT: %require_complete => constants.%complete_type.f8a // CHECK:STDOUT: %IntRange => constants.%IntRange.365 @@ -758,9 +758,9 @@ fn Read() { // CHECK:STDOUT: %complete_type.loc24_1.2 => constants.%complete_type.c45 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Make(constants.%int_32) { +// CHECK:STDOUT: specific @IntRange.Make(constants.%int_32) { // CHECK:STDOUT: %N => constants.%int_32 -// CHECK:STDOUT: %Int.loc5_28.2 => constants.%i32 +// CHECK:STDOUT: %Int.loc5_28.1 => constants.%i32 // CHECK:STDOUT: %pattern_type.loc5_11 => constants.%pattern_type.7ce // CHECK:STDOUT: %IntRange => constants.%IntRange.365 // CHECK:STDOUT: %pattern_type.loc5_49 => constants.%pattern_type.d16 @@ -789,8 +789,8 @@ fn Read() { // CHECK:STDOUT: %struct_type.start.end.434: type = struct_type {.start: %Int.7ff11f.1, .end: %Int.7ff11f.1} [symbolic] // CHECK:STDOUT: %complete_type.c76: = complete_type_witness %struct_type.start.end.434 [symbolic] // CHECK:STDOUT: %IntRange.349: type = class_type @IntRange, @IntRange(%N) [symbolic] -// CHECK:STDOUT: %Make.type.51f: type = fn_type @Make, @IntRange(%N) [symbolic] -// CHECK:STDOUT: %Make.2ec: %Make.type.51f = struct_value () [symbolic] +// CHECK:STDOUT: %IntRange.Make.type.51f: type = fn_type @IntRange.Make, @IntRange(%N) [symbolic] +// CHECK:STDOUT: %IntRange.Make.2ec: %IntRange.Make.type.51f = struct_value () [symbolic] // CHECK:STDOUT: %pattern_type.dcd: type = pattern_type %IntRange.349 [symbolic] // CHECK:STDOUT: %pattern_type.0ede7b.1: type = pattern_type %Int.7ff11f.1 [symbolic] // CHECK:STDOUT: %require_complete.ffde5f.1: = require_complete_type %Int.7ff11f.1 [symbolic] @@ -798,8 +798,8 @@ fn Read() { // CHECK:STDOUT: %require_complete.524: = require_complete_type %IntRange.349 [symbolic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %IntRange.365: type = class_type @IntRange, @IntRange(%int_32) [concrete] -// CHECK:STDOUT: %Make.type.cef: type = fn_type @Make, @IntRange(%int_32) [concrete] -// CHECK:STDOUT: %Make.0dc: %Make.type.cef = struct_value () [concrete] +// CHECK:STDOUT: %IntRange.Make.type.cef: type = fn_type @IntRange.Make, @IntRange(%int_32) [concrete] +// CHECK:STDOUT: %IntRange.Make.0dc: %IntRange.Make.type.cef = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [concrete] // CHECK:STDOUT: %complete_type.f8a: = complete_type_witness %i32.builtin [concrete] @@ -812,29 +812,29 @@ fn Read() { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.9ba: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.6da: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.6da: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To.c80: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0b2: type = fn_type @Convert.1, @ImplicitAs.impl.c81(%To.c80) [symbolic] -// CHECK:STDOUT: %Convert.6d7: %Convert.type.0b2 = struct_value () [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0b2: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To.c80) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.6d7: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0b2 = struct_value () [symbolic] // CHECK:STDOUT: %OrderedWith.type.256: type = facet_type <@OrderedWith, @OrderedWith(%Int.7ff11f.1)> [symbolic] // CHECK:STDOUT: %require_complete.10b: = require_complete_type %OrderedWith.type.256 [symbolic] -// CHECK:STDOUT: %Less.type.016: type = fn_type @Less.1, @OrderedWith(%Int.7ff11f.1) [symbolic] +// CHECK:STDOUT: %OrderedWith.Less.type.016: type = fn_type @OrderedWith.Less, @OrderedWith(%Int.7ff11f.1) [symbolic] // CHECK:STDOUT: %OrderedWith.assoc_type.e53: type = assoc_entity_type @OrderedWith, @OrderedWith(%Int.7ff11f.1) [symbolic] // CHECK:STDOUT: %ptr.58a: type = ptr_type %Int.7ff11f.1 [symbolic] // CHECK:STDOUT: %pattern_type.6d0: type = pattern_type %ptr.58a [symbolic] // CHECK:STDOUT: %require_complete.656: = require_complete_type %ptr.58a [symbolic] // CHECK:STDOUT: %Inc.type: type = facet_type <@Inc> [concrete] -// CHECK:STDOUT: %ImplicitAs.impl_witness.e34: = impl_witness imports.%ImplicitAs.impl_witness_table.e36, @ImplicitAs.impl.c81(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.ed5: type = fn_type @Convert.1, @ImplicitAs.impl.c81(%int_32) [concrete] -// CHECK:STDOUT: %Convert.16d: %Convert.type.ed5 = struct_value () [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.e34: = impl_witness imports.%ImplicitAs.impl_witness_table.e36, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.ed5: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.16d: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.ed5 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet.2e7: %ImplicitAs.type.9ba = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.e34) [concrete] -// CHECK:STDOUT: %.d6a: type = fn_type_with_self_type %Convert.type.6da, %ImplicitAs.facet.2e7 [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %y, %Convert.16d [symbolic] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.16d, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %y, %Convert.specific_fn [symbolic] -// CHECK:STDOUT: %int.convert_checked.58b: init %i32 = call %bound_method(%y) [symbolic] +// CHECK:STDOUT: %.d6a: type = fn_type_with_self_type %ImplicitAs.Convert.type.6da, %ImplicitAs.facet.2e7 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %y, %Core.IntLiteral.as.ImplicitAs.impl.Convert.16d [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.16d, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %y, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method(%y) [symbolic] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.bae: type = fn_type @Op.96 [concrete] +// CHECK:STDOUT: %Destroy.Op.type: type = fn_type @Destroy.Op [concrete] // CHECK:STDOUT: %Iterate.type: type = facet_type <@Iterate> [concrete] // CHECK:STDOUT: %.Self.36d: %Iterate.type = bind_symbolic_name .Self [symbolic_self] // CHECK:STDOUT: %Iterate.lookup_impl_witness: = lookup_impl_witness %.Self.36d, @Iterate [symbolic_self] @@ -842,49 +842,49 @@ fn Read() { // CHECK:STDOUT: %impl.elem1: type = impl_witness_access %Iterate.lookup_impl_witness, element1 [symbolic_self] // CHECK:STDOUT: %Iterate_where.type: type = facet_type <@Iterate where %impl.elem0.a12 = %Int.7ff11f.1 and %impl.elem1 = %Int.7ff11f.1> [symbolic] // CHECK:STDOUT: %require_complete.6f5: = require_complete_type %Iterate_where.type [symbolic] -// CHECK:STDOUT: %Iterate.impl_witness: = impl_witness imports.%Iterate.impl_witness_table, @Iterate.impl(%N) [symbolic] -// CHECK:STDOUT: %NewCursor.type: type = fn_type @NewCursor, @Iterate.impl(%N) [symbolic] -// CHECK:STDOUT: %NewCursor: %NewCursor.type = struct_value () [symbolic] -// CHECK:STDOUT: %Next.type: type = fn_type @Next, @Iterate.impl(%N) [symbolic] -// CHECK:STDOUT: %Next: %Next.type = struct_value () [symbolic] +// CHECK:STDOUT: %Iterate.impl_witness: = impl_witness imports.%Iterate.impl_witness_table, @IntRange.as.Iterate.impl(%N) [symbolic] +// CHECK:STDOUT: %IntRange.as.Iterate.impl.NewCursor.type: type = fn_type @IntRange.as.Iterate.impl.NewCursor, @IntRange.as.Iterate.impl(%N) [symbolic] +// CHECK:STDOUT: %IntRange.as.Iterate.impl.NewCursor: %IntRange.as.Iterate.impl.NewCursor.type = struct_value () [symbolic] +// CHECK:STDOUT: %IntRange.as.Iterate.impl.Next.type: type = fn_type @IntRange.as.Iterate.impl.Next, @IntRange.as.Iterate.impl(%N) [symbolic] +// CHECK:STDOUT: %IntRange.as.Iterate.impl.Next: %IntRange.as.Iterate.impl.Next.type = struct_value () [symbolic] // CHECK:STDOUT: %Optional.e9f: type = class_type @Optional, @Optional(%Int.7ff11f.1) [symbolic] // CHECK:STDOUT: %pattern_type.fd8: type = pattern_type %Optional.e9f [symbolic] // CHECK:STDOUT: %require_complete.5a1: = require_complete_type %Optional.e9f [symbolic] // CHECK:STDOUT: %assoc0.d1b: %OrderedWith.assoc_type.e53 = assoc_entity element0, imports.%Main.import_ref.014 [symbolic] -// CHECK:STDOUT: %OrderedWith.impl_witness.350: = impl_witness imports.%OrderedWith.impl_witness_table.0e1, @OrderedWith.impl.5b6(%N, %N) [symbolic] +// CHECK:STDOUT: %OrderedWith.impl_witness.350: = impl_witness imports.%OrderedWith.impl_witness_table.0e1, @Int.as.OrderedWith.impl.5b6(%N, %N) [symbolic] // CHECK:STDOUT: %OrderedWith.facet: %OrderedWith.type.256 = facet_value %Int.7ff11f.1, (%OrderedWith.impl_witness.350) [symbolic] -// CHECK:STDOUT: %.3bd: type = fn_type_with_self_type %Less.type.016, %OrderedWith.facet [symbolic] -// CHECK:STDOUT: %Less.type.4f5: type = fn_type @Less.2, @OrderedWith.impl.5b6(%N, %N) [symbolic] -// CHECK:STDOUT: %Less.3b5: %Less.type.4f5 = struct_value () [symbolic] -// CHECK:STDOUT: %Less.specific_fn.5e2: = specific_function %Less.3b5, @Less.2(%N, %N) [symbolic] +// CHECK:STDOUT: %.3bd: type = fn_type_with_self_type %OrderedWith.Less.type.016, %OrderedWith.facet [symbolic] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Less.type.4f5: type = fn_type @Int.as.OrderedWith.impl.Less.1, @Int.as.OrderedWith.impl.5b6(%N, %N) [symbolic] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Less.3b5: %Int.as.OrderedWith.impl.Less.type.4f5 = struct_value () [symbolic] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Less.specific_fn.5e2: = specific_function %Int.as.OrderedWith.impl.Less.3b5, @Int.as.OrderedWith.impl.Less.1(%N, %N) [symbolic] // CHECK:STDOUT: %Inc.lookup_impl_witness: = lookup_impl_witness %Int.7ff11f.1, @Inc [symbolic] // CHECK:STDOUT: %Inc.facet: %Inc.type = facet_value %Int.7ff11f.1, (%Inc.lookup_impl_witness) [symbolic] -// CHECK:STDOUT: %Op.type.e3a: type = fn_type @Op.97 [concrete] -// CHECK:STDOUT: %.15d: type = fn_type_with_self_type %Op.type.e3a, %Inc.facet [symbolic] +// CHECK:STDOUT: %Inc.Op.type: type = fn_type @Inc.Op [concrete] +// CHECK:STDOUT: %.15d: type = fn_type_with_self_type %Inc.Op.type, %Inc.facet [symbolic] // CHECK:STDOUT: %impl.elem0.181: %.15d = impl_witness_access %Inc.lookup_impl_witness, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.be7: = specific_impl_function %impl.elem0.181, @Op.97(%Inc.facet) [symbolic] -// CHECK:STDOUT: %Some.type.fe1: type = fn_type @Some, @Optional(%Int.7ff11f.1) [symbolic] -// CHECK:STDOUT: %Some.aae: %Some.type.fe1 = struct_value () [symbolic] -// CHECK:STDOUT: %Some.specific_fn: = specific_function %Some.aae, @Some(%Int.7ff11f.1) [symbolic] +// CHECK:STDOUT: %specific_impl_fn.be7: = specific_impl_function %impl.elem0.181, @Inc.Op(%Inc.facet) [symbolic] +// CHECK:STDOUT: %Optional.Some.type.fe1: type = fn_type @Optional.Some, @Optional(%Int.7ff11f.1) [symbolic] +// CHECK:STDOUT: %Optional.Some.aae: %Optional.Some.type.fe1 = struct_value () [symbolic] +// CHECK:STDOUT: %Optional.Some.specific_fn: = specific_function %Optional.Some.aae, @Optional.Some(%Int.7ff11f.1) [symbolic] // CHECK:STDOUT: %Destroy.lookup_impl_witness.f0d: = lookup_impl_witness %Optional.e9f, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.82c: %Destroy.type = facet_value %Optional.e9f, (%Destroy.lookup_impl_witness.f0d) [symbolic] -// CHECK:STDOUT: %.485: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.82c [symbolic] +// CHECK:STDOUT: %.485: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.82c [symbolic] // CHECK:STDOUT: %impl.elem0.c7c: %.485 = impl_witness_access %Destroy.lookup_impl_witness.f0d, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.ebe: = specific_impl_function %impl.elem0.c7c, @Op.96(%Destroy.facet.82c) [symbolic] +// CHECK:STDOUT: %specific_impl_fn.ebe: = specific_impl_function %impl.elem0.c7c, @Destroy.Op(%Destroy.facet.82c) [symbolic] // CHECK:STDOUT: %ptr.d1d: type = ptr_type %Optional.e9f [symbolic] // CHECK:STDOUT: %require_complete.c68: = require_complete_type %ptr.d1d [symbolic] // CHECK:STDOUT: %Destroy.lookup_impl_witness.f03: = lookup_impl_witness %Int.7ff11f.1, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.96a: %Destroy.type = facet_value %Int.7ff11f.1, (%Destroy.lookup_impl_witness.f03) [symbolic] -// CHECK:STDOUT: %.f67: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.96a [symbolic] +// CHECK:STDOUT: %.f67: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.96a [symbolic] // CHECK:STDOUT: %impl.elem0.4dc: %.f67 = impl_witness_access %Destroy.lookup_impl_witness.f03, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.f8f: = specific_impl_function %impl.elem0.4dc, @Op.96(%Destroy.facet.96a) [symbolic] -// CHECK:STDOUT: %None.type.8c4: type = fn_type @None, @Optional(%Int.7ff11f.1) [symbolic] -// CHECK:STDOUT: %None.7a7: %None.type.8c4 = struct_value () [symbolic] -// CHECK:STDOUT: %None.specific_fn: = specific_function %None.7a7, @None(%Int.7ff11f.1) [symbolic] -// CHECK:STDOUT: %Op.type.2d1: type = fn_type @Op.1, @Destroy.impl(%IntRange.365) [concrete] -// CHECK:STDOUT: %Op.fa8: %Op.type.2d1 = struct_value () [concrete] +// CHECK:STDOUT: %specific_impl_fn.f8f: = specific_impl_function %impl.elem0.4dc, @Destroy.Op(%Destroy.facet.96a) [symbolic] +// CHECK:STDOUT: %Optional.None.type.8c4: type = fn_type @Optional.None, @Optional(%Int.7ff11f.1) [symbolic] +// CHECK:STDOUT: %Optional.None.7a7: %Optional.None.type.8c4 = struct_value () [symbolic] +// CHECK:STDOUT: %Optional.None.specific_fn: = specific_function %Optional.None.7a7, @Optional.None(%Int.7ff11f.1) [symbolic] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.2d1: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%IntRange.365) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.fa8: %T.as.Destroy.impl.Op.type.2d1 = struct_value () [concrete] // CHECK:STDOUT: %ptr.049: type = ptr_type %IntRange.365 [concrete] -// CHECK:STDOUT: %Op.specific_fn.df8: = specific_function %Op.fa8, @Op.1(%IntRange.365) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.fa8, @T.as.Destroy.impl.Op(%IntRange.365) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -906,23 +906,23 @@ fn Read() { // CHECK:STDOUT: %Main.import_ref.261 = import_ref Main//lib, loc23_18, unloaded // CHECK:STDOUT: %Main.import_ref.f1e294.2: Core.IntLiteral = import_ref Main//lib, loc4_16, loaded [symbolic = @IntRange.%N (constants.%N)] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a86: @ImplicitAs.impl.c81.%Convert.type (%Convert.type.0b2) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @ImplicitAs.impl.c81.%Convert (constants.%Convert.6d7)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.e36 = impl_witness_table (%Core.import_ref.a86), @ImplicitAs.impl.c81 [concrete] +// CHECK:STDOUT: %Core.import_ref.a86: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0b2) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.6d7)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.e36 = impl_witness_table (%Core.import_ref.a86), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.import_ref.e33 = import_ref Core//prelude/types/int, loc51_46, unloaded // CHECK:STDOUT: %Core.import_ref.a58 = import_ref Core//prelude/types/int, loc52_58, unloaded // CHECK:STDOUT: %Core.import_ref.a39 = import_ref Core//prelude/types/int, loc53_49, unloaded // CHECK:STDOUT: %Core.import_ref.c4c = import_ref Core//prelude/types/int, loc54_61, unloaded -// CHECK:STDOUT: %OrderedWith.impl_witness_table.0e1 = impl_witness_table (%Core.import_ref.e33, %Core.import_ref.a58, %Core.import_ref.a39, %Core.import_ref.c4c), @OrderedWith.impl.5b6 [concrete] +// CHECK:STDOUT: %OrderedWith.impl_witness_table.0e1 = impl_witness_table (%Core.import_ref.e33, %Core.import_ref.a58, %Core.import_ref.a39, %Core.import_ref.c4c), @Int.as.OrderedWith.impl.5b6 [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: %Main.import_ref.0c8 = import_ref Main//lib, loc9_87, unloaded // CHECK:STDOUT: %Main.import_ref.f1e294.3: Core.IntLiteral = import_ref Main//lib, loc4_16, loaded [symbolic = @IntRange.%N (constants.%N)] -// CHECK:STDOUT: %Main.import_ref.dae: type = import_ref Main//lib, loc9_8, loaded [symbolic = @Iterate.impl.%IntRange (constants.%IntRange.349)] -// CHECK:STDOUT: %Main.import_ref.35b: type = import_ref Main//lib, loc9_24, loaded [symbolic = @Iterate.impl.%Iterate_where.type (constants.%Iterate_where.type)] +// CHECK:STDOUT: %Main.import_ref.dae: type = import_ref Main//lib, loc9_8, loaded [symbolic = @IntRange.as.Iterate.impl.%IntRange (constants.%IntRange.349)] +// CHECK:STDOUT: %Main.import_ref.35b: type = import_ref Main//lib, loc9_24, loaded [symbolic = @IntRange.as.Iterate.impl.%Iterate_where.type (constants.%Iterate_where.type)] // CHECK:STDOUT: %Main.import_ref.e3faa9.1 = import_ref Main//lib, loc9_87, unloaded // CHECK:STDOUT: %Main.import_ref.e3faa9.2 = import_ref Main//lib, loc9_87, unloaded // CHECK:STDOUT: %Main.import_ref.11c = import_ref Main//lib, loc10_47, unloaded // CHECK:STDOUT: %Main.import_ref.f97 = import_ref Main//lib, loc11_77, unloaded -// CHECK:STDOUT: %Iterate.impl_witness_table = impl_witness_table (%Main.import_ref.e3faa9.1, %Main.import_ref.e3faa9.2, %Main.import_ref.11c, %Main.import_ref.f97), @Iterate.impl [concrete] +// CHECK:STDOUT: %Iterate.impl_witness_table = impl_witness_table (%Main.import_ref.e3faa9.1, %Main.import_ref.e3faa9.2, %Main.import_ref.11c, %Main.import_ref.f97), @IntRange.as.Iterate.impl [concrete] // CHECK:STDOUT: %Main.import_ref.f1e294.4: Core.IntLiteral = import_ref Main//lib, loc4_16, loaded [symbolic = @IntRange.%N (constants.%N)] // CHECK:STDOUT: %Main.import_ref.f1e294.5: Core.IntLiteral = import_ref Main//lib, loc4_16, loaded [symbolic = @IntRange.%N (constants.%N)] // CHECK:STDOUT: %Main.import_ref.014 = import_ref Main//lib, inst519 [indirect], unloaded @@ -940,19 +940,19 @@ fn Read() { // CHECK:STDOUT: %Read.decl: %Read.type = fn_decl @Read [concrete = constants.%Read] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @Iterate.impl(imports.%Main.import_ref.f1e294.3: Core.IntLiteral) [from "lib.carbon"] { +// CHECK:STDOUT: generic impl @IntRange.as.Iterate.impl(imports.%Main.import_ref.f1e294.3: Core.IntLiteral) [from "lib.carbon"] { // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)] // CHECK:STDOUT: %IntRange: type = class_type @IntRange, @IntRange(%N) [symbolic = %IntRange (constants.%IntRange.349)] // CHECK:STDOUT: %Int: type = class_type @Int, @Int(%N) [symbolic = %Int (constants.%Int.7ff11f.1)] // CHECK:STDOUT: %Iterate_where.type: type = facet_type <@Iterate where constants.%impl.elem0.a12 = %Int and constants.%impl.elem1 = %Int> [symbolic = %Iterate_where.type (constants.%Iterate_where.type)] // CHECK:STDOUT: %require_complete: = require_complete_type %Iterate_where.type [symbolic = %require_complete (constants.%require_complete.6f5)] -// CHECK:STDOUT: %Iterate.impl_witness: = impl_witness imports.%Iterate.impl_witness_table, @Iterate.impl(%N) [symbolic = %Iterate.impl_witness (constants.%Iterate.impl_witness)] +// CHECK:STDOUT: %Iterate.impl_witness: = impl_witness imports.%Iterate.impl_witness_table, @IntRange.as.Iterate.impl(%N) [symbolic = %Iterate.impl_witness (constants.%Iterate.impl_witness)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %NewCursor.type: type = fn_type @NewCursor, @Iterate.impl(%N) [symbolic = %NewCursor.type (constants.%NewCursor.type)] -// CHECK:STDOUT: %NewCursor: @Iterate.impl.%NewCursor.type (%NewCursor.type) = struct_value () [symbolic = %NewCursor (constants.%NewCursor)] -// CHECK:STDOUT: %Next.type: type = fn_type @Next, @Iterate.impl(%N) [symbolic = %Next.type (constants.%Next.type)] -// CHECK:STDOUT: %Next: @Iterate.impl.%Next.type (%Next.type) = struct_value () [symbolic = %Next (constants.%Next)] +// CHECK:STDOUT: %IntRange.as.Iterate.impl.NewCursor.type: type = fn_type @IntRange.as.Iterate.impl.NewCursor, @IntRange.as.Iterate.impl(%N) [symbolic = %IntRange.as.Iterate.impl.NewCursor.type (constants.%IntRange.as.Iterate.impl.NewCursor.type)] +// CHECK:STDOUT: %IntRange.as.Iterate.impl.NewCursor: @IntRange.as.Iterate.impl.%IntRange.as.Iterate.impl.NewCursor.type (%IntRange.as.Iterate.impl.NewCursor.type) = struct_value () [symbolic = %IntRange.as.Iterate.impl.NewCursor (constants.%IntRange.as.Iterate.impl.NewCursor)] +// CHECK:STDOUT: %IntRange.as.Iterate.impl.Next.type: type = fn_type @IntRange.as.Iterate.impl.Next, @IntRange.as.Iterate.impl(%N) [symbolic = %IntRange.as.Iterate.impl.Next.type (constants.%IntRange.as.Iterate.impl.Next.type)] +// CHECK:STDOUT: %IntRange.as.Iterate.impl.Next: @IntRange.as.Iterate.impl.%IntRange.as.Iterate.impl.Next.type (%IntRange.as.Iterate.impl.Next.type) = struct_value () [symbolic = %IntRange.as.Iterate.impl.Next (constants.%IntRange.as.Iterate.impl.Next)] // CHECK:STDOUT: // CHECK:STDOUT: impl: imports.%Main.import_ref.dae as imports.%Main.import_ref.35b { // CHECK:STDOUT: !members: @@ -964,8 +964,8 @@ fn Read() { // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Make.type: type = fn_type @Make, @IntRange(%N) [symbolic = %Make.type (constants.%Make.type.51f)] -// CHECK:STDOUT: %Make: @IntRange.%Make.type (%Make.type.51f) = struct_value () [symbolic = %Make (constants.%Make.2ec)] +// CHECK:STDOUT: %IntRange.Make.type: type = fn_type @IntRange.Make, @IntRange(%N) [symbolic = %IntRange.Make.type (constants.%IntRange.Make.type.51f)] +// CHECK:STDOUT: %IntRange.Make: @IntRange.%IntRange.Make.type (%IntRange.Make.type.51f) = struct_value () [symbolic = %IntRange.Make (constants.%IntRange.Make.2ec)] // CHECK:STDOUT: %Int: type = class_type @Int, @Int(%N) [symbolic = %Int (constants.%Int.7ff11f.1)] // CHECK:STDOUT: %require_complete: = require_complete_type %Int [symbolic = %require_complete (constants.%require_complete.ffde5f.1)] // CHECK:STDOUT: %IntRange: type = class_type @IntRange, @IntRange(%N) [symbolic = %IntRange (constants.%IntRange.349)] @@ -993,9 +993,9 @@ fn Read() { // CHECK:STDOUT: %.loc5_27.1: type = splice_block %.loc5_27.3 [concrete = Core.IntLiteral] { // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core.ece [concrete = imports.%Core.ece] // CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, imports.%Core.IntLiteral [concrete = constants.%IntLiteral] -// CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc5_27.2: type = value_of_initializer %int_literal.make_type [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc5_27.3: type = converted %int_literal.make_type, %.loc5_27.2 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %IntLiteral.call: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc5_27.2: type = value_of_initializer %IntLiteral.call [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc5_27.3: type = converted %IntLiteral.call, %.loc5_27.2 [concrete = Core.IntLiteral] // CHECK:STDOUT: } // CHECK:STDOUT: %y: Core.IntLiteral = bind_symbolic_name y, 0, %int_43 [symbolic = constants.%y] // CHECK:STDOUT: name_binding_decl { @@ -1006,13 +1006,13 @@ fn Read() { // CHECK:STDOUT: %Range.ref: %Range.type = name_ref Range, imports.%Main.Range [concrete = constants.%Range] // CHECK:STDOUT: %y.ref: Core.IntLiteral = name_ref y, %y [symbolic = constants.%y] // CHECK:STDOUT: %.loc6_3: ref %IntRange.365 = splice_block %x.var {} -// CHECK:STDOUT: %impl.elem0: %.d6a = impl_witness_access constants.%ImplicitAs.impl_witness.e34, element0 [concrete = constants.%Convert.16d] -// CHECK:STDOUT: %bound_method.loc6_31.1: = bound_method %y.ref, %impl.elem0 [symbolic = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.d6a = impl_witness_access constants.%ImplicitAs.impl_witness.e34, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.16d] +// CHECK:STDOUT: %bound_method.loc6_31.1: = bound_method %y.ref, %impl.elem0 [symbolic = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc6_31.2: = bound_method %y.ref, %specific_fn [symbolic = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc6_31.2(%y.ref) [symbolic = constants.%int.convert_checked.58b] -// CHECK:STDOUT: %.loc6_31.1: %i32 = value_of_initializer %int.convert_checked [symbolic = constants.%int.convert_checked.58b] -// CHECK:STDOUT: %.loc6_31.2: %i32 = converted %y.ref, %.loc6_31.1 [symbolic = constants.%int.convert_checked.58b] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc6_31.2(%y.ref) [symbolic = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.call] +// CHECK:STDOUT: %.loc6_31.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [symbolic = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.call] +// CHECK:STDOUT: %.loc6_31.2: %i32 = converted %y.ref, %.loc6_31.1 [symbolic = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.call] // CHECK:STDOUT: %Range.call: init %IntRange.365 = call %Range.ref(%.loc6_31.2) to %.loc6_3 // CHECK:STDOUT: assign %x.var, %Range.call // CHECK:STDOUT: %.loc6_21: type = splice_block %IntRange [concrete = constants.%IntRange.365] { @@ -1021,20 +1021,20 @@ fn Read() { // CHECK:STDOUT: %IntRange: type = class_type @IntRange, @IntRange(constants.%int_32) [concrete = constants.%IntRange.365] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %IntRange.365 = bind_name x, %x.var -// CHECK:STDOUT: %Op.bound.loc6_3.1: = bound_method %.loc6_3, constants.%Op.fa8 -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.fa8, @Op.1(constants.%IntRange.365) [concrete = constants.%Op.specific_fn.df8] -// CHECK:STDOUT: %bound_method.loc6_3.1: = bound_method %.loc6_3, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc6_3.1: = bound_method %.loc6_3, constants.%T.as.Destroy.impl.Op.fa8 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.fa8, @T.as.Destroy.impl.Op(constants.%IntRange.365) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc6_3.1: = bound_method %.loc6_3, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc6_3.1: %ptr.049 = addr_of %.loc6_3 -// CHECK:STDOUT: %no_op.loc6_3.1: init %empty_tuple.type = call %bound_method.loc6_3.1(%addr.loc6_3.1) -// CHECK:STDOUT: %Op.bound.loc6_3.2: = bound_method %x.var, constants.%Op.fa8 -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.fa8, @Op.1(constants.%IntRange.365) [concrete = constants.%Op.specific_fn.df8] -// CHECK:STDOUT: %bound_method.loc6_3.2: = bound_method %x.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc6_3.1: init %empty_tuple.type = call %bound_method.loc6_3.1(%addr.loc6_3.1) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc6_3.2: = bound_method %x.var, constants.%T.as.Destroy.impl.Op.fa8 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.fa8, @T.as.Destroy.impl.Op(constants.%IntRange.365) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc6_3.2: = bound_method %x.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc6_3.2: %ptr.049 = addr_of %x.var -// CHECK:STDOUT: %no_op.loc6_3.2: init %empty_tuple.type = call %bound_method.loc6_3.2(%addr.loc6_3.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc6_3.2: init %empty_tuple.type = call %bound_method.loc6_3.2(%addr.loc6_3.2) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Make(imports.%Main.import_ref.f1e294.2: Core.IntLiteral) [from "lib.carbon"] { +// CHECK:STDOUT: generic fn @IntRange.Make(imports.%Main.import_ref.f1e294.2: Core.IntLiteral) [from "lib.carbon"] { // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)] // CHECK:STDOUT: %Int: type = class_type @Int, @Int(%N) [symbolic = %Int (constants.%Int.7ff11f.1)] // CHECK:STDOUT: %pattern_type.1: type = pattern_type %Int [symbolic = %pattern_type.1 (constants.%pattern_type.0ede7b.1)] @@ -1044,14 +1044,14 @@ fn Read() { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete.1: = require_complete_type %IntRange [symbolic = %require_complete.1 (constants.%require_complete.524)] // CHECK:STDOUT: %require_complete.2: = require_complete_type %Int [symbolic = %require_complete.2 (constants.%require_complete.ffde5f.1)] -// CHECK:STDOUT: %struct_type.start.end: type = struct_type {.start: @Make.%Int (%Int.7ff11f.1), .end: @Make.%Int (%Int.7ff11f.1)} [symbolic = %struct_type.start.end (constants.%struct_type.start.end.434)] +// CHECK:STDOUT: %struct_type.start.end: type = struct_type {.start: @IntRange.Make.%Int (%Int.7ff11f.1), .end: @IntRange.Make.%Int (%Int.7ff11f.1)} [symbolic = %struct_type.start.end (constants.%struct_type.start.end.434)] // CHECK:STDOUT: // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Range [from "lib.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @NewCursor(imports.%Main.import_ref.f1e294.4: Core.IntLiteral) [from "lib.carbon"] { +// CHECK:STDOUT: generic fn @IntRange.as.Iterate.impl.NewCursor(imports.%Main.import_ref.f1e294.4: Core.IntLiteral) [from "lib.carbon"] { // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)] // CHECK:STDOUT: %IntRange: type = class_type @IntRange, @IntRange(%N) [symbolic = %IntRange (constants.%IntRange.349)] // CHECK:STDOUT: %pattern_type.1: type = pattern_type %IntRange [symbolic = %pattern_type.1 (constants.%pattern_type.dcd)] @@ -1066,7 +1066,7 @@ fn Read() { // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Next(imports.%Main.import_ref.f1e294.5: Core.IntLiteral) [from "lib.carbon"] { +// CHECK:STDOUT: generic fn @IntRange.as.Iterate.impl.Next(imports.%Main.import_ref.f1e294.5: Core.IntLiteral) [from "lib.carbon"] { // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)] // CHECK:STDOUT: %IntRange: type = class_type @IntRange, @IntRange(%N) [symbolic = %IntRange (constants.%IntRange.349)] // CHECK:STDOUT: %pattern_type.1: type = pattern_type %IntRange [symbolic = %pattern_type.1 (constants.%pattern_type.dcd)] @@ -1086,37 +1086,37 @@ fn Read() { // CHECK:STDOUT: %OrderedWith.type: type = facet_type <@OrderedWith, @OrderedWith(%Int)> [symbolic = %OrderedWith.type (constants.%OrderedWith.type.256)] // CHECK:STDOUT: %require_complete.5: = require_complete_type %OrderedWith.type [symbolic = %require_complete.5 (constants.%require_complete.10b)] // CHECK:STDOUT: %OrderedWith.assoc_type: type = assoc_entity_type @OrderedWith, @OrderedWith(%Int) [symbolic = %OrderedWith.assoc_type (constants.%OrderedWith.assoc_type.e53)] -// CHECK:STDOUT: %assoc0: @Next.%OrderedWith.assoc_type (%OrderedWith.assoc_type.e53) = assoc_entity element0, imports.%Main.import_ref.014 [symbolic = %assoc0 (constants.%assoc0.d1b)] -// CHECK:STDOUT: %OrderedWith.impl_witness: = impl_witness imports.%OrderedWith.impl_witness_table.0e1, @OrderedWith.impl.5b6(%N, %N) [symbolic = %OrderedWith.impl_witness (constants.%OrderedWith.impl_witness.350)] -// CHECK:STDOUT: %Less.type.1: type = fn_type @Less.1, @OrderedWith(%Int) [symbolic = %Less.type.1 (constants.%Less.type.016)] -// CHECK:STDOUT: %OrderedWith.facet: @Next.%OrderedWith.type (%OrderedWith.type.256) = facet_value %Int, (%OrderedWith.impl_witness) [symbolic = %OrderedWith.facet (constants.%OrderedWith.facet)] -// CHECK:STDOUT: %.1: type = fn_type_with_self_type %Less.type.1, %OrderedWith.facet [symbolic = %.1 (constants.%.3bd)] -// CHECK:STDOUT: %Less.type.2: type = fn_type @Less.2, @OrderedWith.impl.5b6(%N, %N) [symbolic = %Less.type.2 (constants.%Less.type.4f5)] -// CHECK:STDOUT: %Less: @Next.%Less.type.2 (%Less.type.4f5) = struct_value () [symbolic = %Less (constants.%Less.3b5)] -// CHECK:STDOUT: %Less.specific_fn: = specific_function %Less, @Less.2(%N, %N) [symbolic = %Less.specific_fn (constants.%Less.specific_fn.5e2)] +// CHECK:STDOUT: %assoc0: @IntRange.as.Iterate.impl.Next.%OrderedWith.assoc_type (%OrderedWith.assoc_type.e53) = assoc_entity element0, imports.%Main.import_ref.014 [symbolic = %assoc0 (constants.%assoc0.d1b)] +// CHECK:STDOUT: %OrderedWith.impl_witness: = impl_witness imports.%OrderedWith.impl_witness_table.0e1, @Int.as.OrderedWith.impl.5b6(%N, %N) [symbolic = %OrderedWith.impl_witness (constants.%OrderedWith.impl_witness.350)] +// CHECK:STDOUT: %OrderedWith.Less.type: type = fn_type @OrderedWith.Less, @OrderedWith(%Int) [symbolic = %OrderedWith.Less.type (constants.%OrderedWith.Less.type.016)] +// CHECK:STDOUT: %OrderedWith.facet: @IntRange.as.Iterate.impl.Next.%OrderedWith.type (%OrderedWith.type.256) = facet_value %Int, (%OrderedWith.impl_witness) [symbolic = %OrderedWith.facet (constants.%OrderedWith.facet)] +// CHECK:STDOUT: %.1: type = fn_type_with_self_type %OrderedWith.Less.type, %OrderedWith.facet [symbolic = %.1 (constants.%.3bd)] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Less.type: type = fn_type @Int.as.OrderedWith.impl.Less.1, @Int.as.OrderedWith.impl.5b6(%N, %N) [symbolic = %Int.as.OrderedWith.impl.Less.type (constants.%Int.as.OrderedWith.impl.Less.type.4f5)] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Less: @IntRange.as.Iterate.impl.Next.%Int.as.OrderedWith.impl.Less.type (%Int.as.OrderedWith.impl.Less.type.4f5) = struct_value () [symbolic = %Int.as.OrderedWith.impl.Less (constants.%Int.as.OrderedWith.impl.Less.3b5)] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Less.specific_fn: = specific_function %Int.as.OrderedWith.impl.Less, @Int.as.OrderedWith.impl.Less.1(%N, %N) [symbolic = %Int.as.OrderedWith.impl.Less.specific_fn (constants.%Int.as.OrderedWith.impl.Less.specific_fn.5e2)] // CHECK:STDOUT: %Inc.lookup_impl_witness: = lookup_impl_witness %Int, @Inc [symbolic = %Inc.lookup_impl_witness (constants.%Inc.lookup_impl_witness)] // CHECK:STDOUT: %Inc.facet: %Inc.type = facet_value %Int, (%Inc.lookup_impl_witness) [symbolic = %Inc.facet (constants.%Inc.facet)] -// CHECK:STDOUT: %.2: type = fn_type_with_self_type constants.%Op.type.e3a, %Inc.facet [symbolic = %.2 (constants.%.15d)] -// CHECK:STDOUT: %impl.elem0.1: @Next.%.2 (%.15d) = impl_witness_access %Inc.lookup_impl_witness, element0 [symbolic = %impl.elem0.1 (constants.%impl.elem0.181)] -// CHECK:STDOUT: %specific_impl_fn.1: = specific_impl_function %impl.elem0.1, @Op.97(%Inc.facet) [symbolic = %specific_impl_fn.1 (constants.%specific_impl_fn.be7)] -// CHECK:STDOUT: %Some.type: type = fn_type @Some, @Optional(%Int) [symbolic = %Some.type (constants.%Some.type.fe1)] -// CHECK:STDOUT: %Some: @Next.%Some.type (%Some.type.fe1) = struct_value () [symbolic = %Some (constants.%Some.aae)] -// CHECK:STDOUT: %Some.specific_fn: = specific_function %Some, @Some(%Int) [symbolic = %Some.specific_fn (constants.%Some.specific_fn)] +// CHECK:STDOUT: %.2: type = fn_type_with_self_type constants.%Inc.Op.type, %Inc.facet [symbolic = %.2 (constants.%.15d)] +// CHECK:STDOUT: %impl.elem0.1: @IntRange.as.Iterate.impl.Next.%.2 (%.15d) = impl_witness_access %Inc.lookup_impl_witness, element0 [symbolic = %impl.elem0.1 (constants.%impl.elem0.181)] +// CHECK:STDOUT: %specific_impl_fn.1: = specific_impl_function %impl.elem0.1, @Inc.Op(%Inc.facet) [symbolic = %specific_impl_fn.1 (constants.%specific_impl_fn.be7)] +// CHECK:STDOUT: %Optional.Some.type: type = fn_type @Optional.Some, @Optional(%Int) [symbolic = %Optional.Some.type (constants.%Optional.Some.type.fe1)] +// CHECK:STDOUT: %Optional.Some: @IntRange.as.Iterate.impl.Next.%Optional.Some.type (%Optional.Some.type.fe1) = struct_value () [symbolic = %Optional.Some (constants.%Optional.Some.aae)] +// CHECK:STDOUT: %Optional.Some.specific_fn: = specific_function %Optional.Some, @Optional.Some(%Int) [symbolic = %Optional.Some.specific_fn (constants.%Optional.Some.specific_fn)] // CHECK:STDOUT: %Destroy.lookup_impl_witness.1: = lookup_impl_witness %Optional, @Destroy [symbolic = %Destroy.lookup_impl_witness.1 (constants.%Destroy.lookup_impl_witness.f0d)] // CHECK:STDOUT: %Destroy.facet.1: %Destroy.type = facet_value %Optional, (%Destroy.lookup_impl_witness.1) [symbolic = %Destroy.facet.1 (constants.%Destroy.facet.82c)] -// CHECK:STDOUT: %.3: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet.1 [symbolic = %.3 (constants.%.485)] -// CHECK:STDOUT: %impl.elem0.2: @Next.%.3 (%.485) = impl_witness_access %Destroy.lookup_impl_witness.1, element0 [symbolic = %impl.elem0.2 (constants.%impl.elem0.c7c)] -// CHECK:STDOUT: %specific_impl_fn.2: = specific_impl_function %impl.elem0.2, @Op.96(%Destroy.facet.1) [symbolic = %specific_impl_fn.2 (constants.%specific_impl_fn.ebe)] +// CHECK:STDOUT: %.3: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet.1 [symbolic = %.3 (constants.%.485)] +// CHECK:STDOUT: %impl.elem0.2: @IntRange.as.Iterate.impl.Next.%.3 (%.485) = impl_witness_access %Destroy.lookup_impl_witness.1, element0 [symbolic = %impl.elem0.2 (constants.%impl.elem0.c7c)] +// CHECK:STDOUT: %specific_impl_fn.2: = specific_impl_function %impl.elem0.2, @Destroy.Op(%Destroy.facet.1) [symbolic = %specific_impl_fn.2 (constants.%specific_impl_fn.ebe)] // CHECK:STDOUT: %ptr.2: type = ptr_type %Optional [symbolic = %ptr.2 (constants.%ptr.d1d)] // CHECK:STDOUT: %require_complete.6: = require_complete_type %ptr.2 [symbolic = %require_complete.6 (constants.%require_complete.c68)] // CHECK:STDOUT: %Destroy.lookup_impl_witness.2: = lookup_impl_witness %Int, @Destroy [symbolic = %Destroy.lookup_impl_witness.2 (constants.%Destroy.lookup_impl_witness.f03)] // CHECK:STDOUT: %Destroy.facet.2: %Destroy.type = facet_value %Int, (%Destroy.lookup_impl_witness.2) [symbolic = %Destroy.facet.2 (constants.%Destroy.facet.96a)] -// CHECK:STDOUT: %.4: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet.2 [symbolic = %.4 (constants.%.f67)] -// CHECK:STDOUT: %impl.elem0.3: @Next.%.4 (%.f67) = impl_witness_access %Destroy.lookup_impl_witness.2, element0 [symbolic = %impl.elem0.3 (constants.%impl.elem0.4dc)] -// CHECK:STDOUT: %specific_impl_fn.3: = specific_impl_function %impl.elem0.3, @Op.96(%Destroy.facet.2) [symbolic = %specific_impl_fn.3 (constants.%specific_impl_fn.f8f)] -// CHECK:STDOUT: %None.type: type = fn_type @None, @Optional(%Int) [symbolic = %None.type (constants.%None.type.8c4)] -// CHECK:STDOUT: %None: @Next.%None.type (%None.type.8c4) = struct_value () [symbolic = %None (constants.%None.7a7)] -// CHECK:STDOUT: %None.specific_fn: = specific_function %None, @None(%Int) [symbolic = %None.specific_fn (constants.%None.specific_fn)] +// CHECK:STDOUT: %.4: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet.2 [symbolic = %.4 (constants.%.f67)] +// CHECK:STDOUT: %impl.elem0.3: @IntRange.as.Iterate.impl.Next.%.4 (%.f67) = impl_witness_access %Destroy.lookup_impl_witness.2, element0 [symbolic = %impl.elem0.3 (constants.%impl.elem0.4dc)] +// CHECK:STDOUT: %specific_impl_fn.3: = specific_impl_function %impl.elem0.3, @Destroy.Op(%Destroy.facet.2) [symbolic = %specific_impl_fn.3 (constants.%specific_impl_fn.f8f)] +// CHECK:STDOUT: %Optional.None.type: type = fn_type @Optional.None, @Optional(%Int) [symbolic = %Optional.None.type (constants.%Optional.None.type.8c4)] +// CHECK:STDOUT: %Optional.None: @IntRange.as.Iterate.impl.Next.%Optional.None.type (%Optional.None.type.8c4) = struct_value () [symbolic = %Optional.None (constants.%Optional.None.7a7)] +// CHECK:STDOUT: %Optional.None.specific_fn: = specific_function %Optional.None, @Optional.None(%Int) [symbolic = %Optional.None.specific_fn (constants.%Optional.None.specific_fn)] // CHECK:STDOUT: // CHECK:STDOUT: fn; // CHECK:STDOUT: } @@ -1125,8 +1125,8 @@ fn Read() { // CHECK:STDOUT: %N => constants.%N // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Make.type => constants.%Make.type.51f -// CHECK:STDOUT: %Make => constants.%Make.2ec +// CHECK:STDOUT: %IntRange.Make.type => constants.%IntRange.Make.type.51f +// CHECK:STDOUT: %IntRange.Make => constants.%IntRange.Make.2ec // CHECK:STDOUT: %Int => constants.%Int.7ff11f.1 // CHECK:STDOUT: %require_complete => constants.%require_complete.ffde5f.1 // CHECK:STDOUT: %IntRange => constants.%IntRange.349 @@ -1135,7 +1135,7 @@ fn Read() { // CHECK:STDOUT: %complete_type => constants.%complete_type.c76 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Make(constants.%N) { +// CHECK:STDOUT: specific @IntRange.Make(constants.%N) { // CHECK:STDOUT: %N => constants.%N // CHECK:STDOUT: %Int => constants.%Int.7ff11f.1 // CHECK:STDOUT: %pattern_type.1 => constants.%pattern_type.0ede7b.1 @@ -1147,8 +1147,8 @@ fn Read() { // CHECK:STDOUT: %N => constants.%int_32 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Make.type => constants.%Make.type.cef -// CHECK:STDOUT: %Make => constants.%Make.0dc +// CHECK:STDOUT: %IntRange.Make.type => constants.%IntRange.Make.type.cef +// CHECK:STDOUT: %IntRange.Make => constants.%IntRange.Make.0dc // CHECK:STDOUT: %Int => constants.%i32 // CHECK:STDOUT: %require_complete => constants.%complete_type.f8a // CHECK:STDOUT: %IntRange => constants.%IntRange.365 @@ -1157,7 +1157,7 @@ fn Read() { // CHECK:STDOUT: %complete_type => constants.%complete_type.a43 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Iterate.impl(constants.%N) { +// CHECK:STDOUT: specific @IntRange.as.Iterate.impl(constants.%N) { // CHECK:STDOUT: %N => constants.%N // CHECK:STDOUT: %IntRange => constants.%IntRange.349 // CHECK:STDOUT: %Int => constants.%Int.7ff11f.1 @@ -1166,13 +1166,13 @@ fn Read() { // CHECK:STDOUT: %Iterate.impl_witness => constants.%Iterate.impl_witness // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %NewCursor.type => constants.%NewCursor.type -// CHECK:STDOUT: %NewCursor => constants.%NewCursor -// CHECK:STDOUT: %Next.type => constants.%Next.type -// CHECK:STDOUT: %Next => constants.%Next +// CHECK:STDOUT: %IntRange.as.Iterate.impl.NewCursor.type => constants.%IntRange.as.Iterate.impl.NewCursor.type +// CHECK:STDOUT: %IntRange.as.Iterate.impl.NewCursor => constants.%IntRange.as.Iterate.impl.NewCursor +// CHECK:STDOUT: %IntRange.as.Iterate.impl.Next.type => constants.%IntRange.as.Iterate.impl.Next.type +// CHECK:STDOUT: %IntRange.as.Iterate.impl.Next => constants.%IntRange.as.Iterate.impl.Next // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @NewCursor(constants.%N) { +// CHECK:STDOUT: specific @IntRange.as.Iterate.impl.NewCursor(constants.%N) { // CHECK:STDOUT: %N => constants.%N // CHECK:STDOUT: %IntRange => constants.%IntRange.349 // CHECK:STDOUT: %pattern_type.1 => constants.%pattern_type.dcd @@ -1180,7 +1180,7 @@ fn Read() { // CHECK:STDOUT: %pattern_type.2 => constants.%pattern_type.0ede7b.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Next(constants.%N) { +// CHECK:STDOUT: specific @IntRange.as.Iterate.impl.Next(constants.%N) { // CHECK:STDOUT: %N => constants.%N // CHECK:STDOUT: %IntRange => constants.%IntRange.349 // CHECK:STDOUT: %pattern_type.1 => constants.%pattern_type.dcd diff --git a/toolchain/check/testdata/for/basic.carbon b/toolchain/check/testdata/for/basic.carbon index 7039a5f1323d..e6c96831f191 100644 --- a/toolchain/check/testdata/for/basic.carbon +++ b/toolchain/check/testdata/for/basic.carbon @@ -59,52 +59,52 @@ fn Run() { // CHECK:STDOUT: %TrivialRange: type = class_type @TrivialRange [concrete] // CHECK:STDOUT: %Iterate.type: type = facet_type <@Iterate> [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %NewCursor.type.427: type = fn_type @NewCursor.1 [concrete] -// CHECK:STDOUT: %Next.type.941: type = fn_type @Next.1 [concrete] +// CHECK:STDOUT: %Iterate.NewCursor.type: type = fn_type @Iterate.NewCursor [concrete] +// CHECK:STDOUT: %Iterate.Next.type: type = fn_type @Iterate.Next [concrete] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %HasValue.type.a15: type = fn_type @HasValue, @Optional(%T) [symbolic] -// CHECK:STDOUT: %HasValue.73f: %HasValue.type.a15 = struct_value () [symbolic] -// CHECK:STDOUT: %Get.type.e03: type = fn_type @Get, @Optional(%T) [symbolic] -// CHECK:STDOUT: %Get.971: %Get.type.e03 = struct_value () [symbolic] +// CHECK:STDOUT: %Optional.HasValue.type.a15: type = fn_type @Optional.HasValue, @Optional(%T) [symbolic] +// CHECK:STDOUT: %Optional.HasValue.73f: %Optional.HasValue.type.a15 = struct_value () [symbolic] +// CHECK:STDOUT: %Optional.Get.type.e03: type = fn_type @Optional.Get, @Optional(%T) [symbolic] +// CHECK:STDOUT: %Optional.Get.971: %Optional.Get.type.e03 = struct_value () [symbolic] // CHECK:STDOUT: %Iterate.impl_witness: = impl_witness @TrivialRange.%Iterate.impl_witness_table [concrete] -// CHECK:STDOUT: %NewCursor.type.bd2331.1: type = fn_type @NewCursor.loc6_32.1 [concrete] -// CHECK:STDOUT: %NewCursor.c20a1c.1: %NewCursor.type.bd2331.1 = struct_value () [concrete] +// CHECK:STDOUT: %TrivialRange.as.Iterate.impl.NewCursor.type.bd2331.1: type = fn_type @TrivialRange.as.Iterate.impl.NewCursor.loc6_32.1 [concrete] +// CHECK:STDOUT: %TrivialRange.as.Iterate.impl.NewCursor.c20a1c.1: %TrivialRange.as.Iterate.impl.NewCursor.type.bd2331.1 = struct_value () [concrete] // CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Optional.f9a: type = class_type @Optional, @Optional(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %Next.type.9f0: type = fn_type @Next.loc7 [concrete] -// CHECK:STDOUT: %Next.029: %Next.type.9f0 = struct_value () [concrete] +// CHECK:STDOUT: %TrivialRange.as.Iterate.impl.Next.type: type = fn_type @TrivialRange.as.Iterate.impl.Next [concrete] +// CHECK:STDOUT: %TrivialRange.as.Iterate.impl.Next: %TrivialRange.as.Iterate.impl.Next.type = struct_value () [concrete] // CHECK:STDOUT: %Iterate.facet.d50: %Iterate.type = facet_value %TrivialRange, (%Iterate.impl_witness) [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] -// CHECK:STDOUT: %NewCursor.type.bd2331.2: type = fn_type @NewCursor.loc6_32.2 [concrete] -// CHECK:STDOUT: %NewCursor.c20a1c.2: %NewCursor.type.bd2331.2 = struct_value () [concrete] +// CHECK:STDOUT: %TrivialRange.as.Iterate.impl.NewCursor.type.bd2331.2: type = fn_type @TrivialRange.as.Iterate.impl.NewCursor.loc6_32.2 [concrete] +// CHECK:STDOUT: %TrivialRange.as.Iterate.impl.NewCursor.c20a1c.2: %TrivialRange.as.Iterate.impl.NewCursor.type.bd2331.2 = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %HasValue.type.b7a: type = fn_type @HasValue, @Optional(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %HasValue.ada: %HasValue.type.b7a = struct_value () [concrete] -// CHECK:STDOUT: %Get.type.130: type = fn_type @Get, @Optional(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %Get.6e8: %Get.type.130 = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.7e4: type = fn_type @Op.1, @Destroy.impl(%Optional.f9a) [concrete] -// CHECK:STDOUT: %Op.466: %Op.type.7e4 = struct_value () [concrete] +// CHECK:STDOUT: %Optional.HasValue.type.b7a: type = fn_type @Optional.HasValue, @Optional(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %Optional.HasValue.ada: %Optional.HasValue.type.b7a = struct_value () [concrete] +// CHECK:STDOUT: %Optional.Get.type.130: type = fn_type @Optional.Get, @Optional(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %Optional.Get.6e8: %Optional.Get.type.130 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.7e4: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%Optional.f9a) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.466: %T.as.Destroy.impl.Op.type.7e4 = struct_value () [concrete] // CHECK:STDOUT: %ptr.511: type = ptr_type %Optional.f9a [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] -// CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.1, @Destroy.impl(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a63: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ea3: %T.as.Destroy.impl.Op.type.a63 = struct_value () [concrete] // CHECK:STDOUT: %Body.type: type = fn_type @Body [concrete] // CHECK:STDOUT: %Body: %Body.type = struct_value () [concrete] // CHECK:STDOUT: %AfterLoop.type: type = fn_type @AfterLoop [concrete] // CHECK:STDOUT: %AfterLoop: %AfterLoop.type = struct_value () [concrete] // CHECK:STDOUT: %TrivialRange.val: %TrivialRange = struct_value () [concrete] -// CHECK:STDOUT: %.510: type = fn_type_with_self_type %NewCursor.type.427, %Iterate.facet.d50 [concrete] -// CHECK:STDOUT: %.708: type = fn_type_with_self_type %Next.type.941, %Iterate.facet.d50 [concrete] -// CHECK:STDOUT: %HasValue.specific_fn: = specific_function %HasValue.ada, @HasValue(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %Get.specific_fn: = specific_function %Get.6e8, @Get(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %Op.type.8d6: type = fn_type @Op.1, @Destroy.impl(%TrivialRange) [concrete] -// CHECK:STDOUT: %Op.90d: %Op.type.8d6 = struct_value () [concrete] +// CHECK:STDOUT: %.510: type = fn_type_with_self_type %Iterate.NewCursor.type, %Iterate.facet.d50 [concrete] +// CHECK:STDOUT: %.708: type = fn_type_with_self_type %Iterate.Next.type, %Iterate.facet.d50 [concrete] +// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %Optional.HasValue.ada, @Optional.HasValue(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Optional.Get.6e8, @Optional.Get(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.8d6: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%TrivialRange) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.90d: %T.as.Destroy.impl.Op.type.8d6 = struct_value () [concrete] // CHECK:STDOUT: %ptr.41d: type = ptr_type %TrivialRange [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core.import_ref.cd6: @Optional.%HasValue.type (%HasValue.type.a15) = import_ref Core//prelude/parts/iterate, inst98 [indirect], loaded [symbolic = @Optional.%HasValue (constants.%HasValue.73f)] -// CHECK:STDOUT: %Core.import_ref.4fd: @Optional.%Get.type (%Get.type.e03) = import_ref Core//prelude/parts/iterate, inst99 [indirect], loaded [symbolic = @Optional.%Get (constants.%Get.971)] +// CHECK:STDOUT: %Core.import_ref.cd6: @Optional.%Optional.HasValue.type (%Optional.HasValue.type.a15) = import_ref Core//prelude/parts/iterate, inst98 [indirect], loaded [symbolic = @Optional.%Optional.HasValue (constants.%Optional.HasValue.73f)] +// CHECK:STDOUT: %Core.import_ref.4fd: @Optional.%Optional.Get.type (%Optional.Get.type.e03) = import_ref Core//prelude/parts/iterate, inst99 [indirect], loaded [symbolic = @Optional.%Optional.Get (constants.%Optional.Get.971)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Run() { @@ -118,51 +118,51 @@ fn Run() { // CHECK:STDOUT: %.loc18_18.3: init %TrivialRange = class_init (), %.loc18_18.2 [concrete = constants.%TrivialRange.val] // CHECK:STDOUT: %.loc18_18.4: ref %TrivialRange = temporary %.loc18_18.2, %.loc18_18.3 // CHECK:STDOUT: %.loc18_20.1: ref %TrivialRange = converted %.loc18_18.1, %.loc18_18.4 -// CHECK:STDOUT: %impl.elem2: %.510 = impl_witness_access constants.%Iterate.impl_witness, element2 [concrete = constants.%NewCursor.c20a1c.2] +// CHECK:STDOUT: %impl.elem2: %.510 = impl_witness_access constants.%Iterate.impl_witness, element2 [concrete = constants.%TrivialRange.as.Iterate.impl.NewCursor.c20a1c.2] // CHECK:STDOUT: %bound_method.loc18_35.1: = bound_method %.loc18_20.1, %impl.elem2 // CHECK:STDOUT: %.loc18_20.2: %TrivialRange = bind_value %.loc18_20.1 -// CHECK:STDOUT: %NewCursor.ref: %NewCursor.type.bd2331.1 = name_ref NewCursor, @Iterate.impl.%NewCursor.decl.loc6_32.1 [concrete = constants.%NewCursor.c20a1c.1] -// CHECK:STDOUT: %NewCursor.bound: = bound_method %.loc18_20.2, %NewCursor.ref -// CHECK:STDOUT: %NewCursor.call: init %empty_tuple.type = call %NewCursor.bound(%.loc18_20.2) +// CHECK:STDOUT: %NewCursor.ref: %TrivialRange.as.Iterate.impl.NewCursor.type.bd2331.1 = name_ref NewCursor, @TrivialRange.as.Iterate.impl.%TrivialRange.as.Iterate.impl.NewCursor.decl.loc6_32.1 [concrete = constants.%TrivialRange.as.Iterate.impl.NewCursor.c20a1c.1] +// CHECK:STDOUT: %TrivialRange.as.Iterate.impl.NewCursor.bound: = bound_method %.loc18_20.2, %NewCursor.ref +// CHECK:STDOUT: %TrivialRange.as.Iterate.impl.NewCursor.call: init %empty_tuple.type = call %TrivialRange.as.Iterate.impl.NewCursor.bound(%.loc18_20.2) // CHECK:STDOUT: %var: ref %empty_tuple.type = var invalid -// CHECK:STDOUT: assign %var, %NewCursor.call +// CHECK:STDOUT: assign %var, %TrivialRange.as.Iterate.impl.NewCursor.call // CHECK:STDOUT: br !for.next // CHECK:STDOUT: // CHECK:STDOUT: !for.next: // CHECK:STDOUT: %addr.loc18_35.1: %ptr.843 = addr_of %var -// CHECK:STDOUT: %impl.elem3: %.708 = impl_witness_access constants.%Iterate.impl_witness, element3 [concrete = constants.%Next.029] +// CHECK:STDOUT: %impl.elem3: %.708 = impl_witness_access constants.%Iterate.impl_witness, element3 [concrete = constants.%TrivialRange.as.Iterate.impl.Next] // CHECK:STDOUT: %bound_method.loc18_35.2: = bound_method %.loc18_20.1, %impl.elem3 // CHECK:STDOUT: %.loc18_35.1: ref %Optional.f9a = temporary_storage // CHECK:STDOUT: %.loc18_20.3: %TrivialRange = bind_value %.loc18_20.1 -// CHECK:STDOUT: %Next.call: init %Optional.f9a = call %bound_method.loc18_35.2(%.loc18_20.3, %addr.loc18_35.1) to %.loc18_35.1 -// CHECK:STDOUT: %.loc18_35.2: ref %Optional.f9a = temporary %.loc18_35.1, %Next.call -// CHECK:STDOUT: %.loc18_35.3: %HasValue.type.b7a = specific_constant imports.%Core.import_ref.cd6, @Optional(constants.%empty_tuple.type) [concrete = constants.%HasValue.ada] -// CHECK:STDOUT: %HasValue.ref: %HasValue.type.b7a = name_ref HasValue, %.loc18_35.3 [concrete = constants.%HasValue.ada] -// CHECK:STDOUT: %HasValue.bound: = bound_method %.loc18_35.2, %HasValue.ref -// CHECK:STDOUT: %HasValue.specific_fn: = specific_function %HasValue.ref, @HasValue(constants.%empty_tuple.type) [concrete = constants.%HasValue.specific_fn] -// CHECK:STDOUT: %bound_method.loc18_35.3: = bound_method %.loc18_35.2, %HasValue.specific_fn +// CHECK:STDOUT: %TrivialRange.as.Iterate.impl.Next.call: init %Optional.f9a = call %bound_method.loc18_35.2(%.loc18_20.3, %addr.loc18_35.1) to %.loc18_35.1 +// CHECK:STDOUT: %.loc18_35.2: ref %Optional.f9a = temporary %.loc18_35.1, %TrivialRange.as.Iterate.impl.Next.call +// CHECK:STDOUT: %.loc18_35.3: %Optional.HasValue.type.b7a = specific_constant imports.%Core.import_ref.cd6, @Optional(constants.%empty_tuple.type) [concrete = constants.%Optional.HasValue.ada] +// CHECK:STDOUT: %HasValue.ref: %Optional.HasValue.type.b7a = name_ref HasValue, %.loc18_35.3 [concrete = constants.%Optional.HasValue.ada] +// CHECK:STDOUT: %Optional.HasValue.bound: = bound_method %.loc18_35.2, %HasValue.ref +// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %HasValue.ref, @Optional.HasValue(constants.%empty_tuple.type) [concrete = constants.%Optional.HasValue.specific_fn] +// CHECK:STDOUT: %bound_method.loc18_35.3: = bound_method %.loc18_35.2, %Optional.HasValue.specific_fn // CHECK:STDOUT: %.loc18_35.4: %Optional.f9a = bind_value %.loc18_35.2 -// CHECK:STDOUT: %HasValue.call: init bool = call %bound_method.loc18_35.3(%.loc18_35.4) -// CHECK:STDOUT: %.loc18_35.5: bool = value_of_initializer %HasValue.call -// CHECK:STDOUT: %.loc18_35.6: bool = converted %HasValue.call, %.loc18_35.5 +// CHECK:STDOUT: %Optional.HasValue.call: init bool = call %bound_method.loc18_35.3(%.loc18_35.4) +// CHECK:STDOUT: %.loc18_35.5: bool = value_of_initializer %Optional.HasValue.call +// CHECK:STDOUT: %.loc18_35.6: bool = converted %Optional.HasValue.call, %.loc18_35.5 // CHECK:STDOUT: if %.loc18_35.6 br !for.body else br !for.done // CHECK:STDOUT: // CHECK:STDOUT: !for.body: -// CHECK:STDOUT: %.loc18_35.7: %Get.type.130 = specific_constant imports.%Core.import_ref.4fd, @Optional(constants.%empty_tuple.type) [concrete = constants.%Get.6e8] -// CHECK:STDOUT: %Get.ref: %Get.type.130 = name_ref Get, %.loc18_35.7 [concrete = constants.%Get.6e8] -// CHECK:STDOUT: %Get.bound: = bound_method %.loc18_35.2, %Get.ref -// CHECK:STDOUT: %Get.specific_fn: = specific_function %Get.ref, @Get(constants.%empty_tuple.type) [concrete = constants.%Get.specific_fn] -// CHECK:STDOUT: %bound_method.loc18_35.4: = bound_method %.loc18_35.2, %Get.specific_fn +// CHECK:STDOUT: %.loc18_35.7: %Optional.Get.type.130 = specific_constant imports.%Core.import_ref.4fd, @Optional(constants.%empty_tuple.type) [concrete = constants.%Optional.Get.6e8] +// CHECK:STDOUT: %Get.ref: %Optional.Get.type.130 = name_ref Get, %.loc18_35.7 [concrete = constants.%Optional.Get.6e8] +// CHECK:STDOUT: %Optional.Get.bound: = bound_method %.loc18_35.2, %Get.ref +// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Get.ref, @Optional.Get(constants.%empty_tuple.type) [concrete = constants.%Optional.Get.specific_fn] +// CHECK:STDOUT: %bound_method.loc18_35.4: = bound_method %.loc18_35.2, %Optional.Get.specific_fn // CHECK:STDOUT: %.loc18_35.8: %Optional.f9a = bind_value %.loc18_35.2 -// CHECK:STDOUT: %Get.call: init %empty_tuple.type = call %bound_method.loc18_35.4(%.loc18_35.8) +// CHECK:STDOUT: %Optional.Get.call: init %empty_tuple.type = call %bound_method.loc18_35.4(%.loc18_35.8) // CHECK:STDOUT: %.loc18_12.1: type = splice_block %.loc18_12.3 [concrete = constants.%empty_tuple.type] { // CHECK:STDOUT: %.loc18_12.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc18_12.3: type = converted %.loc18_12.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc18_35.9: ref %empty_tuple.type = temporary_storage -// CHECK:STDOUT: %.loc18_35.10: ref %empty_tuple.type = temporary %.loc18_35.9, %Get.call +// CHECK:STDOUT: %.loc18_35.10: ref %empty_tuple.type = temporary %.loc18_35.9, %Optional.Get.call // CHECK:STDOUT: %tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc18_35.11: %empty_tuple.type = converted %Get.call, %tuple [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc18_35.11: %empty_tuple.type = converted %Optional.Get.call, %tuple [concrete = constants.%empty_tuple] // CHECK:STDOUT: %_: %empty_tuple.type = bind_name _, %.loc18_35.11 // CHECK:STDOUT: %Body.ref: %Body.type = name_ref Body, file.%Body.decl [concrete = constants.%Body] // CHECK:STDOUT: %Body.call: init %empty_tuple.type = call %Body.ref() @@ -171,26 +171,26 @@ fn Run() { // CHECK:STDOUT: !for.done: // CHECK:STDOUT: %AfterLoop.ref: %AfterLoop.type = name_ref AfterLoop, file.%AfterLoop.decl [concrete = constants.%AfterLoop] // CHECK:STDOUT: %AfterLoop.call: init %empty_tuple.type = call %AfterLoop.ref() -// CHECK:STDOUT: %Op.bound.loc18_35.1: = bound_method %.loc18_35.9, constants.%Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc18_35.1: = bound_method %.loc18_35.9, constants.%T.as.Destroy.impl.Op.ea3 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc18_35.5: = bound_method %.loc18_35.9, %Op.specific_fn.1 +// CHECK:STDOUT: %bound_method.loc18_35.5: = bound_method %.loc18_35.9, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc18_35.2: %ptr.843 = addr_of %.loc18_35.9 -// CHECK:STDOUT: %no_op.loc18_35.1: init %empty_tuple.type = call %bound_method.loc18_35.5(%addr.loc18_35.2) -// CHECK:STDOUT: %Op.bound.loc18_35.2: = bound_method %.loc18_35.1, constants.%Op.466 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc18_35.1: init %empty_tuple.type = call %bound_method.loc18_35.5(%addr.loc18_35.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc18_35.2: = bound_method %.loc18_35.1, constants.%T.as.Destroy.impl.Op.466 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc18_35.6: = bound_method %.loc18_35.1, %Op.specific_fn.2 +// CHECK:STDOUT: %bound_method.loc18_35.6: = bound_method %.loc18_35.1, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc18_35.3: %ptr.511 = addr_of %.loc18_35.1 -// CHECK:STDOUT: %no_op.loc18_35.2: init %empty_tuple.type = call %bound_method.loc18_35.6(%addr.loc18_35.3) -// CHECK:STDOUT: %Op.bound.loc18_35.3: = bound_method %var, constants.%Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc18_35.2: init %empty_tuple.type = call %bound_method.loc18_35.6(%addr.loc18_35.3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc18_35.3: = bound_method %var, constants.%T.as.Destroy.impl.Op.ea3 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc18_35.7: = bound_method %var, %Op.specific_fn.3 +// CHECK:STDOUT: %bound_method.loc18_35.7: = bound_method %var, %T.as.Destroy.impl.Op.specific_fn.3 // CHECK:STDOUT: %addr.loc18_35.4: %ptr.843 = addr_of %var -// CHECK:STDOUT: %no_op.loc18_35.3: init %empty_tuple.type = call %bound_method.loc18_35.7(%addr.loc18_35.4) -// CHECK:STDOUT: %Op.bound.loc18_18: = bound_method %.loc18_18.2, constants.%Op.90d +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc18_35.3: init %empty_tuple.type = call %bound_method.loc18_35.7(%addr.loc18_35.4) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc18_18: = bound_method %.loc18_18.2, constants.%T.as.Destroy.impl.Op.90d // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc18_18: = bound_method %.loc18_18.2, %Op.specific_fn.4 +// CHECK:STDOUT: %bound_method.loc18_18: = bound_method %.loc18_18.2, %T.as.Destroy.impl.Op.specific_fn.4 // CHECK:STDOUT: %addr.loc18_18: %ptr.41d = addr_of %.loc18_18.2 -// CHECK:STDOUT: %no_op.loc18_18: init %empty_tuple.type = call %bound_method.loc18_18(%addr.loc18_18) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc18_18: init %empty_tuple.type = call %bound_method.loc18_18(%addr.loc18_18) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/for/pattern.carbon b/toolchain/check/testdata/for/pattern.carbon index 80fb0c9ab800..b3683881345b 100644 --- a/toolchain/check/testdata/for/pattern.carbon +++ b/toolchain/check/testdata/for/pattern.carbon @@ -131,63 +131,63 @@ fn Run() { // CHECK:STDOUT: %EmptyRange.type: type = generic_class_type @EmptyRange [concrete] // CHECK:STDOUT: %EmptyRange.generic: %EmptyRange.type = struct_value () [concrete] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %Make.type.bd2: type = fn_type @Make, @EmptyRange(%T) [symbolic] -// CHECK:STDOUT: %Make.ed1: %Make.type.bd2 = struct_value () [symbolic] +// CHECK:STDOUT: %EmptyRange.Make.type.bd2: type = fn_type @EmptyRange.Make, @EmptyRange(%T) [symbolic] +// CHECK:STDOUT: %EmptyRange.Make.ed1: %EmptyRange.Make.type.bd2 = struct_value () [symbolic] // CHECK:STDOUT: %EmptyRange.cc8: type = class_type @EmptyRange, @EmptyRange(%C) [concrete] -// CHECK:STDOUT: %Make.type.557: type = fn_type @Make, @EmptyRange(%C) [concrete] -// CHECK:STDOUT: %Make.74d: %Make.type.557 = struct_value () [concrete] -// CHECK:STDOUT: %Make.specific_fn: = specific_function %Make.74d, @Make(%C) [concrete] +// CHECK:STDOUT: %EmptyRange.Make.type.557: type = fn_type @EmptyRange.Make, @EmptyRange(%C) [concrete] +// CHECK:STDOUT: %EmptyRange.Make.74d: %EmptyRange.Make.type.557 = struct_value () [concrete] +// CHECK:STDOUT: %EmptyRange.Make.specific_fn: = specific_function %EmptyRange.Make.74d, @EmptyRange.Make(%C) [concrete] // CHECK:STDOUT: %Iterate.type: type = facet_type <@Iterate> [concrete] -// CHECK:STDOUT: %NewCursor.type.427: type = fn_type @NewCursor.2 [concrete] -// CHECK:STDOUT: %NewCursor.type.f5f: type = fn_type @NewCursor.1, @Iterate.impl(%T) [symbolic] -// CHECK:STDOUT: %NewCursor.ec1: %NewCursor.type.f5f = struct_value () [symbolic] -// CHECK:STDOUT: %Next.type.264: type = fn_type @Next.1, @Iterate.impl(%T) [symbolic] -// CHECK:STDOUT: %Next.08e: %Next.type.264 = struct_value () [symbolic] -// CHECK:STDOUT: %HasValue.type.f81: type = fn_type @HasValue, @Optional(%T) [symbolic] -// CHECK:STDOUT: %HasValue.6fd: %HasValue.type.f81 = struct_value () [symbolic] -// CHECK:STDOUT: %Get.type.b8f: type = fn_type @Get, @Optional(%T) [symbolic] -// CHECK:STDOUT: %Get.9c8: %Get.type.b8f = struct_value () [symbolic] -// CHECK:STDOUT: %Iterate.impl_witness.52a: = impl_witness imports.%Iterate.impl_witness_table, @Iterate.impl(%C) [concrete] -// CHECK:STDOUT: %NewCursor.type.951: type = fn_type @NewCursor.1, @Iterate.impl(%C) [concrete] -// CHECK:STDOUT: %NewCursor.535: %NewCursor.type.951 = struct_value () [concrete] -// CHECK:STDOUT: %Next.type.63f: type = fn_type @Next.1, @Iterate.impl(%C) [concrete] -// CHECK:STDOUT: %Next.899: %Next.type.63f = struct_value () [concrete] +// CHECK:STDOUT: %Iterate.NewCursor.type: type = fn_type @Iterate.NewCursor [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.type.f5f: type = fn_type @EmptyRange.as.Iterate.impl.NewCursor, @EmptyRange.as.Iterate.impl(%T) [symbolic] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.ec1: %EmptyRange.as.Iterate.impl.NewCursor.type.f5f = struct_value () [symbolic] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.type.264: type = fn_type @EmptyRange.as.Iterate.impl.Next, @EmptyRange.as.Iterate.impl(%T) [symbolic] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.08e: %EmptyRange.as.Iterate.impl.Next.type.264 = struct_value () [symbolic] +// CHECK:STDOUT: %Optional.HasValue.type.f81: type = fn_type @Optional.HasValue, @Optional(%T) [symbolic] +// CHECK:STDOUT: %Optional.HasValue.6fd: %Optional.HasValue.type.f81 = struct_value () [symbolic] +// CHECK:STDOUT: %Optional.Get.type.b8f: type = fn_type @Optional.Get, @Optional(%T) [symbolic] +// CHECK:STDOUT: %Optional.Get.9c8: %Optional.Get.type.b8f = struct_value () [symbolic] +// CHECK:STDOUT: %Iterate.impl_witness.52a: = impl_witness imports.%Iterate.impl_witness_table, @EmptyRange.as.Iterate.impl(%C) [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.type.951: type = fn_type @EmptyRange.as.Iterate.impl.NewCursor, @EmptyRange.as.Iterate.impl(%C) [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.535: %EmptyRange.as.Iterate.impl.NewCursor.type.951 = struct_value () [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.type.63f: type = fn_type @EmptyRange.as.Iterate.impl.Next, @EmptyRange.as.Iterate.impl(%C) [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.899: %EmptyRange.as.Iterate.impl.Next.type.63f = struct_value () [concrete] // CHECK:STDOUT: %Iterate.facet: %Iterate.type = facet_value %EmptyRange.cc8, (%Iterate.impl_witness.52a) [concrete] -// CHECK:STDOUT: %.2f6: type = fn_type_with_self_type %NewCursor.type.427, %Iterate.facet [concrete] -// CHECK:STDOUT: %NewCursor.specific_fn: = specific_function %NewCursor.535, @NewCursor.1(%C) [concrete] -// CHECK:STDOUT: %Next.type.941: type = fn_type @Next.2 [concrete] -// CHECK:STDOUT: %.5d5: type = fn_type_with_self_type %Next.type.941, %Iterate.facet [concrete] +// CHECK:STDOUT: %.2f6: type = fn_type_with_self_type %Iterate.NewCursor.type, %Iterate.facet [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.specific_fn: = specific_function %EmptyRange.as.Iterate.impl.NewCursor.535, @EmptyRange.as.Iterate.impl.NewCursor(%C) [concrete] +// CHECK:STDOUT: %Iterate.Next.type: type = fn_type @Iterate.Next [concrete] +// CHECK:STDOUT: %.5d5: type = fn_type_with_self_type %Iterate.Next.type, %Iterate.facet [concrete] // CHECK:STDOUT: %Optional.cf0: type = class_type @Optional, @Optional(%C) [concrete] -// CHECK:STDOUT: %Next.specific_fn: = specific_function %Next.899, @Next.1(%C) [concrete] -// CHECK:STDOUT: %HasValue.type.71d: type = fn_type @HasValue, @Optional(%C) [concrete] -// CHECK:STDOUT: %HasValue.513: %HasValue.type.71d = struct_value () [concrete] -// CHECK:STDOUT: %Get.type.115: type = fn_type @Get, @Optional(%C) [concrete] -// CHECK:STDOUT: %Get.9c1: %Get.type.115 = struct_value () [concrete] -// CHECK:STDOUT: %HasValue.specific_fn: = specific_function %HasValue.513, @HasValue(%C) [concrete] -// CHECK:STDOUT: %Get.specific_fn: = specific_function %Get.9c1, @Get(%C) [concrete] -// CHECK:STDOUT: %Op.type.f77: type = fn_type @Op.1, @Destroy.impl(%C) [concrete] -// CHECK:STDOUT: %Op.01c: %Op.type.f77 = struct_value () [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.specific_fn: = specific_function %EmptyRange.as.Iterate.impl.Next.899, @EmptyRange.as.Iterate.impl.Next(%C) [concrete] +// CHECK:STDOUT: %Optional.HasValue.type.71d: type = fn_type @Optional.HasValue, @Optional(%C) [concrete] +// CHECK:STDOUT: %Optional.HasValue.513: %Optional.HasValue.type.71d = struct_value () [concrete] +// CHECK:STDOUT: %Optional.Get.type.115: type = fn_type @Optional.Get, @Optional(%C) [concrete] +// CHECK:STDOUT: %Optional.Get.9c1: %Optional.Get.type.115 = struct_value () [concrete] +// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %Optional.HasValue.513, @Optional.HasValue(%C) [concrete] +// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Optional.Get.9c1, @Optional.Get(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.f77: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.01c: %T.as.Destroy.impl.Op.type.f77 = struct_value () [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] -// CHECK:STDOUT: %Op.type.e93: type = fn_type @Op.1, @Destroy.impl(%Optional.cf0) [concrete] -// CHECK:STDOUT: %Op.a97: %Op.type.e93 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.e93: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%Optional.cf0) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.a97: %T.as.Destroy.impl.Op.type.e93 = struct_value () [concrete] // CHECK:STDOUT: %ptr.8e6: type = ptr_type %Optional.cf0 [concrete] -// CHECK:STDOUT: %Op.type.8b2: type = fn_type @Op.1, @Destroy.impl(%empty_struct_type) [concrete] -// CHECK:STDOUT: %Op.ca6: %Op.type.8b2 = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.699: type = fn_type @Op.1, @Destroy.impl(%EmptyRange.cc8) [concrete] -// CHECK:STDOUT: %Op.d12: %Op.type.699 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.8b2: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%empty_struct_type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ca6: %T.as.Destroy.impl.Op.type.8b2 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.699: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%EmptyRange.cc8) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.d12: %T.as.Destroy.impl.Op.type.699 = struct_value () [concrete] // CHECK:STDOUT: %ptr.35d: type = ptr_type %EmptyRange.cc8 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Main.EmptyRange: %EmptyRange.type = import_ref Main//empty_range, EmptyRange, loaded [concrete = constants.%EmptyRange.generic] -// CHECK:STDOUT: %Main.import_ref.6ea: @EmptyRange.%Make.type (%Make.type.bd2) = import_ref Main//empty_range, loc5_21, loaded [symbolic = @EmptyRange.%Make (constants.%Make.ed1)] +// CHECK:STDOUT: %Main.import_ref.6ea: @EmptyRange.%EmptyRange.Make.type (%EmptyRange.Make.type.bd2) = import_ref Main//empty_range, loc5_21, loaded [symbolic = @EmptyRange.%EmptyRange.Make (constants.%EmptyRange.Make.ed1)] // CHECK:STDOUT: %Main.import_ref.6ce = import_ref Main//empty_range, loc7_68, unloaded // CHECK:STDOUT: %Main.import_ref.999 = import_ref Main//empty_range, loc7_68, unloaded -// CHECK:STDOUT: %Main.import_ref.57b: @Iterate.impl.%NewCursor.type (%NewCursor.type.f5f) = import_ref Main//empty_range, loc8_38, loaded [symbolic = @Iterate.impl.%NewCursor (constants.%NewCursor.ec1)] -// CHECK:STDOUT: %Main.import_ref.170: @Iterate.impl.%Next.type (%Next.type.264) = import_ref Main//empty_range, loc11_58, loaded [symbolic = @Iterate.impl.%Next (constants.%Next.08e)] -// CHECK:STDOUT: %Iterate.impl_witness_table = impl_witness_table (%Main.import_ref.6ce, %Main.import_ref.999, %Main.import_ref.57b, %Main.import_ref.170), @Iterate.impl [concrete] -// CHECK:STDOUT: %Main.import_ref.7f9: @Optional.%HasValue.type (%HasValue.type.f81) = import_ref Main//empty_range, inst136 [indirect], loaded [symbolic = @Optional.%HasValue (constants.%HasValue.6fd)] -// CHECK:STDOUT: %Main.import_ref.d10: @Optional.%Get.type (%Get.type.b8f) = import_ref Main//empty_range, inst137 [indirect], loaded [symbolic = @Optional.%Get (constants.%Get.9c8)] +// CHECK:STDOUT: %Main.import_ref.57b: @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.NewCursor.type (%EmptyRange.as.Iterate.impl.NewCursor.type.f5f) = import_ref Main//empty_range, loc8_38, loaded [symbolic = @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.NewCursor (constants.%EmptyRange.as.Iterate.impl.NewCursor.ec1)] +// CHECK:STDOUT: %Main.import_ref.170: @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.Next.type (%EmptyRange.as.Iterate.impl.Next.type.264) = import_ref Main//empty_range, loc11_58, loaded [symbolic = @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.Next (constants.%EmptyRange.as.Iterate.impl.Next.08e)] +// CHECK:STDOUT: %Iterate.impl_witness_table = impl_witness_table (%Main.import_ref.6ce, %Main.import_ref.999, %Main.import_ref.57b, %Main.import_ref.170), @EmptyRange.as.Iterate.impl [concrete] +// CHECK:STDOUT: %Main.import_ref.7f9: @Optional.%Optional.HasValue.type (%Optional.HasValue.type.f81) = import_ref Main//empty_range, inst136 [indirect], loaded [symbolic = @Optional.%Optional.HasValue (constants.%Optional.HasValue.6fd)] +// CHECK:STDOUT: %Main.import_ref.d10: @Optional.%Optional.Get.type (%Optional.Get.type.b8f) = import_ref Main//empty_range, inst137 [indirect], loaded [symbolic = @Optional.%Optional.Get (constants.%Optional.Get.9c8)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Run() { @@ -198,54 +198,54 @@ fn Run() { // CHECK:STDOUT: %EmptyRange.ref: %EmptyRange.type = name_ref EmptyRange, imports.%Main.EmptyRange [concrete = constants.%EmptyRange.generic] // CHECK:STDOUT: %C.ref.loc12_27: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %EmptyRange: type = class_type @EmptyRange, @EmptyRange(constants.%C) [concrete = constants.%EmptyRange.cc8] -// CHECK:STDOUT: %.loc12_29: %Make.type.557 = specific_constant imports.%Main.import_ref.6ea, @EmptyRange(constants.%C) [concrete = constants.%Make.74d] -// CHECK:STDOUT: %Make.ref: %Make.type.557 = name_ref Make, %.loc12_29 [concrete = constants.%Make.74d] -// CHECK:STDOUT: %Make.specific_fn: = specific_function %Make.ref, @Make(constants.%C) [concrete = constants.%Make.specific_fn] +// CHECK:STDOUT: %.loc12_29: %EmptyRange.Make.type.557 = specific_constant imports.%Main.import_ref.6ea, @EmptyRange(constants.%C) [concrete = constants.%EmptyRange.Make.74d] +// CHECK:STDOUT: %Make.ref: %EmptyRange.Make.type.557 = name_ref Make, %.loc12_29 [concrete = constants.%EmptyRange.Make.74d] +// CHECK:STDOUT: %EmptyRange.Make.specific_fn: = specific_function %Make.ref, @EmptyRange.Make(constants.%C) [concrete = constants.%EmptyRange.Make.specific_fn] // CHECK:STDOUT: %.loc12_35.1: ref %EmptyRange.cc8 = temporary_storage -// CHECK:STDOUT: %Make.call: init %EmptyRange.cc8 = call %Make.specific_fn() to %.loc12_35.1 -// CHECK:STDOUT: %.loc12_35.2: ref %EmptyRange.cc8 = temporary %.loc12_35.1, %Make.call -// CHECK:STDOUT: %impl.elem2: %.2f6 = impl_witness_access constants.%Iterate.impl_witness.52a, element2 [concrete = constants.%NewCursor.535] +// CHECK:STDOUT: %EmptyRange.Make.call: init %EmptyRange.cc8 = call %EmptyRange.Make.specific_fn() to %.loc12_35.1 +// CHECK:STDOUT: %.loc12_35.2: ref %EmptyRange.cc8 = temporary %.loc12_35.1, %EmptyRange.Make.call +// CHECK:STDOUT: %impl.elem2: %.2f6 = impl_witness_access constants.%Iterate.impl_witness.52a, element2 [concrete = constants.%EmptyRange.as.Iterate.impl.NewCursor.535] // CHECK:STDOUT: %bound_method.loc12_36.1: = bound_method %.loc12_35.2, %impl.elem2 -// CHECK:STDOUT: %specific_fn.loc12_36.1: = specific_function %impl.elem2, @NewCursor.1(constants.%C) [concrete = constants.%NewCursor.specific_fn] +// CHECK:STDOUT: %specific_fn.loc12_36.1: = specific_function %impl.elem2, @EmptyRange.as.Iterate.impl.NewCursor(constants.%C) [concrete = constants.%EmptyRange.as.Iterate.impl.NewCursor.specific_fn] // CHECK:STDOUT: %bound_method.loc12_36.2: = bound_method %.loc12_35.2, %specific_fn.loc12_36.1 // CHECK:STDOUT: %.loc12_35.3: %EmptyRange.cc8 = bind_value %.loc12_35.2 -// CHECK:STDOUT: %NewCursor.call: init %empty_struct_type = call %bound_method.loc12_36.2(%.loc12_35.3) +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.call: init %empty_struct_type = call %bound_method.loc12_36.2(%.loc12_35.3) // CHECK:STDOUT: %var: ref %empty_struct_type = var invalid -// CHECK:STDOUT: assign %var, %NewCursor.call +// CHECK:STDOUT: assign %var, %EmptyRange.as.Iterate.impl.NewCursor.call // CHECK:STDOUT: br !for.next // CHECK:STDOUT: // CHECK:STDOUT: !for.next: // CHECK:STDOUT: %addr.loc12_36.1: %ptr.c28 = addr_of %var -// CHECK:STDOUT: %impl.elem3: %.5d5 = impl_witness_access constants.%Iterate.impl_witness.52a, element3 [concrete = constants.%Next.899] +// CHECK:STDOUT: %impl.elem3: %.5d5 = impl_witness_access constants.%Iterate.impl_witness.52a, element3 [concrete = constants.%EmptyRange.as.Iterate.impl.Next.899] // CHECK:STDOUT: %bound_method.loc12_36.3: = bound_method %.loc12_35.2, %impl.elem3 -// CHECK:STDOUT: %specific_fn.loc12_36.2: = specific_function %impl.elem3, @Next.1(constants.%C) [concrete = constants.%Next.specific_fn] +// CHECK:STDOUT: %specific_fn.loc12_36.2: = specific_function %impl.elem3, @EmptyRange.as.Iterate.impl.Next(constants.%C) [concrete = constants.%EmptyRange.as.Iterate.impl.Next.specific_fn] // CHECK:STDOUT: %bound_method.loc12_36.4: = bound_method %.loc12_35.2, %specific_fn.loc12_36.2 // CHECK:STDOUT: %.loc12_36.1: ref %Optional.cf0 = temporary_storage // CHECK:STDOUT: %.loc12_35.4: %EmptyRange.cc8 = bind_value %.loc12_35.2 -// CHECK:STDOUT: %Next.call: init %Optional.cf0 = call %bound_method.loc12_36.4(%.loc12_35.4, %addr.loc12_36.1) to %.loc12_36.1 -// CHECK:STDOUT: %.loc12_36.2: ref %Optional.cf0 = temporary %.loc12_36.1, %Next.call -// CHECK:STDOUT: %.loc12_36.3: %HasValue.type.71d = specific_constant imports.%Main.import_ref.7f9, @Optional(constants.%C) [concrete = constants.%HasValue.513] -// CHECK:STDOUT: %HasValue.ref: %HasValue.type.71d = name_ref HasValue, %.loc12_36.3 [concrete = constants.%HasValue.513] -// CHECK:STDOUT: %HasValue.bound: = bound_method %.loc12_36.2, %HasValue.ref -// CHECK:STDOUT: %HasValue.specific_fn: = specific_function %HasValue.ref, @HasValue(constants.%C) [concrete = constants.%HasValue.specific_fn] -// CHECK:STDOUT: %bound_method.loc12_36.5: = bound_method %.loc12_36.2, %HasValue.specific_fn +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.call: init %Optional.cf0 = call %bound_method.loc12_36.4(%.loc12_35.4, %addr.loc12_36.1) to %.loc12_36.1 +// CHECK:STDOUT: %.loc12_36.2: ref %Optional.cf0 = temporary %.loc12_36.1, %EmptyRange.as.Iterate.impl.Next.call +// CHECK:STDOUT: %.loc12_36.3: %Optional.HasValue.type.71d = specific_constant imports.%Main.import_ref.7f9, @Optional(constants.%C) [concrete = constants.%Optional.HasValue.513] +// CHECK:STDOUT: %HasValue.ref: %Optional.HasValue.type.71d = name_ref HasValue, %.loc12_36.3 [concrete = constants.%Optional.HasValue.513] +// CHECK:STDOUT: %Optional.HasValue.bound: = bound_method %.loc12_36.2, %HasValue.ref +// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %HasValue.ref, @Optional.HasValue(constants.%C) [concrete = constants.%Optional.HasValue.specific_fn] +// CHECK:STDOUT: %bound_method.loc12_36.5: = bound_method %.loc12_36.2, %Optional.HasValue.specific_fn // CHECK:STDOUT: %.loc12_36.4: %Optional.cf0 = bind_value %.loc12_36.2 -// CHECK:STDOUT: %HasValue.call: init bool = call %bound_method.loc12_36.5(%.loc12_36.4) -// CHECK:STDOUT: %.loc12_36.5: bool = value_of_initializer %HasValue.call -// CHECK:STDOUT: %.loc12_36.6: bool = converted %HasValue.call, %.loc12_36.5 +// CHECK:STDOUT: %Optional.HasValue.call: init bool = call %bound_method.loc12_36.5(%.loc12_36.4) +// CHECK:STDOUT: %.loc12_36.5: bool = value_of_initializer %Optional.HasValue.call +// CHECK:STDOUT: %.loc12_36.6: bool = converted %Optional.HasValue.call, %.loc12_36.5 // CHECK:STDOUT: if %.loc12_36.6 br !for.body else br !for.done // CHECK:STDOUT: // CHECK:STDOUT: !for.body: -// CHECK:STDOUT: %.loc12_36.7: %Get.type.115 = specific_constant imports.%Main.import_ref.d10, @Optional(constants.%C) [concrete = constants.%Get.9c1] -// CHECK:STDOUT: %Get.ref: %Get.type.115 = name_ref Get, %.loc12_36.7 [concrete = constants.%Get.9c1] -// CHECK:STDOUT: %Get.bound: = bound_method %.loc12_36.2, %Get.ref -// CHECK:STDOUT: %Get.specific_fn: = specific_function %Get.ref, @Get(constants.%C) [concrete = constants.%Get.specific_fn] -// CHECK:STDOUT: %bound_method.loc12_36.6: = bound_method %.loc12_36.2, %Get.specific_fn +// CHECK:STDOUT: %.loc12_36.7: %Optional.Get.type.115 = specific_constant imports.%Main.import_ref.d10, @Optional(constants.%C) [concrete = constants.%Optional.Get.9c1] +// CHECK:STDOUT: %Get.ref: %Optional.Get.type.115 = name_ref Get, %.loc12_36.7 [concrete = constants.%Optional.Get.9c1] +// CHECK:STDOUT: %Optional.Get.bound: = bound_method %.loc12_36.2, %Get.ref +// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Get.ref, @Optional.Get(constants.%C) [concrete = constants.%Optional.Get.specific_fn] +// CHECK:STDOUT: %bound_method.loc12_36.6: = bound_method %.loc12_36.2, %Optional.Get.specific_fn // CHECK:STDOUT: %.loc12_36.8: ref %C = temporary_storage // CHECK:STDOUT: %.loc12_36.9: %Optional.cf0 = bind_value %.loc12_36.2 -// CHECK:STDOUT: %Get.call: init %C = call %bound_method.loc12_36.6(%.loc12_36.9) to %.loc12_36.8 +// CHECK:STDOUT: %Optional.Get.call: init %C = call %bound_method.loc12_36.6(%.loc12_36.9) to %.loc12_36.8 // CHECK:STDOUT: %C.ref.loc12_11: type = name_ref C, file.%C.decl [concrete = constants.%C] -// CHECK:STDOUT: %.loc12_36.10: ref %C = temporary %.loc12_36.8, %Get.call +// CHECK:STDOUT: %.loc12_36.10: ref %C = temporary %.loc12_36.8, %Optional.Get.call // CHECK:STDOUT: %.loc12_36.11: %C = bind_value %.loc12_36.10 // CHECK:STDOUT: %c: %C = bind_name c, %.loc12_36.11 // CHECK:STDOUT: %Body.ref: %Body.type = name_ref Body, file.%Body.decl [concrete = constants.%Body] @@ -254,26 +254,26 @@ fn Run() { // CHECK:STDOUT: br !for.next // CHECK:STDOUT: // CHECK:STDOUT: !for.done: -// CHECK:STDOUT: %Op.bound.loc12_36.1: = bound_method %.loc12_36.8, constants.%Op.01c +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc12_36.1: = bound_method %.loc12_36.8, constants.%T.as.Destroy.impl.Op.01c // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc12_36.7: = bound_method %.loc12_36.8, %Op.specific_fn.1 +// CHECK:STDOUT: %bound_method.loc12_36.7: = bound_method %.loc12_36.8, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc12_36.2: %ptr.019 = addr_of %.loc12_36.8 -// CHECK:STDOUT: %no_op.loc12_36.1: init %empty_tuple.type = call %bound_method.loc12_36.7(%addr.loc12_36.2) -// CHECK:STDOUT: %Op.bound.loc12_36.2: = bound_method %.loc12_36.1, constants.%Op.a97 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc12_36.1: init %empty_tuple.type = call %bound_method.loc12_36.7(%addr.loc12_36.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc12_36.2: = bound_method %.loc12_36.1, constants.%T.as.Destroy.impl.Op.a97 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc12_36.8: = bound_method %.loc12_36.1, %Op.specific_fn.2 +// CHECK:STDOUT: %bound_method.loc12_36.8: = bound_method %.loc12_36.1, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc12_36.3: %ptr.8e6 = addr_of %.loc12_36.1 -// CHECK:STDOUT: %no_op.loc12_36.2: init %empty_tuple.type = call %bound_method.loc12_36.8(%addr.loc12_36.3) -// CHECK:STDOUT: %Op.bound.loc12_36.3: = bound_method %var, constants.%Op.ca6 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc12_36.2: init %empty_tuple.type = call %bound_method.loc12_36.8(%addr.loc12_36.3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc12_36.3: = bound_method %var, constants.%T.as.Destroy.impl.Op.ca6 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc12_36.9: = bound_method %var, %Op.specific_fn.3 +// CHECK:STDOUT: %bound_method.loc12_36.9: = bound_method %var, %T.as.Destroy.impl.Op.specific_fn.3 // CHECK:STDOUT: %addr.loc12_36.4: %ptr.c28 = addr_of %var -// CHECK:STDOUT: %no_op.loc12_36.3: init %empty_tuple.type = call %bound_method.loc12_36.9(%addr.loc12_36.4) -// CHECK:STDOUT: %Op.bound.loc12_35: = bound_method %.loc12_35.1, constants.%Op.d12 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc12_36.3: init %empty_tuple.type = call %bound_method.loc12_36.9(%addr.loc12_36.4) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc12_35: = bound_method %.loc12_35.1, constants.%T.as.Destroy.impl.Op.d12 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc12_35: = bound_method %.loc12_35.1, %Op.specific_fn.4 +// CHECK:STDOUT: %bound_method.loc12_35: = bound_method %.loc12_35.1, %T.as.Destroy.impl.Op.specific_fn.4 // CHECK:STDOUT: %addr.loc12_35: %ptr.35d = addr_of %.loc12_35.1 -// CHECK:STDOUT: %no_op.loc12_35: init %empty_tuple.type = call %bound_method.loc12_35(%addr.loc12_35) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc12_35: init %empty_tuple.type = call %bound_method.loc12_35(%addr.loc12_35) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -291,62 +291,62 @@ fn Run() { // CHECK:STDOUT: %EmptyRange.type: type = generic_class_type @EmptyRange [concrete] // CHECK:STDOUT: %EmptyRange.generic: %EmptyRange.type = struct_value () [concrete] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %Make.type.bd2: type = fn_type @Make, @EmptyRange(%T) [symbolic] -// CHECK:STDOUT: %Make.ed1: %Make.type.bd2 = struct_value () [symbolic] +// CHECK:STDOUT: %EmptyRange.Make.type.bd2: type = fn_type @EmptyRange.Make, @EmptyRange(%T) [symbolic] +// CHECK:STDOUT: %EmptyRange.Make.ed1: %EmptyRange.Make.type.bd2 = struct_value () [symbolic] // CHECK:STDOUT: %EmptyRange.cc8: type = class_type @EmptyRange, @EmptyRange(%C) [concrete] -// CHECK:STDOUT: %Make.type.557: type = fn_type @Make, @EmptyRange(%C) [concrete] -// CHECK:STDOUT: %Make.74d: %Make.type.557 = struct_value () [concrete] -// CHECK:STDOUT: %Make.specific_fn: = specific_function %Make.74d, @Make(%C) [concrete] +// CHECK:STDOUT: %EmptyRange.Make.type.557: type = fn_type @EmptyRange.Make, @EmptyRange(%C) [concrete] +// CHECK:STDOUT: %EmptyRange.Make.74d: %EmptyRange.Make.type.557 = struct_value () [concrete] +// CHECK:STDOUT: %EmptyRange.Make.specific_fn: = specific_function %EmptyRange.Make.74d, @EmptyRange.Make(%C) [concrete] // CHECK:STDOUT: %Iterate.type: type = facet_type <@Iterate> [concrete] -// CHECK:STDOUT: %NewCursor.type.427: type = fn_type @NewCursor.2 [concrete] -// CHECK:STDOUT: %NewCursor.type.f5f: type = fn_type @NewCursor.1, @Iterate.impl(%T) [symbolic] -// CHECK:STDOUT: %NewCursor.ec1: %NewCursor.type.f5f = struct_value () [symbolic] -// CHECK:STDOUT: %Next.type.264: type = fn_type @Next.1, @Iterate.impl(%T) [symbolic] -// CHECK:STDOUT: %Next.08e: %Next.type.264 = struct_value () [symbolic] -// CHECK:STDOUT: %HasValue.type.f81: type = fn_type @HasValue, @Optional(%T) [symbolic] -// CHECK:STDOUT: %HasValue.6fd: %HasValue.type.f81 = struct_value () [symbolic] -// CHECK:STDOUT: %Get.type.b8f: type = fn_type @Get, @Optional(%T) [symbolic] -// CHECK:STDOUT: %Get.9c8: %Get.type.b8f = struct_value () [symbolic] -// CHECK:STDOUT: %Iterate.impl_witness.52a: = impl_witness imports.%Iterate.impl_witness_table, @Iterate.impl(%C) [concrete] -// CHECK:STDOUT: %NewCursor.type.951: type = fn_type @NewCursor.1, @Iterate.impl(%C) [concrete] -// CHECK:STDOUT: %NewCursor.535: %NewCursor.type.951 = struct_value () [concrete] -// CHECK:STDOUT: %Next.type.63f: type = fn_type @Next.1, @Iterate.impl(%C) [concrete] -// CHECK:STDOUT: %Next.899: %Next.type.63f = struct_value () [concrete] +// CHECK:STDOUT: %Iterate.NewCursor.type: type = fn_type @Iterate.NewCursor [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.type.f5f: type = fn_type @EmptyRange.as.Iterate.impl.NewCursor, @EmptyRange.as.Iterate.impl(%T) [symbolic] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.ec1: %EmptyRange.as.Iterate.impl.NewCursor.type.f5f = struct_value () [symbolic] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.type.264: type = fn_type @EmptyRange.as.Iterate.impl.Next, @EmptyRange.as.Iterate.impl(%T) [symbolic] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.08e: %EmptyRange.as.Iterate.impl.Next.type.264 = struct_value () [symbolic] +// CHECK:STDOUT: %Optional.HasValue.type.f81: type = fn_type @Optional.HasValue, @Optional(%T) [symbolic] +// CHECK:STDOUT: %Optional.HasValue.6fd: %Optional.HasValue.type.f81 = struct_value () [symbolic] +// CHECK:STDOUT: %Optional.Get.type.b8f: type = fn_type @Optional.Get, @Optional(%T) [symbolic] +// CHECK:STDOUT: %Optional.Get.9c8: %Optional.Get.type.b8f = struct_value () [symbolic] +// CHECK:STDOUT: %Iterate.impl_witness.52a: = impl_witness imports.%Iterate.impl_witness_table, @EmptyRange.as.Iterate.impl(%C) [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.type.951: type = fn_type @EmptyRange.as.Iterate.impl.NewCursor, @EmptyRange.as.Iterate.impl(%C) [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.535: %EmptyRange.as.Iterate.impl.NewCursor.type.951 = struct_value () [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.type.63f: type = fn_type @EmptyRange.as.Iterate.impl.Next, @EmptyRange.as.Iterate.impl(%C) [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.899: %EmptyRange.as.Iterate.impl.Next.type.63f = struct_value () [concrete] // CHECK:STDOUT: %Iterate.facet: %Iterate.type = facet_value %EmptyRange.cc8, (%Iterate.impl_witness.52a) [concrete] -// CHECK:STDOUT: %.2f6: type = fn_type_with_self_type %NewCursor.type.427, %Iterate.facet [concrete] -// CHECK:STDOUT: %NewCursor.specific_fn: = specific_function %NewCursor.535, @NewCursor.1(%C) [concrete] -// CHECK:STDOUT: %Next.type.941: type = fn_type @Next.2 [concrete] -// CHECK:STDOUT: %.5d5: type = fn_type_with_self_type %Next.type.941, %Iterate.facet [concrete] +// CHECK:STDOUT: %.2f6: type = fn_type_with_self_type %Iterate.NewCursor.type, %Iterate.facet [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.specific_fn: = specific_function %EmptyRange.as.Iterate.impl.NewCursor.535, @EmptyRange.as.Iterate.impl.NewCursor(%C) [concrete] +// CHECK:STDOUT: %Iterate.Next.type: type = fn_type @Iterate.Next [concrete] +// CHECK:STDOUT: %.5d5: type = fn_type_with_self_type %Iterate.Next.type, %Iterate.facet [concrete] // CHECK:STDOUT: %Optional.cf0: type = class_type @Optional, @Optional(%C) [concrete] -// CHECK:STDOUT: %Next.specific_fn: = specific_function %Next.899, @Next.1(%C) [concrete] -// CHECK:STDOUT: %HasValue.type.71d: type = fn_type @HasValue, @Optional(%C) [concrete] -// CHECK:STDOUT: %HasValue.513: %HasValue.type.71d = struct_value () [concrete] -// CHECK:STDOUT: %Get.type.115: type = fn_type @Get, @Optional(%C) [concrete] -// CHECK:STDOUT: %Get.9c1: %Get.type.115 = struct_value () [concrete] -// CHECK:STDOUT: %HasValue.specific_fn: = specific_function %HasValue.513, @HasValue(%C) [concrete] -// CHECK:STDOUT: %Get.specific_fn: = specific_function %Get.9c1, @Get(%C) [concrete] -// CHECK:STDOUT: %Op.type.f77: type = fn_type @Op.1, @Destroy.impl(%C) [concrete] -// CHECK:STDOUT: %Op.01c: %Op.type.f77 = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.e93: type = fn_type @Op.1, @Destroy.impl(%Optional.cf0) [concrete] -// CHECK:STDOUT: %Op.a97: %Op.type.e93 = struct_value () [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.specific_fn: = specific_function %EmptyRange.as.Iterate.impl.Next.899, @EmptyRange.as.Iterate.impl.Next(%C) [concrete] +// CHECK:STDOUT: %Optional.HasValue.type.71d: type = fn_type @Optional.HasValue, @Optional(%C) [concrete] +// CHECK:STDOUT: %Optional.HasValue.513: %Optional.HasValue.type.71d = struct_value () [concrete] +// CHECK:STDOUT: %Optional.Get.type.115: type = fn_type @Optional.Get, @Optional(%C) [concrete] +// CHECK:STDOUT: %Optional.Get.9c1: %Optional.Get.type.115 = struct_value () [concrete] +// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %Optional.HasValue.513, @Optional.HasValue(%C) [concrete] +// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Optional.Get.9c1, @Optional.Get(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.f77: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.01c: %T.as.Destroy.impl.Op.type.f77 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.e93: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%Optional.cf0) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.a97: %T.as.Destroy.impl.Op.type.e93 = struct_value () [concrete] // CHECK:STDOUT: %ptr.8e6: type = ptr_type %Optional.cf0 [concrete] -// CHECK:STDOUT: %Op.type.8b2: type = fn_type @Op.1, @Destroy.impl(%empty_struct_type) [concrete] -// CHECK:STDOUT: %Op.ca6: %Op.type.8b2 = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.699: type = fn_type @Op.1, @Destroy.impl(%EmptyRange.cc8) [concrete] -// CHECK:STDOUT: %Op.d12: %Op.type.699 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.8b2: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%empty_struct_type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ca6: %T.as.Destroy.impl.Op.type.8b2 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.699: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%EmptyRange.cc8) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.d12: %T.as.Destroy.impl.Op.type.699 = struct_value () [concrete] // CHECK:STDOUT: %ptr.35d: type = ptr_type %EmptyRange.cc8 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Main.EmptyRange: %EmptyRange.type = import_ref Main//empty_range, EmptyRange, loaded [concrete = constants.%EmptyRange.generic] -// CHECK:STDOUT: %Main.import_ref.6ea: @EmptyRange.%Make.type (%Make.type.bd2) = import_ref Main//empty_range, loc5_21, loaded [symbolic = @EmptyRange.%Make (constants.%Make.ed1)] +// CHECK:STDOUT: %Main.import_ref.6ea: @EmptyRange.%EmptyRange.Make.type (%EmptyRange.Make.type.bd2) = import_ref Main//empty_range, loc5_21, loaded [symbolic = @EmptyRange.%EmptyRange.Make (constants.%EmptyRange.Make.ed1)] // CHECK:STDOUT: %Main.import_ref.6ce = import_ref Main//empty_range, loc7_68, unloaded // CHECK:STDOUT: %Main.import_ref.999 = import_ref Main//empty_range, loc7_68, unloaded -// CHECK:STDOUT: %Main.import_ref.57b: @Iterate.impl.%NewCursor.type (%NewCursor.type.f5f) = import_ref Main//empty_range, loc8_38, loaded [symbolic = @Iterate.impl.%NewCursor (constants.%NewCursor.ec1)] -// CHECK:STDOUT: %Main.import_ref.170: @Iterate.impl.%Next.type (%Next.type.264) = import_ref Main//empty_range, loc11_58, loaded [symbolic = @Iterate.impl.%Next (constants.%Next.08e)] -// CHECK:STDOUT: %Iterate.impl_witness_table = impl_witness_table (%Main.import_ref.6ce, %Main.import_ref.999, %Main.import_ref.57b, %Main.import_ref.170), @Iterate.impl [concrete] -// CHECK:STDOUT: %Main.import_ref.7f9: @Optional.%HasValue.type (%HasValue.type.f81) = import_ref Main//empty_range, inst136 [indirect], loaded [symbolic = @Optional.%HasValue (constants.%HasValue.6fd)] -// CHECK:STDOUT: %Main.import_ref.d10: @Optional.%Get.type (%Get.type.b8f) = import_ref Main//empty_range, inst137 [indirect], loaded [symbolic = @Optional.%Get (constants.%Get.9c8)] +// CHECK:STDOUT: %Main.import_ref.57b: @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.NewCursor.type (%EmptyRange.as.Iterate.impl.NewCursor.type.f5f) = import_ref Main//empty_range, loc8_38, loaded [symbolic = @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.NewCursor (constants.%EmptyRange.as.Iterate.impl.NewCursor.ec1)] +// CHECK:STDOUT: %Main.import_ref.170: @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.Next.type (%EmptyRange.as.Iterate.impl.Next.type.264) = import_ref Main//empty_range, loc11_58, loaded [symbolic = @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.Next (constants.%EmptyRange.as.Iterate.impl.Next.08e)] +// CHECK:STDOUT: %Iterate.impl_witness_table = impl_witness_table (%Main.import_ref.6ce, %Main.import_ref.999, %Main.import_ref.57b, %Main.import_ref.170), @EmptyRange.as.Iterate.impl [concrete] +// CHECK:STDOUT: %Main.import_ref.7f9: @Optional.%Optional.HasValue.type (%Optional.HasValue.type.f81) = import_ref Main//empty_range, inst136 [indirect], loaded [symbolic = @Optional.%Optional.HasValue (constants.%Optional.HasValue.6fd)] +// CHECK:STDOUT: %Main.import_ref.d10: @Optional.%Optional.Get.type (%Optional.Get.type.b8f) = import_ref Main//empty_range, inst137 [indirect], loaded [symbolic = @Optional.%Optional.Get (constants.%Optional.Get.9c8)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Run() { @@ -358,54 +358,54 @@ fn Run() { // CHECK:STDOUT: %EmptyRange.ref: %EmptyRange.type = name_ref EmptyRange, imports.%Main.EmptyRange [concrete = constants.%EmptyRange.generic] // CHECK:STDOUT: %C.ref.loc12_31: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %EmptyRange: type = class_type @EmptyRange, @EmptyRange(constants.%C) [concrete = constants.%EmptyRange.cc8] -// CHECK:STDOUT: %.loc12_33: %Make.type.557 = specific_constant imports.%Main.import_ref.6ea, @EmptyRange(constants.%C) [concrete = constants.%Make.74d] -// CHECK:STDOUT: %Make.ref: %Make.type.557 = name_ref Make, %.loc12_33 [concrete = constants.%Make.74d] -// CHECK:STDOUT: %Make.specific_fn: = specific_function %Make.ref, @Make(constants.%C) [concrete = constants.%Make.specific_fn] +// CHECK:STDOUT: %.loc12_33: %EmptyRange.Make.type.557 = specific_constant imports.%Main.import_ref.6ea, @EmptyRange(constants.%C) [concrete = constants.%EmptyRange.Make.74d] +// CHECK:STDOUT: %Make.ref: %EmptyRange.Make.type.557 = name_ref Make, %.loc12_33 [concrete = constants.%EmptyRange.Make.74d] +// CHECK:STDOUT: %EmptyRange.Make.specific_fn: = specific_function %Make.ref, @EmptyRange.Make(constants.%C) [concrete = constants.%EmptyRange.Make.specific_fn] // CHECK:STDOUT: %.loc12_39.1: ref %EmptyRange.cc8 = temporary_storage -// CHECK:STDOUT: %Make.call: init %EmptyRange.cc8 = call %Make.specific_fn() to %.loc12_39.1 -// CHECK:STDOUT: %.loc12_39.2: ref %EmptyRange.cc8 = temporary %.loc12_39.1, %Make.call -// CHECK:STDOUT: %impl.elem2: %.2f6 = impl_witness_access constants.%Iterate.impl_witness.52a, element2 [concrete = constants.%NewCursor.535] +// CHECK:STDOUT: %EmptyRange.Make.call: init %EmptyRange.cc8 = call %EmptyRange.Make.specific_fn() to %.loc12_39.1 +// CHECK:STDOUT: %.loc12_39.2: ref %EmptyRange.cc8 = temporary %.loc12_39.1, %EmptyRange.Make.call +// CHECK:STDOUT: %impl.elem2: %.2f6 = impl_witness_access constants.%Iterate.impl_witness.52a, element2 [concrete = constants.%EmptyRange.as.Iterate.impl.NewCursor.535] // CHECK:STDOUT: %bound_method.loc12_40.1: = bound_method %.loc12_39.2, %impl.elem2 -// CHECK:STDOUT: %specific_fn.loc12_40.1: = specific_function %impl.elem2, @NewCursor.1(constants.%C) [concrete = constants.%NewCursor.specific_fn] +// CHECK:STDOUT: %specific_fn.loc12_40.1: = specific_function %impl.elem2, @EmptyRange.as.Iterate.impl.NewCursor(constants.%C) [concrete = constants.%EmptyRange.as.Iterate.impl.NewCursor.specific_fn] // CHECK:STDOUT: %bound_method.loc12_40.2: = bound_method %.loc12_39.2, %specific_fn.loc12_40.1 // CHECK:STDOUT: %.loc12_39.3: %EmptyRange.cc8 = bind_value %.loc12_39.2 -// CHECK:STDOUT: %NewCursor.call: init %empty_struct_type = call %bound_method.loc12_40.2(%.loc12_39.3) +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.call: init %empty_struct_type = call %bound_method.loc12_40.2(%.loc12_39.3) // CHECK:STDOUT: %var: ref %empty_struct_type = var invalid -// CHECK:STDOUT: assign %var, %NewCursor.call +// CHECK:STDOUT: assign %var, %EmptyRange.as.Iterate.impl.NewCursor.call // CHECK:STDOUT: br !for.next // CHECK:STDOUT: // CHECK:STDOUT: !for.next: // CHECK:STDOUT: %addr.loc12_40.1: %ptr.c28 = addr_of %var -// CHECK:STDOUT: %impl.elem3: %.5d5 = impl_witness_access constants.%Iterate.impl_witness.52a, element3 [concrete = constants.%Next.899] +// CHECK:STDOUT: %impl.elem3: %.5d5 = impl_witness_access constants.%Iterate.impl_witness.52a, element3 [concrete = constants.%EmptyRange.as.Iterate.impl.Next.899] // CHECK:STDOUT: %bound_method.loc12_40.3: = bound_method %.loc12_39.2, %impl.elem3 -// CHECK:STDOUT: %specific_fn.loc12_40.2: = specific_function %impl.elem3, @Next.1(constants.%C) [concrete = constants.%Next.specific_fn] +// CHECK:STDOUT: %specific_fn.loc12_40.2: = specific_function %impl.elem3, @EmptyRange.as.Iterate.impl.Next(constants.%C) [concrete = constants.%EmptyRange.as.Iterate.impl.Next.specific_fn] // CHECK:STDOUT: %bound_method.loc12_40.4: = bound_method %.loc12_39.2, %specific_fn.loc12_40.2 // CHECK:STDOUT: %.loc12_40.1: ref %Optional.cf0 = temporary_storage // CHECK:STDOUT: %.loc12_39.4: %EmptyRange.cc8 = bind_value %.loc12_39.2 -// CHECK:STDOUT: %Next.call: init %Optional.cf0 = call %bound_method.loc12_40.4(%.loc12_39.4, %addr.loc12_40.1) to %.loc12_40.1 -// CHECK:STDOUT: %.loc12_40.2: ref %Optional.cf0 = temporary %.loc12_40.1, %Next.call -// CHECK:STDOUT: %.loc12_40.3: %HasValue.type.71d = specific_constant imports.%Main.import_ref.7f9, @Optional(constants.%C) [concrete = constants.%HasValue.513] -// CHECK:STDOUT: %HasValue.ref: %HasValue.type.71d = name_ref HasValue, %.loc12_40.3 [concrete = constants.%HasValue.513] -// CHECK:STDOUT: %HasValue.bound: = bound_method %.loc12_40.2, %HasValue.ref -// CHECK:STDOUT: %HasValue.specific_fn: = specific_function %HasValue.ref, @HasValue(constants.%C) [concrete = constants.%HasValue.specific_fn] -// CHECK:STDOUT: %bound_method.loc12_40.5: = bound_method %.loc12_40.2, %HasValue.specific_fn +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.call: init %Optional.cf0 = call %bound_method.loc12_40.4(%.loc12_39.4, %addr.loc12_40.1) to %.loc12_40.1 +// CHECK:STDOUT: %.loc12_40.2: ref %Optional.cf0 = temporary %.loc12_40.1, %EmptyRange.as.Iterate.impl.Next.call +// CHECK:STDOUT: %.loc12_40.3: %Optional.HasValue.type.71d = specific_constant imports.%Main.import_ref.7f9, @Optional(constants.%C) [concrete = constants.%Optional.HasValue.513] +// CHECK:STDOUT: %HasValue.ref: %Optional.HasValue.type.71d = name_ref HasValue, %.loc12_40.3 [concrete = constants.%Optional.HasValue.513] +// CHECK:STDOUT: %Optional.HasValue.bound: = bound_method %.loc12_40.2, %HasValue.ref +// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %HasValue.ref, @Optional.HasValue(constants.%C) [concrete = constants.%Optional.HasValue.specific_fn] +// CHECK:STDOUT: %bound_method.loc12_40.5: = bound_method %.loc12_40.2, %Optional.HasValue.specific_fn // CHECK:STDOUT: %.loc12_40.4: %Optional.cf0 = bind_value %.loc12_40.2 -// CHECK:STDOUT: %HasValue.call: init bool = call %bound_method.loc12_40.5(%.loc12_40.4) -// CHECK:STDOUT: %.loc12_40.5: bool = value_of_initializer %HasValue.call -// CHECK:STDOUT: %.loc12_40.6: bool = converted %HasValue.call, %.loc12_40.5 +// CHECK:STDOUT: %Optional.HasValue.call: init bool = call %bound_method.loc12_40.5(%.loc12_40.4) +// CHECK:STDOUT: %.loc12_40.5: bool = value_of_initializer %Optional.HasValue.call +// CHECK:STDOUT: %.loc12_40.6: bool = converted %Optional.HasValue.call, %.loc12_40.5 // CHECK:STDOUT: if %.loc12_40.6 br !for.body else br !for.done // CHECK:STDOUT: // CHECK:STDOUT: !for.body: // CHECK:STDOUT: %c.var: ref %C = var %c.var_patt -// CHECK:STDOUT: %.loc12_40.7: %Get.type.115 = specific_constant imports.%Main.import_ref.d10, @Optional(constants.%C) [concrete = constants.%Get.9c1] -// CHECK:STDOUT: %Get.ref: %Get.type.115 = name_ref Get, %.loc12_40.7 [concrete = constants.%Get.9c1] -// CHECK:STDOUT: %Get.bound: = bound_method %.loc12_40.2, %Get.ref -// CHECK:STDOUT: %Get.specific_fn: = specific_function %Get.ref, @Get(constants.%C) [concrete = constants.%Get.specific_fn] -// CHECK:STDOUT: %bound_method.loc12_40.6: = bound_method %.loc12_40.2, %Get.specific_fn +// CHECK:STDOUT: %.loc12_40.7: %Optional.Get.type.115 = specific_constant imports.%Main.import_ref.d10, @Optional(constants.%C) [concrete = constants.%Optional.Get.9c1] +// CHECK:STDOUT: %Get.ref: %Optional.Get.type.115 = name_ref Get, %.loc12_40.7 [concrete = constants.%Optional.Get.9c1] +// CHECK:STDOUT: %Optional.Get.bound: = bound_method %.loc12_40.2, %Get.ref +// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Get.ref, @Optional.Get(constants.%C) [concrete = constants.%Optional.Get.specific_fn] +// CHECK:STDOUT: %bound_method.loc12_40.6: = bound_method %.loc12_40.2, %Optional.Get.specific_fn // CHECK:STDOUT: %.loc12_8: ref %C = splice_block %c.var {} // CHECK:STDOUT: %.loc12_40.8: %Optional.cf0 = bind_value %.loc12_40.2 -// CHECK:STDOUT: %Get.call: init %C = call %bound_method.loc12_40.6(%.loc12_40.8) to %.loc12_8 -// CHECK:STDOUT: assign %c.var, %Get.call +// CHECK:STDOUT: %Optional.Get.call: init %C = call %bound_method.loc12_40.6(%.loc12_40.8) to %.loc12_8 +// CHECK:STDOUT: assign %c.var, %Optional.Get.call // CHECK:STDOUT: %C.ref.loc12_15: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %c: ref %C = bind_name c, %c.var // CHECK:STDOUT: %Body.ref: %Body.type = name_ref Body, file.%Body.decl [concrete = constants.%Body] @@ -415,31 +415,31 @@ fn Run() { // CHECK:STDOUT: br !for.next // CHECK:STDOUT: // CHECK:STDOUT: !for.done: -// CHECK:STDOUT: %Op.bound.loc12_8.1: = bound_method %.loc12_8, constants.%Op.01c +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc12_8.1: = bound_method %.loc12_8, constants.%T.as.Destroy.impl.Op.01c // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc12_8.1: = bound_method %.loc12_8, %Op.specific_fn.1 +// CHECK:STDOUT: %bound_method.loc12_8.1: = bound_method %.loc12_8, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc12_8.1: %ptr.019 = addr_of %.loc12_8 -// CHECK:STDOUT: %no_op.loc12_8.1: init %empty_tuple.type = call %bound_method.loc12_8.1(%addr.loc12_8.1) -// CHECK:STDOUT: %Op.bound.loc12_8.2: = bound_method %c.var, constants.%Op.01c +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc12_8.1: init %empty_tuple.type = call %bound_method.loc12_8.1(%addr.loc12_8.1) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc12_8.2: = bound_method %c.var, constants.%T.as.Destroy.impl.Op.01c // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc12_8.2: = bound_method %c.var, %Op.specific_fn.2 +// CHECK:STDOUT: %bound_method.loc12_8.2: = bound_method %c.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc12_8.2: %ptr.019 = addr_of %c.var -// CHECK:STDOUT: %no_op.loc12_8.2: init %empty_tuple.type = call %bound_method.loc12_8.2(%addr.loc12_8.2) -// CHECK:STDOUT: %Op.bound.loc12_40.1: = bound_method %.loc12_40.1, constants.%Op.a97 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc12_8.2: init %empty_tuple.type = call %bound_method.loc12_8.2(%addr.loc12_8.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc12_40.1: = bound_method %.loc12_40.1, constants.%T.as.Destroy.impl.Op.a97 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc12_40.7: = bound_method %.loc12_40.1, %Op.specific_fn.3 +// CHECK:STDOUT: %bound_method.loc12_40.7: = bound_method %.loc12_40.1, %T.as.Destroy.impl.Op.specific_fn.3 // CHECK:STDOUT: %addr.loc12_40.2: %ptr.8e6 = addr_of %.loc12_40.1 -// CHECK:STDOUT: %no_op.loc12_40.1: init %empty_tuple.type = call %bound_method.loc12_40.7(%addr.loc12_40.2) -// CHECK:STDOUT: %Op.bound.loc12_40.2: = bound_method %var, constants.%Op.ca6 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc12_40.1: init %empty_tuple.type = call %bound_method.loc12_40.7(%addr.loc12_40.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc12_40.2: = bound_method %var, constants.%T.as.Destroy.impl.Op.ca6 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc12_40.8: = bound_method %var, %Op.specific_fn.4 +// CHECK:STDOUT: %bound_method.loc12_40.8: = bound_method %var, %T.as.Destroy.impl.Op.specific_fn.4 // CHECK:STDOUT: %addr.loc12_40.3: %ptr.c28 = addr_of %var -// CHECK:STDOUT: %no_op.loc12_40.2: init %empty_tuple.type = call %bound_method.loc12_40.8(%addr.loc12_40.3) -// CHECK:STDOUT: %Op.bound.loc12_39: = bound_method %.loc12_39.1, constants.%Op.d12 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc12_40.2: init %empty_tuple.type = call %bound_method.loc12_40.8(%addr.loc12_40.3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc12_39: = bound_method %.loc12_39.1, constants.%T.as.Destroy.impl.Op.d12 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc12_39: = bound_method %.loc12_39.1, %Op.specific_fn.5 +// CHECK:STDOUT: %bound_method.loc12_39: = bound_method %.loc12_39.1, %T.as.Destroy.impl.Op.specific_fn.5 // CHECK:STDOUT: %addr.loc12_39: %ptr.35d = addr_of %.loc12_39.1 -// CHECK:STDOUT: %no_op.loc12_39: init %empty_tuple.type = call %bound_method.loc12_39(%addr.loc12_39) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc12_39: init %empty_tuple.type = call %bound_method.loc12_39(%addr.loc12_39) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -458,65 +458,65 @@ fn Run() { // CHECK:STDOUT: %EmptyRange.generic: %EmptyRange.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %Make.type.bd2: type = fn_type @Make, @EmptyRange(%T) [symbolic] -// CHECK:STDOUT: %Make.ed1: %Make.type.bd2 = struct_value () [symbolic] +// CHECK:STDOUT: %EmptyRange.Make.type.bd2: type = fn_type @EmptyRange.Make, @EmptyRange(%T) [symbolic] +// CHECK:STDOUT: %EmptyRange.Make.ed1: %EmptyRange.Make.type.bd2 = struct_value () [symbolic] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] // CHECK:STDOUT: %EmptyRange.2f3: type = class_type @EmptyRange, @EmptyRange(%tuple.type.784) [concrete] -// CHECK:STDOUT: %Make.type.4fb: type = fn_type @Make, @EmptyRange(%tuple.type.784) [concrete] -// CHECK:STDOUT: %Make.743: %Make.type.4fb = struct_value () [concrete] +// CHECK:STDOUT: %EmptyRange.Make.type.4fb: type = fn_type @EmptyRange.Make, @EmptyRange(%tuple.type.784) [concrete] +// CHECK:STDOUT: %EmptyRange.Make.743: %EmptyRange.Make.type.4fb = struct_value () [concrete] // CHECK:STDOUT: %ptr.c28: type = ptr_type %empty_struct_type [concrete] -// CHECK:STDOUT: %Make.specific_fn: = specific_function %Make.743, @Make(%tuple.type.784) [concrete] +// CHECK:STDOUT: %EmptyRange.Make.specific_fn: = specific_function %EmptyRange.Make.743, @EmptyRange.Make(%tuple.type.784) [concrete] // CHECK:STDOUT: %Iterate.type: type = facet_type <@Iterate> [concrete] -// CHECK:STDOUT: %NewCursor.type.427: type = fn_type @NewCursor.2 [concrete] -// CHECK:STDOUT: %NewCursor.type.f5f: type = fn_type @NewCursor.1, @Iterate.impl(%T) [symbolic] -// CHECK:STDOUT: %NewCursor.ec1: %NewCursor.type.f5f = struct_value () [symbolic] -// CHECK:STDOUT: %Next.type.264: type = fn_type @Next.1, @Iterate.impl(%T) [symbolic] -// CHECK:STDOUT: %Next.08e: %Next.type.264 = struct_value () [symbolic] -// CHECK:STDOUT: %HasValue.type.f81: type = fn_type @HasValue, @Optional(%T) [symbolic] -// CHECK:STDOUT: %HasValue.6fd: %HasValue.type.f81 = struct_value () [symbolic] -// CHECK:STDOUT: %Get.type.b8f: type = fn_type @Get, @Optional(%T) [symbolic] -// CHECK:STDOUT: %Get.9c8: %Get.type.b8f = struct_value () [symbolic] -// CHECK:STDOUT: %Iterate.impl_witness.6db: = impl_witness imports.%Iterate.impl_witness_table, @Iterate.impl(%tuple.type.784) [concrete] -// CHECK:STDOUT: %NewCursor.type.d32: type = fn_type @NewCursor.1, @Iterate.impl(%tuple.type.784) [concrete] -// CHECK:STDOUT: %NewCursor.763: %NewCursor.type.d32 = struct_value () [concrete] -// CHECK:STDOUT: %Next.type.482: type = fn_type @Next.1, @Iterate.impl(%tuple.type.784) [concrete] -// CHECK:STDOUT: %Next.e60: %Next.type.482 = struct_value () [concrete] +// CHECK:STDOUT: %Iterate.NewCursor.type: type = fn_type @Iterate.NewCursor [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.type.f5f: type = fn_type @EmptyRange.as.Iterate.impl.NewCursor, @EmptyRange.as.Iterate.impl(%T) [symbolic] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.ec1: %EmptyRange.as.Iterate.impl.NewCursor.type.f5f = struct_value () [symbolic] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.type.264: type = fn_type @EmptyRange.as.Iterate.impl.Next, @EmptyRange.as.Iterate.impl(%T) [symbolic] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.08e: %EmptyRange.as.Iterate.impl.Next.type.264 = struct_value () [symbolic] +// CHECK:STDOUT: %Optional.HasValue.type.f81: type = fn_type @Optional.HasValue, @Optional(%T) [symbolic] +// CHECK:STDOUT: %Optional.HasValue.6fd: %Optional.HasValue.type.f81 = struct_value () [symbolic] +// CHECK:STDOUT: %Optional.Get.type.b8f: type = fn_type @Optional.Get, @Optional(%T) [symbolic] +// CHECK:STDOUT: %Optional.Get.9c8: %Optional.Get.type.b8f = struct_value () [symbolic] +// CHECK:STDOUT: %Iterate.impl_witness.6db: = impl_witness imports.%Iterate.impl_witness_table, @EmptyRange.as.Iterate.impl(%tuple.type.784) [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.type.d32: type = fn_type @EmptyRange.as.Iterate.impl.NewCursor, @EmptyRange.as.Iterate.impl(%tuple.type.784) [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.763: %EmptyRange.as.Iterate.impl.NewCursor.type.d32 = struct_value () [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.type.482: type = fn_type @EmptyRange.as.Iterate.impl.Next, @EmptyRange.as.Iterate.impl(%tuple.type.784) [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.e60: %EmptyRange.as.Iterate.impl.Next.type.482 = struct_value () [concrete] // CHECK:STDOUT: %Iterate.facet: %Iterate.type = facet_value %EmptyRange.2f3, (%Iterate.impl_witness.6db) [concrete] -// CHECK:STDOUT: %.2bf: type = fn_type_with_self_type %NewCursor.type.427, %Iterate.facet [concrete] -// CHECK:STDOUT: %NewCursor.specific_fn: = specific_function %NewCursor.763, @NewCursor.1(%tuple.type.784) [concrete] -// CHECK:STDOUT: %Next.type.941: type = fn_type @Next.2 [concrete] -// CHECK:STDOUT: %.6aa: type = fn_type_with_self_type %Next.type.941, %Iterate.facet [concrete] +// CHECK:STDOUT: %.2bf: type = fn_type_with_self_type %Iterate.NewCursor.type, %Iterate.facet [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.specific_fn: = specific_function %EmptyRange.as.Iterate.impl.NewCursor.763, @EmptyRange.as.Iterate.impl.NewCursor(%tuple.type.784) [concrete] +// CHECK:STDOUT: %Iterate.Next.type: type = fn_type @Iterate.Next [concrete] +// CHECK:STDOUT: %.6aa: type = fn_type_with_self_type %Iterate.Next.type, %Iterate.facet [concrete] // CHECK:STDOUT: %Optional.79e: type = class_type @Optional, @Optional(%tuple.type.784) [concrete] -// CHECK:STDOUT: %Next.specific_fn: = specific_function %Next.e60, @Next.1(%tuple.type.784) [concrete] -// CHECK:STDOUT: %HasValue.type.414: type = fn_type @HasValue, @Optional(%tuple.type.784) [concrete] -// CHECK:STDOUT: %HasValue.4f9: %HasValue.type.414 = struct_value () [concrete] -// CHECK:STDOUT: %Get.type.ebd: type = fn_type @Get, @Optional(%tuple.type.784) [concrete] -// CHECK:STDOUT: %Get.d99: %Get.type.ebd = struct_value () [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.specific_fn: = specific_function %EmptyRange.as.Iterate.impl.Next.e60, @EmptyRange.as.Iterate.impl.Next(%tuple.type.784) [concrete] +// CHECK:STDOUT: %Optional.HasValue.type.414: type = fn_type @Optional.HasValue, @Optional(%tuple.type.784) [concrete] +// CHECK:STDOUT: %Optional.HasValue.4f9: %Optional.HasValue.type.414 = struct_value () [concrete] +// CHECK:STDOUT: %Optional.Get.type.ebd: type = fn_type @Optional.Get, @Optional(%tuple.type.784) [concrete] +// CHECK:STDOUT: %Optional.Get.d99: %Optional.Get.type.ebd = struct_value () [concrete] // CHECK:STDOUT: %ptr.b85: type = ptr_type %tuple.type.784 [concrete] -// CHECK:STDOUT: %HasValue.specific_fn: = specific_function %HasValue.4f9, @HasValue(%tuple.type.784) [concrete] -// CHECK:STDOUT: %Get.specific_fn: = specific_function %Get.d99, @Get(%tuple.type.784) [concrete] -// CHECK:STDOUT: %Op.type.973: type = fn_type @Op.1, @Destroy.impl(%tuple.type.784) [concrete] -// CHECK:STDOUT: %Op.149: %Op.type.973 = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.1cc: type = fn_type @Op.1, @Destroy.impl(%Optional.79e) [concrete] -// CHECK:STDOUT: %Op.3ef: %Op.type.1cc = struct_value () [concrete] +// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %Optional.HasValue.4f9, @Optional.HasValue(%tuple.type.784) [concrete] +// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Optional.Get.d99, @Optional.Get(%tuple.type.784) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.973: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%tuple.type.784) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.149: %T.as.Destroy.impl.Op.type.973 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.1cc: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%Optional.79e) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.3ef: %T.as.Destroy.impl.Op.type.1cc = struct_value () [concrete] // CHECK:STDOUT: %ptr.07d: type = ptr_type %Optional.79e [concrete] -// CHECK:STDOUT: %Op.type.8b2: type = fn_type @Op.1, @Destroy.impl(%empty_struct_type) [concrete] -// CHECK:STDOUT: %Op.ca6: %Op.type.8b2 = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.f1e: type = fn_type @Op.1, @Destroy.impl(%EmptyRange.2f3) [concrete] -// CHECK:STDOUT: %Op.155: %Op.type.f1e = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.8b2: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%empty_struct_type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ca6: %T.as.Destroy.impl.Op.type.8b2 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.f1e: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%EmptyRange.2f3) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.155: %T.as.Destroy.impl.Op.type.f1e = struct_value () [concrete] // CHECK:STDOUT: %ptr.5cf: type = ptr_type %EmptyRange.2f3 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Main.EmptyRange: %EmptyRange.type = import_ref Main//empty_range, EmptyRange, loaded [concrete = constants.%EmptyRange.generic] -// CHECK:STDOUT: %Main.import_ref.6ea: @EmptyRange.%Make.type (%Make.type.bd2) = import_ref Main//empty_range, loc5_21, loaded [symbolic = @EmptyRange.%Make (constants.%Make.ed1)] +// CHECK:STDOUT: %Main.import_ref.6ea: @EmptyRange.%EmptyRange.Make.type (%EmptyRange.Make.type.bd2) = import_ref Main//empty_range, loc5_21, loaded [symbolic = @EmptyRange.%EmptyRange.Make (constants.%EmptyRange.Make.ed1)] // CHECK:STDOUT: %Main.import_ref.6ce = import_ref Main//empty_range, loc7_68, unloaded // CHECK:STDOUT: %Main.import_ref.999 = import_ref Main//empty_range, loc7_68, unloaded -// CHECK:STDOUT: %Main.import_ref.57b: @Iterate.impl.%NewCursor.type (%NewCursor.type.f5f) = import_ref Main//empty_range, loc8_38, loaded [symbolic = @Iterate.impl.%NewCursor (constants.%NewCursor.ec1)] -// CHECK:STDOUT: %Main.import_ref.170: @Iterate.impl.%Next.type (%Next.type.264) = import_ref Main//empty_range, loc11_58, loaded [symbolic = @Iterate.impl.%Next (constants.%Next.08e)] -// CHECK:STDOUT: %Iterate.impl_witness_table = impl_witness_table (%Main.import_ref.6ce, %Main.import_ref.999, %Main.import_ref.57b, %Main.import_ref.170), @Iterate.impl [concrete] -// CHECK:STDOUT: %Main.import_ref.7f9: @Optional.%HasValue.type (%HasValue.type.f81) = import_ref Main//empty_range, inst136 [indirect], loaded [symbolic = @Optional.%HasValue (constants.%HasValue.6fd)] -// CHECK:STDOUT: %Main.import_ref.d10: @Optional.%Get.type (%Get.type.b8f) = import_ref Main//empty_range, inst137 [indirect], loaded [symbolic = @Optional.%Get (constants.%Get.9c8)] +// CHECK:STDOUT: %Main.import_ref.57b: @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.NewCursor.type (%EmptyRange.as.Iterate.impl.NewCursor.type.f5f) = import_ref Main//empty_range, loc8_38, loaded [symbolic = @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.NewCursor (constants.%EmptyRange.as.Iterate.impl.NewCursor.ec1)] +// CHECK:STDOUT: %Main.import_ref.170: @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.Next.type (%EmptyRange.as.Iterate.impl.Next.type.264) = import_ref Main//empty_range, loc11_58, loaded [symbolic = @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.Next (constants.%EmptyRange.as.Iterate.impl.Next.08e)] +// CHECK:STDOUT: %Iterate.impl_witness_table = impl_witness_table (%Main.import_ref.6ce, %Main.import_ref.999, %Main.import_ref.57b, %Main.import_ref.170), @EmptyRange.as.Iterate.impl [concrete] +// CHECK:STDOUT: %Main.import_ref.7f9: @Optional.%Optional.HasValue.type (%Optional.HasValue.type.f81) = import_ref Main//empty_range, inst136 [indirect], loaded [symbolic = @Optional.%Optional.HasValue (constants.%Optional.HasValue.6fd)] +// CHECK:STDOUT: %Main.import_ref.d10: @Optional.%Optional.Get.type (%Optional.Get.type.b8f) = import_ref Main//empty_range, inst137 [indirect], loaded [symbolic = @Optional.%Optional.Get (constants.%Optional.Get.9c8)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Run() { @@ -527,75 +527,75 @@ fn Run() { // CHECK:STDOUT: %.loc10_25: %pattern_type.860 = tuple_pattern (%a.patt, %b.patt) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %EmptyRange.ref: %EmptyRange.type = name_ref EmptyRange, imports.%Main.EmptyRange [concrete = constants.%EmptyRange.generic] -// CHECK:STDOUT: %bool.make_type.loc10_42: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %bool.make_type.loc10_48: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc10_52: %tuple.type.24b = tuple_literal (%bool.make_type.loc10_42, %bool.make_type.loc10_48) -// CHECK:STDOUT: %.loc10_53.1: type = value_of_initializer %bool.make_type.loc10_42 [concrete = bool] -// CHECK:STDOUT: %.loc10_53.2: type = converted %bool.make_type.loc10_42, %.loc10_53.1 [concrete = bool] -// CHECK:STDOUT: %.loc10_53.3: type = value_of_initializer %bool.make_type.loc10_48 [concrete = bool] -// CHECK:STDOUT: %.loc10_53.4: type = converted %bool.make_type.loc10_48, %.loc10_53.3 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc10_42: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc10_48: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc10_52: %tuple.type.24b = tuple_literal (%Bool.call.loc10_42, %Bool.call.loc10_48) +// CHECK:STDOUT: %.loc10_53.1: type = value_of_initializer %Bool.call.loc10_42 [concrete = bool] +// CHECK:STDOUT: %.loc10_53.2: type = converted %Bool.call.loc10_42, %.loc10_53.1 [concrete = bool] +// CHECK:STDOUT: %.loc10_53.3: type = value_of_initializer %Bool.call.loc10_48 [concrete = bool] +// CHECK:STDOUT: %.loc10_53.4: type = converted %Bool.call.loc10_48, %.loc10_53.3 [concrete = bool] // CHECK:STDOUT: %.loc10_53.5: type = converted %.loc10_52, constants.%tuple.type.784 [concrete = constants.%tuple.type.784] // CHECK:STDOUT: %EmptyRange: type = class_type @EmptyRange, @EmptyRange(constants.%tuple.type.784) [concrete = constants.%EmptyRange.2f3] -// CHECK:STDOUT: %.loc10_54: %Make.type.4fb = specific_constant imports.%Main.import_ref.6ea, @EmptyRange(constants.%tuple.type.784) [concrete = constants.%Make.743] -// CHECK:STDOUT: %Make.ref: %Make.type.4fb = name_ref Make, %.loc10_54 [concrete = constants.%Make.743] -// CHECK:STDOUT: %Make.specific_fn: = specific_function %Make.ref, @Make(constants.%tuple.type.784) [concrete = constants.%Make.specific_fn] +// CHECK:STDOUT: %.loc10_54: %EmptyRange.Make.type.4fb = specific_constant imports.%Main.import_ref.6ea, @EmptyRange(constants.%tuple.type.784) [concrete = constants.%EmptyRange.Make.743] +// CHECK:STDOUT: %Make.ref: %EmptyRange.Make.type.4fb = name_ref Make, %.loc10_54 [concrete = constants.%EmptyRange.Make.743] +// CHECK:STDOUT: %EmptyRange.Make.specific_fn: = specific_function %Make.ref, @EmptyRange.Make(constants.%tuple.type.784) [concrete = constants.%EmptyRange.Make.specific_fn] // CHECK:STDOUT: %.loc10_60.1: ref %EmptyRange.2f3 = temporary_storage -// CHECK:STDOUT: %Make.call: init %EmptyRange.2f3 = call %Make.specific_fn() to %.loc10_60.1 -// CHECK:STDOUT: %.loc10_60.2: ref %EmptyRange.2f3 = temporary %.loc10_60.1, %Make.call -// CHECK:STDOUT: %impl.elem2: %.2bf = impl_witness_access constants.%Iterate.impl_witness.6db, element2 [concrete = constants.%NewCursor.763] +// CHECK:STDOUT: %EmptyRange.Make.call: init %EmptyRange.2f3 = call %EmptyRange.Make.specific_fn() to %.loc10_60.1 +// CHECK:STDOUT: %.loc10_60.2: ref %EmptyRange.2f3 = temporary %.loc10_60.1, %EmptyRange.Make.call +// CHECK:STDOUT: %impl.elem2: %.2bf = impl_witness_access constants.%Iterate.impl_witness.6db, element2 [concrete = constants.%EmptyRange.as.Iterate.impl.NewCursor.763] // CHECK:STDOUT: %bound_method.loc10_61.1: = bound_method %.loc10_60.2, %impl.elem2 -// CHECK:STDOUT: %specific_fn.loc10_61.1: = specific_function %impl.elem2, @NewCursor.1(constants.%tuple.type.784) [concrete = constants.%NewCursor.specific_fn] +// CHECK:STDOUT: %specific_fn.loc10_61.1: = specific_function %impl.elem2, @EmptyRange.as.Iterate.impl.NewCursor(constants.%tuple.type.784) [concrete = constants.%EmptyRange.as.Iterate.impl.NewCursor.specific_fn] // CHECK:STDOUT: %bound_method.loc10_61.2: = bound_method %.loc10_60.2, %specific_fn.loc10_61.1 // CHECK:STDOUT: %.loc10_60.3: %EmptyRange.2f3 = bind_value %.loc10_60.2 -// CHECK:STDOUT: %NewCursor.call: init %empty_struct_type = call %bound_method.loc10_61.2(%.loc10_60.3) +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.call: init %empty_struct_type = call %bound_method.loc10_61.2(%.loc10_60.3) // CHECK:STDOUT: %var: ref %empty_struct_type = var invalid -// CHECK:STDOUT: assign %var, %NewCursor.call +// CHECK:STDOUT: assign %var, %EmptyRange.as.Iterate.impl.NewCursor.call // CHECK:STDOUT: br !for.next // CHECK:STDOUT: // CHECK:STDOUT: !for.next: // CHECK:STDOUT: %addr.loc10_61.1: %ptr.c28 = addr_of %var -// CHECK:STDOUT: %impl.elem3: %.6aa = impl_witness_access constants.%Iterate.impl_witness.6db, element3 [concrete = constants.%Next.e60] +// CHECK:STDOUT: %impl.elem3: %.6aa = impl_witness_access constants.%Iterate.impl_witness.6db, element3 [concrete = constants.%EmptyRange.as.Iterate.impl.Next.e60] // CHECK:STDOUT: %bound_method.loc10_61.3: = bound_method %.loc10_60.2, %impl.elem3 -// CHECK:STDOUT: %specific_fn.loc10_61.2: = specific_function %impl.elem3, @Next.1(constants.%tuple.type.784) [concrete = constants.%Next.specific_fn] +// CHECK:STDOUT: %specific_fn.loc10_61.2: = specific_function %impl.elem3, @EmptyRange.as.Iterate.impl.Next(constants.%tuple.type.784) [concrete = constants.%EmptyRange.as.Iterate.impl.Next.specific_fn] // CHECK:STDOUT: %bound_method.loc10_61.4: = bound_method %.loc10_60.2, %specific_fn.loc10_61.2 // CHECK:STDOUT: %.loc10_61.1: ref %Optional.79e = temporary_storage // CHECK:STDOUT: %.loc10_60.4: %EmptyRange.2f3 = bind_value %.loc10_60.2 -// CHECK:STDOUT: %Next.call: init %Optional.79e = call %bound_method.loc10_61.4(%.loc10_60.4, %addr.loc10_61.1) to %.loc10_61.1 -// CHECK:STDOUT: %.loc10_61.2: ref %Optional.79e = temporary %.loc10_61.1, %Next.call -// CHECK:STDOUT: %.loc10_61.3: %HasValue.type.414 = specific_constant imports.%Main.import_ref.7f9, @Optional(constants.%tuple.type.784) [concrete = constants.%HasValue.4f9] -// CHECK:STDOUT: %HasValue.ref: %HasValue.type.414 = name_ref HasValue, %.loc10_61.3 [concrete = constants.%HasValue.4f9] -// CHECK:STDOUT: %HasValue.bound: = bound_method %.loc10_61.2, %HasValue.ref -// CHECK:STDOUT: %HasValue.specific_fn: = specific_function %HasValue.ref, @HasValue(constants.%tuple.type.784) [concrete = constants.%HasValue.specific_fn] -// CHECK:STDOUT: %bound_method.loc10_61.5: = bound_method %.loc10_61.2, %HasValue.specific_fn +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.call: init %Optional.79e = call %bound_method.loc10_61.4(%.loc10_60.4, %addr.loc10_61.1) to %.loc10_61.1 +// CHECK:STDOUT: %.loc10_61.2: ref %Optional.79e = temporary %.loc10_61.1, %EmptyRange.as.Iterate.impl.Next.call +// CHECK:STDOUT: %.loc10_61.3: %Optional.HasValue.type.414 = specific_constant imports.%Main.import_ref.7f9, @Optional(constants.%tuple.type.784) [concrete = constants.%Optional.HasValue.4f9] +// CHECK:STDOUT: %HasValue.ref: %Optional.HasValue.type.414 = name_ref HasValue, %.loc10_61.3 [concrete = constants.%Optional.HasValue.4f9] +// CHECK:STDOUT: %Optional.HasValue.bound: = bound_method %.loc10_61.2, %HasValue.ref +// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %HasValue.ref, @Optional.HasValue(constants.%tuple.type.784) [concrete = constants.%Optional.HasValue.specific_fn] +// CHECK:STDOUT: %bound_method.loc10_61.5: = bound_method %.loc10_61.2, %Optional.HasValue.specific_fn // CHECK:STDOUT: %.loc10_61.4: %Optional.79e = bind_value %.loc10_61.2 -// CHECK:STDOUT: %HasValue.call: init bool = call %bound_method.loc10_61.5(%.loc10_61.4) -// CHECK:STDOUT: %.loc10_61.5: bool = value_of_initializer %HasValue.call -// CHECK:STDOUT: %.loc10_61.6: bool = converted %HasValue.call, %.loc10_61.5 +// CHECK:STDOUT: %Optional.HasValue.call: init bool = call %bound_method.loc10_61.5(%.loc10_61.4) +// CHECK:STDOUT: %.loc10_61.5: bool = value_of_initializer %Optional.HasValue.call +// CHECK:STDOUT: %.loc10_61.6: bool = converted %Optional.HasValue.call, %.loc10_61.5 // CHECK:STDOUT: if %.loc10_61.6 br !for.body else br !for.done // CHECK:STDOUT: // CHECK:STDOUT: !for.body: -// CHECK:STDOUT: %.loc10_61.7: %Get.type.ebd = specific_constant imports.%Main.import_ref.d10, @Optional(constants.%tuple.type.784) [concrete = constants.%Get.d99] -// CHECK:STDOUT: %Get.ref: %Get.type.ebd = name_ref Get, %.loc10_61.7 [concrete = constants.%Get.d99] -// CHECK:STDOUT: %Get.bound: = bound_method %.loc10_61.2, %Get.ref -// CHECK:STDOUT: %Get.specific_fn: = specific_function %Get.ref, @Get(constants.%tuple.type.784) [concrete = constants.%Get.specific_fn] -// CHECK:STDOUT: %bound_method.loc10_61.6: = bound_method %.loc10_61.2, %Get.specific_fn +// CHECK:STDOUT: %.loc10_61.7: %Optional.Get.type.ebd = specific_constant imports.%Main.import_ref.d10, @Optional(constants.%tuple.type.784) [concrete = constants.%Optional.Get.d99] +// CHECK:STDOUT: %Get.ref: %Optional.Get.type.ebd = name_ref Get, %.loc10_61.7 [concrete = constants.%Optional.Get.d99] +// CHECK:STDOUT: %Optional.Get.bound: = bound_method %.loc10_61.2, %Get.ref +// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Get.ref, @Optional.Get(constants.%tuple.type.784) [concrete = constants.%Optional.Get.specific_fn] +// CHECK:STDOUT: %bound_method.loc10_61.6: = bound_method %.loc10_61.2, %Optional.Get.specific_fn // CHECK:STDOUT: %.loc10_61.8: ref %tuple.type.784 = temporary_storage // CHECK:STDOUT: %.loc10_61.9: %Optional.79e = bind_value %.loc10_61.2 -// CHECK:STDOUT: %Get.call: init %tuple.type.784 = call %bound_method.loc10_61.6(%.loc10_61.9) to %.loc10_61.8 -// CHECK:STDOUT: %.loc10_61.10: ref %tuple.type.784 = temporary %.loc10_61.8, %Get.call +// CHECK:STDOUT: %Optional.Get.call: init %tuple.type.784 = call %bound_method.loc10_61.6(%.loc10_61.9) to %.loc10_61.8 +// CHECK:STDOUT: %.loc10_61.10: ref %tuple.type.784 = temporary %.loc10_61.8, %Optional.Get.call // CHECK:STDOUT: %tuple.elem0: ref bool = tuple_access %.loc10_61.10, element0 // CHECK:STDOUT: %tuple.elem1: ref bool = tuple_access %.loc10_61.10, element1 // CHECK:STDOUT: %.loc10_12.1: type = splice_block %.loc10_12.3 [concrete = bool] { -// CHECK:STDOUT: %bool.make_type.loc10_12: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc10_12.2: type = value_of_initializer %bool.make_type.loc10_12 [concrete = bool] -// CHECK:STDOUT: %.loc10_12.3: type = converted %bool.make_type.loc10_12, %.loc10_12.2 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc10_12: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc10_12.2: type = value_of_initializer %Bool.call.loc10_12 [concrete = bool] +// CHECK:STDOUT: %.loc10_12.3: type = converted %Bool.call.loc10_12, %.loc10_12.2 [concrete = bool] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc10_61.11: bool = bind_value %tuple.elem0 // CHECK:STDOUT: %a: bool = bind_name a, %.loc10_61.11 // CHECK:STDOUT: %.loc10_21.1: type = splice_block %.loc10_21.3 [concrete = bool] { -// CHECK:STDOUT: %bool.make_type.loc10_21: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc10_21.2: type = value_of_initializer %bool.make_type.loc10_21 [concrete = bool] -// CHECK:STDOUT: %.loc10_21.3: type = converted %bool.make_type.loc10_21, %.loc10_21.2 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc10_21: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc10_21.2: type = value_of_initializer %Bool.call.loc10_21 [concrete = bool] +// CHECK:STDOUT: %.loc10_21.3: type = converted %Bool.call.loc10_21, %.loc10_21.2 [concrete = bool] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc10_61.12: bool = bind_value %tuple.elem1 // CHECK:STDOUT: %b: bool = bind_name b, %.loc10_61.12 @@ -606,26 +606,26 @@ fn Run() { // CHECK:STDOUT: br !for.next // CHECK:STDOUT: // CHECK:STDOUT: !for.done: -// CHECK:STDOUT: %Op.bound.loc10_61.1: = bound_method %.loc10_61.8, constants.%Op.149 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10_61.1: = bound_method %.loc10_61.8, constants.%T.as.Destroy.impl.Op.149 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc10_61.7: = bound_method %.loc10_61.8, %Op.specific_fn.1 +// CHECK:STDOUT: %bound_method.loc10_61.7: = bound_method %.loc10_61.8, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc10_61.2: %ptr.b85 = addr_of %.loc10_61.8 -// CHECK:STDOUT: %no_op.loc10_61.1: init %empty_tuple.type = call %bound_method.loc10_61.7(%addr.loc10_61.2) -// CHECK:STDOUT: %Op.bound.loc10_61.2: = bound_method %.loc10_61.1, constants.%Op.3ef +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10_61.1: init %empty_tuple.type = call %bound_method.loc10_61.7(%addr.loc10_61.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10_61.2: = bound_method %.loc10_61.1, constants.%T.as.Destroy.impl.Op.3ef // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc10_61.8: = bound_method %.loc10_61.1, %Op.specific_fn.2 +// CHECK:STDOUT: %bound_method.loc10_61.8: = bound_method %.loc10_61.1, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc10_61.3: %ptr.07d = addr_of %.loc10_61.1 -// CHECK:STDOUT: %no_op.loc10_61.2: init %empty_tuple.type = call %bound_method.loc10_61.8(%addr.loc10_61.3) -// CHECK:STDOUT: %Op.bound.loc10_61.3: = bound_method %var, constants.%Op.ca6 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10_61.2: init %empty_tuple.type = call %bound_method.loc10_61.8(%addr.loc10_61.3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10_61.3: = bound_method %var, constants.%T.as.Destroy.impl.Op.ca6 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc10_61.9: = bound_method %var, %Op.specific_fn.3 +// CHECK:STDOUT: %bound_method.loc10_61.9: = bound_method %var, %T.as.Destroy.impl.Op.specific_fn.3 // CHECK:STDOUT: %addr.loc10_61.4: %ptr.c28 = addr_of %var -// CHECK:STDOUT: %no_op.loc10_61.3: init %empty_tuple.type = call %bound_method.loc10_61.9(%addr.loc10_61.4) -// CHECK:STDOUT: %Op.bound.loc10_60: = bound_method %.loc10_60.1, constants.%Op.155 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10_61.3: init %empty_tuple.type = call %bound_method.loc10_61.9(%addr.loc10_61.4) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10_60: = bound_method %.loc10_60.1, constants.%T.as.Destroy.impl.Op.155 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc10_60: = bound_method %.loc10_60.1, %Op.specific_fn.4 +// CHECK:STDOUT: %bound_method.loc10_60: = bound_method %.loc10_60.1, %T.as.Destroy.impl.Op.specific_fn.4 // CHECK:STDOUT: %addr.loc10_60: %ptr.5cf = addr_of %.loc10_60.1 -// CHECK:STDOUT: %no_op.loc10_60: init %empty_tuple.type = call %bound_method.loc10_60(%addr.loc10_60) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10_60: init %empty_tuple.type = call %bound_method.loc10_60(%addr.loc10_60) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -644,64 +644,64 @@ fn Run() { // CHECK:STDOUT: %EmptyRange.type: type = generic_class_type @EmptyRange [concrete] // CHECK:STDOUT: %EmptyRange.generic: %EmptyRange.type = struct_value () [concrete] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %Make.type.bd2: type = fn_type @Make, @EmptyRange(%T) [symbolic] -// CHECK:STDOUT: %Make.ed1: %Make.type.bd2 = struct_value () [symbolic] +// CHECK:STDOUT: %EmptyRange.Make.type.bd2: type = fn_type @EmptyRange.Make, @EmptyRange(%T) [symbolic] +// CHECK:STDOUT: %EmptyRange.Make.ed1: %EmptyRange.Make.type.bd2 = struct_value () [symbolic] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] // CHECK:STDOUT: %EmptyRange.90a: type = class_type @EmptyRange, @EmptyRange(%tuple.type.56b) [concrete] -// CHECK:STDOUT: %Make.type.829: type = fn_type @Make, @EmptyRange(%tuple.type.56b) [concrete] -// CHECK:STDOUT: %Make.d4f: %Make.type.829 = struct_value () [concrete] -// CHECK:STDOUT: %Make.specific_fn: = specific_function %Make.d4f, @Make(%tuple.type.56b) [concrete] +// CHECK:STDOUT: %EmptyRange.Make.type.829: type = fn_type @EmptyRange.Make, @EmptyRange(%tuple.type.56b) [concrete] +// CHECK:STDOUT: %EmptyRange.Make.d4f: %EmptyRange.Make.type.829 = struct_value () [concrete] +// CHECK:STDOUT: %EmptyRange.Make.specific_fn: = specific_function %EmptyRange.Make.d4f, @EmptyRange.Make(%tuple.type.56b) [concrete] // CHECK:STDOUT: %Iterate.type: type = facet_type <@Iterate> [concrete] -// CHECK:STDOUT: %NewCursor.type.427: type = fn_type @NewCursor.2 [concrete] -// CHECK:STDOUT: %NewCursor.type.f5f: type = fn_type @NewCursor.1, @Iterate.impl(%T) [symbolic] -// CHECK:STDOUT: %NewCursor.ec1: %NewCursor.type.f5f = struct_value () [symbolic] -// CHECK:STDOUT: %Next.type.264: type = fn_type @Next.1, @Iterate.impl(%T) [symbolic] -// CHECK:STDOUT: %Next.08e: %Next.type.264 = struct_value () [symbolic] -// CHECK:STDOUT: %HasValue.type.f81: type = fn_type @HasValue, @Optional(%T) [symbolic] -// CHECK:STDOUT: %HasValue.6fd: %HasValue.type.f81 = struct_value () [symbolic] -// CHECK:STDOUT: %Get.type.b8f: type = fn_type @Get, @Optional(%T) [symbolic] -// CHECK:STDOUT: %Get.9c8: %Get.type.b8f = struct_value () [symbolic] -// CHECK:STDOUT: %Iterate.impl_witness.627: = impl_witness imports.%Iterate.impl_witness_table, @Iterate.impl(%tuple.type.56b) [concrete] -// CHECK:STDOUT: %NewCursor.type.59c: type = fn_type @NewCursor.1, @Iterate.impl(%tuple.type.56b) [concrete] -// CHECK:STDOUT: %NewCursor.263: %NewCursor.type.59c = struct_value () [concrete] -// CHECK:STDOUT: %Next.type.70f: type = fn_type @Next.1, @Iterate.impl(%tuple.type.56b) [concrete] -// CHECK:STDOUT: %Next.852: %Next.type.70f = struct_value () [concrete] +// CHECK:STDOUT: %Iterate.NewCursor.type: type = fn_type @Iterate.NewCursor [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.type.f5f: type = fn_type @EmptyRange.as.Iterate.impl.NewCursor, @EmptyRange.as.Iterate.impl(%T) [symbolic] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.ec1: %EmptyRange.as.Iterate.impl.NewCursor.type.f5f = struct_value () [symbolic] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.type.264: type = fn_type @EmptyRange.as.Iterate.impl.Next, @EmptyRange.as.Iterate.impl(%T) [symbolic] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.08e: %EmptyRange.as.Iterate.impl.Next.type.264 = struct_value () [symbolic] +// CHECK:STDOUT: %Optional.HasValue.type.f81: type = fn_type @Optional.HasValue, @Optional(%T) [symbolic] +// CHECK:STDOUT: %Optional.HasValue.6fd: %Optional.HasValue.type.f81 = struct_value () [symbolic] +// CHECK:STDOUT: %Optional.Get.type.b8f: type = fn_type @Optional.Get, @Optional(%T) [symbolic] +// CHECK:STDOUT: %Optional.Get.9c8: %Optional.Get.type.b8f = struct_value () [symbolic] +// CHECK:STDOUT: %Iterate.impl_witness.627: = impl_witness imports.%Iterate.impl_witness_table, @EmptyRange.as.Iterate.impl(%tuple.type.56b) [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.type.59c: type = fn_type @EmptyRange.as.Iterate.impl.NewCursor, @EmptyRange.as.Iterate.impl(%tuple.type.56b) [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.263: %EmptyRange.as.Iterate.impl.NewCursor.type.59c = struct_value () [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.type.70f: type = fn_type @EmptyRange.as.Iterate.impl.Next, @EmptyRange.as.Iterate.impl(%tuple.type.56b) [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.852: %EmptyRange.as.Iterate.impl.Next.type.70f = struct_value () [concrete] // CHECK:STDOUT: %Iterate.facet: %Iterate.type = facet_value %EmptyRange.90a, (%Iterate.impl_witness.627) [concrete] -// CHECK:STDOUT: %.8bd: type = fn_type_with_self_type %NewCursor.type.427, %Iterate.facet [concrete] -// CHECK:STDOUT: %NewCursor.specific_fn: = specific_function %NewCursor.263, @NewCursor.1(%tuple.type.56b) [concrete] -// CHECK:STDOUT: %Next.type.941: type = fn_type @Next.2 [concrete] -// CHECK:STDOUT: %.8d0: type = fn_type_with_self_type %Next.type.941, %Iterate.facet [concrete] +// CHECK:STDOUT: %.8bd: type = fn_type_with_self_type %Iterate.NewCursor.type, %Iterate.facet [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.specific_fn: = specific_function %EmptyRange.as.Iterate.impl.NewCursor.263, @EmptyRange.as.Iterate.impl.NewCursor(%tuple.type.56b) [concrete] +// CHECK:STDOUT: %Iterate.Next.type: type = fn_type @Iterate.Next [concrete] +// CHECK:STDOUT: %.8d0: type = fn_type_with_self_type %Iterate.Next.type, %Iterate.facet [concrete] // CHECK:STDOUT: %Optional.657: type = class_type @Optional, @Optional(%tuple.type.56b) [concrete] -// CHECK:STDOUT: %Next.specific_fn: = specific_function %Next.852, @Next.1(%tuple.type.56b) [concrete] -// CHECK:STDOUT: %HasValue.type.2f1: type = fn_type @HasValue, @Optional(%tuple.type.56b) [concrete] -// CHECK:STDOUT: %HasValue.bef: %HasValue.type.2f1 = struct_value () [concrete] -// CHECK:STDOUT: %Get.type.4a4: type = fn_type @Get, @Optional(%tuple.type.56b) [concrete] -// CHECK:STDOUT: %Get.8a7: %Get.type.4a4 = struct_value () [concrete] -// CHECK:STDOUT: %HasValue.specific_fn: = specific_function %HasValue.bef, @HasValue(%tuple.type.56b) [concrete] -// CHECK:STDOUT: %Get.specific_fn: = specific_function %Get.8a7, @Get(%tuple.type.56b) [concrete] -// CHECK:STDOUT: %Op.type.65e: type = fn_type @Op.1, @Destroy.impl(%tuple.type.56b) [concrete] -// CHECK:STDOUT: %Op.587: %Op.type.65e = struct_value () [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.specific_fn: = specific_function %EmptyRange.as.Iterate.impl.Next.852, @EmptyRange.as.Iterate.impl.Next(%tuple.type.56b) [concrete] +// CHECK:STDOUT: %Optional.HasValue.type.2f1: type = fn_type @Optional.HasValue, @Optional(%tuple.type.56b) [concrete] +// CHECK:STDOUT: %Optional.HasValue.bef: %Optional.HasValue.type.2f1 = struct_value () [concrete] +// CHECK:STDOUT: %Optional.Get.type.4a4: type = fn_type @Optional.Get, @Optional(%tuple.type.56b) [concrete] +// CHECK:STDOUT: %Optional.Get.8a7: %Optional.Get.type.4a4 = struct_value () [concrete] +// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %Optional.HasValue.bef, @Optional.HasValue(%tuple.type.56b) [concrete] +// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Optional.Get.8a7, @Optional.Get(%tuple.type.56b) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.65e: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%tuple.type.56b) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.587: %T.as.Destroy.impl.Op.type.65e = struct_value () [concrete] // CHECK:STDOUT: %ptr.9f0: type = ptr_type %tuple.type.56b [concrete] -// CHECK:STDOUT: %Op.type.400: type = fn_type @Op.1, @Destroy.impl(%Optional.657) [concrete] -// CHECK:STDOUT: %Op.5ec: %Op.type.400 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.400: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%Optional.657) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.5ec: %T.as.Destroy.impl.Op.type.400 = struct_value () [concrete] // CHECK:STDOUT: %ptr.036: type = ptr_type %Optional.657 [concrete] -// CHECK:STDOUT: %Op.type.8b2: type = fn_type @Op.1, @Destroy.impl(%empty_struct_type) [concrete] -// CHECK:STDOUT: %Op.ca6: %Op.type.8b2 = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.cee: type = fn_type @Op.1, @Destroy.impl(%EmptyRange.90a) [concrete] -// CHECK:STDOUT: %Op.323: %Op.type.cee = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.8b2: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%empty_struct_type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ca6: %T.as.Destroy.impl.Op.type.8b2 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.cee: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%EmptyRange.90a) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.323: %T.as.Destroy.impl.Op.type.cee = struct_value () [concrete] // CHECK:STDOUT: %ptr.f9b: type = ptr_type %EmptyRange.90a [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Main.EmptyRange: %EmptyRange.type = import_ref Main//empty_range, EmptyRange, loaded [concrete = constants.%EmptyRange.generic] -// CHECK:STDOUT: %Main.import_ref.6ea: @EmptyRange.%Make.type (%Make.type.bd2) = import_ref Main//empty_range, loc5_21, loaded [symbolic = @EmptyRange.%Make (constants.%Make.ed1)] +// CHECK:STDOUT: %Main.import_ref.6ea: @EmptyRange.%EmptyRange.Make.type (%EmptyRange.Make.type.bd2) = import_ref Main//empty_range, loc5_21, loaded [symbolic = @EmptyRange.%EmptyRange.Make (constants.%EmptyRange.Make.ed1)] // CHECK:STDOUT: %Main.import_ref.6ce = import_ref Main//empty_range, loc7_68, unloaded // CHECK:STDOUT: %Main.import_ref.999 = import_ref Main//empty_range, loc7_68, unloaded -// CHECK:STDOUT: %Main.import_ref.57b: @Iterate.impl.%NewCursor.type (%NewCursor.type.f5f) = import_ref Main//empty_range, loc8_38, loaded [symbolic = @Iterate.impl.%NewCursor (constants.%NewCursor.ec1)] -// CHECK:STDOUT: %Main.import_ref.170: @Iterate.impl.%Next.type (%Next.type.264) = import_ref Main//empty_range, loc11_58, loaded [symbolic = @Iterate.impl.%Next (constants.%Next.08e)] -// CHECK:STDOUT: %Iterate.impl_witness_table = impl_witness_table (%Main.import_ref.6ce, %Main.import_ref.999, %Main.import_ref.57b, %Main.import_ref.170), @Iterate.impl [concrete] -// CHECK:STDOUT: %Main.import_ref.7f9: @Optional.%HasValue.type (%HasValue.type.f81) = import_ref Main//empty_range, inst136 [indirect], loaded [symbolic = @Optional.%HasValue (constants.%HasValue.6fd)] -// CHECK:STDOUT: %Main.import_ref.d10: @Optional.%Get.type (%Get.type.b8f) = import_ref Main//empty_range, inst137 [indirect], loaded [symbolic = @Optional.%Get (constants.%Get.9c8)] +// CHECK:STDOUT: %Main.import_ref.57b: @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.NewCursor.type (%EmptyRange.as.Iterate.impl.NewCursor.type.f5f) = import_ref Main//empty_range, loc8_38, loaded [symbolic = @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.NewCursor (constants.%EmptyRange.as.Iterate.impl.NewCursor.ec1)] +// CHECK:STDOUT: %Main.import_ref.170: @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.Next.type (%EmptyRange.as.Iterate.impl.Next.type.264) = import_ref Main//empty_range, loc11_58, loaded [symbolic = @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.Next (constants.%EmptyRange.as.Iterate.impl.Next.08e)] +// CHECK:STDOUT: %Iterate.impl_witness_table = impl_witness_table (%Main.import_ref.6ce, %Main.import_ref.999, %Main.import_ref.57b, %Main.import_ref.170), @EmptyRange.as.Iterate.impl [concrete] +// CHECK:STDOUT: %Main.import_ref.7f9: @Optional.%Optional.HasValue.type (%Optional.HasValue.type.f81) = import_ref Main//empty_range, inst136 [indirect], loaded [symbolic = @Optional.%Optional.HasValue (constants.%Optional.HasValue.6fd)] +// CHECK:STDOUT: %Main.import_ref.d10: @Optional.%Optional.Get.type (%Optional.Get.type.b8f) = import_ref Main//empty_range, inst137 [indirect], loaded [symbolic = @Optional.%Optional.Get (constants.%Optional.Get.9c8)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Run() { @@ -717,53 +717,53 @@ fn Run() { // CHECK:STDOUT: %.loc12_40: %tuple.type.24b = tuple_literal (%C.ref.loc12_36, %C.ref.loc12_39) // CHECK:STDOUT: %.loc12_41: type = converted %.loc12_40, constants.%tuple.type.56b [concrete = constants.%tuple.type.56b] // CHECK:STDOUT: %EmptyRange: type = class_type @EmptyRange, @EmptyRange(constants.%tuple.type.56b) [concrete = constants.%EmptyRange.90a] -// CHECK:STDOUT: %.loc12_42: %Make.type.829 = specific_constant imports.%Main.import_ref.6ea, @EmptyRange(constants.%tuple.type.56b) [concrete = constants.%Make.d4f] -// CHECK:STDOUT: %Make.ref: %Make.type.829 = name_ref Make, %.loc12_42 [concrete = constants.%Make.d4f] -// CHECK:STDOUT: %Make.specific_fn: = specific_function %Make.ref, @Make(constants.%tuple.type.56b) [concrete = constants.%Make.specific_fn] +// CHECK:STDOUT: %.loc12_42: %EmptyRange.Make.type.829 = specific_constant imports.%Main.import_ref.6ea, @EmptyRange(constants.%tuple.type.56b) [concrete = constants.%EmptyRange.Make.d4f] +// CHECK:STDOUT: %Make.ref: %EmptyRange.Make.type.829 = name_ref Make, %.loc12_42 [concrete = constants.%EmptyRange.Make.d4f] +// CHECK:STDOUT: %EmptyRange.Make.specific_fn: = specific_function %Make.ref, @EmptyRange.Make(constants.%tuple.type.56b) [concrete = constants.%EmptyRange.Make.specific_fn] // CHECK:STDOUT: %.loc12_48.1: ref %EmptyRange.90a = temporary_storage -// CHECK:STDOUT: %Make.call: init %EmptyRange.90a = call %Make.specific_fn() to %.loc12_48.1 -// CHECK:STDOUT: %.loc12_48.2: ref %EmptyRange.90a = temporary %.loc12_48.1, %Make.call -// CHECK:STDOUT: %impl.elem2: %.8bd = impl_witness_access constants.%Iterate.impl_witness.627, element2 [concrete = constants.%NewCursor.263] +// CHECK:STDOUT: %EmptyRange.Make.call: init %EmptyRange.90a = call %EmptyRange.Make.specific_fn() to %.loc12_48.1 +// CHECK:STDOUT: %.loc12_48.2: ref %EmptyRange.90a = temporary %.loc12_48.1, %EmptyRange.Make.call +// CHECK:STDOUT: %impl.elem2: %.8bd = impl_witness_access constants.%Iterate.impl_witness.627, element2 [concrete = constants.%EmptyRange.as.Iterate.impl.NewCursor.263] // CHECK:STDOUT: %bound_method.loc12_49.1: = bound_method %.loc12_48.2, %impl.elem2 -// CHECK:STDOUT: %specific_fn.loc12_49.1: = specific_function %impl.elem2, @NewCursor.1(constants.%tuple.type.56b) [concrete = constants.%NewCursor.specific_fn] +// CHECK:STDOUT: %specific_fn.loc12_49.1: = specific_function %impl.elem2, @EmptyRange.as.Iterate.impl.NewCursor(constants.%tuple.type.56b) [concrete = constants.%EmptyRange.as.Iterate.impl.NewCursor.specific_fn] // CHECK:STDOUT: %bound_method.loc12_49.2: = bound_method %.loc12_48.2, %specific_fn.loc12_49.1 // CHECK:STDOUT: %.loc12_48.3: %EmptyRange.90a = bind_value %.loc12_48.2 -// CHECK:STDOUT: %NewCursor.call: init %empty_struct_type = call %bound_method.loc12_49.2(%.loc12_48.3) +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.call: init %empty_struct_type = call %bound_method.loc12_49.2(%.loc12_48.3) // CHECK:STDOUT: %var: ref %empty_struct_type = var invalid -// CHECK:STDOUT: assign %var, %NewCursor.call +// CHECK:STDOUT: assign %var, %EmptyRange.as.Iterate.impl.NewCursor.call // CHECK:STDOUT: br !for.next // CHECK:STDOUT: // CHECK:STDOUT: !for.next: // CHECK:STDOUT: %addr.loc12_49.1: %ptr.c28 = addr_of %var -// CHECK:STDOUT: %impl.elem3: %.8d0 = impl_witness_access constants.%Iterate.impl_witness.627, element3 [concrete = constants.%Next.852] +// CHECK:STDOUT: %impl.elem3: %.8d0 = impl_witness_access constants.%Iterate.impl_witness.627, element3 [concrete = constants.%EmptyRange.as.Iterate.impl.Next.852] // CHECK:STDOUT: %bound_method.loc12_49.3: = bound_method %.loc12_48.2, %impl.elem3 -// CHECK:STDOUT: %specific_fn.loc12_49.2: = specific_function %impl.elem3, @Next.1(constants.%tuple.type.56b) [concrete = constants.%Next.specific_fn] +// CHECK:STDOUT: %specific_fn.loc12_49.2: = specific_function %impl.elem3, @EmptyRange.as.Iterate.impl.Next(constants.%tuple.type.56b) [concrete = constants.%EmptyRange.as.Iterate.impl.Next.specific_fn] // CHECK:STDOUT: %bound_method.loc12_49.4: = bound_method %.loc12_48.2, %specific_fn.loc12_49.2 // CHECK:STDOUT: %.loc12_49.1: ref %Optional.657 = temporary_storage // CHECK:STDOUT: %.loc12_48.4: %EmptyRange.90a = bind_value %.loc12_48.2 -// CHECK:STDOUT: %Next.call: init %Optional.657 = call %bound_method.loc12_49.4(%.loc12_48.4, %addr.loc12_49.1) to %.loc12_49.1 -// CHECK:STDOUT: %.loc12_49.2: ref %Optional.657 = temporary %.loc12_49.1, %Next.call -// CHECK:STDOUT: %.loc12_49.3: %HasValue.type.2f1 = specific_constant imports.%Main.import_ref.7f9, @Optional(constants.%tuple.type.56b) [concrete = constants.%HasValue.bef] -// CHECK:STDOUT: %HasValue.ref: %HasValue.type.2f1 = name_ref HasValue, %.loc12_49.3 [concrete = constants.%HasValue.bef] -// CHECK:STDOUT: %HasValue.bound: = bound_method %.loc12_49.2, %HasValue.ref -// CHECK:STDOUT: %HasValue.specific_fn: = specific_function %HasValue.ref, @HasValue(constants.%tuple.type.56b) [concrete = constants.%HasValue.specific_fn] -// CHECK:STDOUT: %bound_method.loc12_49.5: = bound_method %.loc12_49.2, %HasValue.specific_fn +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.call: init %Optional.657 = call %bound_method.loc12_49.4(%.loc12_48.4, %addr.loc12_49.1) to %.loc12_49.1 +// CHECK:STDOUT: %.loc12_49.2: ref %Optional.657 = temporary %.loc12_49.1, %EmptyRange.as.Iterate.impl.Next.call +// CHECK:STDOUT: %.loc12_49.3: %Optional.HasValue.type.2f1 = specific_constant imports.%Main.import_ref.7f9, @Optional(constants.%tuple.type.56b) [concrete = constants.%Optional.HasValue.bef] +// CHECK:STDOUT: %HasValue.ref: %Optional.HasValue.type.2f1 = name_ref HasValue, %.loc12_49.3 [concrete = constants.%Optional.HasValue.bef] +// CHECK:STDOUT: %Optional.HasValue.bound: = bound_method %.loc12_49.2, %HasValue.ref +// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %HasValue.ref, @Optional.HasValue(constants.%tuple.type.56b) [concrete = constants.%Optional.HasValue.specific_fn] +// CHECK:STDOUT: %bound_method.loc12_49.5: = bound_method %.loc12_49.2, %Optional.HasValue.specific_fn // CHECK:STDOUT: %.loc12_49.4: %Optional.657 = bind_value %.loc12_49.2 -// CHECK:STDOUT: %HasValue.call: init bool = call %bound_method.loc12_49.5(%.loc12_49.4) -// CHECK:STDOUT: %.loc12_49.5: bool = value_of_initializer %HasValue.call -// CHECK:STDOUT: %.loc12_49.6: bool = converted %HasValue.call, %.loc12_49.5 +// CHECK:STDOUT: %Optional.HasValue.call: init bool = call %bound_method.loc12_49.5(%.loc12_49.4) +// CHECK:STDOUT: %.loc12_49.5: bool = value_of_initializer %Optional.HasValue.call +// CHECK:STDOUT: %.loc12_49.6: bool = converted %Optional.HasValue.call, %.loc12_49.5 // CHECK:STDOUT: if %.loc12_49.6 br !for.body else br !for.done // CHECK:STDOUT: // CHECK:STDOUT: !for.body: -// CHECK:STDOUT: %.loc12_49.7: %Get.type.4a4 = specific_constant imports.%Main.import_ref.d10, @Optional(constants.%tuple.type.56b) [concrete = constants.%Get.8a7] -// CHECK:STDOUT: %Get.ref: %Get.type.4a4 = name_ref Get, %.loc12_49.7 [concrete = constants.%Get.8a7] -// CHECK:STDOUT: %Get.bound: = bound_method %.loc12_49.2, %Get.ref -// CHECK:STDOUT: %Get.specific_fn: = specific_function %Get.ref, @Get(constants.%tuple.type.56b) [concrete = constants.%Get.specific_fn] -// CHECK:STDOUT: %bound_method.loc12_49.6: = bound_method %.loc12_49.2, %Get.specific_fn +// CHECK:STDOUT: %.loc12_49.7: %Optional.Get.type.4a4 = specific_constant imports.%Main.import_ref.d10, @Optional(constants.%tuple.type.56b) [concrete = constants.%Optional.Get.8a7] +// CHECK:STDOUT: %Get.ref: %Optional.Get.type.4a4 = name_ref Get, %.loc12_49.7 [concrete = constants.%Optional.Get.8a7] +// CHECK:STDOUT: %Optional.Get.bound: = bound_method %.loc12_49.2, %Get.ref +// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Get.ref, @Optional.Get(constants.%tuple.type.56b) [concrete = constants.%Optional.Get.specific_fn] +// CHECK:STDOUT: %bound_method.loc12_49.6: = bound_method %.loc12_49.2, %Optional.Get.specific_fn // CHECK:STDOUT: %.loc12_49.8: ref %tuple.type.56b = temporary_storage // CHECK:STDOUT: %.loc12_49.9: %Optional.657 = bind_value %.loc12_49.2 -// CHECK:STDOUT: %Get.call: init %tuple.type.56b = call %bound_method.loc12_49.6(%.loc12_49.9) to %.loc12_49.8 -// CHECK:STDOUT: %.loc12_49.10: ref %tuple.type.56b = temporary %.loc12_49.8, %Get.call +// CHECK:STDOUT: %Optional.Get.call: init %tuple.type.56b = call %bound_method.loc12_49.6(%.loc12_49.9) to %.loc12_49.8 +// CHECK:STDOUT: %.loc12_49.10: ref %tuple.type.56b = temporary %.loc12_49.8, %Optional.Get.call // CHECK:STDOUT: %tuple.elem0: ref %C = tuple_access %.loc12_49.10, element0 // CHECK:STDOUT: %tuple.elem1: ref %C = tuple_access %.loc12_49.10, element1 // CHECK:STDOUT: %C.ref.loc12_12: type = name_ref C, file.%C.decl [concrete = constants.%C] @@ -779,26 +779,26 @@ fn Run() { // CHECK:STDOUT: br !for.next // CHECK:STDOUT: // CHECK:STDOUT: !for.done: -// CHECK:STDOUT: %Op.bound.loc12_49.1: = bound_method %.loc12_49.8, constants.%Op.587 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc12_49.1: = bound_method %.loc12_49.8, constants.%T.as.Destroy.impl.Op.587 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc12_49.7: = bound_method %.loc12_49.8, %Op.specific_fn.1 +// CHECK:STDOUT: %bound_method.loc12_49.7: = bound_method %.loc12_49.8, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc12_49.2: %ptr.9f0 = addr_of %.loc12_49.8 -// CHECK:STDOUT: %no_op.loc12_49.1: init %empty_tuple.type = call %bound_method.loc12_49.7(%addr.loc12_49.2) -// CHECK:STDOUT: %Op.bound.loc12_49.2: = bound_method %.loc12_49.1, constants.%Op.5ec +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc12_49.1: init %empty_tuple.type = call %bound_method.loc12_49.7(%addr.loc12_49.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc12_49.2: = bound_method %.loc12_49.1, constants.%T.as.Destroy.impl.Op.5ec // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc12_49.8: = bound_method %.loc12_49.1, %Op.specific_fn.2 +// CHECK:STDOUT: %bound_method.loc12_49.8: = bound_method %.loc12_49.1, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc12_49.3: %ptr.036 = addr_of %.loc12_49.1 -// CHECK:STDOUT: %no_op.loc12_49.2: init %empty_tuple.type = call %bound_method.loc12_49.8(%addr.loc12_49.3) -// CHECK:STDOUT: %Op.bound.loc12_49.3: = bound_method %var, constants.%Op.ca6 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc12_49.2: init %empty_tuple.type = call %bound_method.loc12_49.8(%addr.loc12_49.3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc12_49.3: = bound_method %var, constants.%T.as.Destroy.impl.Op.ca6 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc12_49.9: = bound_method %var, %Op.specific_fn.3 +// CHECK:STDOUT: %bound_method.loc12_49.9: = bound_method %var, %T.as.Destroy.impl.Op.specific_fn.3 // CHECK:STDOUT: %addr.loc12_49.4: %ptr.c28 = addr_of %var -// CHECK:STDOUT: %no_op.loc12_49.3: init %empty_tuple.type = call %bound_method.loc12_49.9(%addr.loc12_49.4) -// CHECK:STDOUT: %Op.bound.loc12_48: = bound_method %.loc12_48.1, constants.%Op.323 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc12_49.3: init %empty_tuple.type = call %bound_method.loc12_49.9(%addr.loc12_49.4) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc12_48: = bound_method %.loc12_48.1, constants.%T.as.Destroy.impl.Op.323 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc12_48: = bound_method %.loc12_48.1, %Op.specific_fn.4 +// CHECK:STDOUT: %bound_method.loc12_48: = bound_method %.loc12_48.1, %T.as.Destroy.impl.Op.specific_fn.4 // CHECK:STDOUT: %addr.loc12_48: %ptr.f9b = addr_of %.loc12_48.1 -// CHECK:STDOUT: %no_op.loc12_48: init %empty_tuple.type = call %bound_method.loc12_48(%addr.loc12_48) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc12_48: init %empty_tuple.type = call %bound_method.loc12_48(%addr.loc12_48) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/builtin/adapted_type.carbon b/toolchain/check/testdata/function/builtin/adapted_type.carbon index b6365e3e9fd7..5c167b7a7b42 100644 --- a/toolchain/check/testdata/function/builtin/adapted_type.carbon +++ b/toolchain/check/testdata/function/builtin/adapted_type.carbon @@ -66,8 +66,8 @@ fn Int(N: MyIntLiteral) -> type = "int.make_type_signed"; // CHECK:STDOUT: %int_32.4da: %MyIntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32.4da [concrete] // CHECK:STDOUT: %pattern_type.81e: type = pattern_type %MyInt32 [concrete] -// CHECK:STDOUT: %Make.type: type = fn_type @Make [concrete] -// CHECK:STDOUT: %Make: %Make.type = struct_value () [concrete] +// CHECK:STDOUT: %MyInt32.Make.type: type = fn_type @MyInt32.Make [concrete] +// CHECK:STDOUT: %MyInt32.Make: %MyInt32.Make.type = struct_value () [concrete] // CHECK:STDOUT: %complete_type.ec2: = complete_type_witness %i32.builtin [concrete] // CHECK:STDOUT: %MyAdd.type: type = fn_type @MyAdd [concrete] // CHECK:STDOUT: %MyAdd: %MyAdd.type = struct_value () [concrete] @@ -110,7 +110,7 @@ fn Int(N: MyIntLiteral) -> type = "int.make_type_signed"; // CHECK:STDOUT: %return: ref type = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %MyInt32.decl: type = class_decl @MyInt32 [concrete = constants.%MyInt32] {} {} -// CHECK:STDOUT: %Make.decl: %Make.type = fn_decl @Make [concrete = constants.%Make] { +// CHECK:STDOUT: %MyInt32.Make.decl: %MyInt32.Make.type = fn_decl @MyInt32.Make [concrete = constants.%MyInt32.Make] { // CHECK:STDOUT: %a.patt: %pattern_type.e22 = binding_pattern a [concrete] // CHECK:STDOUT: %a.param_patt: %pattern_type.e22 = value_param_pattern %a.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.81e = return_slot_pattern [concrete] @@ -152,9 +152,9 @@ fn Int(N: MyIntLiteral) -> type = "int.make_type_signed"; // CHECK:STDOUT: // CHECK:STDOUT: class @MyIntLiteral { // CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [concrete = constants.%IntLiteral] -// CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc7_21.1: type = value_of_initializer %int_literal.make_type [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc7_21.2: type = converted %int_literal.make_type, %.loc7_21.1 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %IntLiteral.call: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc7_21.1: type = value_of_initializer %IntLiteral.call [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc7_21.2: type = converted %IntLiteral.call, %.loc7_21.1 [concrete = Core.IntLiteral] // CHECK:STDOUT: adapt_decl %.loc7_21.2 [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness Core.IntLiteral [concrete = constants.%complete_type.972] // CHECK:STDOUT: complete_type_witness = %complete_type @@ -170,11 +170,11 @@ fn Int(N: MyIntLiteral) -> type = "int.make_type_signed"; // CHECK:STDOUT: %MyIntLiteral.ref: type = name_ref MyIntLiteral, file.%MyIntLiteral.decl [concrete = constants.%MyIntLiteral] // CHECK:STDOUT: %.loc13_16.1: %MyIntLiteral = as_compatible %int_32 [concrete = constants.%int_32.4da] // CHECK:STDOUT: %.loc13_16.2: %MyIntLiteral = converted %int_32, %.loc13_16.1 [concrete = constants.%int_32.4da] -// CHECK:STDOUT: %int.make_type_signed: init type = call %Int.ref(%.loc13_16.2) [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc13_32.1: type = value_of_initializer %int.make_type_signed [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc13_32.2: type = converted %int.make_type_signed, %.loc13_32.1 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %Int.call: init type = call %Int.ref(%.loc13_16.2) [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc13_32.1: type = value_of_initializer %Int.call [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc13_32.2: type = converted %Int.call, %.loc13_32.1 [concrete = constants.%i32.builtin] // CHECK:STDOUT: adapt_decl %.loc13_32.2 [concrete] -// CHECK:STDOUT: %Make.decl: %Make.type = fn_decl @Make [concrete = constants.%Make] { +// CHECK:STDOUT: %MyInt32.Make.decl: %MyInt32.Make.type = fn_decl @MyInt32.Make [concrete = constants.%MyInt32.Make] { // CHECK:STDOUT: %a.patt: %pattern_type.e22 = binding_pattern a [concrete] // CHECK:STDOUT: %a.param_patt: %pattern_type.e22 = value_param_pattern %a.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.81e = return_slot_pattern [concrete] @@ -195,14 +195,14 @@ fn Int(N: MyIntLiteral) -> type = "int.make_type_signed"; // CHECK:STDOUT: .Int = // CHECK:STDOUT: .MyIntLiteral = // CHECK:STDOUT: .MyInt32 = -// CHECK:STDOUT: .Make = %Make.decl +// CHECK:STDOUT: .Make = %MyInt32.Make.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @IntLiteral() -> type = "int_literal.make_type"; // CHECK:STDOUT: // CHECK:STDOUT: fn @Int(%N.param: %MyIntLiteral) -> type = "int.make_type_signed"; // CHECK:STDOUT: -// CHECK:STDOUT: fn @Make(%a.param.loc18: %MyIntLiteral) -> %MyInt32 = "int.convert_checked"; +// CHECK:STDOUT: fn @MyInt32.Make(%a.param.loc18: %MyIntLiteral) -> %MyInt32 = "int.convert_checked"; // CHECK:STDOUT: // CHECK:STDOUT: fn @MyAdd(%a.param: %MyInt32, %b.param: %MyInt32) -> %MyInt32 = "int.sadd"; // CHECK:STDOUT: @@ -210,25 +210,25 @@ fn Int(N: MyIntLiteral) -> type = "int.make_type_signed"; // CHECK:STDOUT: !entry: // CHECK:STDOUT: %MyAdd.ref: %MyAdd.type = name_ref MyAdd, file.%MyAdd.decl [concrete = constants.%MyAdd] // CHECK:STDOUT: %MyInt32.ref.loc22_24: type = name_ref MyInt32, file.%MyInt32.decl [concrete = constants.%MyInt32] -// CHECK:STDOUT: %Make.ref.loc22_31: %Make.type = name_ref Make, @MyInt32.%Make.decl [concrete = constants.%Make] +// CHECK:STDOUT: %Make.ref.loc22_31: %MyInt32.Make.type = name_ref Make, @MyInt32.%MyInt32.Make.decl [concrete = constants.%MyInt32.Make] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %MyIntLiteral.ref.loc22_42: type = name_ref MyIntLiteral, file.%MyIntLiteral.decl [concrete = constants.%MyIntLiteral] // CHECK:STDOUT: %.loc22_39.1: %MyIntLiteral = as_compatible %int_1 [concrete = constants.%int_1.383] // CHECK:STDOUT: %.loc22_39.2: %MyIntLiteral = converted %int_1, %.loc22_39.1 [concrete = constants.%int_1.383] -// CHECK:STDOUT: %int.convert_checked.loc22_54: init %MyInt32 = call %Make.ref.loc22_31(%.loc22_39.2) [concrete = constants.%int_1.d74] +// CHECK:STDOUT: %MyInt32.Make.call.loc22_54: init %MyInt32 = call %Make.ref.loc22_31(%.loc22_39.2) [concrete = constants.%int_1.d74] // CHECK:STDOUT: %MyInt32.ref.loc22_57: type = name_ref MyInt32, file.%MyInt32.decl [concrete = constants.%MyInt32] -// CHECK:STDOUT: %Make.ref.loc22_64: %Make.type = name_ref Make, @MyInt32.%Make.decl [concrete = constants.%Make] +// CHECK:STDOUT: %Make.ref.loc22_64: %MyInt32.Make.type = name_ref Make, @MyInt32.%MyInt32.Make.decl [concrete = constants.%MyInt32.Make] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %MyIntLiteral.ref.loc22_75: type = name_ref MyIntLiteral, file.%MyIntLiteral.decl [concrete = constants.%MyIntLiteral] // CHECK:STDOUT: %.loc22_72.1: %MyIntLiteral = as_compatible %int_2 [concrete = constants.%int_2.a27] // CHECK:STDOUT: %.loc22_72.2: %MyIntLiteral = converted %int_2, %.loc22_72.1 [concrete = constants.%int_2.a27] -// CHECK:STDOUT: %int.convert_checked.loc22_87: init %MyInt32 = call %Make.ref.loc22_64(%.loc22_72.2) [concrete = constants.%int_2.eda] -// CHECK:STDOUT: %.loc22_54.1: %MyInt32 = value_of_initializer %int.convert_checked.loc22_54 [concrete = constants.%int_1.d74] -// CHECK:STDOUT: %.loc22_54.2: %MyInt32 = converted %int.convert_checked.loc22_54, %.loc22_54.1 [concrete = constants.%int_1.d74] -// CHECK:STDOUT: %.loc22_87.1: %MyInt32 = value_of_initializer %int.convert_checked.loc22_87 [concrete = constants.%int_2.eda] -// CHECK:STDOUT: %.loc22_87.2: %MyInt32 = converted %int.convert_checked.loc22_87, %.loc22_87.1 [concrete = constants.%int_2.eda] -// CHECK:STDOUT: %int.sadd: init %MyInt32 = call %MyAdd.ref(%.loc22_54.2, %.loc22_87.2) [concrete = constants.%int_3] -// CHECK:STDOUT: assign file.%v.var, %int.sadd +// CHECK:STDOUT: %MyInt32.Make.call.loc22_87: init %MyInt32 = call %Make.ref.loc22_64(%.loc22_72.2) [concrete = constants.%int_2.eda] +// CHECK:STDOUT: %.loc22_54.1: %MyInt32 = value_of_initializer %MyInt32.Make.call.loc22_54 [concrete = constants.%int_1.d74] +// CHECK:STDOUT: %.loc22_54.2: %MyInt32 = converted %MyInt32.Make.call.loc22_54, %.loc22_54.1 [concrete = constants.%int_1.d74] +// CHECK:STDOUT: %.loc22_87.1: %MyInt32 = value_of_initializer %MyInt32.Make.call.loc22_87 [concrete = constants.%int_2.eda] +// CHECK:STDOUT: %.loc22_87.2: %MyInt32 = converted %MyInt32.Make.call.loc22_87, %.loc22_87.1 [concrete = constants.%int_2.eda] +// CHECK:STDOUT: %MyAdd.call: init %MyInt32 = call %MyAdd.ref(%.loc22_54.2, %.loc22_87.2) [concrete = constants.%int_3] +// CHECK:STDOUT: assign file.%v.var, %MyAdd.call // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/builtin/call.carbon b/toolchain/check/testdata/function/builtin/call.carbon index 1a07ed9a1ecd..3e573ee0561e 100644 --- a/toolchain/check/testdata/function/builtin/call.carbon +++ b/toolchain/check/testdata/function/builtin/call.carbon @@ -35,36 +35,36 @@ fn RuntimeCall(a: i32, b: i32) -> i32 { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.type.2fd: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [concrete] // CHECK:STDOUT: %From: Core.IntLiteral = bind_symbolic_name From, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.708: type = fn_type @Convert.3, @ImplicitAs.impl.971(%From) [symbolic] -// CHECK:STDOUT: %Convert.c68: %Convert.type.708 = struct_value () [symbolic] -// CHECK:STDOUT: %Convert.type.71e: type = fn_type @Convert.1, @ImplicitAs(Core.IntLiteral) [concrete] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.type.708: type = fn_type @Int.as.ImplicitAs.impl.Convert, @Int.as.ImplicitAs.impl(%From) [symbolic] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.c68: %Int.as.ImplicitAs.impl.Convert.type.708 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.Convert.type.71e: type = fn_type @ImplicitAs.Convert, @ImplicitAs(Core.IntLiteral) [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet.921: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet.921 [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn.b6f: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn.b6f [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet.921 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn.b6f [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %int_3.822: %i32 = int_value 3 [concrete] -// CHECK:STDOUT: %ImplicitAs.impl_witness.a11: = impl_witness imports.%ImplicitAs.impl_witness_table.1d9, @ImplicitAs.impl.971(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.4ad: type = fn_type @Convert.3, @ImplicitAs.impl.971(%int_32) [concrete] -// CHECK:STDOUT: %Convert.960: %Convert.type.4ad = struct_value () [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.a11: = impl_witness imports.%ImplicitAs.impl_witness_table.1d9, @Int.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.type.4ad: type = fn_type @Int.as.ImplicitAs.impl.Convert, @Int.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.960: %Int.as.ImplicitAs.impl.Convert.type.4ad = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet.f49: %ImplicitAs.type.2fd = facet_value %i32, (%ImplicitAs.impl_witness.a11) [concrete] -// CHECK:STDOUT: %.0ea: type = fn_type_with_self_type %Convert.type.71e, %ImplicitAs.facet.f49 [concrete] -// CHECK:STDOUT: %Convert.bound.2d6: = bound_method %int_3.822, %Convert.960 [concrete] -// CHECK:STDOUT: %Convert.specific_fn.8a8: = specific_function %Convert.960, @Convert.3(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.c6f: = bound_method %int_3.822, %Convert.specific_fn.8a8 [concrete] +// CHECK:STDOUT: %.0ea: type = fn_type_with_self_type %ImplicitAs.Convert.type.71e, %ImplicitAs.facet.f49 [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.bound: = bound_method %int_3.822, %Int.as.ImplicitAs.impl.Convert.960 [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Int.as.ImplicitAs.impl.Convert.960, @Int.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.c6f: = bound_method %int_3.822, %Int.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [concrete] // CHECK:STDOUT: %array_type: type = array_type %int_3.1ba, %i32 [concrete] // CHECK:STDOUT: %pattern_type.5d8: type = pattern_type %array_type [concrete] @@ -81,10 +81,10 @@ fn RuntimeCall(a: i32, b: i32) -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] -// CHECK:STDOUT: %Core.import_ref.85c: @ImplicitAs.impl.971.%Convert.type (%Convert.type.708) = import_ref Core//prelude/parts/int, loc20_44, loaded [symbolic = @ImplicitAs.impl.971.%Convert (constants.%Convert.c68)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.1d9 = impl_witness_table (%Core.import_ref.85c), @ImplicitAs.impl.971 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.85c: @Int.as.ImplicitAs.impl.%Int.as.ImplicitAs.impl.Convert.type (%Int.as.ImplicitAs.impl.Convert.type.708) = import_ref Core//prelude/parts/int, loc20_44, loaded [symbolic = @Int.as.ImplicitAs.impl.%Int.as.ImplicitAs.impl.Convert (constants.%Int.as.ImplicitAs.impl.Convert.c68)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.1d9 = impl_witness_table (%Core.import_ref.85c), @Int.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -131,30 +131,30 @@ fn RuntimeCall(a: i32, b: i32) -> i32 { // CHECK:STDOUT: %Add.ref: %Add.type = name_ref Add, %Add.decl [concrete = constants.%Add] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %impl.elem0.loc17_25: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc17_25.1: = bound_method %int_1, %impl.elem0.loc17_25 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc17_25: = specific_function %impl.elem0.loc17_25, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn.b6f] +// CHECK:STDOUT: %impl.elem0.loc17_25: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc17_25.1: = bound_method %int_1, %impl.elem0.loc17_25 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc17_25: = specific_function %impl.elem0.loc17_25, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc17_25.2: = bound_method %int_1, %specific_fn.loc17_25 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc17_25: init %i32 = call %bound_method.loc17_25.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc17_25.1: %i32 = value_of_initializer %int.convert_checked.loc17_25 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc17_25: init %i32 = call %bound_method.loc17_25.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc17_25.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc17_25 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc17_25.2: %i32 = converted %int_1, %.loc17_25.1 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %impl.elem0.loc17_28: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc17_28.1: = bound_method %int_2, %impl.elem0.loc17_28 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc17_28: = specific_function %impl.elem0.loc17_28, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn.b6f] +// CHECK:STDOUT: %impl.elem0.loc17_28: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc17_28.1: = bound_method %int_2, %impl.elem0.loc17_28 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc17_28: = specific_function %impl.elem0.loc17_28, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc17_28.2: = bound_method %int_2, %specific_fn.loc17_28 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc17_28: init %i32 = call %bound_method.loc17_28.2(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc17_28.1: %i32 = value_of_initializer %int.convert_checked.loc17_28 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc17_28: init %i32 = call %bound_method.loc17_28.2(%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc17_28.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc17_28 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc17_28.2: %i32 = converted %int_2, %.loc17_28.1 [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %int.sadd: init %i32 = call %Add.ref(%.loc17_25.2, %.loc17_28.2) [concrete = constants.%int_3.822] -// CHECK:STDOUT: %impl.elem0.loc17_29: %.0ea = impl_witness_access constants.%ImplicitAs.impl_witness.a11, element0 [concrete = constants.%Convert.960] -// CHECK:STDOUT: %bound_method.loc17_29.1: = bound_method %int.sadd, %impl.elem0.loc17_29 [concrete = constants.%Convert.bound.2d6] -// CHECK:STDOUT: %specific_fn.loc17_29: = specific_function %impl.elem0.loc17_29, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn.8a8] -// CHECK:STDOUT: %bound_method.loc17_29.2: = bound_method %int.sadd, %specific_fn.loc17_29 [concrete = constants.%bound_method.c6f] -// CHECK:STDOUT: %.loc17_29.1: %i32 = value_of_initializer %int.sadd [concrete = constants.%int_3.822] -// CHECK:STDOUT: %.loc17_29.2: %i32 = converted %int.sadd, %.loc17_29.1 [concrete = constants.%int_3.822] -// CHECK:STDOUT: %int.convert_checked.loc17_29: init Core.IntLiteral = call %bound_method.loc17_29.2(%.loc17_29.2) [concrete = constants.%int_3.1ba] -// CHECK:STDOUT: %.loc17_29.3: Core.IntLiteral = value_of_initializer %int.convert_checked.loc17_29 [concrete = constants.%int_3.1ba] -// CHECK:STDOUT: %.loc17_29.4: Core.IntLiteral = converted %int.sadd, %.loc17_29.3 [concrete = constants.%int_3.1ba] +// CHECK:STDOUT: %Add.call: init %i32 = call %Add.ref(%.loc17_25.2, %.loc17_28.2) [concrete = constants.%int_3.822] +// CHECK:STDOUT: %impl.elem0.loc17_29: %.0ea = impl_witness_access constants.%ImplicitAs.impl_witness.a11, element0 [concrete = constants.%Int.as.ImplicitAs.impl.Convert.960] +// CHECK:STDOUT: %bound_method.loc17_29.1: = bound_method %Add.call, %impl.elem0.loc17_29 [concrete = constants.%Int.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc17_29: = specific_function %impl.elem0.loc17_29, @Int.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Int.as.ImplicitAs.impl.Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc17_29.2: = bound_method %Add.call, %specific_fn.loc17_29 [concrete = constants.%bound_method.c6f] +// CHECK:STDOUT: %.loc17_29.1: %i32 = value_of_initializer %Add.call [concrete = constants.%int_3.822] +// CHECK:STDOUT: %.loc17_29.2: %i32 = converted %Add.call, %.loc17_29.1 [concrete = constants.%int_3.822] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call: init Core.IntLiteral = call %bound_method.loc17_29.2(%.loc17_29.2) [concrete = constants.%int_3.1ba] +// CHECK:STDOUT: %.loc17_29.3: Core.IntLiteral = value_of_initializer %Int.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_3.1ba] +// CHECK:STDOUT: %.loc17_29.4: Core.IntLiteral = converted %Add.call, %.loc17_29.3 [concrete = constants.%int_3.1ba] // CHECK:STDOUT: %array_type: type = array_type %.loc17_29.4, %i32 [concrete = constants.%array_type] // CHECK:STDOUT: } // CHECK:STDOUT: %arr: ref %array_type = bind_name arr, %arr.var [concrete = %arr.var] @@ -192,9 +192,9 @@ fn RuntimeCall(a: i32, b: i32) -> i32 { // CHECK:STDOUT: %Add.ref: %Add.type = name_ref Add, file.%Add.decl [concrete = constants.%Add] // CHECK:STDOUT: %a.ref: %i32 = name_ref a, %a // CHECK:STDOUT: %b.ref: %i32 = name_ref b, %b -// CHECK:STDOUT: %int.sadd: init %i32 = call %Add.ref(%a.ref, %b.ref) -// CHECK:STDOUT: %.loc20_19.1: %i32 = value_of_initializer %int.sadd -// CHECK:STDOUT: %.loc20_19.2: %i32 = converted %int.sadd, %.loc20_19.1 +// CHECK:STDOUT: %Add.call: init %i32 = call %Add.ref(%a.ref, %b.ref) +// CHECK:STDOUT: %.loc20_19.1: %i32 = value_of_initializer %Add.call +// CHECK:STDOUT: %.loc20_19.2: %i32 = converted %Add.call, %.loc20_19.1 // CHECK:STDOUT: return %.loc20_19.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/builtin/call_from_operator.carbon b/toolchain/check/testdata/function/builtin/call_from_operator.carbon index 2de57054f9f8..3ffbbe516e50 100644 --- a/toolchain/check/testdata/function/builtin/call_from_operator.carbon +++ b/toolchain/check/testdata/function/builtin/call_from_operator.carbon @@ -69,10 +69,10 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %Self.deb: %AddWith.type.bc7 = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %Self.as_type.6cc: type = facet_access_type %Self.deb [symbolic] // CHECK:STDOUT: %pattern_type.4a8: type = pattern_type %Self.as_type.6cc [symbolic] -// CHECK:STDOUT: %Op.type.5b7: type = fn_type @Op.loc8, @AddWith(%T) [symbolic] -// CHECK:STDOUT: %Op.037: %Op.type.5b7 = struct_value () [symbolic] +// CHECK:STDOUT: %AddWith.Op.type.5b7: type = fn_type @AddWith.Op, @AddWith(%T) [symbolic] +// CHECK:STDOUT: %AddWith.Op.037: %AddWith.Op.type.5b7 = struct_value () [symbolic] // CHECK:STDOUT: %AddWith.assoc_type.36e: type = assoc_entity_type @AddWith, @AddWith(%T) [symbolic] -// CHECK:STDOUT: %assoc0.adf: %AddWith.assoc_type.36e = assoc_entity element0, @AddWith.%Op.decl [symbolic] +// CHECK:STDOUT: %assoc0.adf: %AddWith.assoc_type.36e = assoc_entity element0, @AddWith.%AddWith.Op.decl [symbolic] // CHECK:STDOUT: %As.type.b51: type = generic_interface_type @As [concrete] // CHECK:STDOUT: %As.generic: %As.type.b51 = struct_value () [concrete] // CHECK:STDOUT: %As.type.8ba: type = facet_type <@As, @As(%T)> [symbolic] @@ -80,62 +80,62 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %Self.as_type.7f0: type = facet_access_type %Self.b4e [symbolic] // CHECK:STDOUT: %pattern_type.947: type = pattern_type %Self.as_type.7f0 [symbolic] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %T [symbolic] -// CHECK:STDOUT: %Convert.type.ad1: type = fn_type @Convert.loc12, @As(%T) [symbolic] -// CHECK:STDOUT: %Convert.0ed: %Convert.type.ad1 = struct_value () [symbolic] +// CHECK:STDOUT: %As.Convert.type.ad1: type = fn_type @As.Convert, @As(%T) [symbolic] +// CHECK:STDOUT: %As.Convert.0ed: %As.Convert.type.ad1 = struct_value () [symbolic] // CHECK:STDOUT: %As.assoc_type.a21: type = assoc_entity_type @As, @As(%T) [symbolic] -// CHECK:STDOUT: %assoc0.1d5: %As.assoc_type.a21 = assoc_entity element0, @As.%Convert.decl [symbolic] +// CHECK:STDOUT: %assoc0.1d5: %As.assoc_type.a21 = assoc_entity element0, @As.%As.Convert.decl [symbolic] // CHECK:STDOUT: %ImplicitAs.type.96f: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.96f = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.07f: type = facet_type <@ImplicitAs, @ImplicitAs(%T)> [symbolic] // CHECK:STDOUT: %Self.0f3: %ImplicitAs.type.07f = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %Self.as_type.419: type = facet_access_type %Self.0f3 [symbolic] // CHECK:STDOUT: %pattern_type.a93: type = pattern_type %Self.as_type.419 [symbolic] -// CHECK:STDOUT: %Convert.type.4cf: type = fn_type @Convert.loc16, @ImplicitAs(%T) [symbolic] -// CHECK:STDOUT: %Convert.147: %Convert.type.4cf = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.Convert.type.4cf: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%T) [symbolic] +// CHECK:STDOUT: %ImplicitAs.Convert.147: %ImplicitAs.Convert.type.4cf = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.assoc_type.095: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%T) [symbolic] -// CHECK:STDOUT: %assoc0.8f8: %ImplicitAs.assoc_type.095 = assoc_entity element0, @ImplicitAs.%Convert.decl [symbolic] +// CHECK:STDOUT: %assoc0.8f8: %ImplicitAs.assoc_type.095 = assoc_entity element0, @ImplicitAs.%ImplicitAs.Convert.decl [symbolic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [concrete] // CHECK:STDOUT: %AddWith.type.49d: type = facet_type <@AddWith, @AddWith(%i32.builtin)> [concrete] // CHECK:STDOUT: %Self.da9: %AddWith.type.49d = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %Op.type.efc: type = fn_type @Op.loc8, @AddWith(%i32.builtin) [concrete] -// CHECK:STDOUT: %Op.a62: %Op.type.efc = struct_value () [concrete] +// CHECK:STDOUT: %AddWith.Op.type.efc: type = fn_type @AddWith.Op, @AddWith(%i32.builtin) [concrete] +// CHECK:STDOUT: %AddWith.Op.a62: %AddWith.Op.type.efc = struct_value () [concrete] // CHECK:STDOUT: %AddWith.assoc_type.a65: type = assoc_entity_type @AddWith, @AddWith(%i32.builtin) [concrete] -// CHECK:STDOUT: %assoc0.ee2: %AddWith.assoc_type.a65 = assoc_entity element0, @AddWith.%Op.decl [concrete] +// CHECK:STDOUT: %assoc0.ee2: %AddWith.assoc_type.a65 = assoc_entity element0, @AddWith.%AddWith.Op.decl [concrete] // CHECK:STDOUT: %AddWith.impl_witness: = impl_witness file.%AddWith.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.956: type = pattern_type %i32.builtin [concrete] -// CHECK:STDOUT: %Op.type.e57: type = fn_type @Op.loc20 [concrete] -// CHECK:STDOUT: %Op.c8a: %Op.type.e57 = struct_value () [concrete] +// CHECK:STDOUT: %i32.builtin.as.AddWith.impl.Op.type: type = fn_type @i32.builtin.as.AddWith.impl.Op [concrete] +// CHECK:STDOUT: %i32.builtin.as.AddWith.impl.Op: %i32.builtin.as.AddWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %AddWith.facet: %AddWith.type.49d = facet_value %i32.builtin, (%AddWith.impl_witness) [concrete] // CHECK:STDOUT: %As.type.a09: type = facet_type <@As, @As(%i32.builtin)> [concrete] // CHECK:STDOUT: %Self.2fa: %As.type.a09 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %Convert.type.c0d: type = fn_type @Convert.loc12, @As(%i32.builtin) [concrete] -// CHECK:STDOUT: %Convert.713: %Convert.type.c0d = struct_value () [concrete] +// CHECK:STDOUT: %As.Convert.type.c0d: type = fn_type @As.Convert, @As(%i32.builtin) [concrete] +// CHECK:STDOUT: %As.Convert.713: %As.Convert.type.c0d = struct_value () [concrete] // CHECK:STDOUT: %As.assoc_type.b9b: type = assoc_entity_type @As, @As(%i32.builtin) [concrete] -// CHECK:STDOUT: %assoc0.b02: %As.assoc_type.b9b = assoc_entity element0, @As.%Convert.decl [concrete] +// CHECK:STDOUT: %assoc0.b02: %As.assoc_type.b9b = assoc_entity element0, @As.%As.Convert.decl [concrete] // CHECK:STDOUT: %As.impl_witness: = impl_witness file.%As.impl_witness_table [concrete] -// CHECK:STDOUT: %Convert.type.fc9: type = fn_type @Convert.loc24 [concrete] -// CHECK:STDOUT: %Convert.33c: %Convert.type.fc9 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type: type = fn_type @Core.IntLiteral.as.As.impl.Convert [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert: %Core.IntLiteral.as.As.impl.Convert.type = struct_value () [concrete] // CHECK:STDOUT: %As.facet: %As.type.a09 = facet_value Core.IntLiteral, (%As.impl_witness) [concrete] // CHECK:STDOUT: %ImplicitAs.type.11a: type = facet_type <@ImplicitAs, @ImplicitAs(%i32.builtin)> [concrete] // CHECK:STDOUT: %Self.e0a: %ImplicitAs.type.11a = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %Convert.type.752: type = fn_type @Convert.loc16, @ImplicitAs(%i32.builtin) [concrete] -// CHECK:STDOUT: %Convert.fcc: %Convert.type.752 = struct_value () [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.752: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32.builtin) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.fcc: %ImplicitAs.Convert.type.752 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.assoc_type.1cf: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%i32.builtin) [concrete] -// CHECK:STDOUT: %assoc0.3ce: %ImplicitAs.assoc_type.1cf = assoc_entity element0, @ImplicitAs.%Convert.decl [concrete] +// CHECK:STDOUT: %assoc0.3ce: %ImplicitAs.assoc_type.1cf = assoc_entity element0, @ImplicitAs.%ImplicitAs.Convert.decl [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.be0: = impl_witness file.%ImplicitAs.impl_witness_table.loc27 [concrete] -// CHECK:STDOUT: %Convert.type.c2a: type = fn_type @Convert.loc28 [concrete] -// CHECK:STDOUT: %Convert.40d: %Convert.type.c2a = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet.bcb: %ImplicitAs.type.11a = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.be0) [concrete] // CHECK:STDOUT: %ImplicitAs.type.9fc: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [concrete] // CHECK:STDOUT: %Self.37e: %ImplicitAs.type.9fc = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %Convert.type.60e: type = fn_type @Convert.loc16, @ImplicitAs(Core.IntLiteral) [concrete] -// CHECK:STDOUT: %Convert.c73: %Convert.type.60e = struct_value () [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.60e: type = fn_type @ImplicitAs.Convert, @ImplicitAs(Core.IntLiteral) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.c73: %ImplicitAs.Convert.type.60e = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.assoc_type.014: type = assoc_entity_type @ImplicitAs, @ImplicitAs(Core.IntLiteral) [concrete] -// CHECK:STDOUT: %assoc0.757: %ImplicitAs.assoc_type.014 = assoc_entity element0, @ImplicitAs.%Convert.decl [concrete] +// CHECK:STDOUT: %assoc0.757: %ImplicitAs.assoc_type.014 = assoc_entity element0, @ImplicitAs.%ImplicitAs.Convert.decl [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.95b: = impl_witness file.%ImplicitAs.impl_witness_table.loc31 [concrete] -// CHECK:STDOUT: %Convert.type.295: type = fn_type @Convert.loc32 [concrete] -// CHECK:STDOUT: %Convert.2bf: %Convert.type.295 = struct_value () [concrete] +// CHECK:STDOUT: %i32.builtin.as.ImplicitAs.impl.Convert.type: type = fn_type @i32.builtin.as.ImplicitAs.impl.Convert [concrete] +// CHECK:STDOUT: %i32.builtin.as.ImplicitAs.impl.Convert: %i32.builtin.as.ImplicitAs.impl.Convert.type = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet.a85: %ImplicitAs.type.9fc = facet_value %i32.builtin, (%ImplicitAs.impl_witness.95b) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -163,9 +163,9 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %N.param: Core.IntLiteral = value_param call_param0 // CHECK:STDOUT: %.loc5_22.1: type = splice_block %.loc5_22.3 [concrete = Core.IntLiteral] { // CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [concrete = constants.%IntLiteral] -// CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc5_22.2: type = value_of_initializer %int_literal.make_type [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc5_22.3: type = converted %int_literal.make_type, %.loc5_22.2 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %IntLiteral.call: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc5_22.2: type = value_of_initializer %IntLiteral.call [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc5_22.3: type = converted %IntLiteral.call, %.loc5_22.2 [concrete = Core.IntLiteral] // CHECK:STDOUT: } // CHECK:STDOUT: %N: Core.IntLiteral = bind_name N, %N.param // CHECK:STDOUT: %return.param: ref type = out_param call_param1 @@ -186,61 +186,61 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: } { // CHECK:STDOUT: %T.loc15_22.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc15_22.1 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: impl_decl @AddWith.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @i32.builtin.as.AddWith.impl [concrete] {} { // CHECK:STDOUT: %int_32.loc19_6: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %int.make_type_signed.loc19_6: init type = call constants.%Int(%int_32.loc19_6) [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc19_6.1: type = value_of_initializer %int.make_type_signed.loc19_6 [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc19_6.2: type = converted %int.make_type_signed.loc19_6, %.loc19_6.1 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %Int.call.loc19_6: init type = call constants.%Int(%int_32.loc19_6) [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc19_6.1: type = value_of_initializer %Int.call.loc19_6 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc19_6.2: type = converted %Int.call.loc19_6, %.loc19_6.1 [concrete = constants.%i32.builtin] // CHECK:STDOUT: %AddWith.ref: %AddWith.type.b35 = name_ref AddWith, file.%AddWith.decl [concrete = constants.%AddWith.generic] // CHECK:STDOUT: %int_32.loc19_21: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %int.make_type_signed.loc19_21: init type = call constants.%Int(%int_32.loc19_21) [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc19_24.1: type = value_of_initializer %int.make_type_signed.loc19_21 [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc19_24.2: type = converted %int.make_type_signed.loc19_21, %.loc19_24.1 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %Int.call.loc19_21: init type = call constants.%Int(%int_32.loc19_21) [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc19_24.1: type = value_of_initializer %Int.call.loc19_21 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc19_24.2: type = converted %Int.call.loc19_21, %.loc19_24.1 [concrete = constants.%i32.builtin] // CHECK:STDOUT: %AddWith.type: type = facet_type <@AddWith, @AddWith(constants.%i32.builtin)> [concrete = constants.%AddWith.type.49d] // CHECK:STDOUT: } -// CHECK:STDOUT: %AddWith.impl_witness_table = impl_witness_table (@AddWith.impl.%Op.decl), @AddWith.impl [concrete] +// CHECK:STDOUT: %AddWith.impl_witness_table = impl_witness_table (@i32.builtin.as.AddWith.impl.%i32.builtin.as.AddWith.impl.Op.decl), @i32.builtin.as.AddWith.impl [concrete] // CHECK:STDOUT: %AddWith.impl_witness: = impl_witness %AddWith.impl_witness_table [concrete = constants.%AddWith.impl_witness] -// CHECK:STDOUT: impl_decl @As.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @Core.IntLiteral.as.As.impl [concrete] {} { // CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [concrete = constants.%IntLiteral] -// CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc23_17.1: type = value_of_initializer %int_literal.make_type [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc23_17.2: type = converted %int_literal.make_type, %.loc23_17.1 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %IntLiteral.call: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc23_17.1: type = value_of_initializer %IntLiteral.call [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc23_17.2: type = converted %IntLiteral.call, %.loc23_17.1 [concrete = Core.IntLiteral] // CHECK:STDOUT: %As.ref: %As.type.b51 = name_ref As, file.%As.decl [concrete = constants.%As.generic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %int.make_type_signed: init type = call constants.%Int(%int_32) [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc23_28.1: type = value_of_initializer %int.make_type_signed [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc23_28.2: type = converted %int.make_type_signed, %.loc23_28.1 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %Int.call: init type = call constants.%Int(%int_32) [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc23_28.1: type = value_of_initializer %Int.call [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc23_28.2: type = converted %Int.call, %.loc23_28.1 [concrete = constants.%i32.builtin] // CHECK:STDOUT: %As.type: type = facet_type <@As, @As(constants.%i32.builtin)> [concrete = constants.%As.type.a09] // CHECK:STDOUT: } -// CHECK:STDOUT: %As.impl_witness_table = impl_witness_table (@As.impl.%Convert.decl), @As.impl [concrete] +// CHECK:STDOUT: %As.impl_witness_table = impl_witness_table (@Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert.decl), @Core.IntLiteral.as.As.impl [concrete] // CHECK:STDOUT: %As.impl_witness: = impl_witness %As.impl_witness_table [concrete = constants.%As.impl_witness] -// CHECK:STDOUT: impl_decl @ImplicitAs.impl.e13 [concrete] {} { +// CHECK:STDOUT: impl_decl @Core.IntLiteral.as.ImplicitAs.impl [concrete] {} { // CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [concrete = constants.%IntLiteral] -// CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc27_17.1: type = value_of_initializer %int_literal.make_type [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc27_17.2: type = converted %int_literal.make_type, %.loc27_17.1 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %IntLiteral.call: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc27_17.1: type = value_of_initializer %IntLiteral.call [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc27_17.2: type = converted %IntLiteral.call, %.loc27_17.1 [concrete = Core.IntLiteral] // CHECK:STDOUT: %ImplicitAs.ref: %ImplicitAs.type.96f = name_ref ImplicitAs, file.%ImplicitAs.decl [concrete = constants.%ImplicitAs.generic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %int.make_type_signed: init type = call constants.%Int(%int_32) [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc27_36.1: type = value_of_initializer %int.make_type_signed [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc27_36.2: type = converted %int.make_type_signed, %.loc27_36.1 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %Int.call: init type = call constants.%Int(%int_32) [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc27_36.1: type = value_of_initializer %Int.call [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc27_36.2: type = converted %Int.call, %.loc27_36.1 [concrete = constants.%i32.builtin] // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%i32.builtin)> [concrete = constants.%ImplicitAs.type.11a] // CHECK:STDOUT: } -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.loc27 = impl_witness_table (@ImplicitAs.impl.e13.%Convert.decl), @ImplicitAs.impl.e13 [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.loc27 = impl_witness_table (@Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.decl), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.loc27: = impl_witness %ImplicitAs.impl_witness_table.loc27 [concrete = constants.%ImplicitAs.impl_witness.be0] -// CHECK:STDOUT: impl_decl @ImplicitAs.impl.3df [concrete] {} { +// CHECK:STDOUT: impl_decl @i32.builtin.as.ImplicitAs.impl [concrete] {} { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %int.make_type_signed: init type = call constants.%Int(%int_32) [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc31_6.1: type = value_of_initializer %int.make_type_signed [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc31_6.2: type = converted %int.make_type_signed, %.loc31_6.1 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %Int.call: init type = call constants.%Int(%int_32) [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc31_6.1: type = value_of_initializer %Int.call [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc31_6.2: type = converted %Int.call, %.loc31_6.1 [concrete = constants.%i32.builtin] // CHECK:STDOUT: %ImplicitAs.ref: %ImplicitAs.type.96f = name_ref ImplicitAs, file.%ImplicitAs.decl [concrete = constants.%ImplicitAs.generic] // CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [concrete = constants.%IntLiteral] -// CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc31_36.1: type = value_of_initializer %int_literal.make_type [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc31_36.2: type = converted %int_literal.make_type, %.loc31_36.1 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %IntLiteral.call: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc31_36.1: type = value_of_initializer %IntLiteral.call [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc31_36.2: type = converted %IntLiteral.call, %.loc31_36.1 [concrete = Core.IntLiteral] // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [concrete = constants.%ImplicitAs.type.9fc] // CHECK:STDOUT: } -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.loc31 = impl_witness_table (@ImplicitAs.impl.3df.%Convert.decl), @ImplicitAs.impl.3df [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.loc31 = impl_witness_table (@i32.builtin.as.ImplicitAs.impl.%i32.builtin.as.ImplicitAs.impl.Convert.decl), @i32.builtin.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.loc31: = impl_witness %ImplicitAs.impl_witness_table.loc31 [concrete = constants.%ImplicitAs.impl_witness.95b] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -250,50 +250,50 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: !definition: // CHECK:STDOUT: %AddWith.type: type = facet_type <@AddWith, @AddWith(%T.loc7_19.1)> [symbolic = %AddWith.type (constants.%AddWith.type.bc7)] // CHECK:STDOUT: %Self.2: @AddWith.%AddWith.type (%AddWith.type.bc7) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.deb)] -// CHECK:STDOUT: %Op.type: type = fn_type @Op.loc8, @AddWith(%T.loc7_19.1) [symbolic = %Op.type (constants.%Op.type.5b7)] -// CHECK:STDOUT: %Op: @AddWith.%Op.type (%Op.type.5b7) = struct_value () [symbolic = %Op (constants.%Op.037)] +// CHECK:STDOUT: %AddWith.Op.type: type = fn_type @AddWith.Op, @AddWith(%T.loc7_19.1) [symbolic = %AddWith.Op.type (constants.%AddWith.Op.type.5b7)] +// CHECK:STDOUT: %AddWith.Op: @AddWith.%AddWith.Op.type (%AddWith.Op.type.5b7) = struct_value () [symbolic = %AddWith.Op (constants.%AddWith.Op.037)] // CHECK:STDOUT: %AddWith.assoc_type: type = assoc_entity_type @AddWith, @AddWith(%T.loc7_19.1) [symbolic = %AddWith.assoc_type (constants.%AddWith.assoc_type.36e)] -// CHECK:STDOUT: %assoc0.loc8_41.2: @AddWith.%AddWith.assoc_type (%AddWith.assoc_type.36e) = assoc_entity element0, %Op.decl [symbolic = %assoc0.loc8_41.2 (constants.%assoc0.adf)] +// CHECK:STDOUT: %assoc0.loc8_41.2: @AddWith.%AddWith.assoc_type (%AddWith.assoc_type.36e) = assoc_entity element0, %AddWith.Op.decl [symbolic = %assoc0.loc8_41.2 (constants.%assoc0.adf)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: %Self.1: @AddWith.%AddWith.type (%AddWith.type.bc7) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.deb)] -// CHECK:STDOUT: %Op.decl: @AddWith.%Op.type (%Op.type.5b7) = fn_decl @Op.loc8 [symbolic = @AddWith.%Op (constants.%Op.037)] { -// CHECK:STDOUT: %self.patt: @Op.loc8.%pattern_type (%pattern_type.4a8) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @Op.loc8.%pattern_type (%pattern_type.4a8) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %other.patt: @Op.loc8.%pattern_type (%pattern_type.4a8) = binding_pattern other [concrete] -// CHECK:STDOUT: %other.param_patt: @Op.loc8.%pattern_type (%pattern_type.4a8) = value_param_pattern %other.patt, call_param1 [concrete] -// CHECK:STDOUT: %return.patt: @Op.loc8.%pattern_type (%pattern_type.4a8) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @Op.loc8.%pattern_type (%pattern_type.4a8) = out_param_pattern %return.patt, call_param2 [concrete] +// CHECK:STDOUT: %AddWith.Op.decl: @AddWith.%AddWith.Op.type (%AddWith.Op.type.5b7) = fn_decl @AddWith.Op [symbolic = @AddWith.%AddWith.Op (constants.%AddWith.Op.037)] { +// CHECK:STDOUT: %self.patt: @AddWith.Op.%pattern_type (%pattern_type.4a8) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @AddWith.Op.%pattern_type (%pattern_type.4a8) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %other.patt: @AddWith.Op.%pattern_type (%pattern_type.4a8) = binding_pattern other [concrete] +// CHECK:STDOUT: %other.param_patt: @AddWith.Op.%pattern_type (%pattern_type.4a8) = value_param_pattern %other.patt, call_param1 [concrete] +// CHECK:STDOUT: %return.patt: @AddWith.Op.%pattern_type (%pattern_type.4a8) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @AddWith.Op.%pattern_type (%pattern_type.4a8) = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc8_37.1: @Op.loc8.%AddWith.type (%AddWith.type.bc7) = specific_constant @AddWith.%Self.1, @AddWith(constants.%T) [symbolic = %Self (constants.%Self.deb)] -// CHECK:STDOUT: %Self.ref.loc8_37: @Op.loc8.%AddWith.type (%AddWith.type.bc7) = name_ref Self, %.loc8_37.1 [symbolic = %Self (constants.%Self.deb)] -// CHECK:STDOUT: %Self.as_type.loc8_37: type = facet_access_type %Self.ref.loc8_37 [symbolic = %Self.as_type.loc8_15.2 (constants.%Self.as_type.6cc)] -// CHECK:STDOUT: %.loc8_37.2: type = converted %Self.ref.loc8_37, %Self.as_type.loc8_37 [symbolic = %Self.as_type.loc8_15.2 (constants.%Self.as_type.6cc)] -// CHECK:STDOUT: %self.param: @Op.loc8.%Self.as_type.loc8_15.2 (%Self.as_type.6cc) = value_param call_param0 -// CHECK:STDOUT: %.loc8_15.1: type = splice_block %.loc8_15.3 [symbolic = %Self.as_type.loc8_15.2 (constants.%Self.as_type.6cc)] { -// CHECK:STDOUT: %.loc8_15.2: @Op.loc8.%AddWith.type (%AddWith.type.bc7) = specific_constant @AddWith.%Self.1, @AddWith(constants.%T) [symbolic = %Self (constants.%Self.deb)] -// CHECK:STDOUT: %Self.ref.loc8_15: @Op.loc8.%AddWith.type (%AddWith.type.bc7) = name_ref Self, %.loc8_15.2 [symbolic = %Self (constants.%Self.deb)] -// CHECK:STDOUT: %Self.as_type.loc8_15.1: type = facet_access_type %Self.ref.loc8_15 [symbolic = %Self.as_type.loc8_15.2 (constants.%Self.as_type.6cc)] -// CHECK:STDOUT: %.loc8_15.3: type = converted %Self.ref.loc8_15, %Self.as_type.loc8_15.1 [symbolic = %Self.as_type.loc8_15.2 (constants.%Self.as_type.6cc)] +// CHECK:STDOUT: %.loc8_37.1: @AddWith.Op.%AddWith.type (%AddWith.type.bc7) = specific_constant @AddWith.%Self.1, @AddWith(constants.%T) [symbolic = %Self (constants.%Self.deb)] +// CHECK:STDOUT: %Self.ref.loc8_37: @AddWith.Op.%AddWith.type (%AddWith.type.bc7) = name_ref Self, %.loc8_37.1 [symbolic = %Self (constants.%Self.deb)] +// CHECK:STDOUT: %Self.as_type.loc8_37: type = facet_access_type %Self.ref.loc8_37 [symbolic = %Self.as_type.loc8_15.1 (constants.%Self.as_type.6cc)] +// CHECK:STDOUT: %.loc8_37.2: type = converted %Self.ref.loc8_37, %Self.as_type.loc8_37 [symbolic = %Self.as_type.loc8_15.1 (constants.%Self.as_type.6cc)] +// CHECK:STDOUT: %self.param: @AddWith.Op.%Self.as_type.loc8_15.1 (%Self.as_type.6cc) = value_param call_param0 +// CHECK:STDOUT: %.loc8_15.1: type = splice_block %.loc8_15.3 [symbolic = %Self.as_type.loc8_15.1 (constants.%Self.as_type.6cc)] { +// CHECK:STDOUT: %.loc8_15.2: @AddWith.Op.%AddWith.type (%AddWith.type.bc7) = specific_constant @AddWith.%Self.1, @AddWith(constants.%T) [symbolic = %Self (constants.%Self.deb)] +// CHECK:STDOUT: %Self.ref.loc8_15: @AddWith.Op.%AddWith.type (%AddWith.type.bc7) = name_ref Self, %.loc8_15.2 [symbolic = %Self (constants.%Self.deb)] +// CHECK:STDOUT: %Self.as_type.loc8_15.2: type = facet_access_type %Self.ref.loc8_15 [symbolic = %Self.as_type.loc8_15.1 (constants.%Self.as_type.6cc)] +// CHECK:STDOUT: %.loc8_15.3: type = converted %Self.ref.loc8_15, %Self.as_type.loc8_15.2 [symbolic = %Self.as_type.loc8_15.1 (constants.%Self.as_type.6cc)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @Op.loc8.%Self.as_type.loc8_15.2 (%Self.as_type.6cc) = bind_name self, %self.param -// CHECK:STDOUT: %other.param: @Op.loc8.%Self.as_type.loc8_15.2 (%Self.as_type.6cc) = value_param call_param1 -// CHECK:STDOUT: %.loc8_28.1: type = splice_block %.loc8_28.3 [symbolic = %Self.as_type.loc8_15.2 (constants.%Self.as_type.6cc)] { -// CHECK:STDOUT: %.loc8_28.2: @Op.loc8.%AddWith.type (%AddWith.type.bc7) = specific_constant @AddWith.%Self.1, @AddWith(constants.%T) [symbolic = %Self (constants.%Self.deb)] -// CHECK:STDOUT: %Self.ref.loc8_28: @Op.loc8.%AddWith.type (%AddWith.type.bc7) = name_ref Self, %.loc8_28.2 [symbolic = %Self (constants.%Self.deb)] -// CHECK:STDOUT: %Self.as_type.loc8_28: type = facet_access_type %Self.ref.loc8_28 [symbolic = %Self.as_type.loc8_15.2 (constants.%Self.as_type.6cc)] -// CHECK:STDOUT: %.loc8_28.3: type = converted %Self.ref.loc8_28, %Self.as_type.loc8_28 [symbolic = %Self.as_type.loc8_15.2 (constants.%Self.as_type.6cc)] +// CHECK:STDOUT: %self: @AddWith.Op.%Self.as_type.loc8_15.1 (%Self.as_type.6cc) = bind_name self, %self.param +// CHECK:STDOUT: %other.param: @AddWith.Op.%Self.as_type.loc8_15.1 (%Self.as_type.6cc) = value_param call_param1 +// CHECK:STDOUT: %.loc8_28.1: type = splice_block %.loc8_28.3 [symbolic = %Self.as_type.loc8_15.1 (constants.%Self.as_type.6cc)] { +// CHECK:STDOUT: %.loc8_28.2: @AddWith.Op.%AddWith.type (%AddWith.type.bc7) = specific_constant @AddWith.%Self.1, @AddWith(constants.%T) [symbolic = %Self (constants.%Self.deb)] +// CHECK:STDOUT: %Self.ref.loc8_28: @AddWith.Op.%AddWith.type (%AddWith.type.bc7) = name_ref Self, %.loc8_28.2 [symbolic = %Self (constants.%Self.deb)] +// CHECK:STDOUT: %Self.as_type.loc8_28: type = facet_access_type %Self.ref.loc8_28 [symbolic = %Self.as_type.loc8_15.1 (constants.%Self.as_type.6cc)] +// CHECK:STDOUT: %.loc8_28.3: type = converted %Self.ref.loc8_28, %Self.as_type.loc8_28 [symbolic = %Self.as_type.loc8_15.1 (constants.%Self.as_type.6cc)] // CHECK:STDOUT: } -// CHECK:STDOUT: %other: @Op.loc8.%Self.as_type.loc8_15.2 (%Self.as_type.6cc) = bind_name other, %other.param -// CHECK:STDOUT: %return.param: ref @Op.loc8.%Self.as_type.loc8_15.2 (%Self.as_type.6cc) = out_param call_param2 -// CHECK:STDOUT: %return: ref @Op.loc8.%Self.as_type.loc8_15.2 (%Self.as_type.6cc) = return_slot %return.param +// CHECK:STDOUT: %other: @AddWith.Op.%Self.as_type.loc8_15.1 (%Self.as_type.6cc) = bind_name other, %other.param +// CHECK:STDOUT: %return.param: ref @AddWith.Op.%Self.as_type.loc8_15.1 (%Self.as_type.6cc) = out_param call_param2 +// CHECK:STDOUT: %return: ref @AddWith.Op.%Self.as_type.loc8_15.1 (%Self.as_type.6cc) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0.loc8_41.1: @AddWith.%AddWith.assoc_type (%AddWith.assoc_type.36e) = assoc_entity element0, %Op.decl [symbolic = %assoc0.loc8_41.2 (constants.%assoc0.adf)] +// CHECK:STDOUT: %assoc0.loc8_41.1: @AddWith.%AddWith.assoc_type (%AddWith.assoc_type.36e) = assoc_entity element0, %AddWith.Op.decl [symbolic = %assoc0.loc8_41.2 (constants.%assoc0.adf)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 // CHECK:STDOUT: .Op = %assoc0.loc8_41.1 -// CHECK:STDOUT: witness = (%Op.decl) +// CHECK:STDOUT: witness = (%AddWith.Op.decl) // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -303,38 +303,38 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: !definition: // CHECK:STDOUT: %As.type: type = facet_type <@As, @As(%T.loc11_14.1)> [symbolic = %As.type (constants.%As.type.8ba)] // CHECK:STDOUT: %Self.2: @As.%As.type (%As.type.8ba) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.b4e)] -// CHECK:STDOUT: %Convert.type: type = fn_type @Convert.loc12, @As(%T.loc11_14.1) [symbolic = %Convert.type (constants.%Convert.type.ad1)] -// CHECK:STDOUT: %Convert: @As.%Convert.type (%Convert.type.ad1) = struct_value () [symbolic = %Convert (constants.%Convert.0ed)] +// CHECK:STDOUT: %As.Convert.type: type = fn_type @As.Convert, @As(%T.loc11_14.1) [symbolic = %As.Convert.type (constants.%As.Convert.type.ad1)] +// CHECK:STDOUT: %As.Convert: @As.%As.Convert.type (%As.Convert.type.ad1) = struct_value () [symbolic = %As.Convert (constants.%As.Convert.0ed)] // CHECK:STDOUT: %As.assoc_type: type = assoc_entity_type @As, @As(%T.loc11_14.1) [symbolic = %As.assoc_type (constants.%As.assoc_type.a21)] -// CHECK:STDOUT: %assoc0.loc12_32.2: @As.%As.assoc_type (%As.assoc_type.a21) = assoc_entity element0, %Convert.decl [symbolic = %assoc0.loc12_32.2 (constants.%assoc0.1d5)] +// CHECK:STDOUT: %assoc0.loc12_32.2: @As.%As.assoc_type (%As.assoc_type.a21) = assoc_entity element0, %As.Convert.decl [symbolic = %assoc0.loc12_32.2 (constants.%assoc0.1d5)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: %Self.1: @As.%As.type (%As.type.8ba) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.b4e)] -// CHECK:STDOUT: %Convert.decl: @As.%Convert.type (%Convert.type.ad1) = fn_decl @Convert.loc12 [symbolic = @As.%Convert (constants.%Convert.0ed)] { -// CHECK:STDOUT: %self.patt: @Convert.loc12.%pattern_type.loc12_14 (%pattern_type.947) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @Convert.loc12.%pattern_type.loc12_14 (%pattern_type.947) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: @Convert.loc12.%pattern_type.loc12_28 (%pattern_type.7dc) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @Convert.loc12.%pattern_type.loc12_28 (%pattern_type.7dc) = out_param_pattern %return.patt, call_param1 [concrete] +// CHECK:STDOUT: %As.Convert.decl: @As.%As.Convert.type (%As.Convert.type.ad1) = fn_decl @As.Convert [symbolic = @As.%As.Convert (constants.%As.Convert.0ed)] { +// CHECK:STDOUT: %self.patt: @As.Convert.%pattern_type.loc12_14 (%pattern_type.947) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @As.Convert.%pattern_type.loc12_14 (%pattern_type.947) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %return.patt: @As.Convert.%pattern_type.loc12_28 (%pattern_type.7dc) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @As.Convert.%pattern_type.loc12_28 (%pattern_type.7dc) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, @As.%T.loc11_14.2 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %self.param: @Convert.loc12.%Self.as_type.loc12_20.2 (%Self.as_type.7f0) = value_param call_param0 -// CHECK:STDOUT: %.loc12_20.1: type = splice_block %.loc12_20.3 [symbolic = %Self.as_type.loc12_20.2 (constants.%Self.as_type.7f0)] { -// CHECK:STDOUT: %.loc12_20.2: @Convert.loc12.%As.type (%As.type.8ba) = specific_constant @As.%Self.1, @As(constants.%T) [symbolic = %Self (constants.%Self.b4e)] -// CHECK:STDOUT: %Self.ref: @Convert.loc12.%As.type (%As.type.8ba) = name_ref Self, %.loc12_20.2 [symbolic = %Self (constants.%Self.b4e)] -// CHECK:STDOUT: %Self.as_type.loc12_20.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc12_20.2 (constants.%Self.as_type.7f0)] -// CHECK:STDOUT: %.loc12_20.3: type = converted %Self.ref, %Self.as_type.loc12_20.1 [symbolic = %Self.as_type.loc12_20.2 (constants.%Self.as_type.7f0)] +// CHECK:STDOUT: %self.param: @As.Convert.%Self.as_type.loc12_20.1 (%Self.as_type.7f0) = value_param call_param0 +// CHECK:STDOUT: %.loc12_20.1: type = splice_block %.loc12_20.3 [symbolic = %Self.as_type.loc12_20.1 (constants.%Self.as_type.7f0)] { +// CHECK:STDOUT: %.loc12_20.2: @As.Convert.%As.type (%As.type.8ba) = specific_constant @As.%Self.1, @As(constants.%T) [symbolic = %Self (constants.%Self.b4e)] +// CHECK:STDOUT: %Self.ref: @As.Convert.%As.type (%As.type.8ba) = name_ref Self, %.loc12_20.2 [symbolic = %Self (constants.%Self.b4e)] +// CHECK:STDOUT: %Self.as_type.loc12_20.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc12_20.1 (constants.%Self.as_type.7f0)] +// CHECK:STDOUT: %.loc12_20.3: type = converted %Self.ref, %Self.as_type.loc12_20.2 [symbolic = %Self.as_type.loc12_20.1 (constants.%Self.as_type.7f0)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @Convert.loc12.%Self.as_type.loc12_20.2 (%Self.as_type.7f0) = bind_name self, %self.param -// CHECK:STDOUT: %return.param: ref @Convert.loc12.%T (%T) = out_param call_param1 -// CHECK:STDOUT: %return: ref @Convert.loc12.%T (%T) = return_slot %return.param +// CHECK:STDOUT: %self: @As.Convert.%Self.as_type.loc12_20.1 (%Self.as_type.7f0) = bind_name self, %self.param +// CHECK:STDOUT: %return.param: ref @As.Convert.%T (%T) = out_param call_param1 +// CHECK:STDOUT: %return: ref @As.Convert.%T (%T) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0.loc12_32.1: @As.%As.assoc_type (%As.assoc_type.a21) = assoc_entity element0, %Convert.decl [symbolic = %assoc0.loc12_32.2 (constants.%assoc0.1d5)] +// CHECK:STDOUT: %assoc0.loc12_32.1: @As.%As.assoc_type (%As.assoc_type.a21) = assoc_entity element0, %As.Convert.decl [symbolic = %assoc0.loc12_32.2 (constants.%assoc0.1d5)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 // CHECK:STDOUT: .T = // CHECK:STDOUT: .Convert = %assoc0.loc12_32.1 -// CHECK:STDOUT: witness = (%Convert.decl) +// CHECK:STDOUT: witness = (%As.Convert.decl) // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -344,43 +344,43 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: !definition: // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%T.loc15_22.1)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.07f)] // CHECK:STDOUT: %Self.2: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.07f) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.0f3)] -// CHECK:STDOUT: %Convert.type: type = fn_type @Convert.loc16, @ImplicitAs(%T.loc15_22.1) [symbolic = %Convert.type (constants.%Convert.type.4cf)] -// CHECK:STDOUT: %Convert: @ImplicitAs.%Convert.type (%Convert.type.4cf) = struct_value () [symbolic = %Convert (constants.%Convert.147)] +// CHECK:STDOUT: %ImplicitAs.Convert.type: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%T.loc15_22.1) [symbolic = %ImplicitAs.Convert.type (constants.%ImplicitAs.Convert.type.4cf)] +// CHECK:STDOUT: %ImplicitAs.Convert: @ImplicitAs.%ImplicitAs.Convert.type (%ImplicitAs.Convert.type.4cf) = struct_value () [symbolic = %ImplicitAs.Convert (constants.%ImplicitAs.Convert.147)] // CHECK:STDOUT: %ImplicitAs.assoc_type: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%T.loc15_22.1) [symbolic = %ImplicitAs.assoc_type (constants.%ImplicitAs.assoc_type.095)] -// CHECK:STDOUT: %assoc0.loc16_32.2: @ImplicitAs.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type.095) = assoc_entity element0, %Convert.decl [symbolic = %assoc0.loc16_32.2 (constants.%assoc0.8f8)] +// CHECK:STDOUT: %assoc0.loc16_32.2: @ImplicitAs.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type.095) = assoc_entity element0, %ImplicitAs.Convert.decl [symbolic = %assoc0.loc16_32.2 (constants.%assoc0.8f8)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: %Self.1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.07f) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.0f3)] -// CHECK:STDOUT: %Convert.decl: @ImplicitAs.%Convert.type (%Convert.type.4cf) = fn_decl @Convert.loc16 [symbolic = @ImplicitAs.%Convert (constants.%Convert.147)] { -// CHECK:STDOUT: %self.patt: @Convert.loc16.%pattern_type.loc16_14 (%pattern_type.a93) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @Convert.loc16.%pattern_type.loc16_14 (%pattern_type.a93) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: @Convert.loc16.%pattern_type.loc16_28 (%pattern_type.7dc) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @Convert.loc16.%pattern_type.loc16_28 (%pattern_type.7dc) = out_param_pattern %return.patt, call_param1 [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.decl: @ImplicitAs.%ImplicitAs.Convert.type (%ImplicitAs.Convert.type.4cf) = fn_decl @ImplicitAs.Convert [symbolic = @ImplicitAs.%ImplicitAs.Convert (constants.%ImplicitAs.Convert.147)] { +// CHECK:STDOUT: %self.patt: @ImplicitAs.Convert.%pattern_type.loc16_14 (%pattern_type.a93) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @ImplicitAs.Convert.%pattern_type.loc16_14 (%pattern_type.a93) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %return.patt: @ImplicitAs.Convert.%pattern_type.loc16_28 (%pattern_type.7dc) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @ImplicitAs.Convert.%pattern_type.loc16_28 (%pattern_type.7dc) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, @ImplicitAs.%T.loc15_22.2 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %self.param: @Convert.loc16.%Self.as_type.loc16_20.2 (%Self.as_type.419) = value_param call_param0 -// CHECK:STDOUT: %.loc16_20.1: type = splice_block %.loc16_20.3 [symbolic = %Self.as_type.loc16_20.2 (constants.%Self.as_type.419)] { -// CHECK:STDOUT: %.loc16_20.2: @Convert.loc16.%ImplicitAs.type (%ImplicitAs.type.07f) = specific_constant @ImplicitAs.%Self.1, @ImplicitAs(constants.%T) [symbolic = %Self (constants.%Self.0f3)] -// CHECK:STDOUT: %Self.ref: @Convert.loc16.%ImplicitAs.type (%ImplicitAs.type.07f) = name_ref Self, %.loc16_20.2 [symbolic = %Self (constants.%Self.0f3)] -// CHECK:STDOUT: %Self.as_type.loc16_20.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc16_20.2 (constants.%Self.as_type.419)] -// CHECK:STDOUT: %.loc16_20.3: type = converted %Self.ref, %Self.as_type.loc16_20.1 [symbolic = %Self.as_type.loc16_20.2 (constants.%Self.as_type.419)] +// CHECK:STDOUT: %self.param: @ImplicitAs.Convert.%Self.as_type.loc16_20.1 (%Self.as_type.419) = value_param call_param0 +// CHECK:STDOUT: %.loc16_20.1: type = splice_block %.loc16_20.3 [symbolic = %Self.as_type.loc16_20.1 (constants.%Self.as_type.419)] { +// CHECK:STDOUT: %.loc16_20.2: @ImplicitAs.Convert.%ImplicitAs.type (%ImplicitAs.type.07f) = specific_constant @ImplicitAs.%Self.1, @ImplicitAs(constants.%T) [symbolic = %Self (constants.%Self.0f3)] +// CHECK:STDOUT: %Self.ref: @ImplicitAs.Convert.%ImplicitAs.type (%ImplicitAs.type.07f) = name_ref Self, %.loc16_20.2 [symbolic = %Self (constants.%Self.0f3)] +// CHECK:STDOUT: %Self.as_type.loc16_20.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc16_20.1 (constants.%Self.as_type.419)] +// CHECK:STDOUT: %.loc16_20.3: type = converted %Self.ref, %Self.as_type.loc16_20.2 [symbolic = %Self.as_type.loc16_20.1 (constants.%Self.as_type.419)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @Convert.loc16.%Self.as_type.loc16_20.2 (%Self.as_type.419) = bind_name self, %self.param -// CHECK:STDOUT: %return.param: ref @Convert.loc16.%T (%T) = out_param call_param1 -// CHECK:STDOUT: %return: ref @Convert.loc16.%T (%T) = return_slot %return.param +// CHECK:STDOUT: %self: @ImplicitAs.Convert.%Self.as_type.loc16_20.1 (%Self.as_type.419) = bind_name self, %self.param +// CHECK:STDOUT: %return.param: ref @ImplicitAs.Convert.%T (%T) = out_param call_param1 +// CHECK:STDOUT: %return: ref @ImplicitAs.Convert.%T (%T) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0.loc16_32.1: @ImplicitAs.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type.095) = assoc_entity element0, %Convert.decl [symbolic = %assoc0.loc16_32.2 (constants.%assoc0.8f8)] +// CHECK:STDOUT: %assoc0.loc16_32.1: @ImplicitAs.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type.095) = assoc_entity element0, %ImplicitAs.Convert.decl [symbolic = %assoc0.loc16_32.2 (constants.%assoc0.8f8)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 // CHECK:STDOUT: .T = // CHECK:STDOUT: .Convert = %assoc0.loc16_32.1 -// CHECK:STDOUT: witness = (%Convert.decl) +// CHECK:STDOUT: witness = (%ImplicitAs.Convert.decl) // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @AddWith.impl: %.loc19_6.2 as %AddWith.type { -// CHECK:STDOUT: %Op.decl: %Op.type.e57 = fn_decl @Op.loc20 [concrete = constants.%Op.c8a] { +// CHECK:STDOUT: impl @i32.builtin.as.AddWith.impl: %.loc19_6.2 as %AddWith.type { +// CHECK:STDOUT: %i32.builtin.as.AddWith.impl.Op.decl: %i32.builtin.as.AddWith.impl.Op.type = fn_decl @i32.builtin.as.AddWith.impl.Op [concrete = constants.%i32.builtin.as.AddWith.impl.Op] { // CHECK:STDOUT: %self.patt: %pattern_type.956 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.956 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %other.patt: %pattern_type.956 = binding_pattern other [concrete] @@ -388,81 +388,81 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %return.patt: %pattern_type.956 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.956 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %Self.ref.loc20_37: type = name_ref Self, @AddWith.impl.%.loc19_6.2 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %Self.ref.loc20_37: type = name_ref Self, @i32.builtin.as.AddWith.impl.%.loc19_6.2 [concrete = constants.%i32.builtin] // CHECK:STDOUT: %self.param: %i32.builtin = value_param call_param0 -// CHECK:STDOUT: %Self.ref.loc20_15: type = name_ref Self, @AddWith.impl.%.loc19_6.2 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %Self.ref.loc20_15: type = name_ref Self, @i32.builtin.as.AddWith.impl.%.loc19_6.2 [concrete = constants.%i32.builtin] // CHECK:STDOUT: %self: %i32.builtin = bind_name self, %self.param // CHECK:STDOUT: %other.param: %i32.builtin = value_param call_param1 -// CHECK:STDOUT: %Self.ref.loc20_28: type = name_ref Self, @AddWith.impl.%.loc19_6.2 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %Self.ref.loc20_28: type = name_ref Self, @i32.builtin.as.AddWith.impl.%.loc19_6.2 [concrete = constants.%i32.builtin] // CHECK:STDOUT: %other: %i32.builtin = bind_name other, %other.param // CHECK:STDOUT: %return.param: ref %i32.builtin = out_param call_param2 // CHECK:STDOUT: %return: ref %i32.builtin = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Op = %Op.decl +// CHECK:STDOUT: .Op = %i32.builtin.as.AddWith.impl.Op.decl // CHECK:STDOUT: witness = file.%AddWith.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @As.impl: %.loc23_17.2 as %As.type { -// CHECK:STDOUT: %Convert.decl: %Convert.type.fc9 = fn_decl @Convert.loc24 [concrete = constants.%Convert.33c] { +// CHECK:STDOUT: impl @Core.IntLiteral.as.As.impl: %.loc23_17.2 as %As.type { +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.decl: %Core.IntLiteral.as.As.impl.Convert.type = fn_decl @Core.IntLiteral.as.As.impl.Convert [concrete = constants.%Core.IntLiteral.as.As.impl.Convert] { // CHECK:STDOUT: %self.patt: %pattern_type.dc0 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.dc0 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.956 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.956 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %int.make_type_signed: init type = call constants.%Int(%int_32) [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc24_31.1: type = value_of_initializer %int.make_type_signed [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc24_31.2: type = converted %int.make_type_signed, %.loc24_31.1 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %Int.call: init type = call constants.%Int(%int_32) [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc24_31.1: type = value_of_initializer %Int.call [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc24_31.2: type = converted %Int.call, %.loc24_31.1 [concrete = constants.%i32.builtin] // CHECK:STDOUT: %self.param: Core.IntLiteral = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @As.impl.%.loc23_17.2 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @Core.IntLiteral.as.As.impl.%.loc23_17.2 [concrete = Core.IntLiteral] // CHECK:STDOUT: %self: Core.IntLiteral = bind_name self, %self.param // CHECK:STDOUT: %return.param: ref %i32.builtin = out_param call_param1 // CHECK:STDOUT: %return: ref %i32.builtin = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Convert = %Convert.decl +// CHECK:STDOUT: .Convert = %Core.IntLiteral.as.As.impl.Convert.decl // CHECK:STDOUT: witness = file.%As.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @ImplicitAs.impl.e13: %.loc27_17.2 as %ImplicitAs.type { -// CHECK:STDOUT: %Convert.decl: %Convert.type.c2a = fn_decl @Convert.loc28 [concrete = constants.%Convert.40d] { +// CHECK:STDOUT: impl @Core.IntLiteral.as.ImplicitAs.impl: %.loc27_17.2 as %ImplicitAs.type { +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.decl: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type = fn_decl @Core.IntLiteral.as.ImplicitAs.impl.Convert [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert] { // CHECK:STDOUT: %self.patt: %pattern_type.dc0 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.dc0 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.956 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.956 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %int.make_type_signed: init type = call constants.%Int(%int_32) [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc28_31.1: type = value_of_initializer %int.make_type_signed [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc28_31.2: type = converted %int.make_type_signed, %.loc28_31.1 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %Int.call: init type = call constants.%Int(%int_32) [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc28_31.1: type = value_of_initializer %Int.call [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc28_31.2: type = converted %Int.call, %.loc28_31.1 [concrete = constants.%i32.builtin] // CHECK:STDOUT: %self.param: Core.IntLiteral = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @ImplicitAs.impl.e13.%.loc27_17.2 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @Core.IntLiteral.as.ImplicitAs.impl.%.loc27_17.2 [concrete = Core.IntLiteral] // CHECK:STDOUT: %self: Core.IntLiteral = bind_name self, %self.param // CHECK:STDOUT: %return.param: ref %i32.builtin = out_param call_param1 // CHECK:STDOUT: %return: ref %i32.builtin = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Convert = %Convert.decl +// CHECK:STDOUT: .Convert = %Core.IntLiteral.as.ImplicitAs.impl.Convert.decl // CHECK:STDOUT: witness = file.%ImplicitAs.impl_witness.loc27 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @ImplicitAs.impl.3df: %.loc31_6.2 as %ImplicitAs.type { -// CHECK:STDOUT: %Convert.decl: %Convert.type.295 = fn_decl @Convert.loc32 [concrete = constants.%Convert.2bf] { +// CHECK:STDOUT: impl @i32.builtin.as.ImplicitAs.impl: %.loc31_6.2 as %ImplicitAs.type { +// CHECK:STDOUT: %i32.builtin.as.ImplicitAs.impl.Convert.decl: %i32.builtin.as.ImplicitAs.impl.Convert.type = fn_decl @i32.builtin.as.ImplicitAs.impl.Convert [concrete = constants.%i32.builtin.as.ImplicitAs.impl.Convert] { // CHECK:STDOUT: %self.patt: %pattern_type.956 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.956 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.dc0 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.dc0 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [concrete = constants.%IntLiteral] -// CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc32_42.1: type = value_of_initializer %int_literal.make_type [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc32_42.2: type = converted %int_literal.make_type, %.loc32_42.1 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %IntLiteral.call: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc32_42.1: type = value_of_initializer %IntLiteral.call [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc32_42.2: type = converted %IntLiteral.call, %.loc32_42.1 [concrete = Core.IntLiteral] // CHECK:STDOUT: %self.param: %i32.builtin = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @ImplicitAs.impl.3df.%.loc31_6.2 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @i32.builtin.as.ImplicitAs.impl.%.loc31_6.2 [concrete = constants.%i32.builtin] // CHECK:STDOUT: %self: %i32.builtin = bind_name self, %self.param // CHECK:STDOUT: %return.param: ref Core.IntLiteral = out_param call_param1 // CHECK:STDOUT: %return: ref Core.IntLiteral = return_slot %return.param @@ -470,7 +470,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .IntLiteral = -// CHECK:STDOUT: .Convert = %Convert.decl +// CHECK:STDOUT: .Convert = %i32.builtin.as.ImplicitAs.impl.Convert.decl // CHECK:STDOUT: witness = file.%ImplicitAs.impl_witness.loc31 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -478,55 +478,55 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: // CHECK:STDOUT: fn @Int(%N.param: Core.IntLiteral) -> type = "int.make_type_signed"; // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Op.loc8(@AddWith.%T.loc7_19.2: type, @AddWith.%Self.1: @AddWith.%AddWith.type (%AddWith.type.bc7)) { +// CHECK:STDOUT: generic fn @AddWith.Op(@AddWith.%T.loc7_19.2: type, @AddWith.%Self.1: @AddWith.%AddWith.type (%AddWith.type.bc7)) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %AddWith.type: type = facet_type <@AddWith, @AddWith(%T)> [symbolic = %AddWith.type (constants.%AddWith.type.bc7)] -// CHECK:STDOUT: %Self: @Op.loc8.%AddWith.type (%AddWith.type.bc7) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.deb)] -// CHECK:STDOUT: %Self.as_type.loc8_15.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc8_15.2 (constants.%Self.as_type.6cc)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc8_15.2 [symbolic = %pattern_type (constants.%pattern_type.4a8)] +// CHECK:STDOUT: %Self: @AddWith.Op.%AddWith.type (%AddWith.type.bc7) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.deb)] +// CHECK:STDOUT: %Self.as_type.loc8_15.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc8_15.1 (constants.%Self.as_type.6cc)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc8_15.1 [symbolic = %pattern_type (constants.%pattern_type.4a8)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @Op.loc8.%Self.as_type.loc8_15.2 (%Self.as_type.6cc), %other.param: @Op.loc8.%Self.as_type.loc8_15.2 (%Self.as_type.6cc)) -> @Op.loc8.%Self.as_type.loc8_15.2 (%Self.as_type.6cc); +// CHECK:STDOUT: fn(%self.param: @AddWith.Op.%Self.as_type.loc8_15.1 (%Self.as_type.6cc), %other.param: @AddWith.Op.%Self.as_type.loc8_15.1 (%Self.as_type.6cc)) -> @AddWith.Op.%Self.as_type.loc8_15.1 (%Self.as_type.6cc); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Convert.loc12(@As.%T.loc11_14.2: type, @As.%Self.1: @As.%As.type (%As.type.8ba)) { +// CHECK:STDOUT: generic fn @As.Convert(@As.%T.loc11_14.2: type, @As.%Self.1: @As.%As.type (%As.type.8ba)) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %As.type: type = facet_type <@As, @As(%T)> [symbolic = %As.type (constants.%As.type.8ba)] -// CHECK:STDOUT: %Self: @Convert.loc12.%As.type (%As.type.8ba) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.b4e)] -// CHECK:STDOUT: %Self.as_type.loc12_20.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc12_20.2 (constants.%Self.as_type.7f0)] -// CHECK:STDOUT: %pattern_type.loc12_14: type = pattern_type %Self.as_type.loc12_20.2 [symbolic = %pattern_type.loc12_14 (constants.%pattern_type.947)] +// CHECK:STDOUT: %Self: @As.Convert.%As.type (%As.type.8ba) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.b4e)] +// CHECK:STDOUT: %Self.as_type.loc12_20.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc12_20.1 (constants.%Self.as_type.7f0)] +// CHECK:STDOUT: %pattern_type.loc12_14: type = pattern_type %Self.as_type.loc12_20.1 [symbolic = %pattern_type.loc12_14 (constants.%pattern_type.947)] // CHECK:STDOUT: %pattern_type.loc12_28: type = pattern_type %T [symbolic = %pattern_type.loc12_28 (constants.%pattern_type.7dc)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @Convert.loc12.%Self.as_type.loc12_20.2 (%Self.as_type.7f0)) -> @Convert.loc12.%T (%T); +// CHECK:STDOUT: fn(%self.param: @As.Convert.%Self.as_type.loc12_20.1 (%Self.as_type.7f0)) -> @As.Convert.%T (%T); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Convert.loc16(@ImplicitAs.%T.loc15_22.2: type, @ImplicitAs.%Self.1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.07f)) { +// CHECK:STDOUT: generic fn @ImplicitAs.Convert(@ImplicitAs.%T.loc15_22.2: type, @ImplicitAs.%Self.1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.07f)) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%T)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.07f)] -// CHECK:STDOUT: %Self: @Convert.loc16.%ImplicitAs.type (%ImplicitAs.type.07f) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.0f3)] -// CHECK:STDOUT: %Self.as_type.loc16_20.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc16_20.2 (constants.%Self.as_type.419)] -// CHECK:STDOUT: %pattern_type.loc16_14: type = pattern_type %Self.as_type.loc16_20.2 [symbolic = %pattern_type.loc16_14 (constants.%pattern_type.a93)] +// CHECK:STDOUT: %Self: @ImplicitAs.Convert.%ImplicitAs.type (%ImplicitAs.type.07f) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.0f3)] +// CHECK:STDOUT: %Self.as_type.loc16_20.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc16_20.1 (constants.%Self.as_type.419)] +// CHECK:STDOUT: %pattern_type.loc16_14: type = pattern_type %Self.as_type.loc16_20.1 [symbolic = %pattern_type.loc16_14 (constants.%pattern_type.a93)] // CHECK:STDOUT: %pattern_type.loc16_28: type = pattern_type %T [symbolic = %pattern_type.loc16_28 (constants.%pattern_type.7dc)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @Convert.loc16.%Self.as_type.loc16_20.2 (%Self.as_type.419)) -> @Convert.loc16.%T (%T); +// CHECK:STDOUT: fn(%self.param: @ImplicitAs.Convert.%Self.as_type.loc16_20.1 (%Self.as_type.419)) -> @ImplicitAs.Convert.%T (%T); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Op.loc20(%self.param: %i32.builtin, %other.param: %i32.builtin) -> %i32.builtin = "int.sadd"; +// CHECK:STDOUT: fn @i32.builtin.as.AddWith.impl.Op(%self.param: %i32.builtin, %other.param: %i32.builtin) -> %i32.builtin = "int.sadd"; // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert.loc24(%self.param: Core.IntLiteral) -> %i32.builtin = "int.convert_checked"; +// CHECK:STDOUT: fn @Core.IntLiteral.as.As.impl.Convert(%self.param: Core.IntLiteral) -> %i32.builtin = "int.convert_checked"; // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert.loc28(%self.param: Core.IntLiteral) -> %i32.builtin = "int.convert_checked"; +// CHECK:STDOUT: fn @Core.IntLiteral.as.ImplicitAs.impl.Convert(%self.param: Core.IntLiteral) -> %i32.builtin = "int.convert_checked"; // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert.loc32(%self.param: %i32.builtin) -> Core.IntLiteral = "int.convert_checked"; +// CHECK:STDOUT: fn @i32.builtin.as.ImplicitAs.impl.Convert(%self.param: %i32.builtin) -> Core.IntLiteral = "int.convert_checked"; // CHECK:STDOUT: // CHECK:STDOUT: specific @AddWith(constants.%T) { // CHECK:STDOUT: %T.loc7_19.1 => constants.%T // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Op.loc8(constants.%T, constants.%Self.deb) { +// CHECK:STDOUT: specific @AddWith.Op(constants.%T, constants.%Self.deb) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %AddWith.type => constants.%AddWith.type.bc7 // CHECK:STDOUT: %Self => constants.%Self.deb -// CHECK:STDOUT: %Self.as_type.loc8_15.2 => constants.%Self.as_type.6cc +// CHECK:STDOUT: %Self.as_type.loc8_15.1 => constants.%Self.as_type.6cc // CHECK:STDOUT: %pattern_type => constants.%pattern_type.4a8 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -534,11 +534,11 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %T.loc11_14.1 => constants.%T // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Convert.loc12(constants.%T, constants.%Self.b4e) { +// CHECK:STDOUT: specific @As.Convert(constants.%T, constants.%Self.b4e) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %As.type => constants.%As.type.8ba // CHECK:STDOUT: %Self => constants.%Self.b4e -// CHECK:STDOUT: %Self.as_type.loc12_20.2 => constants.%Self.as_type.7f0 +// CHECK:STDOUT: %Self.as_type.loc12_20.1 => constants.%Self.as_type.7f0 // CHECK:STDOUT: %pattern_type.loc12_14 => constants.%pattern_type.947 // CHECK:STDOUT: %pattern_type.loc12_28 => constants.%pattern_type.7dc // CHECK:STDOUT: } @@ -547,11 +547,11 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %T.loc15_22.1 => constants.%T // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Convert.loc16(constants.%T, constants.%Self.0f3) { +// CHECK:STDOUT: specific @ImplicitAs.Convert(constants.%T, constants.%Self.0f3) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.07f // CHECK:STDOUT: %Self => constants.%Self.0f3 -// CHECK:STDOUT: %Self.as_type.loc16_20.2 => constants.%Self.as_type.419 +// CHECK:STDOUT: %Self.as_type.loc16_20.1 => constants.%Self.as_type.419 // CHECK:STDOUT: %pattern_type.loc16_14 => constants.%pattern_type.a93 // CHECK:STDOUT: %pattern_type.loc16_28 => constants.%pattern_type.7dc // CHECK:STDOUT: } @@ -562,17 +562,17 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: !definition: // CHECK:STDOUT: %AddWith.type => constants.%AddWith.type.49d // CHECK:STDOUT: %Self.2 => constants.%Self.da9 -// CHECK:STDOUT: %Op.type => constants.%Op.type.efc -// CHECK:STDOUT: %Op => constants.%Op.a62 +// CHECK:STDOUT: %AddWith.Op.type => constants.%AddWith.Op.type.efc +// CHECK:STDOUT: %AddWith.Op => constants.%AddWith.Op.a62 // CHECK:STDOUT: %AddWith.assoc_type => constants.%AddWith.assoc_type.a65 // CHECK:STDOUT: %assoc0.loc8_41.2 => constants.%assoc0.ee2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Op.loc8(constants.%i32.builtin, constants.%AddWith.facet) { +// CHECK:STDOUT: specific @AddWith.Op(constants.%i32.builtin, constants.%AddWith.facet) { // CHECK:STDOUT: %T => constants.%i32.builtin // CHECK:STDOUT: %AddWith.type => constants.%AddWith.type.49d // CHECK:STDOUT: %Self => constants.%AddWith.facet -// CHECK:STDOUT: %Self.as_type.loc8_15.2 => constants.%i32.builtin +// CHECK:STDOUT: %Self.as_type.loc8_15.1 => constants.%i32.builtin // CHECK:STDOUT: %pattern_type => constants.%pattern_type.956 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -582,17 +582,17 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: !definition: // CHECK:STDOUT: %As.type => constants.%As.type.a09 // CHECK:STDOUT: %Self.2 => constants.%Self.2fa -// CHECK:STDOUT: %Convert.type => constants.%Convert.type.c0d -// CHECK:STDOUT: %Convert => constants.%Convert.713 +// CHECK:STDOUT: %As.Convert.type => constants.%As.Convert.type.c0d +// CHECK:STDOUT: %As.Convert => constants.%As.Convert.713 // CHECK:STDOUT: %As.assoc_type => constants.%As.assoc_type.b9b // CHECK:STDOUT: %assoc0.loc12_32.2 => constants.%assoc0.b02 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Convert.loc12(constants.%i32.builtin, constants.%As.facet) { +// CHECK:STDOUT: specific @As.Convert(constants.%i32.builtin, constants.%As.facet) { // CHECK:STDOUT: %T => constants.%i32.builtin // CHECK:STDOUT: %As.type => constants.%As.type.a09 // CHECK:STDOUT: %Self => constants.%As.facet -// CHECK:STDOUT: %Self.as_type.loc12_20.2 => Core.IntLiteral +// CHECK:STDOUT: %Self.as_type.loc12_20.1 => Core.IntLiteral // CHECK:STDOUT: %pattern_type.loc12_14 => constants.%pattern_type.dc0 // CHECK:STDOUT: %pattern_type.loc12_28 => constants.%pattern_type.956 // CHECK:STDOUT: } @@ -603,17 +603,17 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: !definition: // CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.11a // CHECK:STDOUT: %Self.2 => constants.%Self.e0a -// CHECK:STDOUT: %Convert.type => constants.%Convert.type.752 -// CHECK:STDOUT: %Convert => constants.%Convert.fcc +// CHECK:STDOUT: %ImplicitAs.Convert.type => constants.%ImplicitAs.Convert.type.752 +// CHECK:STDOUT: %ImplicitAs.Convert => constants.%ImplicitAs.Convert.fcc // CHECK:STDOUT: %ImplicitAs.assoc_type => constants.%ImplicitAs.assoc_type.1cf // CHECK:STDOUT: %assoc0.loc16_32.2 => constants.%assoc0.3ce // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Convert.loc16(constants.%i32.builtin, constants.%ImplicitAs.facet.bcb) { +// CHECK:STDOUT: specific @ImplicitAs.Convert(constants.%i32.builtin, constants.%ImplicitAs.facet.bcb) { // CHECK:STDOUT: %T => constants.%i32.builtin // CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.11a // CHECK:STDOUT: %Self => constants.%ImplicitAs.facet.bcb -// CHECK:STDOUT: %Self.as_type.loc16_20.2 => Core.IntLiteral +// CHECK:STDOUT: %Self.as_type.loc16_20.1 => Core.IntLiteral // CHECK:STDOUT: %pattern_type.loc16_14 => constants.%pattern_type.dc0 // CHECK:STDOUT: %pattern_type.loc16_28 => constants.%pattern_type.956 // CHECK:STDOUT: } @@ -624,17 +624,17 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: !definition: // CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.9fc // CHECK:STDOUT: %Self.2 => constants.%Self.37e -// CHECK:STDOUT: %Convert.type => constants.%Convert.type.60e -// CHECK:STDOUT: %Convert => constants.%Convert.c73 +// CHECK:STDOUT: %ImplicitAs.Convert.type => constants.%ImplicitAs.Convert.type.60e +// CHECK:STDOUT: %ImplicitAs.Convert => constants.%ImplicitAs.Convert.c73 // CHECK:STDOUT: %ImplicitAs.assoc_type => constants.%ImplicitAs.assoc_type.014 // CHECK:STDOUT: %assoc0.loc16_32.2 => constants.%assoc0.757 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Convert.loc16(Core.IntLiteral, constants.%ImplicitAs.facet.a85) { +// CHECK:STDOUT: specific @ImplicitAs.Convert(Core.IntLiteral, constants.%ImplicitAs.facet.a85) { // CHECK:STDOUT: %T => Core.IntLiteral // CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.9fc // CHECK:STDOUT: %Self => constants.%ImplicitAs.facet.a85 -// CHECK:STDOUT: %Self.as_type.loc16_20.2 => constants.%i32.builtin +// CHECK:STDOUT: %Self.as_type.loc16_20.1 => constants.%i32.builtin // CHECK:STDOUT: %pattern_type.loc16_14 => constants.%pattern_type.956 // CHECK:STDOUT: %pattern_type.loc16_28 => constants.%pattern_type.dc0 // CHECK:STDOUT: } @@ -652,8 +652,8 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %As.type.eed: type = facet_type <@As, @As(%T)> [symbolic] // CHECK:STDOUT: %Self.65a: %As.type.eed = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %Convert.type.843: type = fn_type @Convert.1, @As(%T) [symbolic] -// CHECK:STDOUT: %Convert.95f: %Convert.type.843 = struct_value () [symbolic] +// CHECK:STDOUT: %As.Convert.type.843: type = fn_type @As.Convert, @As(%T) [symbolic] +// CHECK:STDOUT: %As.Convert.95f: %As.Convert.type.843 = struct_value () [symbolic] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %T [symbolic] // CHECK:STDOUT: %Self.as_type.04d: type = facet_access_type %Self.65a [symbolic] // CHECK:STDOUT: %pattern_type.ca4: type = pattern_type %Self.as_type.04d [symbolic] @@ -661,8 +661,8 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %assoc0.076: %As.assoc_type.760 = assoc_entity element0, imports.%Core.import_ref.708 [symbolic] // CHECK:STDOUT: %As.type.a6d: type = facet_type <@As, @As(%i32.builtin)> [concrete] // CHECK:STDOUT: %Self.c25: %As.type.a6d = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %Convert.type.378: type = fn_type @Convert.1, @As(%i32.builtin) [concrete] -// CHECK:STDOUT: %Convert.e51: %Convert.type.378 = struct_value () [concrete] +// CHECK:STDOUT: %As.Convert.type.378: type = fn_type @As.Convert, @As(%i32.builtin) [concrete] +// CHECK:STDOUT: %As.Convert.e51: %As.Convert.type.378 = struct_value () [concrete] // CHECK:STDOUT: %As.assoc_type.bc2: type = assoc_entity_type @As, @As(%i32.builtin) [concrete] // CHECK:STDOUT: %assoc0.9fb: %As.assoc_type.bc2 = assoc_entity element0, imports.%Core.import_ref.708 [concrete] // CHECK:STDOUT: %assoc0.97d: %As.assoc_type.760 = assoc_entity element0, imports.%Core.import_ref.4e8 [symbolic] @@ -671,15 +671,15 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %AddWith.type.6d3: type = facet_type <@AddWith, @AddWith(%T)> [symbolic] // CHECK:STDOUT: %Self.6c1: %AddWith.type.6d3 = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %AddWith.type.6f5: type = facet_type <@AddWith, @AddWith(%i32.builtin)> [concrete] -// CHECK:STDOUT: %Op.type.22d: type = fn_type @Op.1, @AddWith(%T) [symbolic] -// CHECK:STDOUT: %Op.965: %Op.type.22d = struct_value () [symbolic] +// CHECK:STDOUT: %AddWith.Op.type.22d: type = fn_type @AddWith.Op, @AddWith(%T) [symbolic] +// CHECK:STDOUT: %AddWith.Op.965: %AddWith.Op.type.22d = struct_value () [symbolic] // CHECK:STDOUT: %Self.as_type.030: type = facet_access_type %Self.6c1 [symbolic] // CHECK:STDOUT: %pattern_type.7fc: type = pattern_type %Self.as_type.030 [symbolic] // CHECK:STDOUT: %AddWith.assoc_type.c10: type = assoc_entity_type @AddWith, @AddWith(%T) [symbolic] // CHECK:STDOUT: %assoc0.89962d.1: %AddWith.assoc_type.c10 = assoc_entity element0, imports.%Core.import_ref.7e6ace.1 [symbolic] // CHECK:STDOUT: %Self.ec3: %AddWith.type.6f5 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %Op.type.0b7: type = fn_type @Op.1, @AddWith(%i32.builtin) [concrete] -// CHECK:STDOUT: %Op.9d6: %Op.type.0b7 = struct_value () [concrete] +// CHECK:STDOUT: %AddWith.Op.type.0b7: type = fn_type @AddWith.Op, @AddWith(%i32.builtin) [concrete] +// CHECK:STDOUT: %AddWith.Op.9d6: %AddWith.Op.type.0b7 = struct_value () [concrete] // CHECK:STDOUT: %AddWith.assoc_type.dff: type = assoc_entity_type @AddWith, @AddWith(%i32.builtin) [concrete] // CHECK:STDOUT: %assoc0.7f1: %AddWith.assoc_type.dff = assoc_entity element0, imports.%Core.import_ref.1b9 [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] @@ -687,66 +687,66 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %ImplicitAs.type.d62: type = facet_type <@ImplicitAs, @ImplicitAs(%T)> [symbolic] // CHECK:STDOUT: %Self.519: %ImplicitAs.type.d62 = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %ImplicitAs.type.61e: type = facet_type <@ImplicitAs, @ImplicitAs(%i32.builtin)> [concrete] -// CHECK:STDOUT: %Convert.type.275: type = fn_type @Convert.2, @ImplicitAs(%T) [symbolic] -// CHECK:STDOUT: %Convert.42e: %Convert.type.275 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.Convert.type.275: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%T) [symbolic] +// CHECK:STDOUT: %ImplicitAs.Convert.42e: %ImplicitAs.Convert.type.275 = struct_value () [symbolic] // CHECK:STDOUT: %Self.as_type.40a: type = facet_access_type %Self.519 [symbolic] // CHECK:STDOUT: %pattern_type.f3e: type = pattern_type %Self.as_type.40a [symbolic] // CHECK:STDOUT: %ImplicitAs.assoc_type.ca0: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%T) [symbolic] // CHECK:STDOUT: %assoc0.dc001e.1: %ImplicitAs.assoc_type.ca0 = assoc_entity element0, imports.%Core.import_ref.207961.1 [symbolic] // CHECK:STDOUT: %Self.d28: %ImplicitAs.type.61e = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %Convert.type.059: type = fn_type @Convert.2, @ImplicitAs(%i32.builtin) [concrete] -// CHECK:STDOUT: %Convert.4d7: %Convert.type.059 = struct_value () [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.059: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32.builtin) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.4d7: %ImplicitAs.Convert.type.059 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.assoc_type.398: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%i32.builtin) [concrete] // CHECK:STDOUT: %assoc0.6fd: %ImplicitAs.assoc_type.398 = assoc_entity element0, imports.%Core.import_ref.1c752f.1 [concrete] // CHECK:STDOUT: %ImplicitAs.type.2fd: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [concrete] // CHECK:STDOUT: %Self.9ac: %ImplicitAs.type.2fd = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %Convert.type.71e: type = fn_type @Convert.2, @ImplicitAs(Core.IntLiteral) [concrete] -// CHECK:STDOUT: %Convert.0e2: %Convert.type.71e = struct_value () [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.71e: type = fn_type @ImplicitAs.Convert, @ImplicitAs(Core.IntLiteral) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.0e2: %ImplicitAs.Convert.type.71e = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.assoc_type.959: type = assoc_entity_type @ImplicitAs, @ImplicitAs(Core.IntLiteral) [concrete] // CHECK:STDOUT: %assoc0.8c4: %ImplicitAs.assoc_type.959 = assoc_entity element0, imports.%Core.import_ref.1c752f.2 [concrete] // CHECK:STDOUT: %As.impl_witness: = impl_witness imports.%As.impl_witness_table [concrete] // CHECK:STDOUT: %As.facet: %As.type.a6d = facet_value Core.IntLiteral, (%As.impl_witness) [concrete] -// CHECK:STDOUT: %.387: type = fn_type_with_self_type %Convert.type.378, %As.facet [concrete] -// CHECK:STDOUT: %Convert.type.953: type = fn_type @Convert.3 [concrete] -// CHECK:STDOUT: %Convert.5bc: %Convert.type.953 = struct_value () [concrete] -// CHECK:STDOUT: %Convert.bound.b34: = bound_method %int_1.5b8, %Convert.5bc [concrete] +// CHECK:STDOUT: %.387: type = fn_type_with_self_type %As.Convert.type.378, %As.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type: type = fn_type @Core.IntLiteral.as.As.impl.Convert [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert: %Core.IntLiteral.as.As.impl.Convert.type = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.bound.b34: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert [concrete] // CHECK:STDOUT: %int_1.f38: %i32.builtin = int_value 1 [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] -// CHECK:STDOUT: %Convert.bound.324: = bound_method %int_2.ecc, %Convert.5bc [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.bound.324: = bound_method %int_2.ecc, %Core.IntLiteral.as.As.impl.Convert [concrete] // CHECK:STDOUT: %int_2.5a1: %i32.builtin = int_value 2 [concrete] // CHECK:STDOUT: %assoc0.89962d.2: %AddWith.assoc_type.c10 = assoc_entity element0, imports.%Core.import_ref.7e6ace.2 [symbolic] // CHECK:STDOUT: %AddWith.impl_witness: = impl_witness imports.%AddWith.impl_witness_table [concrete] // CHECK:STDOUT: %AddWith.facet: %AddWith.type.6f5 = facet_value %i32.builtin, (%AddWith.impl_witness) [concrete] -// CHECK:STDOUT: %.1e7: type = fn_type_with_self_type %Op.type.0b7, %AddWith.facet [concrete] -// CHECK:STDOUT: %Op.type.2bc: type = fn_type @Op.2 [concrete] -// CHECK:STDOUT: %Op.9d1: %Op.type.2bc = struct_value () [concrete] -// CHECK:STDOUT: %Op.bound.de8: = bound_method %int_1.f38, %Op.9d1 [concrete] +// CHECK:STDOUT: %.1e7: type = fn_type_with_self_type %AddWith.Op.type.0b7, %AddWith.facet [concrete] +// CHECK:STDOUT: %i32.builtin.as.AddWith.impl.Op.type: type = fn_type @i32.builtin.as.AddWith.impl.Op [concrete] +// CHECK:STDOUT: %i32.builtin.as.AddWith.impl.Op: %i32.builtin.as.AddWith.impl.Op.type = struct_value () [concrete] +// CHECK:STDOUT: %i32.builtin.as.AddWith.impl.Op.bound.de8: = bound_method %int_1.f38, %i32.builtin.as.AddWith.impl.Op [concrete] // CHECK:STDOUT: %int_3.a0f: %i32.builtin = int_value 3 [concrete] // CHECK:STDOUT: %assoc0.dc001e.2: %ImplicitAs.assoc_type.ca0 = assoc_entity element0, imports.%Core.import_ref.207961.2 [symbolic] // CHECK:STDOUT: %ImplicitAs.impl_witness.9c5: = impl_witness imports.%ImplicitAs.impl_witness_table.5fc [concrete] // CHECK:STDOUT: %ImplicitAs.facet.07b: %ImplicitAs.type.2fd = facet_value %i32.builtin, (%ImplicitAs.impl_witness.9c5) [concrete] -// CHECK:STDOUT: %.53b: type = fn_type_with_self_type %Convert.type.71e, %ImplicitAs.facet.07b [concrete] -// CHECK:STDOUT: %Convert.type.0e4: type = fn_type @Convert.4 [concrete] -// CHECK:STDOUT: %Convert.b32: %Convert.type.0e4 = struct_value () [concrete] -// CHECK:STDOUT: %Convert.bound.65a: = bound_method %int_3.a0f, %Convert.b32 [concrete] +// CHECK:STDOUT: %.53b: type = fn_type_with_self_type %ImplicitAs.Convert.type.71e, %ImplicitAs.facet.07b [concrete] +// CHECK:STDOUT: %i32.builtin.as.ImplicitAs.impl.Convert.type: type = fn_type @i32.builtin.as.ImplicitAs.impl.Convert [concrete] +// CHECK:STDOUT: %i32.builtin.as.ImplicitAs.impl.Convert: %i32.builtin.as.ImplicitAs.impl.Convert.type = struct_value () [concrete] +// CHECK:STDOUT: %i32.builtin.as.ImplicitAs.impl.Convert.bound: = bound_method %int_3.a0f, %i32.builtin.as.ImplicitAs.impl.Convert [concrete] // CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [concrete] // CHECK:STDOUT: %array_type: type = array_type %int_3.1ba, %i32.builtin [concrete] // CHECK:STDOUT: %pattern_type.9e2: type = pattern_type %array_type [concrete] // CHECK:STDOUT: %int_4.0c1: Core.IntLiteral = int_value 4 [concrete] -// CHECK:STDOUT: %Convert.bound.94d: = bound_method %int_3.1ba, %Convert.5bc [concrete] -// CHECK:STDOUT: %Convert.bound.8fc: = bound_method %int_4.0c1, %Convert.5bc [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.bound.94d: = bound_method %int_3.1ba, %Core.IntLiteral.as.As.impl.Convert [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.bound.8fc: = bound_method %int_4.0c1, %Core.IntLiteral.as.As.impl.Convert [concrete] // CHECK:STDOUT: %int_4.4f1: %i32.builtin = int_value 4 [concrete] -// CHECK:STDOUT: %Op.bound.703: = bound_method %int_3.a0f, %Op.9d1 [concrete] +// CHECK:STDOUT: %i32.builtin.as.AddWith.impl.Op.bound.703: = bound_method %int_3.a0f, %i32.builtin.as.AddWith.impl.Op [concrete] // CHECK:STDOUT: %int_7: %i32.builtin = int_value 7 [concrete] // CHECK:STDOUT: %tuple.type: type = tuple_type (Core.IntLiteral, Core.IntLiteral, %i32.builtin) [concrete] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.07a: = impl_witness imports.%ImplicitAs.impl_witness_table.78e [concrete] // CHECK:STDOUT: %ImplicitAs.facet.a3d: %ImplicitAs.type.61e = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.07a) [concrete] -// CHECK:STDOUT: %.ec1: type = fn_type_with_self_type %Convert.type.059, %ImplicitAs.facet.a3d [concrete] -// CHECK:STDOUT: %Convert.type.49f: type = fn_type @Convert.5 [concrete] -// CHECK:STDOUT: %Convert.cb5: %Convert.type.49f = struct_value () [concrete] -// CHECK:STDOUT: %Convert.bound.b6b: = bound_method %int_3.1ba, %Convert.cb5 [concrete] -// CHECK:STDOUT: %Convert.bound.626: = bound_method %int_4.0c1, %Convert.cb5 [concrete] +// CHECK:STDOUT: %.ec1: type = fn_type_with_self_type %ImplicitAs.Convert.type.059, %ImplicitAs.facet.a3d [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.b6b: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.626: = bound_method %int_4.0c1, %Core.IntLiteral.as.ImplicitAs.impl.Convert [concrete] // CHECK:STDOUT: %array: %array_type = tuple_value (%int_3.a0f, %int_4.4f1, %int_7) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -766,7 +766,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %Core.Convert.313 = import_ref Core//default, Convert, unloaded // CHECK:STDOUT: %Core.import_ref.5ab3ec.2: type = import_ref Core//default, loc11_14, loaded [symbolic = @As.%T (constants.%T)] // CHECK:STDOUT: %Core.import_ref.996: @As.%As.type (%As.type.eed) = import_ref Core//default, inst103 [no loc], loaded [symbolic = @As.%Self (constants.%Self.65a)] -// CHECK:STDOUT: %Core.import_ref.708: @As.%Convert.type (%Convert.type.843) = import_ref Core//default, loc12_32, loaded [symbolic = @As.%Convert (constants.%Convert.95f)] +// CHECK:STDOUT: %Core.import_ref.708: @As.%As.Convert.type (%As.Convert.type.843) = import_ref Core//default, loc12_32, loaded [symbolic = @As.%As.Convert (constants.%As.Convert.95f)] // CHECK:STDOUT: %Core.import_ref.4e8 = import_ref Core//default, loc12_32, unloaded // CHECK:STDOUT: %Core.import_ref.5ab3ec.3: type = import_ref Core//default, loc7_19, loaded [symbolic = @AddWith.%T (constants.%T)] // CHECK:STDOUT: %Core.import_ref.476 = import_ref Core//default, inst49 [no loc], unloaded @@ -778,7 +778,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %Core.import_ref.5ab3ec.4: type = import_ref Core//default, loc7_19, loaded [symbolic = @AddWith.%T (constants.%T)] // CHECK:STDOUT: %Core.import_ref.6bf: @AddWith.%AddWith.type (%AddWith.type.6d3) = import_ref Core//default, inst49 [no loc], loaded [symbolic = @AddWith.%Self (constants.%Self.6c1)] // CHECK:STDOUT: %Core.import_ref.7e6ace.1 = import_ref Core//default, loc8_41, unloaded -// CHECK:STDOUT: %Core.import_ref.1b9: @AddWith.%Op.type (%Op.type.22d) = import_ref Core//default, loc8_41, loaded [symbolic = @AddWith.%Op (constants.%Op.965)] +// CHECK:STDOUT: %Core.import_ref.1b9: @AddWith.%AddWith.Op.type (%AddWith.Op.type.22d) = import_ref Core//default, loc8_41, loaded [symbolic = @AddWith.%AddWith.Op (constants.%AddWith.Op.965)] // CHECK:STDOUT: %Core.import_ref.cb6: = import_ref Core//default, loc23_30, loaded [concrete = constants.%As.impl_witness] // CHECK:STDOUT: %Core.import_ref.8721d7.1: type = import_ref Core//default, loc23_17, loaded [concrete = Core.IntLiteral] // CHECK:STDOUT: %Core.import_ref.1e5: type = import_ref Core//default, loc23_28, loaded [concrete = constants.%As.type.a6d] @@ -792,23 +792,23 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %Core.import_ref.5ab3ec.6: type = import_ref Core//default, loc15_22, loaded [symbolic = @ImplicitAs.%T (constants.%T)] // CHECK:STDOUT: %Core.import_ref.ce1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.d62) = import_ref Core//default, inst147 [no loc], loaded [symbolic = @ImplicitAs.%Self (constants.%Self.519)] // CHECK:STDOUT: %Core.import_ref.207961.1 = import_ref Core//default, loc16_32, unloaded -// CHECK:STDOUT: %Core.import_ref.1c752f.1: @ImplicitAs.%Convert.type (%Convert.type.275) = import_ref Core//default, loc16_32, loaded [symbolic = @ImplicitAs.%Convert (constants.%Convert.42e)] +// CHECK:STDOUT: %Core.import_ref.1c752f.1: @ImplicitAs.%ImplicitAs.Convert.type (%ImplicitAs.Convert.type.275) = import_ref Core//default, loc16_32, loaded [symbolic = @ImplicitAs.%ImplicitAs.Convert (constants.%ImplicitAs.Convert.42e)] // CHECK:STDOUT: %Core.import_ref.c5f: = import_ref Core//default, loc31_38, loaded [concrete = constants.%ImplicitAs.impl_witness.9c5] // CHECK:STDOUT: %Core.import_ref.c8c7cd.2: type = import_ref Core//default, loc31_6, loaded [concrete = constants.%i32.builtin] // CHECK:STDOUT: %Core.import_ref.efb: type = import_ref Core//default, loc31_36, loaded [concrete = constants.%ImplicitAs.type.2fd] -// CHECK:STDOUT: %Core.import_ref.1c752f.2: @ImplicitAs.%Convert.type (%Convert.type.275) = import_ref Core//default, loc16_32, loaded [symbolic = @ImplicitAs.%Convert (constants.%Convert.42e)] -// CHECK:STDOUT: %Core.import_ref.73a: %Convert.type.953 = import_ref Core//default, loc24_35, loaded [concrete = constants.%Convert.5bc] -// CHECK:STDOUT: %As.impl_witness_table = impl_witness_table (%Core.import_ref.73a), @As.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.1c752f.2: @ImplicitAs.%ImplicitAs.Convert.type (%ImplicitAs.Convert.type.275) = import_ref Core//default, loc16_32, loaded [symbolic = @ImplicitAs.%ImplicitAs.Convert (constants.%ImplicitAs.Convert.42e)] +// CHECK:STDOUT: %Core.import_ref.73a: %Core.IntLiteral.as.As.impl.Convert.type = import_ref Core//default, loc24_35, loaded [concrete = constants.%Core.IntLiteral.as.As.impl.Convert] +// CHECK:STDOUT: %As.impl_witness_table = impl_witness_table (%Core.import_ref.73a), @Core.IntLiteral.as.As.impl [concrete] // CHECK:STDOUT: %Core.AddWith: %AddWith.type.e05 = import_ref Core//default, AddWith, loaded [concrete = constants.%AddWith.generic] // CHECK:STDOUT: %Core.import_ref.7e6ace.2 = import_ref Core//default, loc8_41, unloaded -// CHECK:STDOUT: %Core.import_ref.079: %Op.type.2bc = import_ref Core//default, loc20_42, loaded [concrete = constants.%Op.9d1] -// CHECK:STDOUT: %AddWith.impl_witness_table = impl_witness_table (%Core.import_ref.079), @AddWith.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.079: %i32.builtin.as.AddWith.impl.Op.type = import_ref Core//default, loc20_42, loaded [concrete = constants.%i32.builtin.as.AddWith.impl.Op] +// CHECK:STDOUT: %AddWith.impl_witness_table = impl_witness_table (%Core.import_ref.079), @i32.builtin.as.AddWith.impl [concrete] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//default, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] // CHECK:STDOUT: %Core.import_ref.207961.2 = import_ref Core//default, loc16_32, unloaded -// CHECK:STDOUT: %Core.import_ref.4f9: %Convert.type.0e4 = import_ref Core//default, loc32_44, loaded [concrete = constants.%Convert.b32] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.5fc = impl_witness_table (%Core.import_ref.4f9), @ImplicitAs.impl.ddc [concrete] -// CHECK:STDOUT: %Core.import_ref.f35: %Convert.type.49f = import_ref Core//default, loc28_35, loaded [concrete = constants.%Convert.cb5] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.78e = impl_witness_table (%Core.import_ref.f35), @ImplicitAs.impl.68b [concrete] +// CHECK:STDOUT: %Core.import_ref.4f9: %i32.builtin.as.ImplicitAs.impl.Convert.type = import_ref Core//default, loc32_44, loaded [concrete = constants.%i32.builtin.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.5fc = impl_witness_table (%Core.import_ref.4f9), @i32.builtin.as.ImplicitAs.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.f35: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type = import_ref Core//default, loc28_35, loaded [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.78e = impl_witness_table (%Core.import_ref.f35), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -824,39 +824,39 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %arr.var: ref %array_type = var %arr.var_patt [concrete] // CHECK:STDOUT: %.loc4_44: type = splice_block %array_type [concrete = constants.%array_type] { // CHECK:STDOUT: %int_32.loc4_16: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %int.make_type_signed.loc4_16: init type = call constants.%Int(%int_32.loc4_16) [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %Int.call.loc4_16: init type = call constants.%Int(%int_32.loc4_16) [concrete = constants.%i32.builtin] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_32.loc4_27: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %int.make_type_signed.loc4_27: init type = call constants.%Int(%int_32.loc4_27) [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc4_27.1: type = value_of_initializer %int.make_type_signed.loc4_27 [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc4_27.2: type = converted %int.make_type_signed.loc4_27, %.loc4_27.1 [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %impl.elem0.loc4_24: %.387 = impl_witness_access constants.%As.impl_witness, element0 [concrete = constants.%Convert.5bc] -// CHECK:STDOUT: %bound_method.loc4_24: = bound_method %int_1, %impl.elem0.loc4_24 [concrete = constants.%Convert.bound.b34] -// CHECK:STDOUT: %int.convert_checked.loc4_24: init %i32.builtin = call %bound_method.loc4_24(%int_1) [concrete = constants.%int_1.f38] -// CHECK:STDOUT: %.loc4_24.1: %i32.builtin = value_of_initializer %int.convert_checked.loc4_24 [concrete = constants.%int_1.f38] +// CHECK:STDOUT: %Int.call.loc4_27: init type = call constants.%Int(%int_32.loc4_27) [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc4_27.1: type = value_of_initializer %Int.call.loc4_27 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc4_27.2: type = converted %Int.call.loc4_27, %.loc4_27.1 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %impl.elem0.loc4_24: %.387 = impl_witness_access constants.%As.impl_witness, element0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert] +// CHECK:STDOUT: %bound_method.loc4_24: = bound_method %int_1, %impl.elem0.loc4_24 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.bound.b34] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.call.loc4_24: init %i32.builtin = call %bound_method.loc4_24(%int_1) [concrete = constants.%int_1.f38] +// CHECK:STDOUT: %.loc4_24.1: %i32.builtin = value_of_initializer %Core.IntLiteral.as.As.impl.Convert.call.loc4_24 [concrete = constants.%int_1.f38] // CHECK:STDOUT: %.loc4_24.2: %i32.builtin = converted %int_1, %.loc4_24.1 [concrete = constants.%int_1.f38] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %int_32.loc4_40: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %int.make_type_signed.loc4_40: init type = call constants.%Int(%int_32.loc4_40) [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc4_40.1: type = value_of_initializer %int.make_type_signed.loc4_40 [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc4_40.2: type = converted %int.make_type_signed.loc4_40, %.loc4_40.1 [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %impl.elem0.loc4_37: %.387 = impl_witness_access constants.%As.impl_witness, element0 [concrete = constants.%Convert.5bc] -// CHECK:STDOUT: %bound_method.loc4_37: = bound_method %int_2, %impl.elem0.loc4_37 [concrete = constants.%Convert.bound.324] -// CHECK:STDOUT: %int.convert_checked.loc4_37: init %i32.builtin = call %bound_method.loc4_37(%int_2) [concrete = constants.%int_2.5a1] -// CHECK:STDOUT: %.loc4_37.1: %i32.builtin = value_of_initializer %int.convert_checked.loc4_37 [concrete = constants.%int_2.5a1] +// CHECK:STDOUT: %Int.call.loc4_40: init type = call constants.%Int(%int_32.loc4_40) [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc4_40.1: type = value_of_initializer %Int.call.loc4_40 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc4_40.2: type = converted %Int.call.loc4_40, %.loc4_40.1 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %impl.elem0.loc4_37: %.387 = impl_witness_access constants.%As.impl_witness, element0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert] +// CHECK:STDOUT: %bound_method.loc4_37: = bound_method %int_2, %impl.elem0.loc4_37 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.bound.324] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.call.loc4_37: init %i32.builtin = call %bound_method.loc4_37(%int_2) [concrete = constants.%int_2.5a1] +// CHECK:STDOUT: %.loc4_37.1: %i32.builtin = value_of_initializer %Core.IntLiteral.as.As.impl.Convert.call.loc4_37 [concrete = constants.%int_2.5a1] // CHECK:STDOUT: %.loc4_37.2: %i32.builtin = converted %int_2, %.loc4_37.1 [concrete = constants.%int_2.5a1] -// CHECK:STDOUT: %impl.elem0.loc4_32.1: %.1e7 = impl_witness_access constants.%AddWith.impl_witness, element0 [concrete = constants.%Op.9d1] -// CHECK:STDOUT: %bound_method.loc4_32.1: = bound_method %.loc4_24.2, %impl.elem0.loc4_32.1 [concrete = constants.%Op.bound.de8] -// CHECK:STDOUT: %int.sadd: init %i32.builtin = call %bound_method.loc4_32.1(%.loc4_24.2, %.loc4_37.2) [concrete = constants.%int_3.a0f] -// CHECK:STDOUT: %.loc4_16.1: type = value_of_initializer %int.make_type_signed.loc4_16 [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc4_16.2: type = converted %int.make_type_signed.loc4_16, %.loc4_16.1 [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %impl.elem0.loc4_32.2: %.53b = impl_witness_access constants.%ImplicitAs.impl_witness.9c5, element0 [concrete = constants.%Convert.b32] -// CHECK:STDOUT: %bound_method.loc4_32.2: = bound_method %int.sadd, %impl.elem0.loc4_32.2 [concrete = constants.%Convert.bound.65a] -// CHECK:STDOUT: %.loc4_32.1: %i32.builtin = value_of_initializer %int.sadd [concrete = constants.%int_3.a0f] -// CHECK:STDOUT: %.loc4_32.2: %i32.builtin = converted %int.sadd, %.loc4_32.1 [concrete = constants.%int_3.a0f] -// CHECK:STDOUT: %int.convert_checked.loc4_32: init Core.IntLiteral = call %bound_method.loc4_32.2(%.loc4_32.2) [concrete = constants.%int_3.1ba] -// CHECK:STDOUT: %.loc4_32.3: Core.IntLiteral = value_of_initializer %int.convert_checked.loc4_32 [concrete = constants.%int_3.1ba] -// CHECK:STDOUT: %.loc4_32.4: Core.IntLiteral = converted %int.sadd, %.loc4_32.3 [concrete = constants.%int_3.1ba] +// CHECK:STDOUT: %impl.elem0.loc4_32.1: %.1e7 = impl_witness_access constants.%AddWith.impl_witness, element0 [concrete = constants.%i32.builtin.as.AddWith.impl.Op] +// CHECK:STDOUT: %bound_method.loc4_32.1: = bound_method %.loc4_24.2, %impl.elem0.loc4_32.1 [concrete = constants.%i32.builtin.as.AddWith.impl.Op.bound.de8] +// CHECK:STDOUT: %i32.builtin.as.AddWith.impl.Op.call: init %i32.builtin = call %bound_method.loc4_32.1(%.loc4_24.2, %.loc4_37.2) [concrete = constants.%int_3.a0f] +// CHECK:STDOUT: %.loc4_16.1: type = value_of_initializer %Int.call.loc4_16 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc4_16.2: type = converted %Int.call.loc4_16, %.loc4_16.1 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %impl.elem0.loc4_32.2: %.53b = impl_witness_access constants.%ImplicitAs.impl_witness.9c5, element0 [concrete = constants.%i32.builtin.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %bound_method.loc4_32.2: = bound_method %i32.builtin.as.AddWith.impl.Op.call, %impl.elem0.loc4_32.2 [concrete = constants.%i32.builtin.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %.loc4_32.1: %i32.builtin = value_of_initializer %i32.builtin.as.AddWith.impl.Op.call [concrete = constants.%int_3.a0f] +// CHECK:STDOUT: %.loc4_32.2: %i32.builtin = converted %i32.builtin.as.AddWith.impl.Op.call, %.loc4_32.1 [concrete = constants.%int_3.a0f] +// CHECK:STDOUT: %i32.builtin.as.ImplicitAs.impl.Convert.call: init Core.IntLiteral = call %bound_method.loc4_32.2(%.loc4_32.2) [concrete = constants.%int_3.1ba] +// CHECK:STDOUT: %.loc4_32.3: Core.IntLiteral = value_of_initializer %i32.builtin.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_3.1ba] +// CHECK:STDOUT: %.loc4_32.4: Core.IntLiteral = converted %i32.builtin.as.AddWith.impl.Op.call, %.loc4_32.3 [concrete = constants.%int_3.1ba] // CHECK:STDOUT: %array_type: type = array_type %.loc4_32.4, %.loc4_16.2 [concrete = constants.%array_type] // CHECK:STDOUT: } // CHECK:STDOUT: %arr: ref %array_type = bind_name arr, %arr.var [concrete = %arr.var] @@ -868,8 +868,8 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: !definition: // CHECK:STDOUT: %As.type: type = facet_type <@As, @As(%T)> [symbolic = %As.type (constants.%As.type.eed)] // CHECK:STDOUT: %Self: @As.%As.type (%As.type.eed) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.65a)] -// CHECK:STDOUT: %Convert.type: type = fn_type @Convert.1, @As(%T) [symbolic = %Convert.type (constants.%Convert.type.843)] -// CHECK:STDOUT: %Convert: @As.%Convert.type (%Convert.type.843) = struct_value () [symbolic = %Convert (constants.%Convert.95f)] +// CHECK:STDOUT: %As.Convert.type: type = fn_type @As.Convert, @As(%T) [symbolic = %As.Convert.type (constants.%As.Convert.type.843)] +// CHECK:STDOUT: %As.Convert: @As.%As.Convert.type (%As.Convert.type.843) = struct_value () [symbolic = %As.Convert (constants.%As.Convert.95f)] // CHECK:STDOUT: %As.assoc_type: type = assoc_entity_type @As, @As(%T) [symbolic = %As.assoc_type (constants.%As.assoc_type.760)] // CHECK:STDOUT: %assoc0: @As.%As.assoc_type (%As.assoc_type.760) = assoc_entity element0, imports.%Core.import_ref.708 [symbolic = %assoc0 (constants.%assoc0.076)] // CHECK:STDOUT: @@ -887,8 +887,8 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: !definition: // CHECK:STDOUT: %AddWith.type: type = facet_type <@AddWith, @AddWith(%T)> [symbolic = %AddWith.type (constants.%AddWith.type.6d3)] // CHECK:STDOUT: %Self: @AddWith.%AddWith.type (%AddWith.type.6d3) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.6c1)] -// CHECK:STDOUT: %Op.type: type = fn_type @Op.1, @AddWith(%T) [symbolic = %Op.type (constants.%Op.type.22d)] -// CHECK:STDOUT: %Op: @AddWith.%Op.type (%Op.type.22d) = struct_value () [symbolic = %Op (constants.%Op.965)] +// CHECK:STDOUT: %AddWith.Op.type: type = fn_type @AddWith.Op, @AddWith(%T) [symbolic = %AddWith.Op.type (constants.%AddWith.Op.type.22d)] +// CHECK:STDOUT: %AddWith.Op: @AddWith.%AddWith.Op.type (%AddWith.Op.type.22d) = struct_value () [symbolic = %AddWith.Op (constants.%AddWith.Op.965)] // CHECK:STDOUT: %AddWith.assoc_type: type = assoc_entity_type @AddWith, @AddWith(%T) [symbolic = %AddWith.assoc_type (constants.%AddWith.assoc_type.c10)] // CHECK:STDOUT: %assoc0: @AddWith.%AddWith.assoc_type (%AddWith.assoc_type.c10) = assoc_entity element0, imports.%Core.import_ref.7e6ace.1 [symbolic = %assoc0 (constants.%assoc0.89962d.1)] // CHECK:STDOUT: @@ -906,8 +906,8 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: !definition: // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%T)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.d62)] // CHECK:STDOUT: %Self: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.d62) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.519)] -// CHECK:STDOUT: %Convert.type: type = fn_type @Convert.2, @ImplicitAs(%T) [symbolic = %Convert.type (constants.%Convert.type.275)] -// CHECK:STDOUT: %Convert: @ImplicitAs.%Convert.type (%Convert.type.275) = struct_value () [symbolic = %Convert (constants.%Convert.42e)] +// CHECK:STDOUT: %ImplicitAs.Convert.type: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%T) [symbolic = %ImplicitAs.Convert.type (constants.%ImplicitAs.Convert.type.275)] +// CHECK:STDOUT: %ImplicitAs.Convert: @ImplicitAs.%ImplicitAs.Convert.type (%ImplicitAs.Convert.type.275) = struct_value () [symbolic = %ImplicitAs.Convert (constants.%ImplicitAs.Convert.42e)] // CHECK:STDOUT: %ImplicitAs.assoc_type: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%T) [symbolic = %ImplicitAs.assoc_type (constants.%ImplicitAs.assoc_type.ca0)] // CHECK:STDOUT: %assoc0: @ImplicitAs.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type.ca0) = assoc_entity element0, imports.%Core.import_ref.207961.1 [symbolic = %assoc0 (constants.%assoc0.dc001e.1)] // CHECK:STDOUT: @@ -919,32 +919,32 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @AddWith.impl: imports.%Core.import_ref.c8c7cd.1 as imports.%Core.import_ref.ef3 [from "core.carbon"] { +// CHECK:STDOUT: impl @i32.builtin.as.AddWith.impl: imports.%Core.import_ref.c8c7cd.1 as imports.%Core.import_ref.ef3 [from "core.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = imports.%Core.import_ref.772 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @As.impl: imports.%Core.import_ref.8721d7.1 as imports.%Core.import_ref.1e5 [from "core.carbon"] { +// CHECK:STDOUT: impl @Core.IntLiteral.as.As.impl: imports.%Core.import_ref.8721d7.1 as imports.%Core.import_ref.1e5 [from "core.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = imports.%Core.import_ref.cb6 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @ImplicitAs.impl.68b: imports.%Core.import_ref.8721d7.2 as imports.%Core.import_ref.4d9 [from "core.carbon"] { +// CHECK:STDOUT: impl @Core.IntLiteral.as.ImplicitAs.impl: imports.%Core.import_ref.8721d7.2 as imports.%Core.import_ref.4d9 [from "core.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = imports.%Core.import_ref.c62 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @ImplicitAs.impl.ddc: imports.%Core.import_ref.c8c7cd.2 as imports.%Core.import_ref.efb [from "core.carbon"] { +// CHECK:STDOUT: impl @i32.builtin.as.ImplicitAs.impl: imports.%Core.import_ref.c8c7cd.2 as imports.%Core.import_ref.efb [from "core.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = imports.%Core.import_ref.c5f // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Int = "int.make_type_signed" [from "core.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Convert.1(imports.%Core.import_ref.5ab3ec.2: type, imports.%Core.import_ref.996: @As.%As.type (%As.type.eed)) [from "core.carbon"] { +// CHECK:STDOUT: generic fn @As.Convert(imports.%Core.import_ref.5ab3ec.2: type, imports.%Core.import_ref.996: @As.%As.type (%As.type.eed)) [from "core.carbon"] { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %As.type: type = facet_type <@As, @As(%T)> [symbolic = %As.type (constants.%As.type.eed)] -// CHECK:STDOUT: %Self: @Convert.1.%As.type (%As.type.eed) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.65a)] +// CHECK:STDOUT: %Self: @As.Convert.%As.type (%As.type.eed) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.65a)] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic = %Self.as_type (constants.%Self.as_type.04d)] // CHECK:STDOUT: %pattern_type.1: type = pattern_type %Self.as_type [symbolic = %pattern_type.1 (constants.%pattern_type.ca4)] // CHECK:STDOUT: %pattern_type.2: type = pattern_type %T [symbolic = %pattern_type.2 (constants.%pattern_type.7dc)] @@ -952,20 +952,20 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Op.1(imports.%Core.import_ref.5ab3ec.4: type, imports.%Core.import_ref.6bf: @AddWith.%AddWith.type (%AddWith.type.6d3)) [from "core.carbon"] { +// CHECK:STDOUT: generic fn @AddWith.Op(imports.%Core.import_ref.5ab3ec.4: type, imports.%Core.import_ref.6bf: @AddWith.%AddWith.type (%AddWith.type.6d3)) [from "core.carbon"] { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %AddWith.type: type = facet_type <@AddWith, @AddWith(%T)> [symbolic = %AddWith.type (constants.%AddWith.type.6d3)] -// CHECK:STDOUT: %Self: @Op.1.%AddWith.type (%AddWith.type.6d3) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.6c1)] +// CHECK:STDOUT: %Self: @AddWith.Op.%AddWith.type (%AddWith.type.6d3) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.6c1)] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic = %Self.as_type (constants.%Self.as_type.030)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type [symbolic = %pattern_type (constants.%pattern_type.7fc)] // CHECK:STDOUT: // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Convert.2(imports.%Core.import_ref.5ab3ec.6: type, imports.%Core.import_ref.ce1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.d62)) [from "core.carbon"] { +// CHECK:STDOUT: generic fn @ImplicitAs.Convert(imports.%Core.import_ref.5ab3ec.6: type, imports.%Core.import_ref.ce1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.d62)) [from "core.carbon"] { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%T)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.d62)] -// CHECK:STDOUT: %Self: @Convert.2.%ImplicitAs.type (%ImplicitAs.type.d62) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.519)] +// CHECK:STDOUT: %Self: @ImplicitAs.Convert.%ImplicitAs.type (%ImplicitAs.type.d62) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.519)] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic = %Self.as_type (constants.%Self.as_type.40a)] // CHECK:STDOUT: %pattern_type.1: type = pattern_type %Self.as_type [symbolic = %pattern_type.1 (constants.%pattern_type.f3e)] // CHECK:STDOUT: %pattern_type.2: type = pattern_type %T [symbolic = %pattern_type.2 (constants.%pattern_type.7dc)] @@ -973,13 +973,13 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert.3 = "int.convert_checked" [from "core.carbon"]; +// CHECK:STDOUT: fn @Core.IntLiteral.as.As.impl.Convert = "int.convert_checked" [from "core.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: fn @Op.2 = "int.sadd" [from "core.carbon"]; +// CHECK:STDOUT: fn @i32.builtin.as.AddWith.impl.Op = "int.sadd" [from "core.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert.4 = "int.convert_checked" [from "core.carbon"]; +// CHECK:STDOUT: fn @i32.builtin.as.ImplicitAs.impl.Convert = "int.convert_checked" [from "core.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert.5 = "int.convert_checked" [from "core.carbon"]; +// CHECK:STDOUT: fn @Core.IntLiteral.as.ImplicitAs.impl.Convert = "int.convert_checked" [from "core.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: @@ -987,45 +987,45 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %int_4.loc4_52: Core.IntLiteral = int_value 4 [concrete = constants.%int_4.0c1] // CHECK:STDOUT: %int_3.loc4_56: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] // CHECK:STDOUT: %int_32.loc4_61: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %int.make_type_signed.loc4_61: init type = call constants.%Int(%int_32.loc4_61) [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc4_61.1: type = value_of_initializer %int.make_type_signed.loc4_61 [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc4_61.2: type = converted %int.make_type_signed.loc4_61, %.loc4_61.1 [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %impl.elem0.loc4_58: %.387 = impl_witness_access constants.%As.impl_witness, element0 [concrete = constants.%Convert.5bc] -// CHECK:STDOUT: %bound_method.loc4_58: = bound_method %int_3.loc4_56, %impl.elem0.loc4_58 [concrete = constants.%Convert.bound.94d] -// CHECK:STDOUT: %int.convert_checked.loc4_58: init %i32.builtin = call %bound_method.loc4_58(%int_3.loc4_56) [concrete = constants.%int_3.a0f] -// CHECK:STDOUT: %.loc4_58.1: %i32.builtin = value_of_initializer %int.convert_checked.loc4_58 [concrete = constants.%int_3.a0f] +// CHECK:STDOUT: %Int.call.loc4_61: init type = call constants.%Int(%int_32.loc4_61) [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc4_61.1: type = value_of_initializer %Int.call.loc4_61 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc4_61.2: type = converted %Int.call.loc4_61, %.loc4_61.1 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %impl.elem0.loc4_58: %.387 = impl_witness_access constants.%As.impl_witness, element0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert] +// CHECK:STDOUT: %bound_method.loc4_58: = bound_method %int_3.loc4_56, %impl.elem0.loc4_58 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.bound.94d] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.call.loc4_58: init %i32.builtin = call %bound_method.loc4_58(%int_3.loc4_56) [concrete = constants.%int_3.a0f] +// CHECK:STDOUT: %.loc4_58.1: %i32.builtin = value_of_initializer %Core.IntLiteral.as.As.impl.Convert.call.loc4_58 [concrete = constants.%int_3.a0f] // CHECK:STDOUT: %.loc4_58.2: %i32.builtin = converted %int_3.loc4_56, %.loc4_58.1 [concrete = constants.%int_3.a0f] // CHECK:STDOUT: %int_4.loc4_69: Core.IntLiteral = int_value 4 [concrete = constants.%int_4.0c1] // CHECK:STDOUT: %int_32.loc4_74: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %int.make_type_signed.loc4_74: init type = call constants.%Int(%int_32.loc4_74) [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc4_74.1: type = value_of_initializer %int.make_type_signed.loc4_74 [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc4_74.2: type = converted %int.make_type_signed.loc4_74, %.loc4_74.1 [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %impl.elem0.loc4_71: %.387 = impl_witness_access constants.%As.impl_witness, element0 [concrete = constants.%Convert.5bc] -// CHECK:STDOUT: %bound_method.loc4_71: = bound_method %int_4.loc4_69, %impl.elem0.loc4_71 [concrete = constants.%Convert.bound.8fc] -// CHECK:STDOUT: %int.convert_checked.loc4_71: init %i32.builtin = call %bound_method.loc4_71(%int_4.loc4_69) [concrete = constants.%int_4.4f1] -// CHECK:STDOUT: %.loc4_71.1: %i32.builtin = value_of_initializer %int.convert_checked.loc4_71 [concrete = constants.%int_4.4f1] +// CHECK:STDOUT: %Int.call.loc4_74: init type = call constants.%Int(%int_32.loc4_74) [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc4_74.1: type = value_of_initializer %Int.call.loc4_74 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc4_74.2: type = converted %Int.call.loc4_74, %.loc4_74.1 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %impl.elem0.loc4_71: %.387 = impl_witness_access constants.%As.impl_witness, element0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert] +// CHECK:STDOUT: %bound_method.loc4_71: = bound_method %int_4.loc4_69, %impl.elem0.loc4_71 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.bound.8fc] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.call.loc4_71: init %i32.builtin = call %bound_method.loc4_71(%int_4.loc4_69) [concrete = constants.%int_4.4f1] +// CHECK:STDOUT: %.loc4_71.1: %i32.builtin = value_of_initializer %Core.IntLiteral.as.As.impl.Convert.call.loc4_71 [concrete = constants.%int_4.4f1] // CHECK:STDOUT: %.loc4_71.2: %i32.builtin = converted %int_4.loc4_69, %.loc4_71.1 [concrete = constants.%int_4.4f1] -// CHECK:STDOUT: %impl.elem0.loc4_66: %.1e7 = impl_witness_access constants.%AddWith.impl_witness, element0 [concrete = constants.%Op.9d1] -// CHECK:STDOUT: %bound_method.loc4_66: = bound_method %.loc4_58.2, %impl.elem0.loc4_66 [concrete = constants.%Op.bound.703] -// CHECK:STDOUT: %int.sadd: init %i32.builtin = call %bound_method.loc4_66(%.loc4_58.2, %.loc4_71.2) [concrete = constants.%int_7] -// CHECK:STDOUT: %.loc4_78.1: %tuple.type = tuple_literal (%int_3.loc4_49, %int_4.loc4_52, %int.sadd) -// CHECK:STDOUT: %impl.elem0.loc4_78.1: %.ec1 = impl_witness_access constants.%ImplicitAs.impl_witness.07a, element0 [concrete = constants.%Convert.cb5] -// CHECK:STDOUT: %bound_method.loc4_78.1: = bound_method %int_3.loc4_49, %impl.elem0.loc4_78.1 [concrete = constants.%Convert.bound.b6b] -// CHECK:STDOUT: %int.convert_checked.loc4_78.1: init %i32.builtin = call %bound_method.loc4_78.1(%int_3.loc4_49) [concrete = constants.%int_3.a0f] -// CHECK:STDOUT: %.loc4_78.2: init %i32.builtin = converted %int_3.loc4_49, %int.convert_checked.loc4_78.1 [concrete = constants.%int_3.a0f] +// CHECK:STDOUT: %impl.elem0.loc4_66: %.1e7 = impl_witness_access constants.%AddWith.impl_witness, element0 [concrete = constants.%i32.builtin.as.AddWith.impl.Op] +// CHECK:STDOUT: %bound_method.loc4_66: = bound_method %.loc4_58.2, %impl.elem0.loc4_66 [concrete = constants.%i32.builtin.as.AddWith.impl.Op.bound.703] +// CHECK:STDOUT: %i32.builtin.as.AddWith.impl.Op.call: init %i32.builtin = call %bound_method.loc4_66(%.loc4_58.2, %.loc4_71.2) [concrete = constants.%int_7] +// CHECK:STDOUT: %.loc4_78.1: %tuple.type = tuple_literal (%int_3.loc4_49, %int_4.loc4_52, %i32.builtin.as.AddWith.impl.Op.call) +// CHECK:STDOUT: %impl.elem0.loc4_78.1: %.ec1 = impl_witness_access constants.%ImplicitAs.impl_witness.07a, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %bound_method.loc4_78.1: = bound_method %int_3.loc4_49, %impl.elem0.loc4_78.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.b6b] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc4_78.1: init %i32.builtin = call %bound_method.loc4_78.1(%int_3.loc4_49) [concrete = constants.%int_3.a0f] +// CHECK:STDOUT: %.loc4_78.2: init %i32.builtin = converted %int_3.loc4_49, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc4_78.1 [concrete = constants.%int_3.a0f] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] // CHECK:STDOUT: %.loc4_78.3: ref %i32.builtin = array_index file.%arr.var, %int_0 // CHECK:STDOUT: %.loc4_78.4: init %i32.builtin = initialize_from %.loc4_78.2 to %.loc4_78.3 [concrete = constants.%int_3.a0f] -// CHECK:STDOUT: %impl.elem0.loc4_78.2: %.ec1 = impl_witness_access constants.%ImplicitAs.impl_witness.07a, element0 [concrete = constants.%Convert.cb5] -// CHECK:STDOUT: %bound_method.loc4_78.2: = bound_method %int_4.loc4_52, %impl.elem0.loc4_78.2 [concrete = constants.%Convert.bound.626] -// CHECK:STDOUT: %int.convert_checked.loc4_78.2: init %i32.builtin = call %bound_method.loc4_78.2(%int_4.loc4_52) [concrete = constants.%int_4.4f1] -// CHECK:STDOUT: %.loc4_78.5: init %i32.builtin = converted %int_4.loc4_52, %int.convert_checked.loc4_78.2 [concrete = constants.%int_4.4f1] +// CHECK:STDOUT: %impl.elem0.loc4_78.2: %.ec1 = impl_witness_access constants.%ImplicitAs.impl_witness.07a, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %bound_method.loc4_78.2: = bound_method %int_4.loc4_52, %impl.elem0.loc4_78.2 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.626] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc4_78.2: init %i32.builtin = call %bound_method.loc4_78.2(%int_4.loc4_52) [concrete = constants.%int_4.4f1] +// CHECK:STDOUT: %.loc4_78.5: init %i32.builtin = converted %int_4.loc4_52, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc4_78.2 [concrete = constants.%int_4.4f1] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %.loc4_78.6: ref %i32.builtin = array_index file.%arr.var, %int_1 // CHECK:STDOUT: %.loc4_78.7: init %i32.builtin = initialize_from %.loc4_78.5 to %.loc4_78.6 [concrete = constants.%int_4.4f1] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %.loc4_78.8: ref %i32.builtin = array_index file.%arr.var, %int_2 -// CHECK:STDOUT: %.loc4_78.9: init %i32.builtin = initialize_from %int.sadd to %.loc4_78.8 [concrete = constants.%int_7] +// CHECK:STDOUT: %.loc4_78.9: init %i32.builtin = initialize_from %i32.builtin.as.AddWith.impl.Op.call to %.loc4_78.8 [concrete = constants.%int_7] // CHECK:STDOUT: %.loc4_78.10: init %array_type = array_init (%.loc4_78.4, %.loc4_78.7, %.loc4_78.9) to file.%arr.var [concrete = constants.%array] // CHECK:STDOUT: %.loc4_1: init %array_type = converted %.loc4_78.1, %.loc4_78.10 [concrete = constants.%array] // CHECK:STDOUT: assign file.%arr.var, %.loc4_1 @@ -1036,7 +1036,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Convert.1(constants.%T, constants.%Self.65a) { +// CHECK:STDOUT: specific @As.Convert(constants.%T, constants.%Self.65a) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %As.type => constants.%As.type.eed // CHECK:STDOUT: %Self => constants.%Self.65a @@ -1051,8 +1051,8 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: !definition: // CHECK:STDOUT: %As.type => constants.%As.type.a6d // CHECK:STDOUT: %Self => constants.%Self.c25 -// CHECK:STDOUT: %Convert.type => constants.%Convert.type.378 -// CHECK:STDOUT: %Convert => constants.%Convert.e51 +// CHECK:STDOUT: %As.Convert.type => constants.%As.Convert.type.378 +// CHECK:STDOUT: %As.Convert => constants.%As.Convert.e51 // CHECK:STDOUT: %As.assoc_type => constants.%As.assoc_type.bc2 // CHECK:STDOUT: %assoc0 => constants.%assoc0.9fb // CHECK:STDOUT: } @@ -1067,13 +1067,13 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: !definition: // CHECK:STDOUT: %AddWith.type => constants.%AddWith.type.6f5 // CHECK:STDOUT: %Self => constants.%Self.ec3 -// CHECK:STDOUT: %Op.type => constants.%Op.type.0b7 -// CHECK:STDOUT: %Op => constants.%Op.9d6 +// CHECK:STDOUT: %AddWith.Op.type => constants.%AddWith.Op.type.0b7 +// CHECK:STDOUT: %AddWith.Op => constants.%AddWith.Op.9d6 // CHECK:STDOUT: %AddWith.assoc_type => constants.%AddWith.assoc_type.dff // CHECK:STDOUT: %assoc0 => constants.%assoc0.7f1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Op.1(constants.%T, constants.%Self.6c1) { +// CHECK:STDOUT: specific @AddWith.Op(constants.%T, constants.%Self.6c1) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %AddWith.type => constants.%AddWith.type.6d3 // CHECK:STDOUT: %Self => constants.%Self.6c1 @@ -1091,13 +1091,13 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: !definition: // CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.61e // CHECK:STDOUT: %Self => constants.%Self.d28 -// CHECK:STDOUT: %Convert.type => constants.%Convert.type.059 -// CHECK:STDOUT: %Convert => constants.%Convert.4d7 +// CHECK:STDOUT: %ImplicitAs.Convert.type => constants.%ImplicitAs.Convert.type.059 +// CHECK:STDOUT: %ImplicitAs.Convert => constants.%ImplicitAs.Convert.4d7 // CHECK:STDOUT: %ImplicitAs.assoc_type => constants.%ImplicitAs.assoc_type.398 // CHECK:STDOUT: %assoc0 => constants.%assoc0.6fd // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Convert.2(constants.%T, constants.%Self.519) { +// CHECK:STDOUT: specific @ImplicitAs.Convert(constants.%T, constants.%Self.519) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.d62 // CHECK:STDOUT: %Self => constants.%Self.519 @@ -1112,8 +1112,8 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: !definition: // CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.2fd // CHECK:STDOUT: %Self => constants.%Self.9ac -// CHECK:STDOUT: %Convert.type => constants.%Convert.type.71e -// CHECK:STDOUT: %Convert => constants.%Convert.0e2 +// CHECK:STDOUT: %ImplicitAs.Convert.type => constants.%ImplicitAs.Convert.type.71e +// CHECK:STDOUT: %ImplicitAs.Convert => constants.%ImplicitAs.Convert.0e2 // CHECK:STDOUT: %ImplicitAs.assoc_type => constants.%ImplicitAs.assoc_type.959 // CHECK:STDOUT: %assoc0 => constants.%assoc0.8c4 // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/builtin/import.carbon b/toolchain/check/testdata/function/builtin/import.carbon index 82998264d1db..a037ca805be9 100644 --- a/toolchain/check/testdata/function/builtin/import.carbon +++ b/toolchain/check/testdata/function/builtin/import.carbon @@ -75,9 +75,9 @@ var arr: array(i32, Core.AsIntLiteral(Core.TestAdd(Core.AsI32(1), Core.AsI32(2)) // CHECK:STDOUT: %N.param: Core.IntLiteral = value_param call_param0 // CHECK:STDOUT: %.loc6_22.1: type = splice_block %.loc6_22.3 [concrete = Core.IntLiteral] { // CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [concrete = constants.%IntLiteral] -// CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc6_22.2: type = value_of_initializer %int_literal.make_type [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc6_22.3: type = converted %int_literal.make_type, %.loc6_22.2 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %IntLiteral.call: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc6_22.2: type = value_of_initializer %IntLiteral.call [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc6_22.3: type = converted %IntLiteral.call, %.loc6_22.2 [concrete = Core.IntLiteral] // CHECK:STDOUT: } // CHECK:STDOUT: %N: Core.IntLiteral = bind_name N, %N.param // CHECK:STDOUT: %return.param: ref type = out_param call_param1 @@ -90,15 +90,15 @@ var arr: array(i32, Core.AsIntLiteral(Core.TestAdd(Core.AsI32(1), Core.AsI32(2)) // CHECK:STDOUT: %return.param_patt: %pattern_type.956 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %int.make_type_signed: init type = call constants.%Int(%int_32) [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc8_30.1: type = value_of_initializer %int.make_type_signed [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc8_30.2: type = converted %int.make_type_signed, %.loc8_30.1 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %Int.call: init type = call constants.%Int(%int_32) [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc8_30.1: type = value_of_initializer %Int.call [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc8_30.2: type = converted %Int.call, %.loc8_30.1 [concrete = constants.%i32.builtin] // CHECK:STDOUT: %a.param: Core.IntLiteral = value_param call_param0 // CHECK:STDOUT: %.loc8_24.1: type = splice_block %.loc8_24.3 [concrete = Core.IntLiteral] { // CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [concrete = constants.%IntLiteral] -// CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc8_24.2: type = value_of_initializer %int_literal.make_type [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc8_24.3: type = converted %int_literal.make_type, %.loc8_24.2 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %IntLiteral.call: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc8_24.2: type = value_of_initializer %IntLiteral.call [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc8_24.3: type = converted %IntLiteral.call, %.loc8_24.2 [concrete = Core.IntLiteral] // CHECK:STDOUT: } // CHECK:STDOUT: %a: Core.IntLiteral = bind_name a, %a.param // CHECK:STDOUT: %return.param: ref %i32.builtin = out_param call_param1 @@ -111,15 +111,15 @@ var arr: array(i32, Core.AsIntLiteral(Core.TestAdd(Core.AsI32(1), Core.AsI32(2)) // CHECK:STDOUT: %return.param_patt: %pattern_type.dc0 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [concrete = constants.%IntLiteral] -// CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc9_39.1: type = value_of_initializer %int_literal.make_type [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc9_39.2: type = converted %int_literal.make_type, %.loc9_39.1 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %IntLiteral.call: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc9_39.1: type = value_of_initializer %IntLiteral.call [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc9_39.2: type = converted %IntLiteral.call, %.loc9_39.1 [concrete = Core.IntLiteral] // CHECK:STDOUT: %a.param: %i32.builtin = value_param call_param0 // CHECK:STDOUT: %.loc9_20.1: type = splice_block %.loc9_20.3 [concrete = constants.%i32.builtin] { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %int.make_type_signed: init type = call constants.%Int(%int_32) [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc9_20.2: type = value_of_initializer %int.make_type_signed [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc9_20.3: type = converted %int.make_type_signed, %.loc9_20.2 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %Int.call: init type = call constants.%Int(%int_32) [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc9_20.2: type = value_of_initializer %Int.call [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc9_20.3: type = converted %Int.call, %.loc9_20.2 [concrete = constants.%i32.builtin] // CHECK:STDOUT: } // CHECK:STDOUT: %a: %i32.builtin = bind_name a, %a.param // CHECK:STDOUT: %return.param: ref Core.IntLiteral = out_param call_param1 @@ -134,23 +134,23 @@ var arr: array(i32, Core.AsIntLiteral(Core.TestAdd(Core.AsI32(1), Core.AsI32(2)) // CHECK:STDOUT: %return.param_patt: %pattern_type.956 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc11_31: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %int.make_type_signed.loc11_31: init type = call constants.%Int(%int_32.loc11_31) [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc11_31.1: type = value_of_initializer %int.make_type_signed.loc11_31 [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc11_31.2: type = converted %int.make_type_signed.loc11_31, %.loc11_31.1 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %Int.call.loc11_31: init type = call constants.%Int(%int_32.loc11_31) [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc11_31.1: type = value_of_initializer %Int.call.loc11_31 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc11_31.2: type = converted %Int.call.loc11_31, %.loc11_31.1 [concrete = constants.%i32.builtin] // CHECK:STDOUT: %a.param: %i32.builtin = value_param call_param0 // CHECK:STDOUT: %.loc11_15.1: type = splice_block %.loc11_15.3 [concrete = constants.%i32.builtin] { // CHECK:STDOUT: %int_32.loc11_15: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %int.make_type_signed.loc11_15: init type = call constants.%Int(%int_32.loc11_15) [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc11_15.2: type = value_of_initializer %int.make_type_signed.loc11_15 [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc11_15.3: type = converted %int.make_type_signed.loc11_15, %.loc11_15.2 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %Int.call.loc11_15: init type = call constants.%Int(%int_32.loc11_15) [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc11_15.2: type = value_of_initializer %Int.call.loc11_15 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc11_15.3: type = converted %Int.call.loc11_15, %.loc11_15.2 [concrete = constants.%i32.builtin] // CHECK:STDOUT: } // CHECK:STDOUT: %a: %i32.builtin = bind_name a, %a.param // CHECK:STDOUT: %b.param: %i32.builtin = value_param call_param1 // CHECK:STDOUT: %.loc11_23.1: type = splice_block %.loc11_23.3 [concrete = constants.%i32.builtin] { // CHECK:STDOUT: %int_32.loc11_23: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %int.make_type_signed.loc11_23: init type = call constants.%Int(%int_32.loc11_23) [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc11_23.2: type = value_of_initializer %int.make_type_signed.loc11_23 [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc11_23.3: type = converted %int.make_type_signed.loc11_23, %.loc11_23.2 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %Int.call.loc11_23: init type = call constants.%Int(%int_32.loc11_23) [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc11_23.2: type = value_of_initializer %Int.call.loc11_23 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc11_23.3: type = converted %Int.call.loc11_23, %.loc11_23.2 [concrete = constants.%i32.builtin] // CHECK:STDOUT: } // CHECK:STDOUT: %b: %i32.builtin = bind_name b, %b.param // CHECK:STDOUT: %return.param: ref %i32.builtin = out_param call_param2 @@ -221,7 +221,7 @@ var arr: array(i32, Core.AsIntLiteral(Core.TestAdd(Core.AsI32(1), Core.AsI32(2)) // CHECK:STDOUT: %arr.var: ref %array_type = var %arr.var_patt [concrete] // CHECK:STDOUT: %.loc4_82: type = splice_block %array_type [concrete = constants.%array_type] { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %int.make_type_signed: init type = call constants.%Int(%int_32) [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %Int.call: init type = call constants.%Int(%int_32) [concrete = constants.%i32.builtin] // CHECK:STDOUT: %Core.ref.loc4_21: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %AsIntLiteral.ref: %AsIntLiteral.type = name_ref AsIntLiteral, imports.%Core.AsIntLiteral [concrete = constants.%AsIntLiteral] // CHECK:STDOUT: %Core.ref.loc4_39: = name_ref Core, imports.%Core [concrete = imports.%Core] @@ -229,23 +229,23 @@ var arr: array(i32, Core.AsIntLiteral(Core.TestAdd(Core.AsI32(1), Core.AsI32(2)) // CHECK:STDOUT: %Core.ref.loc4_52: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %AsI32.ref.loc4_56: %AsI32.type = name_ref AsI32, imports.%Core.AsI32 [concrete = constants.%AsI32] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %int.convert_checked.loc4_64: init %i32.builtin = call %AsI32.ref.loc4_56(%int_1) [concrete = constants.%int_1.f38] +// CHECK:STDOUT: %AsI32.call.loc4_64: init %i32.builtin = call %AsI32.ref.loc4_56(%int_1) [concrete = constants.%int_1.f38] // CHECK:STDOUT: %Core.ref.loc4_67: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %AsI32.ref.loc4_71: %AsI32.type = name_ref AsI32, imports.%Core.AsI32 [concrete = constants.%AsI32] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %int.convert_checked.loc4_79: init %i32.builtin = call %AsI32.ref.loc4_71(%int_2) [concrete = constants.%int_2.5a1] -// CHECK:STDOUT: %.loc4_64.1: %i32.builtin = value_of_initializer %int.convert_checked.loc4_64 [concrete = constants.%int_1.f38] -// CHECK:STDOUT: %.loc4_64.2: %i32.builtin = converted %int.convert_checked.loc4_64, %.loc4_64.1 [concrete = constants.%int_1.f38] -// CHECK:STDOUT: %.loc4_79.1: %i32.builtin = value_of_initializer %int.convert_checked.loc4_79 [concrete = constants.%int_2.5a1] -// CHECK:STDOUT: %.loc4_79.2: %i32.builtin = converted %int.convert_checked.loc4_79, %.loc4_79.1 [concrete = constants.%int_2.5a1] -// CHECK:STDOUT: %int.sadd: init %i32.builtin = call %TestAdd.ref(%.loc4_64.2, %.loc4_79.2) [concrete = constants.%int_3.a0f] -// CHECK:STDOUT: %.loc4_80.1: %i32.builtin = value_of_initializer %int.sadd [concrete = constants.%int_3.a0f] -// CHECK:STDOUT: %.loc4_80.2: %i32.builtin = converted %int.sadd, %.loc4_80.1 [concrete = constants.%int_3.a0f] -// CHECK:STDOUT: %int.convert_checked.loc4_81: init Core.IntLiteral = call %AsIntLiteral.ref(%.loc4_80.2) [concrete = constants.%int_3.1ba] -// CHECK:STDOUT: %.loc4_16.1: type = value_of_initializer %int.make_type_signed [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc4_16.2: type = converted %int.make_type_signed, %.loc4_16.1 [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc4_81.1: Core.IntLiteral = value_of_initializer %int.convert_checked.loc4_81 [concrete = constants.%int_3.1ba] -// CHECK:STDOUT: %.loc4_81.2: Core.IntLiteral = converted %int.convert_checked.loc4_81, %.loc4_81.1 [concrete = constants.%int_3.1ba] +// CHECK:STDOUT: %AsI32.call.loc4_79: init %i32.builtin = call %AsI32.ref.loc4_71(%int_2) [concrete = constants.%int_2.5a1] +// CHECK:STDOUT: %.loc4_64.1: %i32.builtin = value_of_initializer %AsI32.call.loc4_64 [concrete = constants.%int_1.f38] +// CHECK:STDOUT: %.loc4_64.2: %i32.builtin = converted %AsI32.call.loc4_64, %.loc4_64.1 [concrete = constants.%int_1.f38] +// CHECK:STDOUT: %.loc4_79.1: %i32.builtin = value_of_initializer %AsI32.call.loc4_79 [concrete = constants.%int_2.5a1] +// CHECK:STDOUT: %.loc4_79.2: %i32.builtin = converted %AsI32.call.loc4_79, %.loc4_79.1 [concrete = constants.%int_2.5a1] +// CHECK:STDOUT: %TestAdd.call: init %i32.builtin = call %TestAdd.ref(%.loc4_64.2, %.loc4_79.2) [concrete = constants.%int_3.a0f] +// CHECK:STDOUT: %.loc4_80.1: %i32.builtin = value_of_initializer %TestAdd.call [concrete = constants.%int_3.a0f] +// CHECK:STDOUT: %.loc4_80.2: %i32.builtin = converted %TestAdd.call, %.loc4_80.1 [concrete = constants.%int_3.a0f] +// CHECK:STDOUT: %AsIntLiteral.call: init Core.IntLiteral = call %AsIntLiteral.ref(%.loc4_80.2) [concrete = constants.%int_3.1ba] +// CHECK:STDOUT: %.loc4_16.1: type = value_of_initializer %Int.call [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc4_16.2: type = converted %Int.call, %.loc4_16.1 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc4_81.1: Core.IntLiteral = value_of_initializer %AsIntLiteral.call [concrete = constants.%int_3.1ba] +// CHECK:STDOUT: %.loc4_81.2: Core.IntLiteral = converted %AsIntLiteral.call, %.loc4_81.1 [concrete = constants.%int_3.1ba] // CHECK:STDOUT: %array_type: type = array_type %.loc4_81.2, %.loc4_16.2 [concrete = constants.%array_type] // CHECK:STDOUT: } // CHECK:STDOUT: %arr: ref %array_type = bind_name arr, %arr.var [concrete = %arr.var] @@ -264,25 +264,25 @@ var arr: array(i32, Core.AsIntLiteral(Core.TestAdd(Core.AsI32(1), Core.AsI32(2)) // CHECK:STDOUT: %Core.ref.loc4_87: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %AsI32.ref.loc4_91: %AsI32.type = name_ref AsI32, imports.%Core.AsI32 [concrete = constants.%AsI32] // CHECK:STDOUT: %int_1.loc4_98: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %int.convert_checked.loc4_99: init %i32.builtin = call %AsI32.ref.loc4_91(%int_1.loc4_98) [concrete = constants.%int_1.f38] +// CHECK:STDOUT: %AsI32.call.loc4_99: init %i32.builtin = call %AsI32.ref.loc4_91(%int_1.loc4_98) [concrete = constants.%int_1.f38] // CHECK:STDOUT: %Core.ref.loc4_102: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %AsI32.ref.loc4_106: %AsI32.type = name_ref AsI32, imports.%Core.AsI32 [concrete = constants.%AsI32] // CHECK:STDOUT: %int_2.loc4_113: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %int.convert_checked.loc4_114: init %i32.builtin = call %AsI32.ref.loc4_106(%int_2.loc4_113) [concrete = constants.%int_2.5a1] +// CHECK:STDOUT: %AsI32.call.loc4_114: init %i32.builtin = call %AsI32.ref.loc4_106(%int_2.loc4_113) [concrete = constants.%int_2.5a1] // CHECK:STDOUT: %Core.ref.loc4_117: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %AsI32.ref.loc4_121: %AsI32.type = name_ref AsI32, imports.%Core.AsI32 [concrete = constants.%AsI32] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] -// CHECK:STDOUT: %int.convert_checked.loc4_129: init %i32.builtin = call %AsI32.ref.loc4_121(%int_3) [concrete = constants.%int_3.a0f] -// CHECK:STDOUT: %.loc4_130.1: %tuple.type = tuple_literal (%int.convert_checked.loc4_99, %int.convert_checked.loc4_114, %int.convert_checked.loc4_129) +// CHECK:STDOUT: %AsI32.call.loc4_129: init %i32.builtin = call %AsI32.ref.loc4_121(%int_3) [concrete = constants.%int_3.a0f] +// CHECK:STDOUT: %.loc4_130.1: %tuple.type = tuple_literal (%AsI32.call.loc4_99, %AsI32.call.loc4_114, %AsI32.call.loc4_129) // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] // CHECK:STDOUT: %.loc4_130.2: ref %i32.builtin = array_index file.%arr.var, %int_0 -// CHECK:STDOUT: %.loc4_130.3: init %i32.builtin = initialize_from %int.convert_checked.loc4_99 to %.loc4_130.2 [concrete = constants.%int_1.f38] +// CHECK:STDOUT: %.loc4_130.3: init %i32.builtin = initialize_from %AsI32.call.loc4_99 to %.loc4_130.2 [concrete = constants.%int_1.f38] // CHECK:STDOUT: %int_1.loc4_130: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %.loc4_130.4: ref %i32.builtin = array_index file.%arr.var, %int_1.loc4_130 -// CHECK:STDOUT: %.loc4_130.5: init %i32.builtin = initialize_from %int.convert_checked.loc4_114 to %.loc4_130.4 [concrete = constants.%int_2.5a1] +// CHECK:STDOUT: %.loc4_130.5: init %i32.builtin = initialize_from %AsI32.call.loc4_114 to %.loc4_130.4 [concrete = constants.%int_2.5a1] // CHECK:STDOUT: %int_2.loc4_130: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %.loc4_130.6: ref %i32.builtin = array_index file.%arr.var, %int_2.loc4_130 -// CHECK:STDOUT: %.loc4_130.7: init %i32.builtin = initialize_from %int.convert_checked.loc4_129 to %.loc4_130.6 [concrete = constants.%int_3.a0f] +// CHECK:STDOUT: %.loc4_130.7: init %i32.builtin = initialize_from %AsI32.call.loc4_129 to %.loc4_130.6 [concrete = constants.%int_3.a0f] // CHECK:STDOUT: %.loc4_130.8: init %array_type = array_init (%.loc4_130.3, %.loc4_130.5, %.loc4_130.7) to file.%arr.var [concrete = constants.%array] // CHECK:STDOUT: %.loc4_1: init %array_type = converted %.loc4_130.1, %.loc4_130.8 [concrete = constants.%array] // CHECK:STDOUT: assign file.%arr.var, %.loc4_1 diff --git a/toolchain/check/testdata/function/builtin/method.carbon b/toolchain/check/testdata/function/builtin/method.carbon index e77260b332bb..b13a41b4626e 100644 --- a/toolchain/check/testdata/function/builtin/method.carbon +++ b/toolchain/check/testdata/function/builtin/method.carbon @@ -29,68 +29,68 @@ var arr: array(i32, (1 as i32).(I.F)(2)); // CHECK:STDOUT: %Self.826: %I.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type.b70: type = facet_access_type %Self.826 [symbolic] // CHECK:STDOUT: %pattern_type.6de: type = pattern_type %Self.as_type.b70 [symbolic] -// CHECK:STDOUT: %F.type.cf0: type = fn_type @F.loc16 [concrete] -// CHECK:STDOUT: %F.bc6: %F.type.cf0 = struct_value () [concrete] +// CHECK:STDOUT: %I.F.type: type = fn_type @I.F [concrete] +// CHECK:STDOUT: %I.F: %I.F.type = struct_value () [concrete] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] -// CHECK:STDOUT: %assoc0.82e: %I.assoc_type = assoc_entity element0, @I.%F.decl [concrete] +// CHECK:STDOUT: %assoc0.82e: %I.assoc_type = assoc_entity element0, @I.%I.F.decl [concrete] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %F.type.066: type = fn_type @F.loc20 [concrete] -// CHECK:STDOUT: %F.9ec: %F.type.066 = struct_value () [concrete] +// CHECK:STDOUT: %i32.as.I.impl.F.type: type = fn_type @i32.as.I.impl.F [concrete] +// CHECK:STDOUT: %i32.as.I.impl.F: %i32.as.I.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %I.facet: %I.type = facet_value %i32, (%I.impl_witness) [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %As.type.90f: type = generic_interface_type @As [concrete] // CHECK:STDOUT: %As.generic: %As.type.90f = struct_value () [concrete] // CHECK:STDOUT: %As.type.fd4: type = facet_type <@As, @As(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.99b: type = fn_type @Convert.1, @As(%i32) [concrete] +// CHECK:STDOUT: %As.Convert.type.99b: type = fn_type @As.Convert, @As(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.3, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.type.2fd: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [concrete] // CHECK:STDOUT: %From: Core.IntLiteral = bind_symbolic_name From, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.708: type = fn_type @Convert.4, @ImplicitAs.impl.971(%From) [symbolic] -// CHECK:STDOUT: %Convert.c68: %Convert.type.708 = struct_value () [symbolic] -// CHECK:STDOUT: %Convert.type.71e: type = fn_type @Convert.2, @ImplicitAs(Core.IntLiteral) [concrete] -// CHECK:STDOUT: %Convert.type.062: type = fn_type @Convert.5, @As.impl.686(%To) [symbolic] -// CHECK:STDOUT: %Convert.527: %Convert.type.062 = struct_value () [symbolic] -// CHECK:STDOUT: %As.impl_witness.6b4: = impl_witness imports.%As.impl_witness_table.eb4, @As.impl.686(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.4fd: type = fn_type @Convert.5, @As.impl.686(%int_32) [concrete] -// CHECK:STDOUT: %Convert.197: %Convert.type.4fd = struct_value () [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.type.708: type = fn_type @Int.as.ImplicitAs.impl.Convert, @Int.as.ImplicitAs.impl(%From) [symbolic] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.c68: %Int.as.ImplicitAs.impl.Convert.type.708 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.Convert.type.71e: type = fn_type @ImplicitAs.Convert, @ImplicitAs(Core.IntLiteral) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.062: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.527: %Core.IntLiteral.as.As.impl.Convert.type.062 = struct_value () [symbolic] +// CHECK:STDOUT: %As.impl_witness.6b4: = impl_witness imports.%As.impl_witness_table.eb4, @Core.IntLiteral.as.As.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.4fd: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.197: %Core.IntLiteral.as.As.impl.Convert.type.4fd = struct_value () [concrete] // CHECK:STDOUT: %As.facet: %As.type.fd4 = facet_value Core.IntLiteral, (%As.impl_witness.6b4) [concrete] -// CHECK:STDOUT: %.982: type = fn_type_with_self_type %Convert.type.99b, %As.facet [concrete] -// CHECK:STDOUT: %Convert.bound.c1b: = bound_method %int_1.5b8, %Convert.197 [concrete] -// CHECK:STDOUT: %Convert.specific_fn.aad: = specific_function %Convert.197, @Convert.5(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.082: = bound_method %int_1.5b8, %Convert.specific_fn.aad [concrete] +// CHECK:STDOUT: %.982: type = fn_type_with_self_type %As.Convert.type.99b, %As.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert.197 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.As.impl.Convert.197, @Core.IntLiteral.as.As.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.082: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] -// CHECK:STDOUT: %.5c7: type = fn_type_with_self_type %F.type.cf0, %I.facet [concrete] -// CHECK:STDOUT: %F.bound: = bound_method %int_1.5d2, %F.9ec [concrete] +// CHECK:STDOUT: %.5c7: type = fn_type_with_self_type %I.F.type, %I.facet [concrete] +// CHECK:STDOUT: %i32.as.I.impl.F.bound: = bound_method %int_1.5d2, %i32.as.I.impl.F [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.3, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet.921: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet.921 [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn.b6f: = specific_function %Convert.956, @Convert.3(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn.b6f [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet.921 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %int_3.822: %i32 = int_value 3 [concrete] -// CHECK:STDOUT: %ImplicitAs.impl_witness.a11: = impl_witness imports.%ImplicitAs.impl_witness_table.1d9, @ImplicitAs.impl.971(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.4ad: type = fn_type @Convert.4, @ImplicitAs.impl.971(%int_32) [concrete] -// CHECK:STDOUT: %Convert.960: %Convert.type.4ad = struct_value () [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.a11: = impl_witness imports.%ImplicitAs.impl_witness_table.1d9, @Int.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.type.4ad: type = fn_type @Int.as.ImplicitAs.impl.Convert, @Int.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.960: %Int.as.ImplicitAs.impl.Convert.type.4ad = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet.f49: %ImplicitAs.type.2fd = facet_value %i32, (%ImplicitAs.impl_witness.a11) [concrete] -// CHECK:STDOUT: %.0ea: type = fn_type_with_self_type %Convert.type.71e, %ImplicitAs.facet.f49 [concrete] -// CHECK:STDOUT: %Convert.bound.2d6: = bound_method %int_3.822, %Convert.960 [concrete] -// CHECK:STDOUT: %Convert.specific_fn.8a8: = specific_function %Convert.960, @Convert.4(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.c6f: = bound_method %int_3.822, %Convert.specific_fn.8a8 [concrete] +// CHECK:STDOUT: %.0ea: type = fn_type_with_self_type %ImplicitAs.Convert.type.71e, %ImplicitAs.facet.f49 [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.bound: = bound_method %int_3.822, %Int.as.ImplicitAs.impl.Convert.960 [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Int.as.ImplicitAs.impl.Convert.960, @Int.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.c6f: = bound_method %int_3.822, %Int.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [concrete] // CHECK:STDOUT: %array_type: type = array_type %int_3.1ba, %i32 [concrete] // CHECK:STDOUT: %pattern_type.5d8: type = pattern_type %array_type [concrete] @@ -106,12 +106,12 @@ var arr: array(i32, (1 as i32).(I.F)(2)); // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.As: %As.type.90f = import_ref Core//prelude/parts/as, As, loaded [concrete = constants.%As.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] -// CHECK:STDOUT: %Core.import_ref.85c: @ImplicitAs.impl.971.%Convert.type (%Convert.type.708) = import_ref Core//prelude/parts/int, loc20_44, loaded [symbolic = @ImplicitAs.impl.971.%Convert (constants.%Convert.c68)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.1d9 = impl_witness_table (%Core.import_ref.85c), @ImplicitAs.impl.971 [concrete] -// CHECK:STDOUT: %Core.import_ref.78a: @As.impl.686.%Convert.type (%Convert.type.062) = import_ref Core//prelude/parts/int, loc25_39, loaded [symbolic = @As.impl.686.%Convert (constants.%Convert.527)] -// CHECK:STDOUT: %As.impl_witness_table.eb4 = impl_witness_table (%Core.import_ref.78a), @As.impl.686 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.85c: @Int.as.ImplicitAs.impl.%Int.as.ImplicitAs.impl.Convert.type (%Int.as.ImplicitAs.impl.Convert.type.708) = import_ref Core//prelude/parts/int, loc20_44, loaded [symbolic = @Int.as.ImplicitAs.impl.%Int.as.ImplicitAs.impl.Convert (constants.%Int.as.ImplicitAs.impl.Convert.c68)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.1d9 = impl_witness_table (%Core.import_ref.85c), @Int.as.ImplicitAs.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.78a: @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert.type (%Core.IntLiteral.as.As.impl.Convert.type.062) = import_ref Core//prelude/parts/int, loc25_39, loaded [symbolic = @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert (constants.%Core.IntLiteral.as.As.impl.Convert.527)] +// CHECK:STDOUT: %As.impl_witness_table.eb4 = impl_witness_table (%Core.import_ref.78a), @Core.IntLiteral.as.As.impl [concrete] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -123,12 +123,12 @@ var arr: array(i32, (1 as i32).(I.F)(2)); // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @i32.as.I.impl [concrete] {} { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (@I.impl.%F.decl), @I.impl [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (@i32.as.I.impl.%i32.as.I.impl.F.decl), @i32.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %arr.patt: %pattern_type.5d8 = binding_pattern arr [concrete] @@ -141,35 +141,35 @@ var arr: array(i32, (1 as i32).(I.F)(2)); // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_32.loc23_27: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc23_27: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc23_24: %.982 = impl_witness_access constants.%As.impl_witness.6b4, element0 [concrete = constants.%Convert.197] -// CHECK:STDOUT: %bound_method.loc23_24.1: = bound_method %int_1, %impl.elem0.loc23_24 [concrete = constants.%Convert.bound.c1b] -// CHECK:STDOUT: %specific_fn.loc23_24: = specific_function %impl.elem0.loc23_24, @Convert.5(constants.%int_32) [concrete = constants.%Convert.specific_fn.aad] +// CHECK:STDOUT: %impl.elem0.loc23_24: %.982 = impl_witness_access constants.%As.impl_witness.6b4, element0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.197] +// CHECK:STDOUT: %bound_method.loc23_24.1: = bound_method %int_1, %impl.elem0.loc23_24 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc23_24: = specific_function %impl.elem0.loc23_24, @Core.IntLiteral.as.As.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc23_24.2: = bound_method %int_1, %specific_fn.loc23_24 [concrete = constants.%bound_method.082] -// CHECK:STDOUT: %int.convert_checked.loc23_24: init %i32 = call %bound_method.loc23_24.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc23_24.1: %i32 = value_of_initializer %int.convert_checked.loc23_24 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.call: init %i32 = call %bound_method.loc23_24.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc23_24.1: %i32 = value_of_initializer %Core.IntLiteral.as.As.impl.Convert.call [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc23_24.2: %i32 = converted %int_1, %.loc23_24.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %I.ref: type = name_ref I, %I.decl [concrete = constants.%I.type] // CHECK:STDOUT: %F.ref: %I.assoc_type = name_ref F, @I.%assoc0 [concrete = constants.%assoc0.82e] -// CHECK:STDOUT: %impl.elem0.loc23_31: %.5c7 = impl_witness_access constants.%I.impl_witness, element0 [concrete = constants.%F.9ec] -// CHECK:STDOUT: %bound_method.loc23_31: = bound_method %.loc23_24.2, %impl.elem0.loc23_31 [concrete = constants.%F.bound] +// CHECK:STDOUT: %impl.elem0.loc23_31: %.5c7 = impl_witness_access constants.%I.impl_witness, element0 [concrete = constants.%i32.as.I.impl.F] +// CHECK:STDOUT: %bound_method.loc23_31: = bound_method %.loc23_24.2, %impl.elem0.loc23_31 [concrete = constants.%i32.as.I.impl.F.bound] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %impl.elem0.loc23_38: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc23_38.1: = bound_method %int_2, %impl.elem0.loc23_38 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc23_38: = specific_function %impl.elem0.loc23_38, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn.b6f] +// CHECK:STDOUT: %impl.elem0.loc23_38: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc23_38.1: = bound_method %int_2, %impl.elem0.loc23_38 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc23_38: = specific_function %impl.elem0.loc23_38, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc23_38.2: = bound_method %int_2, %specific_fn.loc23_38 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc23_38: init %i32 = call %bound_method.loc23_38.2(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc23_38.1: %i32 = value_of_initializer %int.convert_checked.loc23_38 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc23_38.2(%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc23_38.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc23_38.2: %i32 = converted %int_2, %.loc23_38.1 [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %int.sadd: init %i32 = call %bound_method.loc23_31(%.loc23_24.2, %.loc23_38.2) [concrete = constants.%int_3.822] -// CHECK:STDOUT: %impl.elem0.loc23_39: %.0ea = impl_witness_access constants.%ImplicitAs.impl_witness.a11, element0 [concrete = constants.%Convert.960] -// CHECK:STDOUT: %bound_method.loc23_39.1: = bound_method %int.sadd, %impl.elem0.loc23_39 [concrete = constants.%Convert.bound.2d6] -// CHECK:STDOUT: %specific_fn.loc23_39: = specific_function %impl.elem0.loc23_39, @Convert.4(constants.%int_32) [concrete = constants.%Convert.specific_fn.8a8] -// CHECK:STDOUT: %bound_method.loc23_39.2: = bound_method %int.sadd, %specific_fn.loc23_39 [concrete = constants.%bound_method.c6f] -// CHECK:STDOUT: %.loc23_39.1: %i32 = value_of_initializer %int.sadd [concrete = constants.%int_3.822] -// CHECK:STDOUT: %.loc23_39.2: %i32 = converted %int.sadd, %.loc23_39.1 [concrete = constants.%int_3.822] -// CHECK:STDOUT: %int.convert_checked.loc23_39: init Core.IntLiteral = call %bound_method.loc23_39.2(%.loc23_39.2) [concrete = constants.%int_3.1ba] -// CHECK:STDOUT: %.loc23_39.3: Core.IntLiteral = value_of_initializer %int.convert_checked.loc23_39 [concrete = constants.%int_3.1ba] -// CHECK:STDOUT: %.loc23_39.4: Core.IntLiteral = converted %int.sadd, %.loc23_39.3 [concrete = constants.%int_3.1ba] +// CHECK:STDOUT: %i32.as.I.impl.F.call: init %i32 = call %bound_method.loc23_31(%.loc23_24.2, %.loc23_38.2) [concrete = constants.%int_3.822] +// CHECK:STDOUT: %impl.elem0.loc23_39: %.0ea = impl_witness_access constants.%ImplicitAs.impl_witness.a11, element0 [concrete = constants.%Int.as.ImplicitAs.impl.Convert.960] +// CHECK:STDOUT: %bound_method.loc23_39.1: = bound_method %i32.as.I.impl.F.call, %impl.elem0.loc23_39 [concrete = constants.%Int.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc23_39: = specific_function %impl.elem0.loc23_39, @Int.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Int.as.ImplicitAs.impl.Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc23_39.2: = bound_method %i32.as.I.impl.F.call, %specific_fn.loc23_39 [concrete = constants.%bound_method.c6f] +// CHECK:STDOUT: %.loc23_39.1: %i32 = value_of_initializer %i32.as.I.impl.F.call [concrete = constants.%int_3.822] +// CHECK:STDOUT: %.loc23_39.2: %i32 = converted %i32.as.I.impl.F.call, %.loc23_39.1 [concrete = constants.%int_3.822] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call: init Core.IntLiteral = call %bound_method.loc23_39.2(%.loc23_39.2) [concrete = constants.%int_3.1ba] +// CHECK:STDOUT: %.loc23_39.3: Core.IntLiteral = value_of_initializer %Int.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_3.1ba] +// CHECK:STDOUT: %.loc23_39.4: Core.IntLiteral = converted %i32.as.I.impl.F.call, %.loc23_39.3 [concrete = constants.%int_3.1ba] // CHECK:STDOUT: %array_type: type = array_type %.loc23_39.4, %i32.loc23_16 [concrete = constants.%array_type] // CHECK:STDOUT: } // CHECK:STDOUT: %arr: ref %array_type = bind_name arr, %arr.var [concrete = %arr.var] @@ -177,44 +177,44 @@ var arr: array(i32, (1 as i32).(I.F)(2)); // CHECK:STDOUT: // CHECK:STDOUT: interface @I { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.826] -// CHECK:STDOUT: %F.decl: %F.type.cf0 = fn_decl @F.loc16 [concrete = constants.%F.bc6] { -// CHECK:STDOUT: %self.patt: @F.loc16.%pattern_type (%pattern_type.6de) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.loc16.%pattern_type (%pattern_type.6de) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %other.patt: @F.loc16.%pattern_type (%pattern_type.6de) = binding_pattern other [concrete] -// CHECK:STDOUT: %other.param_patt: @F.loc16.%pattern_type (%pattern_type.6de) = value_param_pattern %other.patt, call_param1 [concrete] -// CHECK:STDOUT: %return.patt: @F.loc16.%pattern_type (%pattern_type.6de) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @F.loc16.%pattern_type (%pattern_type.6de) = out_param_pattern %return.patt, call_param2 [concrete] +// CHECK:STDOUT: %I.F.decl: %I.F.type = fn_decl @I.F [concrete = constants.%I.F] { +// CHECK:STDOUT: %self.patt: @I.F.%pattern_type (%pattern_type.6de) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @I.F.%pattern_type (%pattern_type.6de) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %other.patt: @I.F.%pattern_type (%pattern_type.6de) = binding_pattern other [concrete] +// CHECK:STDOUT: %other.param_patt: @I.F.%pattern_type (%pattern_type.6de) = value_param_pattern %other.patt, call_param1 [concrete] +// CHECK:STDOUT: %return.patt: @I.F.%pattern_type (%pattern_type.6de) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @I.F.%pattern_type (%pattern_type.6de) = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc16_36: %I.type = name_ref Self, @I.%Self [symbolic = %Self (constants.%Self.826)] -// CHECK:STDOUT: %Self.as_type.loc16_36: type = facet_access_type %Self.ref.loc16_36 [symbolic = %Self.as_type.loc16_14.2 (constants.%Self.as_type.b70)] -// CHECK:STDOUT: %.loc16_36: type = converted %Self.ref.loc16_36, %Self.as_type.loc16_36 [symbolic = %Self.as_type.loc16_14.2 (constants.%Self.as_type.b70)] -// CHECK:STDOUT: %self.param: @F.loc16.%Self.as_type.loc16_14.2 (%Self.as_type.b70) = value_param call_param0 -// CHECK:STDOUT: %.loc16_14.1: type = splice_block %.loc16_14.2 [symbolic = %Self.as_type.loc16_14.2 (constants.%Self.as_type.b70)] { +// CHECK:STDOUT: %Self.as_type.loc16_36: type = facet_access_type %Self.ref.loc16_36 [symbolic = %Self.as_type.loc16_14.1 (constants.%Self.as_type.b70)] +// CHECK:STDOUT: %.loc16_36: type = converted %Self.ref.loc16_36, %Self.as_type.loc16_36 [symbolic = %Self.as_type.loc16_14.1 (constants.%Self.as_type.b70)] +// CHECK:STDOUT: %self.param: @I.F.%Self.as_type.loc16_14.1 (%Self.as_type.b70) = value_param call_param0 +// CHECK:STDOUT: %.loc16_14.1: type = splice_block %.loc16_14.2 [symbolic = %Self.as_type.loc16_14.1 (constants.%Self.as_type.b70)] { // CHECK:STDOUT: %Self.ref.loc16_14: %I.type = name_ref Self, @I.%Self [symbolic = %Self (constants.%Self.826)] -// CHECK:STDOUT: %Self.as_type.loc16_14.1: type = facet_access_type %Self.ref.loc16_14 [symbolic = %Self.as_type.loc16_14.2 (constants.%Self.as_type.b70)] -// CHECK:STDOUT: %.loc16_14.2: type = converted %Self.ref.loc16_14, %Self.as_type.loc16_14.1 [symbolic = %Self.as_type.loc16_14.2 (constants.%Self.as_type.b70)] +// CHECK:STDOUT: %Self.as_type.loc16_14.2: type = facet_access_type %Self.ref.loc16_14 [symbolic = %Self.as_type.loc16_14.1 (constants.%Self.as_type.b70)] +// CHECK:STDOUT: %.loc16_14.2: type = converted %Self.ref.loc16_14, %Self.as_type.loc16_14.2 [symbolic = %Self.as_type.loc16_14.1 (constants.%Self.as_type.b70)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.loc16.%Self.as_type.loc16_14.2 (%Self.as_type.b70) = bind_name self, %self.param -// CHECK:STDOUT: %other.param: @F.loc16.%Self.as_type.loc16_14.2 (%Self.as_type.b70) = value_param call_param1 -// CHECK:STDOUT: %.loc16_27.1: type = splice_block %.loc16_27.2 [symbolic = %Self.as_type.loc16_14.2 (constants.%Self.as_type.b70)] { +// CHECK:STDOUT: %self: @I.F.%Self.as_type.loc16_14.1 (%Self.as_type.b70) = bind_name self, %self.param +// CHECK:STDOUT: %other.param: @I.F.%Self.as_type.loc16_14.1 (%Self.as_type.b70) = value_param call_param1 +// CHECK:STDOUT: %.loc16_27.1: type = splice_block %.loc16_27.2 [symbolic = %Self.as_type.loc16_14.1 (constants.%Self.as_type.b70)] { // CHECK:STDOUT: %Self.ref.loc16_27: %I.type = name_ref Self, @I.%Self [symbolic = %Self (constants.%Self.826)] -// CHECK:STDOUT: %Self.as_type.loc16_27: type = facet_access_type %Self.ref.loc16_27 [symbolic = %Self.as_type.loc16_14.2 (constants.%Self.as_type.b70)] -// CHECK:STDOUT: %.loc16_27.2: type = converted %Self.ref.loc16_27, %Self.as_type.loc16_27 [symbolic = %Self.as_type.loc16_14.2 (constants.%Self.as_type.b70)] +// CHECK:STDOUT: %Self.as_type.loc16_27: type = facet_access_type %Self.ref.loc16_27 [symbolic = %Self.as_type.loc16_14.1 (constants.%Self.as_type.b70)] +// CHECK:STDOUT: %.loc16_27.2: type = converted %Self.ref.loc16_27, %Self.as_type.loc16_27 [symbolic = %Self.as_type.loc16_14.1 (constants.%Self.as_type.b70)] // CHECK:STDOUT: } -// CHECK:STDOUT: %other: @F.loc16.%Self.as_type.loc16_14.2 (%Self.as_type.b70) = bind_name other, %other.param -// CHECK:STDOUT: %return.param: ref @F.loc16.%Self.as_type.loc16_14.2 (%Self.as_type.b70) = out_param call_param2 -// CHECK:STDOUT: %return: ref @F.loc16.%Self.as_type.loc16_14.2 (%Self.as_type.b70) = return_slot %return.param +// CHECK:STDOUT: %other: @I.F.%Self.as_type.loc16_14.1 (%Self.as_type.b70) = bind_name other, %other.param +// CHECK:STDOUT: %return.param: ref @I.F.%Self.as_type.loc16_14.1 (%Self.as_type.b70) = out_param call_param2 +// CHECK:STDOUT: %return: ref @I.F.%Self.as_type.loc16_14.1 (%Self.as_type.b70) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0.82e] +// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %I.F.decl [concrete = constants.%assoc0.82e] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F = %assoc0 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%I.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: %i32 as %I.ref { -// CHECK:STDOUT: %F.decl: %F.type.066 = fn_decl @F.loc20 [concrete = constants.%F.9ec] { +// CHECK:STDOUT: impl @i32.as.I.impl: %i32 as %I.ref { +// CHECK:STDOUT: %i32.as.I.impl.F.decl: %i32.as.I.impl.F.type = fn_decl @i32.as.I.impl.F [concrete = constants.%i32.as.I.impl.F] { // CHECK:STDOUT: %self.patt: %pattern_type.7ce = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.7ce = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %other.patt: %pattern_type.7ce = binding_pattern other [concrete] @@ -241,29 +241,29 @@ var arr: array(i32, (1 as i32).(I.F)(2)); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %i32.as.I.impl.F.decl // CHECK:STDOUT: witness = file.%I.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc16(@I.%Self: %I.type) { +// CHECK:STDOUT: generic fn @I.F(@I.%Self: %I.type) { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.826)] -// CHECK:STDOUT: %Self.as_type.loc16_14.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc16_14.2 (constants.%Self.as_type.b70)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc16_14.2 [symbolic = %pattern_type (constants.%pattern_type.6de)] +// CHECK:STDOUT: %Self.as_type.loc16_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc16_14.1 (constants.%Self.as_type.b70)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc16_14.1 [symbolic = %pattern_type (constants.%pattern_type.6de)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @F.loc16.%Self.as_type.loc16_14.2 (%Self.as_type.b70), %other.param: @F.loc16.%Self.as_type.loc16_14.2 (%Self.as_type.b70)) -> @F.loc16.%Self.as_type.loc16_14.2 (%Self.as_type.b70); +// CHECK:STDOUT: fn(%self.param: @I.F.%Self.as_type.loc16_14.1 (%Self.as_type.b70), %other.param: @I.F.%Self.as_type.loc16_14.1 (%Self.as_type.b70)) -> @I.F.%Self.as_type.loc16_14.1 (%Self.as_type.b70); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc20(%self.param: %i32, %other.param: %i32) -> %i32 = "int.sadd"; +// CHECK:STDOUT: fn @i32.as.I.impl.F(%self.param: %i32, %other.param: %i32) -> %i32 = "int.sadd"; // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc16(constants.%Self.826) { +// CHECK:STDOUT: specific @I.F(constants.%Self.826) { // CHECK:STDOUT: %Self => constants.%Self.826 -// CHECK:STDOUT: %Self.as_type.loc16_14.2 => constants.%Self.as_type.b70 +// CHECK:STDOUT: %Self.as_type.loc16_14.1 => constants.%Self.as_type.b70 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.6de // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc16(constants.%I.facet) { +// CHECK:STDOUT: specific @I.F(constants.%I.facet) { // CHECK:STDOUT: %Self => constants.%I.facet -// CHECK:STDOUT: %Self.as_type.loc16_14.2 => constants.%i32 +// CHECK:STDOUT: %Self.as_type.loc16_14.1 => constants.%i32 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7ce // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/call/alias.carbon b/toolchain/check/testdata/function/call/alias.carbon index 14563c8a3f32..41e1615f77e0 100644 --- a/toolchain/check/testdata/function/call/alias.carbon +++ b/toolchain/check/testdata/function/call/alias.carbon @@ -31,10 +31,10 @@ fn Main() { // CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete] // CHECK:STDOUT: %Main: %Main.type = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.1, @Destroy.impl(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a63: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ea3: %T.as.Destroy.impl.Op.type.a63 = struct_value () [concrete] // CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ea3, @Op.1(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(%empty_tuple.type) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -91,11 +91,11 @@ fn Main() { // CHECK:STDOUT: %.loc20_11.3: type = converted %.loc20_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %b: ref %empty_tuple.type = bind_name b, %b.var -// CHECK:STDOUT: %Op.bound: = bound_method %b.var, constants.%Op.ea3 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.ea3, @Op.1(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %b.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %b.var, constants.%T.as.Destroy.impl.Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %b.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.843 = addr_of %b.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/call/fail_not_callable.carbon b/toolchain/check/testdata/function/call/fail_not_callable.carbon index 423509e7a0e7..72a337076a8d 100644 --- a/toolchain/check/testdata/function/call/fail_not_callable.carbon +++ b/toolchain/check/testdata/function/call/fail_not_callable.carbon @@ -33,10 +33,10 @@ fn Run() { // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %str: String = string_literal "hello" [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.1, @Destroy.impl(%i32) [concrete] -// CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a17: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.e6a: %T.as.Destroy.impl.Op.type.a17 = struct_value () [concrete] // CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] -// CHECK:STDOUT: %Op.specific_fn.014: = specific_function %Op.e6a, @Op.1(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(%i32) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -73,11 +73,11 @@ fn Run() { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %i32 = bind_name x, %x.var -// CHECK:STDOUT: %Op.bound: = bound_method %x.var, constants.%Op.e6a -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.e6a, @Op.1(constants.%i32) [concrete = constants.%Op.specific_fn.014] -// CHECK:STDOUT: %bound_method: = bound_method %x.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %x.var, constants.%T.as.Destroy.impl.Op.e6a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %x.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.235 = addr_of %x.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/call/fail_return_type_mismatch.carbon b/toolchain/check/testdata/function/call/fail_return_type_mismatch.carbon index 8db28f8f0713..4827e8dd1fc8 100644 --- a/toolchain/check/testdata/function/call/fail_return_type_mismatch.carbon +++ b/toolchain/check/testdata/function/call/fail_return_type_mismatch.carbon @@ -46,10 +46,10 @@ fn Run() { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.1, @Destroy.impl(%i32) [concrete] -// CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a17: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.e6a: %T.as.Destroy.impl.Op.type.a17 = struct_value () [concrete] // CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.e6a, @Op.1(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(%i32) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -79,9 +79,9 @@ fn Run() { // CHECK:STDOUT: %return.param_patt: %pattern_type.3de = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [concrete = constants.%int_64] -// CHECK:STDOUT: %float.make_type: init type = call constants.%Float(%int_64) [concrete = f64] -// CHECK:STDOUT: %.loc15_13.1: type = value_of_initializer %float.make_type [concrete = f64] -// CHECK:STDOUT: %.loc15_13.2: type = converted %float.make_type, %.loc15_13.1 [concrete = f64] +// CHECK:STDOUT: %Float.call: init type = call constants.%Float(%int_64) [concrete = f64] +// CHECK:STDOUT: %.loc15_13.1: type = value_of_initializer %Float.call [concrete = f64] +// CHECK:STDOUT: %.loc15_13.2: type = converted %Float.call, %.loc15_13.1 [concrete = f64] // CHECK:STDOUT: %return.param: ref f64 = out_param call_param0 // CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } @@ -110,11 +110,11 @@ fn Run() { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %i32 = bind_name x, %x.var -// CHECK:STDOUT: %Op.bound: = bound_method %x.var, constants.%Op.e6a -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.e6a, @Op.1(constants.%i32) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %x.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %x.var, constants.%T.as.Destroy.impl.Op.e6a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %x.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.235 = addr_of %x.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/call/i32.carbon b/toolchain/check/testdata/function/call/i32.carbon index 0dc43a2b89ea..c2301f4584ca 100644 --- a/toolchain/check/testdata/function/call/i32.carbon +++ b/toolchain/check/testdata/function/call/i32.carbon @@ -37,24 +37,24 @@ fn Main() { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.1, @Destroy.impl(%i32) [concrete] -// CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a17: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.e6a: %T.as.Destroy.impl.Op.type.a17 = struct_value () [concrete] // CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.e6a, @Op.1(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(%i32) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -67,8 +67,8 @@ fn Main() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -114,12 +114,12 @@ fn Main() { // CHECK:STDOUT: %b.var: ref %i32 = var %b.var_patt // CHECK:STDOUT: %Echo.ref: %Echo.type = name_ref Echo, file.%Echo.decl [concrete = constants.%Echo] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc20_21.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc20_21.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc20_21.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc20_21.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc20_21.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc20_21.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc20_21.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc20_21.2: %i32 = converted %int_1, %.loc20_21.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %Echo.call: init %i32 = call %Echo.ref(%.loc20_21.2) // CHECK:STDOUT: assign %b.var, %Echo.call @@ -128,11 +128,11 @@ fn Main() { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var -// CHECK:STDOUT: %Op.bound: = bound_method %b.var, constants.%Op.e6a -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.e6a, @Op.1(constants.%i32) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc20_3: = bound_method %b.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %b.var, constants.%T.as.Destroy.impl.Op.e6a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc20_3: = bound_method %b.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.235 = addr_of %b.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc20_3(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc20_3(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/call/more_param_ir.carbon b/toolchain/check/testdata/function/call/more_param_ir.carbon index cb23d4b54a05..f1f41aade1c8 100644 --- a/toolchain/check/testdata/function/call/more_param_ir.carbon +++ b/toolchain/check/testdata/function/call/more_param_ir.carbon @@ -41,30 +41,30 @@ fn Main() { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %tuple: %tuple.type.a1c = tuple_value (%int_1.5d2) [concrete] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %int_6.462: Core.IntLiteral = int_value 6 [concrete] -// CHECK:STDOUT: %Convert.bound.ce9: = bound_method %int_6.462, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.efa: = bound_method %int_6.462, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ce9: = bound_method %int_6.462, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.efa: = bound_method %int_6.462, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_6.e56: %i32 = int_value 6 [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.438: type = fn_type @Op.1, @Destroy.impl(%tuple.type.a1c) [concrete] -// CHECK:STDOUT: %Op.c8e: %Op.type.438 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.438: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%tuple.type.a1c) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.c8e: %T.as.Destroy.impl.Op.type.438 = struct_value () [concrete] // CHECK:STDOUT: %ptr.0b7: type = ptr_type %tuple.type.a1c [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.c8e, @Op.1(%tuple.type.a1c) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.c8e, @T.as.Destroy.impl.Op(%tuple.type.a1c) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -77,8 +77,8 @@ fn Main() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -125,12 +125,12 @@ fn Main() { // CHECK:STDOUT: %x.var: ref %tuple.type.a1c = var %x.var_patt // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %.loc18_22.1: %tuple.type.985 = tuple_literal (%int_1) -// CHECK:STDOUT: %impl.elem0.loc18: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc18_22.1: = bound_method %int_1, %impl.elem0.loc18 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc18: = specific_function %impl.elem0.loc18, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc18: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc18_22.1: = bound_method %int_1, %impl.elem0.loc18 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc18: = specific_function %impl.elem0.loc18, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc18_22.2: = bound_method %int_1, %specific_fn.loc18 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc18: init %i32 = call %bound_method.loc18_22.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc18_22.2: init %i32 = converted %int_1, %int.convert_checked.loc18 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc18: init %i32 = call %bound_method.loc18_22.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc18_22.2: init %i32 = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc18 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc18_22.3: init %tuple.type.a1c = tuple_init (%.loc18_22.2) to %x.var [concrete = constants.%tuple] // CHECK:STDOUT: %.loc18_3: init %tuple.type.a1c = converted %.loc18_22.1, %.loc18_22.3 [concrete = constants.%tuple] // CHECK:STDOUT: assign %x.var, %.loc18_3 @@ -147,19 +147,19 @@ fn Main() { // CHECK:STDOUT: %tuple.elem0: ref %i32 = tuple_access %x.ref, element0 // CHECK:STDOUT: %int_6: Core.IntLiteral = int_value 6 [concrete = constants.%int_6.462] // CHECK:STDOUT: %.loc20_8: %i32 = bind_value %tuple.elem0 -// CHECK:STDOUT: %impl.elem0.loc20: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc20_12.1: = bound_method %int_6, %impl.elem0.loc20 [concrete = constants.%Convert.bound.ce9] -// CHECK:STDOUT: %specific_fn.loc20: = specific_function %impl.elem0.loc20, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc20: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc20_12.1: = bound_method %int_6, %impl.elem0.loc20 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ce9] +// CHECK:STDOUT: %specific_fn.loc20: = specific_function %impl.elem0.loc20, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc20_12.2: = bound_method %int_6, %specific_fn.loc20 [concrete = constants.%bound_method.efa] -// CHECK:STDOUT: %int.convert_checked.loc20: init %i32 = call %bound_method.loc20_12.2(%int_6) [concrete = constants.%int_6.e56] -// CHECK:STDOUT: %.loc20_12.1: %i32 = value_of_initializer %int.convert_checked.loc20 [concrete = constants.%int_6.e56] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc20: init %i32 = call %bound_method.loc20_12.2(%int_6) [concrete = constants.%int_6.e56] +// CHECK:STDOUT: %.loc20_12.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc20 [concrete = constants.%int_6.e56] // CHECK:STDOUT: %.loc20_12.2: %i32 = converted %int_6, %.loc20_12.1 [concrete = constants.%int_6.e56] // CHECK:STDOUT: %Foo.call: init %empty_tuple.type = call %Foo.ref(%.loc20_8, %.loc20_12.2) -// CHECK:STDOUT: %Op.bound: = bound_method %x.var, constants.%Op.c8e -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.c8e, @Op.1(constants.%tuple.type.a1c) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc18_3: = bound_method %x.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %x.var, constants.%T.as.Destroy.impl.Op.c8e +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.c8e, @T.as.Destroy.impl.Op(constants.%tuple.type.a1c) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc18_3: = bound_method %x.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.0b7 = addr_of %x.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc18_3(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc18_3(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/call/params_one.carbon b/toolchain/check/testdata/function/call/params_one.carbon index 496d4e64014f..b87cbf6ac366 100644 --- a/toolchain/check/testdata/function/call/params_one.carbon +++ b/toolchain/check/testdata/function/call/params_one.carbon @@ -35,18 +35,18 @@ fn Main() { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -59,8 +59,8 @@ fn Main() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -93,12 +93,12 @@ fn Main() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Foo.ref: %Foo.type = name_ref Foo, file.%Foo.decl [concrete = constants.%Foo] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc18_7.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc18_7.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc18_7.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc18_7.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc18_7.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc18_7.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc18_7.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc18_7.2: %i32 = converted %int_1, %.loc18_7.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %Foo.call: init %empty_tuple.type = call %Foo.ref(%.loc18_7.2) // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/function/call/params_one_comma.carbon b/toolchain/check/testdata/function/call/params_one_comma.carbon index 11a39c9a3b1a..ffaec6cc64f4 100644 --- a/toolchain/check/testdata/function/call/params_one_comma.carbon +++ b/toolchain/check/testdata/function/call/params_one_comma.carbon @@ -36,18 +36,18 @@ fn Main() { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -60,8 +60,8 @@ fn Main() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -94,22 +94,22 @@ fn Main() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Foo.ref.loc18: %Foo.type = name_ref Foo, file.%Foo.decl [concrete = constants.%Foo] // CHECK:STDOUT: %int_1.loc18: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0.loc18: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc18_7.1: = bound_method %int_1.loc18, %impl.elem0.loc18 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn.loc18: = specific_function %impl.elem0.loc18, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc18: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc18_7.1: = bound_method %int_1.loc18, %impl.elem0.loc18 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc18: = specific_function %impl.elem0.loc18, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc18_7.2: = bound_method %int_1.loc18, %specific_fn.loc18 [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked.loc18: init %i32 = call %bound_method.loc18_7.2(%int_1.loc18) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc18_7.1: %i32 = value_of_initializer %int.convert_checked.loc18 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc18: init %i32 = call %bound_method.loc18_7.2(%int_1.loc18) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc18_7.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc18 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc18_7.2: %i32 = converted %int_1.loc18, %.loc18_7.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %Foo.call.loc18: init %empty_tuple.type = call %Foo.ref.loc18(%.loc18_7.2) // CHECK:STDOUT: %Foo.ref.loc19: %Foo.type = name_ref Foo, file.%Foo.decl [concrete = constants.%Foo] // CHECK:STDOUT: %int_1.loc19: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0.loc19: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc19_7.1: = bound_method %int_1.loc19, %impl.elem0.loc19 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn.loc19: = specific_function %impl.elem0.loc19, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc19: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc19_7.1: = bound_method %int_1.loc19, %impl.elem0.loc19 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc19: = specific_function %impl.elem0.loc19, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc19_7.2: = bound_method %int_1.loc19, %specific_fn.loc19 [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked.loc19: init %i32 = call %bound_method.loc19_7.2(%int_1.loc19) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc19_7.1: %i32 = value_of_initializer %int.convert_checked.loc19 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19: init %i32 = call %bound_method.loc19_7.2(%int_1.loc19) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc19_7.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc19_7.2: %i32 = converted %int_1.loc19, %.loc19_7.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %Foo.call.loc19: init %empty_tuple.type = call %Foo.ref.loc19(%.loc19_7.2) // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/function/call/params_two.carbon b/toolchain/check/testdata/function/call/params_two.carbon index 53de22570948..2fb85a1a7584 100644 --- a/toolchain/check/testdata/function/call/params_two.carbon +++ b/toolchain/check/testdata/function/call/params_two.carbon @@ -36,21 +36,21 @@ fn Main() { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -63,8 +63,8 @@ fn Main() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -106,19 +106,19 @@ fn Main() { // CHECK:STDOUT: %Foo.ref: %Foo.type = name_ref Foo, file.%Foo.decl [concrete = constants.%Foo] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %impl.elem0.loc18_7: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc18_7.1: = bound_method %int_1, %impl.elem0.loc18_7 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc18_7: = specific_function %impl.elem0.loc18_7, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc18_7: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc18_7.1: = bound_method %int_1, %impl.elem0.loc18_7 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc18_7: = specific_function %impl.elem0.loc18_7, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc18_7.2: = bound_method %int_1, %specific_fn.loc18_7 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc18_7: init %i32 = call %bound_method.loc18_7.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc18_7.1: %i32 = value_of_initializer %int.convert_checked.loc18_7 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc18_7: init %i32 = call %bound_method.loc18_7.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc18_7.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc18_7 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc18_7.2: %i32 = converted %int_1, %.loc18_7.1 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %impl.elem0.loc18_10: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc18_10.1: = bound_method %int_2, %impl.elem0.loc18_10 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc18_10: = specific_function %impl.elem0.loc18_10, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc18_10: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc18_10.1: = bound_method %int_2, %impl.elem0.loc18_10 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc18_10: = specific_function %impl.elem0.loc18_10, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc18_10.2: = bound_method %int_2, %specific_fn.loc18_10 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc18_10: init %i32 = call %bound_method.loc18_10.2(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc18_10.1: %i32 = value_of_initializer %int.convert_checked.loc18_10 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc18_10: init %i32 = call %bound_method.loc18_10.2(%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc18_10.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc18_10 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc18_10.2: %i32 = converted %int_2, %.loc18_10.1 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %Foo.call: init %empty_tuple.type = call %Foo.ref(%.loc18_7.2, %.loc18_10.2) // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/function/call/params_two_comma.carbon b/toolchain/check/testdata/function/call/params_two_comma.carbon index 5b793993eb00..51a9a24950aa 100644 --- a/toolchain/check/testdata/function/call/params_two_comma.carbon +++ b/toolchain/check/testdata/function/call/params_two_comma.carbon @@ -37,21 +37,21 @@ fn Main() { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -64,8 +64,8 @@ fn Main() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -107,37 +107,37 @@ fn Main() { // CHECK:STDOUT: %Foo.ref.loc18: %Foo.type = name_ref Foo, file.%Foo.decl [concrete = constants.%Foo] // CHECK:STDOUT: %int_1.loc18: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2.loc18: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %impl.elem0.loc18_7: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc18_7.1: = bound_method %int_1.loc18, %impl.elem0.loc18_7 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc18_7: = specific_function %impl.elem0.loc18_7, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc18_7: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc18_7.1: = bound_method %int_1.loc18, %impl.elem0.loc18_7 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc18_7: = specific_function %impl.elem0.loc18_7, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc18_7.2: = bound_method %int_1.loc18, %specific_fn.loc18_7 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc18_7: init %i32 = call %bound_method.loc18_7.2(%int_1.loc18) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc18_7.1: %i32 = value_of_initializer %int.convert_checked.loc18_7 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc18_7: init %i32 = call %bound_method.loc18_7.2(%int_1.loc18) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc18_7.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc18_7 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc18_7.2: %i32 = converted %int_1.loc18, %.loc18_7.1 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %impl.elem0.loc18_10: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc18_10.1: = bound_method %int_2.loc18, %impl.elem0.loc18_10 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc18_10: = specific_function %impl.elem0.loc18_10, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc18_10: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc18_10.1: = bound_method %int_2.loc18, %impl.elem0.loc18_10 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc18_10: = specific_function %impl.elem0.loc18_10, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc18_10.2: = bound_method %int_2.loc18, %specific_fn.loc18_10 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc18_10: init %i32 = call %bound_method.loc18_10.2(%int_2.loc18) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc18_10.1: %i32 = value_of_initializer %int.convert_checked.loc18_10 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc18_10: init %i32 = call %bound_method.loc18_10.2(%int_2.loc18) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc18_10.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc18_10 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc18_10.2: %i32 = converted %int_2.loc18, %.loc18_10.1 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %Foo.call.loc18: init %empty_tuple.type = call %Foo.ref.loc18(%.loc18_7.2, %.loc18_10.2) // CHECK:STDOUT: %Foo.ref.loc19: %Foo.type = name_ref Foo, file.%Foo.decl [concrete = constants.%Foo] // CHECK:STDOUT: %int_1.loc19: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2.loc19: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %impl.elem0.loc19_7: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc19_7.1: = bound_method %int_1.loc19, %impl.elem0.loc19_7 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc19_7: = specific_function %impl.elem0.loc19_7, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc19_7: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc19_7.1: = bound_method %int_1.loc19, %impl.elem0.loc19_7 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc19_7: = specific_function %impl.elem0.loc19_7, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc19_7.2: = bound_method %int_1.loc19, %specific_fn.loc19_7 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc19_7: init %i32 = call %bound_method.loc19_7.2(%int_1.loc19) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc19_7.1: %i32 = value_of_initializer %int.convert_checked.loc19_7 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19_7: init %i32 = call %bound_method.loc19_7.2(%int_1.loc19) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc19_7.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19_7 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc19_7.2: %i32 = converted %int_1.loc19, %.loc19_7.1 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %impl.elem0.loc19_10: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc19_10.1: = bound_method %int_2.loc19, %impl.elem0.loc19_10 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc19_10: = specific_function %impl.elem0.loc19_10, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc19_10: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc19_10.1: = bound_method %int_2.loc19, %impl.elem0.loc19_10 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc19_10: = specific_function %impl.elem0.loc19_10, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc19_10.2: = bound_method %int_2.loc19, %specific_fn.loc19_10 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc19_10: init %i32 = call %bound_method.loc19_10.2(%int_2.loc19) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc19_10.1: %i32 = value_of_initializer %int.convert_checked.loc19_10 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19_10: init %i32 = call %bound_method.loc19_10.2(%int_2.loc19) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc19_10.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19_10 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc19_10.2: %i32 = converted %int_2.loc19, %.loc19_10.1 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %Foo.call.loc19: init %empty_tuple.type = call %Foo.ref.loc19(%.loc19_7.2, %.loc19_10.2) // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/function/call/prefer_unqualified_lookup.carbon b/toolchain/check/testdata/function/call/prefer_unqualified_lookup.carbon index c208f62ac440..99cf892f0a93 100644 --- a/toolchain/check/testdata/function/call/prefer_unqualified_lookup.carbon +++ b/toolchain/check/testdata/function/call/prefer_unqualified_lookup.carbon @@ -30,41 +30,41 @@ fn Class(F:! type).Inner.G() -> i32 { return F(); } // CHECK:STDOUT: --- prefer_unqualified_lookup.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { -// CHECK:STDOUT: %F.8b3: type = bind_symbolic_name F, 0 [symbolic] +// CHECK:STDOUT: %F: type = bind_symbolic_name F, 0 [symbolic] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %Class.type: type = generic_class_type @Class [concrete] // CHECK:STDOUT: %Class.generic: %Class.type = struct_value () [concrete] -// CHECK:STDOUT: %Class: type = class_type @Class, @Class(%F.8b3) [symbolic] -// CHECK:STDOUT: %Inner: type = class_type @Inner, @Inner(%F.8b3) [symbolic] +// CHECK:STDOUT: %Class: type = class_type @Class, @Class(%F) [symbolic] +// CHECK:STDOUT: %Inner: type = class_type @Inner, @Inner(%F) [symbolic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F, @Inner(%F.8b3) [symbolic] -// CHECK:STDOUT: %F.3fa: %F.type = struct_value () [symbolic] -// CHECK:STDOUT: %G.type: type = fn_type @G, @Inner(%F.8b3) [symbolic] -// CHECK:STDOUT: %G: %G.type = struct_value () [symbolic] +// CHECK:STDOUT: %Inner.F.type: type = fn_type @Inner.F, @Inner(%F) [symbolic] +// CHECK:STDOUT: %Inner.F: %Inner.F.type = struct_value () [symbolic] +// CHECK:STDOUT: %Inner.G.type: type = fn_type @Inner.G, @Inner(%F) [symbolic] +// CHECK:STDOUT: %Inner.G: %Inner.G.type = 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: %int_0.5c6: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] -// CHECK:STDOUT: %F.specific_fn: = specific_function %F.3fa, @F(%F.8b3) [symbolic] +// CHECK:STDOUT: %Inner.F.specific_fn: = specific_function %Inner.F, @Inner.F(%F) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -76,8 +76,8 @@ fn Class(F:! type).Inner.G() -> i32 { return F(); } // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -89,13 +89,13 @@ fn Class(F:! type).Inner.G() -> i32 { return F(); } // CHECK:STDOUT: %Class.decl: %Class.type = class_decl @Class [concrete = constants.%Class.generic] { // CHECK:STDOUT: %F.patt: %pattern_type.98f = symbolic_binding_pattern F, 0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %F.loc5_13.2: type = bind_symbolic_name F, 0 [symbolic = %F.loc5_13.1 (constants.%F.8b3)] +// CHECK:STDOUT: %F.loc5_13.2: type = bind_symbolic_name F, 0 [symbolic = %F.loc5_13.1 (constants.%F)] // CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [symbolic = constants.%G] { +// CHECK:STDOUT: %Inner.G.decl: %Inner.G.type = fn_decl @Inner.G [symbolic = constants.%Inner.G] { // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %F.loc13_10: type = bind_symbolic_name F, 0 [symbolic = @Class.%F.loc5_13.1 (constants.%F.8b3)] +// CHECK:STDOUT: %F.loc13_10: type = bind_symbolic_name F, 0 [symbolic = @Class.%F.loc5_13.1 (constants.%F)] // CHECK:STDOUT: %int_32.loc13: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc13: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %return.param.loc13: ref %i32 = out_param call_param0 @@ -104,7 +104,7 @@ fn Class(F:! type).Inner.G() -> i32 { return F(); } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Class(%F.loc5_13.2: type) { -// CHECK:STDOUT: %F.loc5_13.1: type = bind_symbolic_name F, 0 [symbolic = %F.loc5_13.1 (constants.%F.8b3)] +// CHECK:STDOUT: %F.loc5_13.1: type = bind_symbolic_name F, 0 [symbolic = %F.loc5_13.1 (constants.%F)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Inner: type = class_type @Inner, @Inner(%F.loc5_13.1) [symbolic = %Inner (constants.%Inner)] @@ -123,14 +123,14 @@ fn Class(F:! type).Inner.G() -> i32 { return F(); } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Inner(@Class.%F.loc5_13.2: type) { // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.loc8_19.1: type = bind_symbolic_name F, 0 [symbolic = %F.loc8_19.1 (constants.%F.8b3)] -// CHECK:STDOUT: %F.type: type = fn_type @F, @Inner(%F.loc8_19.1) [symbolic = %F.type (constants.%F.type)] -// CHECK:STDOUT: %F.loc8_19.2: @Inner.%F.type (%F.type) = struct_value () [symbolic = %F.loc8_19.2 (constants.%F.3fa)] -// CHECK:STDOUT: %G.type: type = fn_type @G, @Inner(%F.loc8_19.1) [symbolic = %G.type (constants.%G.type)] -// CHECK:STDOUT: %G: @Inner.%G.type (%G.type) = struct_value () [symbolic = %G (constants.%G)] +// CHECK:STDOUT: %F: type = bind_symbolic_name F, 0 [symbolic = %F (constants.%F)] +// CHECK:STDOUT: %Inner.F.type: type = fn_type @Inner.F, @Inner(%F) [symbolic = %Inner.F.type (constants.%Inner.F.type)] +// CHECK:STDOUT: %Inner.F: @Inner.%Inner.F.type (%Inner.F.type) = struct_value () [symbolic = %Inner.F (constants.%Inner.F)] +// CHECK:STDOUT: %Inner.G.type: type = fn_type @Inner.G, @Inner(%F) [symbolic = %Inner.G.type (constants.%Inner.G.type)] +// CHECK:STDOUT: %Inner.G: @Inner.%Inner.G.type (%Inner.G.type) = struct_value () [symbolic = %Inner.G (constants.%Inner.G)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %F.decl: @Inner.%F.type (%F.type) = fn_decl @F [symbolic = @Inner.%F.loc8_19.2 (constants.%F.3fa)] { +// CHECK:STDOUT: %Inner.F.decl: @Inner.%Inner.F.type (%Inner.F.type) = fn_decl @Inner.F [symbolic = @Inner.%Inner.F (constants.%Inner.F)] { // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -139,7 +139,7 @@ fn Class(F:! type).Inner.G() -> i32 { return F(); } // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: @Inner.%G.type (%G.type) = fn_decl @G [symbolic = @Inner.%G (constants.%G)] { +// CHECK:STDOUT: %Inner.G.decl: @Inner.%Inner.G.type (%Inner.G.type) = fn_decl @Inner.G [symbolic = @Inner.%Inner.G (constants.%Inner.G)] { // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -154,66 +154,66 @@ fn Class(F:! type).Inner.G() -> i32 { return F(); } // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Inner -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .F = %Inner.F.decl +// CHECK:STDOUT: .G = %Inner.G.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(@Class.%F.loc5_13.2: type) { +// CHECK:STDOUT: generic fn @Inner.F(@Class.%F.loc5_13.2: type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: fn() -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc8_29.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc8_29.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc8_29.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc8_29.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc8_29.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc8_29.2(%int_0) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc8_29.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc8_29.2: %i32 = converted %int_0, %.loc8_29.1 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: return %.loc8_29.2 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @G(@Class.%F.loc5_13.2: type) { +// CHECK:STDOUT: generic fn @Inner.G(@Class.%F.loc5_13.2: type) { // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.loc13_46.1: type = bind_symbolic_name F, 0 [symbolic = %F.loc13_46.1 (constants.%F.8b3)] -// CHECK:STDOUT: %F.type: type = fn_type @F, @Inner(%F.loc13_46.1) [symbolic = %F.type (constants.%F.type)] -// CHECK:STDOUT: %F.loc13_46.2: @G.%F.type (%F.type) = struct_value () [symbolic = %F.loc13_46.2 (constants.%F.3fa)] -// CHECK:STDOUT: %F.specific_fn.loc13_46.2: = specific_function %F.loc13_46.2, @F(%F.loc13_46.1) [symbolic = %F.specific_fn.loc13_46.2 (constants.%F.specific_fn)] +// CHECK:STDOUT: %F.loc13_46: type = bind_symbolic_name F, 0 [symbolic = %F.loc13_46 (constants.%F)] +// CHECK:STDOUT: %Inner.F.type: type = fn_type @Inner.F, @Inner(%F.loc13_46) [symbolic = %Inner.F.type (constants.%Inner.F.type)] +// CHECK:STDOUT: %Inner.F: @Inner.G.%Inner.F.type (%Inner.F.type) = struct_value () [symbolic = %Inner.F (constants.%Inner.F)] +// CHECK:STDOUT: %Inner.F.specific_fn.loc13_46.2: = specific_function %Inner.F, @Inner.F(%F.loc13_46) [symbolic = %Inner.F.specific_fn.loc13_46.2 (constants.%Inner.F.specific_fn)] // CHECK:STDOUT: // CHECK:STDOUT: fn() -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc13_46: @G.%F.type (%F.type) = specific_constant @Inner.%F.decl, @Inner(constants.%F.8b3) [symbolic = %F.loc13_46.2 (constants.%F.3fa)] -// CHECK:STDOUT: %F.ref: @G.%F.type (%F.type) = name_ref F, %.loc13_46 [symbolic = %F.loc13_46.2 (constants.%F.3fa)] -// CHECK:STDOUT: %F.specific_fn.loc13_46.1: = specific_function %F.ref, @F(constants.%F.8b3) [symbolic = %F.specific_fn.loc13_46.2 (constants.%F.specific_fn)] -// CHECK:STDOUT: %F.call: init %i32 = call %F.specific_fn.loc13_46.1() -// CHECK:STDOUT: %.loc13_49.1: %i32 = value_of_initializer %F.call -// CHECK:STDOUT: %.loc13_49.2: %i32 = converted %F.call, %.loc13_49.1 +// CHECK:STDOUT: %.loc13_46: @Inner.G.%Inner.F.type (%Inner.F.type) = specific_constant @Inner.%Inner.F.decl, @Inner(constants.%F) [symbolic = %Inner.F (constants.%Inner.F)] +// CHECK:STDOUT: %F.ref: @Inner.G.%Inner.F.type (%Inner.F.type) = name_ref F, %.loc13_46 [symbolic = %Inner.F (constants.%Inner.F)] +// CHECK:STDOUT: %Inner.F.specific_fn.loc13_46.1: = specific_function %F.ref, @Inner.F(constants.%F) [symbolic = %Inner.F.specific_fn.loc13_46.2 (constants.%Inner.F.specific_fn)] +// CHECK:STDOUT: %Inner.F.call: init %i32 = call %Inner.F.specific_fn.loc13_46.1() +// CHECK:STDOUT: %.loc13_49.1: %i32 = value_of_initializer %Inner.F.call +// CHECK:STDOUT: %.loc13_49.2: %i32 = converted %Inner.F.call, %.loc13_49.1 // CHECK:STDOUT: return %.loc13_49.2 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Class(constants.%F.8b3) { -// CHECK:STDOUT: %F.loc5_13.1 => constants.%F.8b3 +// CHECK:STDOUT: specific @Class(constants.%F) { +// CHECK:STDOUT: %F.loc5_13.1 => constants.%F // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Inner => constants.%Inner // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Inner(constants.%F.8b3) { +// CHECK:STDOUT: specific @Inner(constants.%F) { // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.loc8_19.1 => constants.%F.8b3 -// CHECK:STDOUT: %F.type => constants.%F.type -// CHECK:STDOUT: %F.loc8_19.2 => constants.%F.3fa -// CHECK:STDOUT: %G.type => constants.%G.type -// CHECK:STDOUT: %G => constants.%G +// CHECK:STDOUT: %F => constants.%F +// CHECK:STDOUT: %Inner.F.type => constants.%Inner.F.type +// CHECK:STDOUT: %Inner.F => constants.%Inner.F +// CHECK:STDOUT: %Inner.G.type => constants.%Inner.G.type +// CHECK:STDOUT: %Inner.G => constants.%Inner.G // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%F.8b3) { +// CHECK:STDOUT: specific @Inner.F(constants.%F) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @G(constants.%F.8b3) {} +// CHECK:STDOUT: specific @Inner.G(constants.%F) {} // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/call/return_implicit.carbon b/toolchain/check/testdata/function/call/return_implicit.carbon index ed338eef573d..db85d89d65f0 100644 --- a/toolchain/check/testdata/function/call/return_implicit.carbon +++ b/toolchain/check/testdata/function/call/return_implicit.carbon @@ -29,10 +29,10 @@ fn Main() { // CHECK:STDOUT: %Main: %Main.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.1, @Destroy.impl(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a63: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ea3: %T.as.Destroy.impl.Op.type.a63 = struct_value () [concrete] // CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ea3, @Op.1(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(%empty_tuple.type) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -75,11 +75,11 @@ fn Main() { // CHECK:STDOUT: %.loc19_11.3: type = converted %.loc19_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %b: ref %empty_tuple.type = bind_name b, %b.var -// CHECK:STDOUT: %Op.bound: = bound_method %b.var, constants.%Op.ea3 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.ea3, @Op.1(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %b.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %b.var, constants.%T.as.Destroy.impl.Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %b.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.843 = addr_of %b.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/declaration/extern.carbon b/toolchain/check/testdata/function/declaration/extern.carbon index c9c933966959..222512782863 100644 --- a/toolchain/check/testdata/function/declaration/extern.carbon +++ b/toolchain/check/testdata/function/declaration/extern.carbon @@ -180,11 +180,11 @@ extern library "basic" fn F(); // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %C.F.type: type = fn_type @C.F [concrete] +// CHECK:STDOUT: %C.F: %C.F.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] -// CHECK:STDOUT: %G.type: type = fn_type @G [concrete] -// CHECK:STDOUT: %G: %G.type = struct_value () [concrete] +// CHECK:STDOUT: %C.G.type: type = fn_type @C.G [concrete] +// CHECK:STDOUT: %C.G: %C.G.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: } @@ -197,8 +197,8 @@ extern library "basic" fn F(); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { +// CHECK:STDOUT: %C.F.decl: %C.F.type = fn_decl @C.F [concrete = constants.%C.F] {} {} +// CHECK:STDOUT: %C.G.decl: %C.G.type = fn_decl @C.G [concrete = constants.%C.G] { // CHECK:STDOUT: %self.patt: %pattern_type = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -212,13 +212,13 @@ extern library "basic" fn F(); // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .F = %C.F.decl +// CHECK:STDOUT: .G = %C.G.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F(); +// CHECK:STDOUT: fn @C.F(); // CHECK:STDOUT: -// CHECK:STDOUT: fn @G(%self.param: %C); +// CHECK:STDOUT: fn @C.G(%self.param: %C); // CHECK:STDOUT: // CHECK:STDOUT: --- fail_extern_library_in_importer.carbon // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/declaration/fail_import_incomplete_return.carbon b/toolchain/check/testdata/function/declaration/fail_import_incomplete_return.carbon index 80d1677ee48b..8e05d81db893 100644 --- a/toolchain/check/testdata/function/declaration/fail_import_incomplete_return.carbon +++ b/toolchain/check/testdata/function/declaration/fail_import_incomplete_return.carbon @@ -212,10 +212,10 @@ fn CallFAndGIncomplete() { // CHECK:STDOUT: %ReturnDUsed.type: type = fn_type @ReturnDUsed [concrete] // CHECK:STDOUT: %ReturnDUsed: %ReturnDUsed.type = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.548: type = fn_type @Op.1, @Destroy.impl(%D) [concrete] -// CHECK:STDOUT: %Op.2d4: %Op.type.548 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.548: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%D) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.2d4: %T.as.Destroy.impl.Op.type.548 = struct_value () [concrete] // CHECK:STDOUT: %ptr.19c: type = ptr_type %D [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.2d4, @Op.1(%D) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.2d4, @T.as.Destroy.impl.Op(%D) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -276,16 +276,16 @@ fn CallFAndGIncomplete() { // CHECK:STDOUT: %.loc34_15.1: ref %D = temporary_storage // CHECK:STDOUT: %ReturnDUsed.call: init %D = call %ReturnDUsed.ref() to %.loc34_15.1 // CHECK:STDOUT: %.loc34_15.2: ref %D = temporary %.loc34_15.1, %ReturnDUsed.call -// CHECK:STDOUT: %Op.bound.loc34: = bound_method %.loc34_15.1, constants.%Op.2d4 -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.2d4, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc34: = bound_method %.loc34_15.1, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc34: = bound_method %.loc34_15.1, constants.%T.as.Destroy.impl.Op.2d4 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.2d4, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc34: = bound_method %.loc34_15.1, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc34: %ptr.19c = addr_of %.loc34_15.1 -// CHECK:STDOUT: %no_op.loc34: init %empty_tuple.type = call %bound_method.loc34(%addr.loc34) -// CHECK:STDOUT: %Op.bound.loc33: = bound_method %.loc33_17.1, constants.%Op.2d4 -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.2d4, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc33: = bound_method %.loc33_17.1, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc34: init %empty_tuple.type = call %bound_method.loc34(%addr.loc34) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc33: = bound_method %.loc33_17.1, constants.%T.as.Destroy.impl.Op.2d4 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.2d4, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc33: = bound_method %.loc33_17.1, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc33: %ptr.19c = addr_of %.loc33_17.1 -// CHECK:STDOUT: %no_op.loc33: init %empty_tuple.type = call %bound_method.loc33(%addr.loc33) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc33: init %empty_tuple.type = call %bound_method.loc33(%addr.loc33) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/declaration/import.carbon b/toolchain/check/testdata/function/declaration/import.carbon index 9d4418502227..68520fe6718a 100644 --- a/toolchain/check/testdata/function/declaration/import.carbon +++ b/toolchain/check/testdata/function/declaration/import.carbon @@ -476,18 +476,18 @@ import library "extern_api"; // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [concrete] // CHECK:STDOUT: %pattern_type.688: type = pattern_type %struct_type.c [concrete] @@ -520,8 +520,8 @@ import library "extern_api"; // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -610,24 +610,24 @@ import library "extern_api"; // CHECK:STDOUT: assign file.%a.var, %A.call // CHECK:STDOUT: %B.ref: %B.type = name_ref B, imports.%Main.B [concrete = constants.%B] // CHECK:STDOUT: %int_1.loc7: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0.loc7: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc7_16.1: = bound_method %int_1.loc7, %impl.elem0.loc7 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn.loc7: = specific_function %impl.elem0.loc7, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc7: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc7_16.1: = bound_method %int_1.loc7, %impl.elem0.loc7 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc7: = specific_function %impl.elem0.loc7, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc7_16.2: = bound_method %int_1.loc7, %specific_fn.loc7 [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked.loc7: init %i32 = call %bound_method.loc7_16.2(%int_1.loc7) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc7_16.1: %i32 = value_of_initializer %int.convert_checked.loc7 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc7: init %i32 = call %bound_method.loc7_16.2(%int_1.loc7) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc7_16.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc7 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc7_16.2: %i32 = converted %int_1.loc7, %.loc7_16.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %B.call: init %i32 = call %B.ref(%.loc7_16.2) // CHECK:STDOUT: assign file.%b.var, %B.call // CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%Main.C [concrete = constants.%C] // CHECK:STDOUT: %int_1.loc8: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %.loc8_25.1: %tuple.type.985 = tuple_literal (%int_1.loc8) -// CHECK:STDOUT: %impl.elem0.loc8: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc8_25.1: = bound_method %int_1.loc8, %impl.elem0.loc8 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn.loc8: = specific_function %impl.elem0.loc8, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc8: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc8_25.1: = bound_method %int_1.loc8, %impl.elem0.loc8 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc8: = specific_function %impl.elem0.loc8, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc8_25.2: = bound_method %int_1.loc8, %specific_fn.loc8 [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked.loc8: init %i32 = call %bound_method.loc8_25.2(%int_1.loc8) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc8_25.2: %i32 = value_of_initializer %int.convert_checked.loc8 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc8: init %i32 = call %bound_method.loc8_25.2(%int_1.loc8) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc8_25.2: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc8 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc8_25.3: %i32 = converted %int_1.loc8, %.loc8_25.2 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %tuple: %tuple.type.a1c = tuple_value (%.loc8_25.3) [concrete = constants.%tuple] // CHECK:STDOUT: %.loc8_25.4: %tuple.type.a1c = converted %.loc8_25.1, %tuple [concrete = constants.%tuple] @@ -671,18 +671,18 @@ import library "extern_api"; // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [concrete] // CHECK:STDOUT: %tuple: %tuple.type.a1c = tuple_value (%int_1.5d2) [concrete] @@ -701,8 +701,8 @@ import library "extern_api"; // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -821,24 +821,24 @@ import library "extern_api"; // CHECK:STDOUT: assign file.%a.var, %A.call // CHECK:STDOUT: %B.ref: %B.type = name_ref B, file.%B.decl [concrete = constants.%B] // CHECK:STDOUT: %int_1.loc53: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0.loc53: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc53_16.1: = bound_method %int_1.loc53, %impl.elem0.loc53 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn.loc53: = specific_function %impl.elem0.loc53, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc53: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc53_16.1: = bound_method %int_1.loc53, %impl.elem0.loc53 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc53: = specific_function %impl.elem0.loc53, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc53_16.2: = bound_method %int_1.loc53, %specific_fn.loc53 [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked.loc53: init %i32 = call %bound_method.loc53_16.2(%int_1.loc53) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc53_16.1: %i32 = value_of_initializer %int.convert_checked.loc53 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc53: init %i32 = call %bound_method.loc53_16.2(%int_1.loc53) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc53_16.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc53 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc53_16.2: %i32 = converted %int_1.loc53, %.loc53_16.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %B.call: init %i32 = call %B.ref(%.loc53_16.2) // CHECK:STDOUT: assign file.%b.var, %B.call // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %int_1.loc54: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %.loc54_25.1: %tuple.type.985 = tuple_literal (%int_1.loc54) -// CHECK:STDOUT: %impl.elem0.loc54: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc54_25.1: = bound_method %int_1.loc54, %impl.elem0.loc54 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn.loc54: = specific_function %impl.elem0.loc54, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc54: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc54_25.1: = bound_method %int_1.loc54, %impl.elem0.loc54 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc54: = specific_function %impl.elem0.loc54, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc54_25.2: = bound_method %int_1.loc54, %specific_fn.loc54 [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked.loc54: init %i32 = call %bound_method.loc54_25.2(%int_1.loc54) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc54_25.2: %i32 = value_of_initializer %int.convert_checked.loc54 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc54: init %i32 = call %bound_method.loc54_25.2(%int_1.loc54) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc54_25.2: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc54 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc54_25.3: %i32 = converted %int_1.loc54, %.loc54_25.2 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %tuple: %tuple.type.a1c = tuple_value (%.loc54_25.3) [concrete = constants.%tuple] // CHECK:STDOUT: %.loc54_25.4: %tuple.type.a1c = converted %.loc54_25.1, %tuple [concrete = constants.%tuple] @@ -882,18 +882,18 @@ import library "extern_api"; // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.9ba: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.6da: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.6da: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0b2: type = fn_type @Convert.2, @ImplicitAs.impl.c81(%To) [symbolic] -// CHECK:STDOUT: %Convert.6d7: %Convert.type.0b2 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.e34: = impl_witness imports.%ImplicitAs.impl_witness_table.e36, @ImplicitAs.impl.c81(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.ed5: type = fn_type @Convert.2, @ImplicitAs.impl.c81(%int_32) [concrete] -// CHECK:STDOUT: %Convert.16d: %Convert.type.ed5 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0b2: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.6d7: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0b2 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.e34: = impl_witness imports.%ImplicitAs.impl_witness_table.e36, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.ed5: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.16d: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.ed5 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.9ba = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.e34) [concrete] -// CHECK:STDOUT: %.d6a: type = fn_type_with_self_type %Convert.type.6da, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.16d [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.16d, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.d6a: type = fn_type_with_self_type %ImplicitAs.Convert.type.6da, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.16d [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.16d, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.47b: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [concrete] // CHECK:STDOUT: %tuple: %tuple.type.dd4 = tuple_value (%int_1.47b) [concrete] @@ -912,8 +912,8 @@ import library "extern_api"; // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a86: @ImplicitAs.impl.c81.%Convert.type (%Convert.type.0b2) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.c81.%Convert (constants.%Convert.6d7)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.e36 = impl_witness_table (%Core.import_ref.a86), @ImplicitAs.impl.c81 [concrete] +// CHECK:STDOUT: %Core.import_ref.a86: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0b2) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.6d7)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.e36 = impl_witness_table (%Core.import_ref.a86), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1032,24 +1032,24 @@ import library "extern_api"; // CHECK:STDOUT: assign file.%a.var, %A.call // CHECK:STDOUT: %B.ref: %B.type = name_ref B, file.%B.decl [concrete = constants.%B] // CHECK:STDOUT: %int_1.loc13: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0.loc13: %.d6a = impl_witness_access constants.%ImplicitAs.impl_witness.e34, element0 [concrete = constants.%Convert.16d] -// CHECK:STDOUT: %bound_method.loc13_16.1: = bound_method %int_1.loc13, %impl.elem0.loc13 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn.loc13: = specific_function %impl.elem0.loc13, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc13: %.d6a = impl_witness_access constants.%ImplicitAs.impl_witness.e34, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.16d] +// CHECK:STDOUT: %bound_method.loc13_16.1: = bound_method %int_1.loc13, %impl.elem0.loc13 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc13: = specific_function %impl.elem0.loc13, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc13_16.2: = bound_method %int_1.loc13, %specific_fn.loc13 [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked.loc13: init %i32 = call %bound_method.loc13_16.2(%int_1.loc13) [concrete = constants.%int_1.47b] -// CHECK:STDOUT: %.loc13_16.1: %i32 = value_of_initializer %int.convert_checked.loc13 [concrete = constants.%int_1.47b] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc13: init %i32 = call %bound_method.loc13_16.2(%int_1.loc13) [concrete = constants.%int_1.47b] +// CHECK:STDOUT: %.loc13_16.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc13 [concrete = constants.%int_1.47b] // CHECK:STDOUT: %.loc13_16.2: %i32 = converted %int_1.loc13, %.loc13_16.1 [concrete = constants.%int_1.47b] // CHECK:STDOUT: %B.call: init %i32 = call %B.ref(%.loc13_16.2) // CHECK:STDOUT: assign file.%b.var, %B.call // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %int_1.loc14: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %.loc14_25.1: %tuple.type.985 = tuple_literal (%int_1.loc14) -// CHECK:STDOUT: %impl.elem0.loc14: %.d6a = impl_witness_access constants.%ImplicitAs.impl_witness.e34, element0 [concrete = constants.%Convert.16d] -// CHECK:STDOUT: %bound_method.loc14_25.1: = bound_method %int_1.loc14, %impl.elem0.loc14 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn.loc14: = specific_function %impl.elem0.loc14, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc14: %.d6a = impl_witness_access constants.%ImplicitAs.impl_witness.e34, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.16d] +// CHECK:STDOUT: %bound_method.loc14_25.1: = bound_method %int_1.loc14, %impl.elem0.loc14 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc14: = specific_function %impl.elem0.loc14, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc14_25.2: = bound_method %int_1.loc14, %specific_fn.loc14 [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked.loc14: init %i32 = call %bound_method.loc14_25.2(%int_1.loc14) [concrete = constants.%int_1.47b] -// CHECK:STDOUT: %.loc14_25.2: %i32 = value_of_initializer %int.convert_checked.loc14 [concrete = constants.%int_1.47b] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc14: init %i32 = call %bound_method.loc14_25.2(%int_1.loc14) [concrete = constants.%int_1.47b] +// CHECK:STDOUT: %.loc14_25.2: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc14 [concrete = constants.%int_1.47b] // CHECK:STDOUT: %.loc14_25.3: %i32 = converted %int_1.loc14, %.loc14_25.2 [concrete = constants.%int_1.47b] // CHECK:STDOUT: %tuple: %tuple.type.dd4 = tuple_value (%.loc14_25.3) [concrete = constants.%tuple] // CHECK:STDOUT: %.loc14_25.4: %tuple.type.dd4 = converted %.loc14_25.1, %tuple [concrete = constants.%tuple] @@ -1083,18 +1083,18 @@ import library "extern_api"; // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [concrete] // CHECK:STDOUT: %pattern_type.688: type = pattern_type %struct_type.c [concrete] @@ -1127,8 +1127,8 @@ import library "extern_api"; // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1217,24 +1217,24 @@ import library "extern_api"; // CHECK:STDOUT: assign file.%a.var, %A.call // CHECK:STDOUT: %B.ref: %B.type = name_ref B, imports.%Main.B [concrete = constants.%B] // CHECK:STDOUT: %int_1.loc53: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0.loc53: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc53_16.1: = bound_method %int_1.loc53, %impl.elem0.loc53 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn.loc53: = specific_function %impl.elem0.loc53, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc53: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc53_16.1: = bound_method %int_1.loc53, %impl.elem0.loc53 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc53: = specific_function %impl.elem0.loc53, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc53_16.2: = bound_method %int_1.loc53, %specific_fn.loc53 [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked.loc53: init %i32 = call %bound_method.loc53_16.2(%int_1.loc53) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc53_16.1: %i32 = value_of_initializer %int.convert_checked.loc53 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc53: init %i32 = call %bound_method.loc53_16.2(%int_1.loc53) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc53_16.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc53 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc53_16.2: %i32 = converted %int_1.loc53, %.loc53_16.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %B.call: init %i32 = call %B.ref(%.loc53_16.2) // CHECK:STDOUT: assign file.%b.var, %B.call // CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%Main.C [concrete = constants.%C] // CHECK:STDOUT: %int_1.loc54: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %.loc54_25.1: %tuple.type.985 = tuple_literal (%int_1.loc54) -// CHECK:STDOUT: %impl.elem0.loc54: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc54_25.1: = bound_method %int_1.loc54, %impl.elem0.loc54 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn.loc54: = specific_function %impl.elem0.loc54, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc54: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc54_25.1: = bound_method %int_1.loc54, %impl.elem0.loc54 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc54: = specific_function %impl.elem0.loc54, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc54_25.2: = bound_method %int_1.loc54, %specific_fn.loc54 [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked.loc54: init %i32 = call %bound_method.loc54_25.2(%int_1.loc54) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc54_25.2: %i32 = value_of_initializer %int.convert_checked.loc54 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc54: init %i32 = call %bound_method.loc54_25.2(%int_1.loc54) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc54_25.2: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc54 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc54_25.3: %i32 = converted %int_1.loc54, %.loc54_25.2 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %tuple: %tuple.type.a1c = tuple_value (%.loc54_25.3) [concrete = constants.%tuple] // CHECK:STDOUT: %.loc54_25.4: %tuple.type.a1c = converted %.loc54_25.1, %tuple [concrete = constants.%tuple] @@ -1268,18 +1268,18 @@ import library "extern_api"; // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [concrete] // CHECK:STDOUT: %pattern_type.688: type = pattern_type %struct_type.c [concrete] @@ -1312,8 +1312,8 @@ import library "extern_api"; // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1402,24 +1402,24 @@ import library "extern_api"; // CHECK:STDOUT: assign file.%a.var, %A.call // CHECK:STDOUT: %B.ref: %B.type = name_ref B, imports.%Main.B [concrete = constants.%B] // CHECK:STDOUT: %int_1.loc53: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0.loc53: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc53_16.1: = bound_method %int_1.loc53, %impl.elem0.loc53 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn.loc53: = specific_function %impl.elem0.loc53, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc53: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc53_16.1: = bound_method %int_1.loc53, %impl.elem0.loc53 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc53: = specific_function %impl.elem0.loc53, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc53_16.2: = bound_method %int_1.loc53, %specific_fn.loc53 [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked.loc53: init %i32 = call %bound_method.loc53_16.2(%int_1.loc53) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc53_16.1: %i32 = value_of_initializer %int.convert_checked.loc53 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc53: init %i32 = call %bound_method.loc53_16.2(%int_1.loc53) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc53_16.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc53 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc53_16.2: %i32 = converted %int_1.loc53, %.loc53_16.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %B.call: init %i32 = call %B.ref(%.loc53_16.2) // CHECK:STDOUT: assign file.%b.var, %B.call // CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%Main.C [concrete = constants.%C] // CHECK:STDOUT: %int_1.loc54: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %.loc54_25.1: %tuple.type.985 = tuple_literal (%int_1.loc54) -// CHECK:STDOUT: %impl.elem0.loc54: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc54_25.1: = bound_method %int_1.loc54, %impl.elem0.loc54 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn.loc54: = specific_function %impl.elem0.loc54, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc54: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc54_25.1: = bound_method %int_1.loc54, %impl.elem0.loc54 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc54: = specific_function %impl.elem0.loc54, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc54_25.2: = bound_method %int_1.loc54, %specific_fn.loc54 [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked.loc54: init %i32 = call %bound_method.loc54_25.2(%int_1.loc54) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc54_25.2: %i32 = value_of_initializer %int.convert_checked.loc54 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc54: init %i32 = call %bound_method.loc54_25.2(%int_1.loc54) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc54_25.2: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc54 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc54_25.3: %i32 = converted %int_1.loc54, %.loc54_25.2 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %tuple: %tuple.type.a1c = tuple_value (%.loc54_25.3) [concrete = constants.%tuple] // CHECK:STDOUT: %.loc54_25.4: %tuple.type.a1c = converted %.loc54_25.1, %tuple [concrete = constants.%tuple] diff --git a/toolchain/check/testdata/function/definition/fail_local_decl.carbon b/toolchain/check/testdata/function/definition/fail_local_decl.carbon index 5711c4773f9a..88afab26c9bd 100644 --- a/toolchain/check/testdata/function/definition/fail_local_decl.carbon +++ b/toolchain/check/testdata/function/definition/fail_local_decl.carbon @@ -103,10 +103,10 @@ fn F() { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %pattern_type.a96: type = pattern_type %empty_struct_type [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.069: type = fn_type @Op.1, @Destroy.impl(%empty_struct_type) [concrete] -// CHECK:STDOUT: %Op.d5a: %Op.type.069 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.069: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%empty_struct_type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.d5a: %T.as.Destroy.impl.Op.type.069 = struct_value () [concrete] // CHECK:STDOUT: %ptr.c28: type = ptr_type %empty_struct_type [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.d5a, @Op.1(%empty_struct_type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.d5a, @T.as.Destroy.impl.Op(%empty_struct_type) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -149,16 +149,16 @@ fn F() { // CHECK:STDOUT: %.loc14_21.3: type = converted %.loc14_21.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %w: ref %empty_struct_type = bind_name w, %w.var -// CHECK:STDOUT: %Op.bound.loc14: = bound_method %w.var, constants.%Op.d5a -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.d5a, @Op.1(constants.%empty_struct_type) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc14: = bound_method %w.var, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc14: = bound_method %w.var, constants.%T.as.Destroy.impl.Op.d5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.d5a, @T.as.Destroy.impl.Op(constants.%empty_struct_type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc14: = bound_method %w.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc14: %ptr.c28 = addr_of %w.var -// CHECK:STDOUT: %no_op.loc14: init %empty_tuple.type = call %bound_method.loc14(%addr.loc14) -// CHECK:STDOUT: %Op.bound.loc9: = bound_method %v.var, constants.%Op.d5a -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.d5a, @Op.1(constants.%empty_struct_type) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc9: = bound_method %v.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc14: init %empty_tuple.type = call %bound_method.loc14(%addr.loc14) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc9: = bound_method %v.var, constants.%T.as.Destroy.impl.Op.d5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.d5a, @T.as.Destroy.impl.Op(constants.%empty_struct_type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc9: = bound_method %v.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc9: %ptr.c28 = addr_of %v.var -// CHECK:STDOUT: %no_op.loc9: init %empty_tuple.type = call %bound_method.loc9(%addr.loc9) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc9: init %empty_tuple.type = call %bound_method.loc9(%addr.loc9) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/definition/import.carbon b/toolchain/check/testdata/function/definition/import.carbon index 5f93cc7ffd2d..d037dd4822ad 100644 --- a/toolchain/check/testdata/function/definition/import.carbon +++ b/toolchain/check/testdata/function/definition/import.carbon @@ -264,18 +264,18 @@ fn D() {} // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [concrete] // CHECK:STDOUT: %pattern_type.688: type = pattern_type %struct_type.c [concrete] @@ -299,8 +299,8 @@ fn D() {} // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -362,24 +362,24 @@ fn D() {} // CHECK:STDOUT: assign file.%a.var, %A.call // CHECK:STDOUT: %B.ref: %B.type = name_ref B, imports.%Main.B [concrete = constants.%B] // CHECK:STDOUT: %int_1.loc7: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0.loc7: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc7_16.1: = bound_method %int_1.loc7, %impl.elem0.loc7 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn.loc7: = specific_function %impl.elem0.loc7, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc7: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc7_16.1: = bound_method %int_1.loc7, %impl.elem0.loc7 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc7: = specific_function %impl.elem0.loc7, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc7_16.2: = bound_method %int_1.loc7, %specific_fn.loc7 [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked.loc7: init %i32 = call %bound_method.loc7_16.2(%int_1.loc7) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc7_16.1: %i32 = value_of_initializer %int.convert_checked.loc7 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc7: init %i32 = call %bound_method.loc7_16.2(%int_1.loc7) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc7_16.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc7 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc7_16.2: %i32 = converted %int_1.loc7, %.loc7_16.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %B.call: init %i32 = call %B.ref(%.loc7_16.2) // CHECK:STDOUT: assign file.%b.var, %B.call // CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%Main.C [concrete = constants.%C] // CHECK:STDOUT: %int_1.loc8: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %.loc8_25.1: %tuple.type.985 = tuple_literal (%int_1.loc8) -// CHECK:STDOUT: %impl.elem0.loc8: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc8_25.1: = bound_method %int_1.loc8, %impl.elem0.loc8 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn.loc8: = specific_function %impl.elem0.loc8, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc8: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc8_25.1: = bound_method %int_1.loc8, %impl.elem0.loc8 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc8: = specific_function %impl.elem0.loc8, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc8_25.2: = bound_method %int_1.loc8, %specific_fn.loc8 [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked.loc8: init %i32 = call %bound_method.loc8_25.2(%int_1.loc8) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc8_25.2: %i32 = value_of_initializer %int.convert_checked.loc8 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc8: init %i32 = call %bound_method.loc8_25.2(%int_1.loc8) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc8_25.2: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc8 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc8_25.3: %i32 = converted %int_1.loc8, %.loc8_25.2 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %tuple: %tuple.type.a1c = tuple_value (%.loc8_25.3) [concrete = constants.%tuple] // CHECK:STDOUT: %.loc8_25.4: %tuple.type.a1c = converted %.loc8_25.1, %tuple [concrete = constants.%tuple] diff --git a/toolchain/check/testdata/function/generic/call.carbon b/toolchain/check/testdata/function/generic/call.carbon index 5619ff64f2f5..27cf7248f9d8 100644 --- a/toolchain/check/testdata/function/generic/call.carbon +++ b/toolchain/check/testdata/function/generic/call.carbon @@ -83,10 +83,10 @@ fn CallSpecific(x: C) -> C { // CHECK:STDOUT: %CallSpecific: %CallSpecific.type = struct_value () [concrete] // CHECK:STDOUT: %Function.specific_fn.1b5: = specific_function %Function, @Function(%C) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.153: type = fn_type @Op.1, @Destroy.impl(%C) [concrete] -// CHECK:STDOUT: %Op.5d7: %Op.type.153 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.153: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.5d7: %T.as.Destroy.impl.Op.type.153 = struct_value () [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.5d7, @Op.1(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(%C) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -248,11 +248,11 @@ fn CallSpecific(x: C) -> C { // CHECK:STDOUT: %Function.specific_fn: = specific_function %Function.ref, @Function(constants.%C) [concrete = constants.%Function.specific_fn.1b5] // CHECK:STDOUT: %.loc18: ref %C = splice_block %return {} // CHECK:STDOUT: %Function.call: init %C = call %Function.specific_fn(%x.ref) to %.loc18 -// CHECK:STDOUT: %Op.bound: = bound_method %.loc18, constants.%Op.5d7 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.5d7, @Op.1(constants.%C) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc18, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc18, constants.%T.as.Destroy.impl.Op.5d7 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(constants.%C) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %.loc18, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc18 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %Function.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -318,10 +318,10 @@ fn CallSpecific(x: C) -> C { // CHECK:STDOUT: %CallSpecific: %CallSpecific.type = struct_value () [concrete] // CHECK:STDOUT: %Function.specific_fn.1b5: = specific_function %Function, @Function(%C) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.153: type = fn_type @Op.1, @Destroy.impl(%C) [concrete] -// CHECK:STDOUT: %Op.5d7: %Op.type.153 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.153: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.5d7: %T.as.Destroy.impl.Op.type.153 = struct_value () [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.5d7, @Op.1(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(%C) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -479,11 +479,11 @@ fn CallSpecific(x: C) -> C { // CHECK:STDOUT: %Function.specific_fn: = specific_function %Function.ref, @Function(constants.%C) [concrete = constants.%Function.specific_fn.1b5] // CHECK:STDOUT: %.loc18: ref %C = splice_block %return {} // CHECK:STDOUT: %Function.call: init %C = call %Function.specific_fn(%x.ref) to %.loc18 -// CHECK:STDOUT: %Op.bound: = bound_method %.loc18, constants.%Op.5d7 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.5d7, @Op.1(constants.%C) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc18, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc18, constants.%T.as.Destroy.impl.Op.5d7 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(constants.%C) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %.loc18, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc18 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %Function.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/generic/call_method_on_generic_facet.carbon b/toolchain/check/testdata/function/generic/call_method_on_generic_facet.carbon index 835d0bf2b4b1..48c0da036f3c 100644 --- a/toolchain/check/testdata/function/generic/call_method_on_generic_facet.carbon +++ b/toolchain/check/testdata/function/generic/call_method_on_generic_facet.carbon @@ -48,33 +48,33 @@ fn G() { // CHECK:STDOUT: %Generic.generic: %Generic.type.c21 = struct_value () [concrete] // CHECK:STDOUT: %Generic.type.91ccba.1: type = facet_type <@Generic, @Generic(%Scalar)> [symbolic] // CHECK:STDOUT: %Self.dee8d8.1: %Generic.type.91ccba.1 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %F.type.f439a9.1: type = fn_type @F.loc16, @Generic(%Scalar) [symbolic] -// CHECK:STDOUT: %F.8a2d67.1: %F.type.f439a9.1 = struct_value () [symbolic] +// CHECK:STDOUT: %Generic.F.type.f439a9.1: type = fn_type @Generic.F, @Generic(%Scalar) [symbolic] +// CHECK:STDOUT: %Generic.F.8a2d67.1: %Generic.F.type.f439a9.1 = struct_value () [symbolic] // CHECK:STDOUT: %Generic.assoc_type.0fd877.1: type = assoc_entity_type @Generic, @Generic(%Scalar) [symbolic] -// CHECK:STDOUT: %assoc0.2966cb.1: %Generic.assoc_type.0fd877.1 = assoc_entity element0, @Generic.%F.decl [symbolic] +// CHECK:STDOUT: %assoc0.2966cb.1: %Generic.assoc_type.0fd877.1 = assoc_entity element0, @Generic.%Generic.F.decl [symbolic] // CHECK:STDOUT: %GenericParam: type = class_type @GenericParam [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %ImplsGeneric: type = class_type @ImplsGeneric [concrete] // CHECK:STDOUT: %Generic.type.769: type = facet_type <@Generic, @Generic(%GenericParam)> [concrete] // CHECK:STDOUT: %Self.f84: %Generic.type.769 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %F.type.4cf: type = fn_type @F.loc16, @Generic(%GenericParam) [concrete] -// CHECK:STDOUT: %F.118: %F.type.4cf = struct_value () [concrete] +// CHECK:STDOUT: %Generic.F.type.4cf: type = fn_type @Generic.F, @Generic(%GenericParam) [concrete] +// CHECK:STDOUT: %Generic.F.118: %Generic.F.type.4cf = struct_value () [concrete] // CHECK:STDOUT: %Generic.assoc_type.713: type = assoc_entity_type @Generic, @Generic(%GenericParam) [concrete] -// CHECK:STDOUT: %assoc0.9b7: %Generic.assoc_type.713 = assoc_entity element0, @Generic.%F.decl [concrete] +// CHECK:STDOUT: %assoc0.9b7: %Generic.assoc_type.713 = assoc_entity element0, @Generic.%Generic.F.decl [concrete] // CHECK:STDOUT: %Generic.impl_witness: = impl_witness file.%Generic.impl_witness_table [concrete] -// CHECK:STDOUT: %F.type.17b: type = fn_type @F.loc23 [concrete] -// CHECK:STDOUT: %F.a56: %F.type.17b = struct_value () [concrete] +// CHECK:STDOUT: %ImplsGeneric.as.Generic.impl.F.type: type = fn_type @ImplsGeneric.as.Generic.impl.F [concrete] +// CHECK:STDOUT: %ImplsGeneric.as.Generic.impl.F: %ImplsGeneric.as.Generic.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %Generic.facet.8ff: %Generic.type.769 = facet_value %ImplsGeneric, (%Generic.impl_witness) [concrete] // CHECK:STDOUT: %Other.type: type = facet_type <@Other> [concrete] // CHECK:STDOUT: %Self.807: %Other.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %G.type.0c6: type = fn_type @G.loc27 [concrete] -// CHECK:STDOUT: %G.17f: %G.type.0c6 = struct_value () [concrete] +// CHECK:STDOUT: %Other.G.type: type = fn_type @Other.G [concrete] +// CHECK:STDOUT: %Other.G: %Other.G.type = struct_value () [concrete] // CHECK:STDOUT: %Other.assoc_type: type = assoc_entity_type @Other [concrete] -// CHECK:STDOUT: %assoc0.25d: %Other.assoc_type = assoc_entity element0, @Other.%G.decl [concrete] +// CHECK:STDOUT: %assoc0.25d: %Other.assoc_type = assoc_entity element0, @Other.%Other.G.decl [concrete] // CHECK:STDOUT: %Other.impl_witness: = impl_witness file.%Other.impl_witness_table [concrete] -// CHECK:STDOUT: %G.type.58d: type = fn_type @G.loc30 [concrete] -// CHECK:STDOUT: %G.b67: %G.type.58d = struct_value () [concrete] +// CHECK:STDOUT: %ImplsGeneric.as.Other.impl.G.type: type = fn_type @ImplsGeneric.as.Other.impl.G [concrete] +// CHECK:STDOUT: %ImplsGeneric.as.Other.impl.G: %ImplsGeneric.as.Other.impl.G.type = struct_value () [concrete] // CHECK:STDOUT: %Other.facet: %Other.type = facet_value %ImplsGeneric, (%Other.impl_witness) [concrete] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %Generic.type.91ccba.2: type = facet_type <@Generic, @Generic(%T)> [symbolic] @@ -83,23 +83,23 @@ fn G() { // CHECK:STDOUT: %CallGenericMethod.type: type = fn_type @CallGenericMethod [concrete] // CHECK:STDOUT: %CallGenericMethod: %CallGenericMethod.type = struct_value () [concrete] // CHECK:STDOUT: %Self.dee8d8.2: %Generic.type.91ccba.2 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %F.type.f439a9.2: type = fn_type @F.loc16, @Generic(%T) [symbolic] -// CHECK:STDOUT: %F.8a2d67.2: %F.type.f439a9.2 = struct_value () [symbolic] +// CHECK:STDOUT: %Generic.F.type.f439a9.2: type = fn_type @Generic.F, @Generic(%T) [symbolic] +// CHECK:STDOUT: %Generic.F.8a2d67.2: %Generic.F.type.f439a9.2 = struct_value () [symbolic] // CHECK:STDOUT: %Generic.assoc_type.0fd877.2: type = assoc_entity_type @Generic, @Generic(%T) [symbolic] -// CHECK:STDOUT: %assoc0.2966cb.2: %Generic.assoc_type.0fd877.2 = assoc_entity element0, @Generic.%F.decl [symbolic] +// CHECK:STDOUT: %assoc0.2966cb.2: %Generic.assoc_type.0fd877.2 = assoc_entity element0, @Generic.%Generic.F.decl [symbolic] // CHECK:STDOUT: %require_complete: = require_complete_type %Generic.type.91ccba.2 [symbolic] // CHECK:STDOUT: %U.as_type: type = facet_access_type %U [symbolic] // CHECK:STDOUT: %Generic.lookup_impl_witness: = lookup_impl_witness %U, @Generic, @Generic(%T) [symbolic] // CHECK:STDOUT: %Generic.facet.680: %Generic.type.91ccba.2 = facet_value %U.as_type, (%Generic.lookup_impl_witness) [symbolic] -// CHECK:STDOUT: %.177: type = fn_type_with_self_type %F.type.f439a9.2, %Generic.facet.680 [symbolic] +// CHECK:STDOUT: %.177: type = fn_type_with_self_type %Generic.F.type.f439a9.2, %Generic.facet.680 [symbolic] // CHECK:STDOUT: %impl.elem0: %.177 = impl_witness_access %Generic.lookup_impl_witness, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @F.loc16(%T, %Generic.facet.680) [symbolic] -// CHECK:STDOUT: %G.type.9f9: type = fn_type @G.loc37 [concrete] -// CHECK:STDOUT: %G.57b: %G.type.9f9 = struct_value () [concrete] +// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Generic.F(%T, %Generic.facet.680) [symbolic] +// CHECK:STDOUT: %G.type: type = fn_type @G [concrete] +// CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.ded: type = pattern_type %Generic.type.769 [concrete] // CHECK:STDOUT: %CallGenericMethod.specific_fn: = specific_function %CallGenericMethod, @CallGenericMethod(%GenericParam, %Generic.facet.8ff) [concrete] // CHECK:STDOUT: %complete_type.997: = complete_type_witness %Generic.type.769 [concrete] -// CHECK:STDOUT: %.3e6: type = fn_type_with_self_type %F.type.4cf, %Generic.facet.8ff [concrete] +// CHECK:STDOUT: %.3e6: type = fn_type_with_self_type %Generic.F.type.4cf, %Generic.facet.8ff [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -127,20 +127,20 @@ fn G() { // CHECK:STDOUT: } // CHECK:STDOUT: %GenericParam.decl: type = class_decl @GenericParam [concrete = constants.%GenericParam] {} {} // CHECK:STDOUT: %ImplsGeneric.decl: type = class_decl @ImplsGeneric [concrete = constants.%ImplsGeneric] {} {} -// CHECK:STDOUT: impl_decl @Generic.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @ImplsGeneric.as.Generic.impl [concrete] {} { // CHECK:STDOUT: %ImplsGeneric.ref: type = name_ref ImplsGeneric, file.%ImplsGeneric.decl [concrete = constants.%ImplsGeneric] // CHECK:STDOUT: %Generic.ref: %Generic.type.c21 = name_ref Generic, file.%Generic.decl [concrete = constants.%Generic.generic] // CHECK:STDOUT: %GenericParam.ref: type = name_ref GenericParam, file.%GenericParam.decl [concrete = constants.%GenericParam] // CHECK:STDOUT: %Generic.type: type = facet_type <@Generic, @Generic(constants.%GenericParam)> [concrete = constants.%Generic.type.769] // CHECK:STDOUT: } -// CHECK:STDOUT: %Generic.impl_witness_table = impl_witness_table (@Generic.impl.%F.decl), @Generic.impl [concrete] +// CHECK:STDOUT: %Generic.impl_witness_table = impl_witness_table (@ImplsGeneric.as.Generic.impl.%ImplsGeneric.as.Generic.impl.F.decl), @ImplsGeneric.as.Generic.impl [concrete] // CHECK:STDOUT: %Generic.impl_witness: = impl_witness %Generic.impl_witness_table [concrete = constants.%Generic.impl_witness] // CHECK:STDOUT: %Other.decl: type = interface_decl @Other [concrete = constants.%Other.type] {} {} -// CHECK:STDOUT: impl_decl @Other.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @ImplsGeneric.as.Other.impl [concrete] {} { // CHECK:STDOUT: %ImplsGeneric.ref: type = name_ref ImplsGeneric, file.%ImplsGeneric.decl [concrete = constants.%ImplsGeneric] // CHECK:STDOUT: %Other.ref: type = name_ref Other, file.%Other.decl [concrete = constants.%Other.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %Other.impl_witness_table = impl_witness_table (@Other.impl.%G.decl), @Other.impl [concrete] +// CHECK:STDOUT: %Other.impl_witness_table = impl_witness_table (@ImplsGeneric.as.Other.impl.%ImplsGeneric.as.Other.impl.G.decl), @ImplsGeneric.as.Other.impl [concrete] // CHECK:STDOUT: %Other.impl_witness: = impl_witness %Other.impl_witness_table [concrete = constants.%Other.impl_witness] // CHECK:STDOUT: %CallGenericMethod.decl: %CallGenericMethod.type = fn_decl @CallGenericMethod [concrete = constants.%CallGenericMethod] { // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete] @@ -154,7 +154,7 @@ fn G() { // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc33_32.2: @CallGenericMethod.%Generic.type.loc33_45.1 (%Generic.type.91ccba.2) = bind_symbolic_name U, 1 [symbolic = %U.loc33_32.1 (constants.%U)] // CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: %G.type.9f9 = fn_decl @G.loc37 [concrete = constants.%G.57b] {} {} +// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic interface @Generic(%Scalar.loc15_19.2: type) { @@ -163,47 +163,47 @@ fn G() { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Generic.type: type = facet_type <@Generic, @Generic(%Scalar.loc15_19.1)> [symbolic = %Generic.type (constants.%Generic.type.91ccba.1)] // CHECK:STDOUT: %Self.2: @Generic.%Generic.type (%Generic.type.91ccba.1) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.dee8d8.1)] -// CHECK:STDOUT: %F.type: type = fn_type @F.loc16, @Generic(%Scalar.loc15_19.1) [symbolic = %F.type (constants.%F.type.f439a9.1)] -// CHECK:STDOUT: %F: @Generic.%F.type (%F.type.f439a9.1) = struct_value () [symbolic = %F (constants.%F.8a2d67.1)] +// CHECK:STDOUT: %Generic.F.type: type = fn_type @Generic.F, @Generic(%Scalar.loc15_19.1) [symbolic = %Generic.F.type (constants.%Generic.F.type.f439a9.1)] +// CHECK:STDOUT: %Generic.F: @Generic.%Generic.F.type (%Generic.F.type.f439a9.1) = struct_value () [symbolic = %Generic.F (constants.%Generic.F.8a2d67.1)] // CHECK:STDOUT: %Generic.assoc_type: type = assoc_entity_type @Generic, @Generic(%Scalar.loc15_19.1) [symbolic = %Generic.assoc_type (constants.%Generic.assoc_type.0fd877.1)] -// CHECK:STDOUT: %assoc0.loc16_9.2: @Generic.%Generic.assoc_type (%Generic.assoc_type.0fd877.1) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc16_9.2 (constants.%assoc0.2966cb.1)] +// CHECK:STDOUT: %assoc0.loc16_9.2: @Generic.%Generic.assoc_type (%Generic.assoc_type.0fd877.1) = assoc_entity element0, %Generic.F.decl [symbolic = %assoc0.loc16_9.2 (constants.%assoc0.2966cb.1)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: %Self.1: @Generic.%Generic.type (%Generic.type.91ccba.1) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.dee8d8.1)] -// CHECK:STDOUT: %F.decl: @Generic.%F.type (%F.type.f439a9.1) = fn_decl @F.loc16 [symbolic = @Generic.%F (constants.%F.8a2d67.1)] {} {} -// CHECK:STDOUT: %assoc0.loc16_9.1: @Generic.%Generic.assoc_type (%Generic.assoc_type.0fd877.1) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc16_9.2 (constants.%assoc0.2966cb.1)] +// CHECK:STDOUT: %Generic.F.decl: @Generic.%Generic.F.type (%Generic.F.type.f439a9.1) = fn_decl @Generic.F [symbolic = @Generic.%Generic.F (constants.%Generic.F.8a2d67.1)] {} {} +// CHECK:STDOUT: %assoc0.loc16_9.1: @Generic.%Generic.assoc_type (%Generic.assoc_type.0fd877.1) = assoc_entity element0, %Generic.F.decl [symbolic = %assoc0.loc16_9.2 (constants.%assoc0.2966cb.1)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 // CHECK:STDOUT: .F = %assoc0.loc16_9.1 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%Generic.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Other { // CHECK:STDOUT: %Self: %Other.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.807] -// CHECK:STDOUT: %G.decl: %G.type.0c6 = fn_decl @G.loc27 [concrete = constants.%G.17f] {} {} -// CHECK:STDOUT: %assoc0: %Other.assoc_type = assoc_entity element0, %G.decl [concrete = constants.%assoc0.25d] +// CHECK:STDOUT: %Other.G.decl: %Other.G.type = fn_decl @Other.G [concrete = constants.%Other.G] {} {} +// CHECK:STDOUT: %assoc0: %Other.assoc_type = assoc_entity element0, %Other.G.decl [concrete = constants.%assoc0.25d] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .G = %assoc0 -// CHECK:STDOUT: witness = (%G.decl) +// CHECK:STDOUT: witness = (%Other.G.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Generic.impl: %ImplsGeneric.ref as %Generic.type { -// CHECK:STDOUT: %F.decl: %F.type.17b = fn_decl @F.loc23 [concrete = constants.%F.a56] {} {} +// CHECK:STDOUT: impl @ImplsGeneric.as.Generic.impl: %ImplsGeneric.ref as %Generic.type { +// CHECK:STDOUT: %ImplsGeneric.as.Generic.impl.F.decl: %ImplsGeneric.as.Generic.impl.F.type = fn_decl @ImplsGeneric.as.Generic.impl.F [concrete = constants.%ImplsGeneric.as.Generic.impl.F] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %ImplsGeneric.as.Generic.impl.F.decl // CHECK:STDOUT: witness = file.%Generic.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Other.impl: %ImplsGeneric.ref as %Other.ref { -// CHECK:STDOUT: %G.decl: %G.type.58d = fn_decl @G.loc30 [concrete = constants.%G.b67] {} {} +// CHECK:STDOUT: impl @ImplsGeneric.as.Other.impl: %ImplsGeneric.ref as %Other.ref { +// CHECK:STDOUT: %ImplsGeneric.as.Other.impl.G.decl: %ImplsGeneric.as.Other.impl.G.type = fn_decl @ImplsGeneric.as.Other.impl.G [concrete = constants.%ImplsGeneric.as.Other.impl.G] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .G = %ImplsGeneric.as.Other.impl.G.decl // CHECK:STDOUT: witness = file.%Other.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: @@ -225,20 +225,20 @@ fn G() { // CHECK:STDOUT: .Self = constants.%ImplsGeneric // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc16(@Generic.%Scalar.loc15_19.2: type, @Generic.%Self.1: @Generic.%Generic.type (%Generic.type.91ccba.1)) { +// CHECK:STDOUT: generic fn @Generic.F(@Generic.%Scalar.loc15_19.2: type, @Generic.%Self.1: @Generic.%Generic.type (%Generic.type.91ccba.1)) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc23() { +// CHECK:STDOUT: fn @ImplsGeneric.as.Generic.impl.F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @G.loc27(@Other.%Self: %Other.type) { +// CHECK:STDOUT: generic fn @Other.G(@Other.%Self: %Other.type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G.loc30(); +// CHECK:STDOUT: fn @ImplsGeneric.as.Other.impl.G(); // CHECK:STDOUT: // CHECK:STDOUT: generic fn @CallGenericMethod(%T.loc33_22.2: type, %U.loc33_32.2: @CallGenericMethod.%Generic.type.loc33_45.1 (%Generic.type.91ccba.2)) { // CHECK:STDOUT: %T.loc33_22.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc33_22.1 (constants.%T)] @@ -249,14 +249,14 @@ fn G() { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %Generic.type.loc33_45.1 [symbolic = %require_complete (constants.%require_complete)] // CHECK:STDOUT: %Generic.assoc_type: type = assoc_entity_type @Generic, @Generic(%T.loc33_22.1) [symbolic = %Generic.assoc_type (constants.%Generic.assoc_type.0fd877.2)] -// CHECK:STDOUT: %assoc0: @CallGenericMethod.%Generic.assoc_type (%Generic.assoc_type.0fd877.2) = assoc_entity element0, @Generic.%F.decl [symbolic = %assoc0 (constants.%assoc0.2966cb.2)] +// CHECK:STDOUT: %assoc0: @CallGenericMethod.%Generic.assoc_type (%Generic.assoc_type.0fd877.2) = assoc_entity element0, @Generic.%Generic.F.decl [symbolic = %assoc0 (constants.%assoc0.2966cb.2)] // CHECK:STDOUT: %U.as_type.loc34_4.2: type = facet_access_type %U.loc33_32.1 [symbolic = %U.as_type.loc34_4.2 (constants.%U.as_type)] // CHECK:STDOUT: %Generic.lookup_impl_witness: = lookup_impl_witness %U.loc33_32.1, @Generic, @Generic(%T.loc33_22.1) [symbolic = %Generic.lookup_impl_witness (constants.%Generic.lookup_impl_witness)] -// CHECK:STDOUT: %F.type: type = fn_type @F.loc16, @Generic(%T.loc33_22.1) [symbolic = %F.type (constants.%F.type.f439a9.2)] +// CHECK:STDOUT: %Generic.F.type: type = fn_type @Generic.F, @Generic(%T.loc33_22.1) [symbolic = %Generic.F.type (constants.%Generic.F.type.f439a9.2)] // CHECK:STDOUT: %Generic.facet: @CallGenericMethod.%Generic.type.loc33_45.1 (%Generic.type.91ccba.2) = facet_value %U.as_type.loc34_4.2, (%Generic.lookup_impl_witness) [symbolic = %Generic.facet (constants.%Generic.facet.680)] -// CHECK:STDOUT: %.loc34_4.3: type = fn_type_with_self_type %F.type, %Generic.facet [symbolic = %.loc34_4.3 (constants.%.177)] +// CHECK:STDOUT: %.loc34_4.3: type = fn_type_with_self_type %Generic.F.type, %Generic.facet [symbolic = %.loc34_4.3 (constants.%.177)] // CHECK:STDOUT: %impl.elem0.loc34_4.2: @CallGenericMethod.%.loc34_4.3 (%.177) = impl_witness_access %Generic.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc34_4.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %specific_impl_fn.loc34_4.2: = specific_impl_function %impl.elem0.loc34_4.2, @F.loc16(%T.loc33_22.1, %Generic.facet) [symbolic = %specific_impl_fn.loc34_4.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc34_4.2: = specific_impl_function %impl.elem0.loc34_4.2, @Generic.F(%T.loc33_22.1, %Generic.facet) [symbolic = %specific_impl_fn.loc34_4.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: // CHECK:STDOUT: fn() { // CHECK:STDOUT: !entry: @@ -266,13 +266,13 @@ fn G() { // CHECK:STDOUT: %U.as_type.loc34_4.1: type = facet_access_type %U.ref [symbolic = %U.as_type.loc34_4.2 (constants.%U.as_type)] // CHECK:STDOUT: %.loc34_4.2: type = converted %U.ref, %U.as_type.loc34_4.1 [symbolic = %U.as_type.loc34_4.2 (constants.%U.as_type)] // CHECK:STDOUT: %impl.elem0.loc34_4.1: @CallGenericMethod.%.loc34_4.3 (%.177) = impl_witness_access constants.%Generic.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc34_4.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %specific_impl_fn.loc34_4.1: = specific_impl_function %impl.elem0.loc34_4.1, @F.loc16(constants.%T, constants.%Generic.facet.680) [symbolic = %specific_impl_fn.loc34_4.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc34_4.1: = specific_impl_function %impl.elem0.loc34_4.1, @Generic.F(constants.%T, constants.%Generic.facet.680) [symbolic = %specific_impl_fn.loc34_4.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %.loc34_7: init %empty_tuple.type = call %specific_impl_fn.loc34_4.1() // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G.loc37() { +// CHECK:STDOUT: fn @G() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %CallGenericMethod.ref: %CallGenericMethod.type = name_ref CallGenericMethod, file.%CallGenericMethod.decl [concrete = constants.%CallGenericMethod] // CHECK:STDOUT: %GenericParam.ref: type = name_ref GenericParam, file.%GenericParam.decl [concrete = constants.%GenericParam] @@ -288,7 +288,7 @@ fn G() { // CHECK:STDOUT: %Scalar.loc15_19.1 => constants.%Scalar // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc16(constants.%Scalar, constants.%Self.dee8d8.1) {} +// CHECK:STDOUT: specific @Generic.F(constants.%Scalar, constants.%Self.dee8d8.1) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @Generic(constants.%GenericParam) { // CHECK:STDOUT: %Scalar.loc15_19.1 => constants.%GenericParam @@ -296,17 +296,17 @@ fn G() { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Generic.type => constants.%Generic.type.769 // CHECK:STDOUT: %Self.2 => constants.%Self.f84 -// CHECK:STDOUT: %F.type => constants.%F.type.4cf -// CHECK:STDOUT: %F => constants.%F.118 +// CHECK:STDOUT: %Generic.F.type => constants.%Generic.F.type.4cf +// CHECK:STDOUT: %Generic.F => constants.%Generic.F.118 // CHECK:STDOUT: %Generic.assoc_type => constants.%Generic.assoc_type.713 // CHECK:STDOUT: %assoc0.loc16_9.2 => constants.%assoc0.9b7 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc16(constants.%GenericParam, constants.%Generic.facet.8ff) {} +// CHECK:STDOUT: specific @Generic.F(constants.%GenericParam, constants.%Generic.facet.8ff) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @G.loc27(constants.%Self.807) {} +// CHECK:STDOUT: specific @Other.G(constants.%Self.807) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @G.loc27(constants.%Other.facet) {} +// CHECK:STDOUT: specific @Other.G(constants.%Other.facet) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @Generic(constants.%T) { // CHECK:STDOUT: %Scalar.loc15_19.1 => constants.%T @@ -314,8 +314,8 @@ fn G() { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Generic.type => constants.%Generic.type.91ccba.2 // CHECK:STDOUT: %Self.2 => constants.%Self.dee8d8.2 -// CHECK:STDOUT: %F.type => constants.%F.type.f439a9.2 -// CHECK:STDOUT: %F => constants.%F.8a2d67.2 +// CHECK:STDOUT: %Generic.F.type => constants.%Generic.F.type.f439a9.2 +// CHECK:STDOUT: %Generic.F => constants.%Generic.F.8a2d67.2 // CHECK:STDOUT: %Generic.assoc_type => constants.%Generic.assoc_type.0fd877.2 // CHECK:STDOUT: %assoc0.loc16_9.2 => constants.%assoc0.2966cb.2 // CHECK:STDOUT: } @@ -327,7 +327,7 @@ fn G() { // CHECK:STDOUT: %pattern_type => constants.%pattern_type.80f // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc16(constants.%T, constants.%Generic.facet.680) {} +// CHECK:STDOUT: specific @Generic.F(constants.%T, constants.%Generic.facet.680) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @CallGenericMethod(constants.%GenericParam, constants.%Generic.facet.8ff) { // CHECK:STDOUT: %T.loc33_22.1 => constants.%GenericParam @@ -341,10 +341,10 @@ fn G() { // CHECK:STDOUT: %assoc0 => constants.%assoc0.9b7 // CHECK:STDOUT: %U.as_type.loc34_4.2 => constants.%ImplsGeneric // CHECK:STDOUT: %Generic.lookup_impl_witness => constants.%Generic.impl_witness -// CHECK:STDOUT: %F.type => constants.%F.type.4cf +// CHECK:STDOUT: %Generic.F.type => constants.%Generic.F.type.4cf // CHECK:STDOUT: %Generic.facet => constants.%Generic.facet.8ff // CHECK:STDOUT: %.loc34_4.3 => constants.%.3e6 -// CHECK:STDOUT: %impl.elem0.loc34_4.2 => constants.%F.a56 -// CHECK:STDOUT: %specific_impl_fn.loc34_4.2 => constants.%F.a56 +// CHECK:STDOUT: %impl.elem0.loc34_4.2 => constants.%ImplsGeneric.as.Generic.impl.F +// CHECK:STDOUT: %specific_impl_fn.loc34_4.2 => constants.%ImplsGeneric.as.Generic.impl.F // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/generic/deduce.carbon b/toolchain/check/testdata/function/generic/deduce.carbon index fe9d8bae1e2f..29109cd77ebe 100644 --- a/toolchain/check/testdata/function/generic/deduce.carbon +++ b/toolchain/check/testdata/function/generic/deduce.carbon @@ -530,10 +530,10 @@ fn F() { // CHECK:STDOUT: %ExplicitAndAlsoDeduced.specific_fn.720: = specific_function %ExplicitAndAlsoDeduced, @ExplicitAndAlsoDeduced(%A) [concrete] // CHECK:STDOUT: %A.val: %A = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.b96: type = fn_type @Op.1, @Destroy.impl(%A) [concrete] -// CHECK:STDOUT: %Op.885: %Op.type.b96 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.b96: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%A) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.885: %T.as.Destroy.impl.Op.type.b96 = struct_value () [concrete] // CHECK:STDOUT: %complete_type.7ea: = complete_type_witness %ptr.6db [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.885, @Op.1(%A) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.885, @T.as.Destroy.impl.Op(%A) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -628,11 +628,11 @@ fn F() { // CHECK:STDOUT: %ExplicitAndAlsoDeduced.call: init %ptr.6db = call %ExplicitAndAlsoDeduced.specific_fn(%.loc11_37.6) // CHECK:STDOUT: %.loc11_39.1: %ptr.6db = value_of_initializer %ExplicitAndAlsoDeduced.call // CHECK:STDOUT: %.loc11_39.2: %ptr.6db = converted %ExplicitAndAlsoDeduced.call, %.loc11_39.1 -// CHECK:STDOUT: %Op.bound: = bound_method %.loc11_37.2, constants.%Op.885 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.885, @Op.1(constants.%A) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc11_37.2, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc11_37.2, constants.%T.as.Destroy.impl.Op.885 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.885, @T.as.Destroy.impl.Op(constants.%A) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %.loc11_37.2, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.6db = addr_of %.loc11_37.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %.loc11_39.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -825,18 +825,18 @@ fn F() { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %tuple: %tuple.type.4c8 = tuple_value (%int_1, %int_2.ef8) [concrete] // CHECK:STDOUT: %complete_type.c49: = complete_type_witness %tuple.type.4c8 [concrete] @@ -851,8 +851,8 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -902,12 +902,12 @@ fn F() { // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %.loc7_19.1: %tuple.type.f94 = tuple_literal (%int_1, %int_2) // CHECK:STDOUT: %TupleParam.specific_fn: = specific_function %TupleParam.ref, @TupleParam(Core.IntLiteral) [concrete = constants.%TupleParam.specific_fn] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc7_19.1: = bound_method %int_2, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc7_19.1: = bound_method %int_2, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc7_19.2: = bound_method %int_2, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc7_19.2(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc7_19.2: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc7_19.2(%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc7_19.2: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc7_19.3: %i32 = converted %int_2, %.loc7_19.2 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %tuple: %tuple.type.4c8 = tuple_value (%int_1, %.loc7_19.3) [concrete = constants.%tuple] // CHECK:STDOUT: %.loc7_19.4: %tuple.type.4c8 = converted %.loc7_19.1, %tuple [concrete = constants.%tuple] @@ -956,18 +956,18 @@ fn F() { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %struct: %struct_type.a.b.a13 = struct_value (%int_1, %int_2.ef8) [concrete] // CHECK:STDOUT: %complete_type.a4a: = complete_type_witness %struct_type.a.b.a13 [concrete] @@ -982,8 +982,8 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1032,12 +1032,12 @@ fn F() { // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %.loc7_30.1: %struct_type.a.b.cfd = struct_literal (%int_1, %int_2) // CHECK:STDOUT: %StructParam.specific_fn: = specific_function %StructParam.ref, @StructParam(Core.IntLiteral) [concrete = constants.%StructParam.specific_fn] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc7_30.1: = bound_method %int_2, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc7_30.1: = bound_method %int_2, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc7_30.2: = bound_method %int_2, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc7_30.2(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc7_30.2: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc7_30.2(%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc7_30.2: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc7_30.3: %i32 = converted %int_2, %.loc7_30.2 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %struct: %struct_type.a.b.a13 = struct_value (%int_1, %.loc7_30.3) [concrete = constants.%struct] // CHECK:STDOUT: %.loc7_30.4: %struct_type.a.b.a13 = converted %.loc7_30.1, %struct [concrete = constants.%struct] @@ -1559,7 +1559,7 @@ fn F() { // CHECK:STDOUT: %DD.type: type = generic_class_type @DD [concrete] // CHECK:STDOUT: %DD.generic: %DD.type = struct_value () [concrete] // CHECK:STDOUT: %DD.296: type = class_type @DD, @DD(%E) [symbolic] -// CHECK:STDOUT: %Z.impl_witness.c98: = impl_witness file.%Z.impl_witness_table.loc9, @Z.impl.266(%E) [symbolic] +// CHECK:STDOUT: %Z.impl_witness.c98: = impl_witness file.%Z.impl_witness_table.loc9, @DD.as.Z.impl(%E) [symbolic] // CHECK:STDOUT: %D: %Z.type = bind_symbolic_name D, 0 [symbolic] // CHECK:STDOUT: %pattern_type.5af: type = pattern_type %Z.type [concrete] // CHECK:STDOUT: %CC.type: type = generic_class_type @CC [concrete] @@ -1568,14 +1568,14 @@ fn F() { // CHECK:STDOUT: %Z.lookup_impl_witness: = lookup_impl_witness %DD.296, @Z [symbolic] // CHECK:STDOUT: %Z.facet.aae: %Z.type = facet_value %DD.296, (%Z.lookup_impl_witness) [symbolic] // CHECK:STDOUT: %CC.23e: type = class_type @CC, @CC(%Z.facet.aae) [symbolic] -// CHECK:STDOUT: %Z.impl_witness.b58: = impl_witness file.%Z.impl_witness_table.loc12, @Z.impl.497(%E) [symbolic] +// CHECK:STDOUT: %Z.impl_witness.b58: = impl_witness file.%Z.impl_witness_table.loc12, @CC.as.Z.impl(%E) [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %DD.689: type = class_type @DD, @DD(%EE) [concrete] -// CHECK:STDOUT: %Z.impl_witness.0e8: = impl_witness file.%Z.impl_witness_table.loc9, @Z.impl.266(%EE) [concrete] +// CHECK:STDOUT: %Z.impl_witness.0e8: = impl_witness file.%Z.impl_witness_table.loc9, @DD.as.Z.impl(%EE) [concrete] // CHECK:STDOUT: %Z.facet.a96: %Z.type = facet_value %DD.689, (%Z.impl_witness.0e8) [concrete] // CHECK:STDOUT: %CC.402: type = class_type @CC, @CC(%Z.facet.a96) [concrete] -// CHECK:STDOUT: %Z.impl_witness.db1: = impl_witness file.%Z.impl_witness_table.loc12, @Z.impl.497(%EE) [concrete] +// CHECK:STDOUT: %Z.impl_witness.db1: = impl_witness file.%Z.impl_witness_table.loc12, @CC.as.Z.impl(%EE) [concrete] // CHECK:STDOUT: %Z.facet.49b: %Z.type = facet_value %CC.402, (%Z.impl_witness.db1) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1598,18 +1598,18 @@ fn F() { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Z.decl: type = interface_decl @Z [concrete = constants.%Z.type] {} {} // CHECK:STDOUT: %EE.decl: type = class_decl @EE [concrete = constants.%EE] {} {} -// CHECK:STDOUT: impl_decl @Z.impl.a6b [concrete] {} { +// CHECK:STDOUT: impl_decl @EE.as.Z.impl [concrete] {} { // CHECK:STDOUT: %EE.ref: type = name_ref EE, file.%EE.decl [concrete = constants.%EE] // CHECK:STDOUT: %Z.ref: type = name_ref Z, file.%Z.decl [concrete = constants.%Z.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %Z.impl_witness_table.loc6 = impl_witness_table (), @Z.impl.a6b [concrete] +// CHECK:STDOUT: %Z.impl_witness_table.loc6 = impl_witness_table (), @EE.as.Z.impl [concrete] // CHECK:STDOUT: %Z.impl_witness.loc6: = impl_witness %Z.impl_witness_table.loc6 [concrete = constants.%Z.impl_witness.354] // CHECK:STDOUT: %DD.decl: %DD.type = class_decl @DD [concrete = constants.%DD.generic] { // CHECK:STDOUT: %E.patt: %pattern_type.98f = symbolic_binding_pattern E, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %E.loc8_10.2: type = bind_symbolic_name E, 0 [symbolic = %E.loc8_10.1 (constants.%E)] // CHECK:STDOUT: } -// CHECK:STDOUT: impl_decl @Z.impl.266 [concrete] { +// CHECK:STDOUT: impl_decl @DD.as.Z.impl [concrete] { // CHECK:STDOUT: %E.patt: %pattern_type.98f = symbolic_binding_pattern E, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %DD.ref: %DD.type = name_ref DD, file.%DD.decl [concrete = constants.%DD.generic] @@ -1618,15 +1618,15 @@ fn F() { // CHECK:STDOUT: %Z.ref: type = name_ref Z, file.%Z.decl [concrete = constants.%Z.type] // CHECK:STDOUT: %E.loc9_14.1: type = bind_symbolic_name E, 0 [symbolic = %E.loc9_14.2 (constants.%E)] // CHECK:STDOUT: } -// CHECK:STDOUT: %Z.impl_witness_table.loc9 = impl_witness_table (), @Z.impl.266 [concrete] -// CHECK:STDOUT: %Z.impl_witness.loc9: = impl_witness %Z.impl_witness_table.loc9, @Z.impl.266(constants.%E) [symbolic = @Z.impl.266.%Z.impl_witness (constants.%Z.impl_witness.c98)] +// CHECK:STDOUT: %Z.impl_witness_table.loc9 = impl_witness_table (), @DD.as.Z.impl [concrete] +// CHECK:STDOUT: %Z.impl_witness.loc9: = impl_witness %Z.impl_witness_table.loc9, @DD.as.Z.impl(constants.%E) [symbolic = @DD.as.Z.impl.%Z.impl_witness (constants.%Z.impl_witness.c98)] // CHECK:STDOUT: %CC.decl: %CC.type = class_decl @CC [concrete = constants.%CC.generic] { // CHECK:STDOUT: %D.patt: %pattern_type.5af = symbolic_binding_pattern D, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Z.ref: type = name_ref Z, file.%Z.decl [concrete = constants.%Z.type] // CHECK:STDOUT: %D.loc11_10.2: %Z.type = bind_symbolic_name D, 0 [symbolic = %D.loc11_10.1 (constants.%D)] // CHECK:STDOUT: } -// CHECK:STDOUT: impl_decl @Z.impl.497 [concrete] { +// CHECK:STDOUT: impl_decl @CC.as.Z.impl [concrete] { // CHECK:STDOUT: %E.patt: %pattern_type.98f = symbolic_binding_pattern E, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %CC.ref: %CC.type = name_ref CC, file.%CC.decl [concrete = constants.%CC.generic] @@ -1639,8 +1639,8 @@ fn F() { // CHECK:STDOUT: %Z.ref: type = name_ref Z, file.%Z.decl [concrete = constants.%Z.type] // CHECK:STDOUT: %E.loc12_14.1: type = bind_symbolic_name E, 0 [symbolic = %E.loc12_14.2 (constants.%E)] // CHECK:STDOUT: } -// CHECK:STDOUT: %Z.impl_witness_table.loc12 = impl_witness_table (), @Z.impl.497 [concrete] -// CHECK:STDOUT: %Z.impl_witness.loc12: = impl_witness %Z.impl_witness_table.loc12, @Z.impl.497(constants.%E) [symbolic = @Z.impl.497.%Z.impl_witness (constants.%Z.impl_witness.b58)] +// CHECK:STDOUT: %Z.impl_witness_table.loc12 = impl_witness_table (), @CC.as.Z.impl [concrete] +// CHECK:STDOUT: %Z.impl_witness.loc12: = impl_witness %Z.impl_witness_table.loc12, @CC.as.Z.impl(constants.%E) [symbolic = @CC.as.Z.impl.%Z.impl_witness (constants.%Z.impl_witness.b58)] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1652,15 +1652,15 @@ fn F() { // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Z.impl.a6b: %EE.ref as %Z.ref { +// CHECK:STDOUT: impl @EE.as.Z.impl: %EE.ref as %Z.ref { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%Z.impl_witness.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @Z.impl.266(%E.loc9_14.1: type) { +// CHECK:STDOUT: generic impl @DD.as.Z.impl(%E.loc9_14.1: type) { // CHECK:STDOUT: %E.loc9_14.2: type = bind_symbolic_name E, 0 [symbolic = %E.loc9_14.2 (constants.%E)] // CHECK:STDOUT: %DD.loc9_28.2: type = class_type @DD, @DD(%E.loc9_14.2) [symbolic = %DD.loc9_28.2 (constants.%DD.296)] -// CHECK:STDOUT: %Z.impl_witness: = impl_witness file.%Z.impl_witness_table.loc9, @Z.impl.266(%E.loc9_14.2) [symbolic = %Z.impl_witness (constants.%Z.impl_witness.c98)] +// CHECK:STDOUT: %Z.impl_witness: = impl_witness file.%Z.impl_witness_table.loc9, @DD.as.Z.impl(%E.loc9_14.2) [symbolic = %Z.impl_witness (constants.%Z.impl_witness.c98)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -1670,13 +1670,13 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @Z.impl.497(%E.loc12_14.1: type) { +// CHECK:STDOUT: generic impl @CC.as.Z.impl(%E.loc12_14.1: type) { // CHECK:STDOUT: %E.loc12_14.2: type = bind_symbolic_name E, 0 [symbolic = %E.loc12_14.2 (constants.%E)] // CHECK:STDOUT: %DD.loc12_31.2: type = class_type @DD, @DD(%E.loc12_14.2) [symbolic = %DD.loc12_31.2 (constants.%DD.296)] // CHECK:STDOUT: %Z.lookup_impl_witness: = lookup_impl_witness %DD.loc12_31.2, @Z [symbolic = %Z.lookup_impl_witness (constants.%Z.lookup_impl_witness)] // CHECK:STDOUT: %Z.facet.loc12_32.2: %Z.type = facet_value %DD.loc12_31.2, (%Z.lookup_impl_witness) [symbolic = %Z.facet.loc12_32.2 (constants.%Z.facet.aae)] // CHECK:STDOUT: %CC.loc12_32.2: type = class_type @CC, @CC(%Z.facet.loc12_32.2) [symbolic = %CC.loc12_32.2 (constants.%CC.23e)] -// CHECK:STDOUT: %Z.impl_witness: = impl_witness file.%Z.impl_witness_table.loc12, @Z.impl.497(%E.loc12_14.2) [symbolic = %Z.impl_witness (constants.%Z.impl_witness.b58)] +// CHECK:STDOUT: %Z.impl_witness: = impl_witness file.%Z.impl_witness_table.loc12, @CC.as.Z.impl(%E.loc12_14.2) [symbolic = %Z.impl_witness (constants.%Z.impl_witness.b58)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -1744,7 +1744,7 @@ fn F() { // CHECK:STDOUT: %E.loc8_10.1 => constants.%E // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Z.impl.266(constants.%E) { +// CHECK:STDOUT: specific @DD.as.Z.impl(constants.%E) { // CHECK:STDOUT: %E.loc9_14.2 => constants.%E // CHECK:STDOUT: %DD.loc9_28.2 => constants.%DD.296 // CHECK:STDOUT: %Z.impl_witness => constants.%Z.impl_witness.c98 @@ -1760,7 +1760,7 @@ fn F() { // CHECK:STDOUT: %D.loc11_10.1 => constants.%Z.facet.aae // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Z.impl.497(constants.%E) { +// CHECK:STDOUT: specific @CC.as.Z.impl(constants.%E) { // CHECK:STDOUT: %E.loc12_14.2 => constants.%E // CHECK:STDOUT: %DD.loc12_31.2 => constants.%DD.296 // CHECK:STDOUT: %Z.lookup_impl_witness => constants.%Z.lookup_impl_witness @@ -1773,7 +1773,7 @@ fn F() { // CHECK:STDOUT: %E.loc8_10.1 => constants.%EE // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Z.impl.266(constants.%EE) { +// CHECK:STDOUT: specific @DD.as.Z.impl(constants.%EE) { // CHECK:STDOUT: %E.loc9_14.2 => constants.%EE // CHECK:STDOUT: %DD.loc9_28.2 => constants.%DD.689 // CHECK:STDOUT: %Z.impl_witness => constants.%Z.impl_witness.0e8 @@ -1785,7 +1785,7 @@ fn F() { // CHECK:STDOUT: %D.loc11_10.1 => constants.%Z.facet.a96 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Z.impl.497(constants.%EE) { +// CHECK:STDOUT: specific @CC.as.Z.impl(constants.%EE) { // CHECK:STDOUT: %E.loc12_14.2 => constants.%EE // CHECK:STDOUT: %DD.loc12_31.2 => constants.%DD.689 // CHECK:STDOUT: %Z.lookup_impl_witness => constants.%Z.impl_witness.0e8 diff --git a/toolchain/check/testdata/function/generic/deduce_nested_facet_value.carbon b/toolchain/check/testdata/function/generic/deduce_nested_facet_value.carbon index d3cbc9573420..b6af743a9c51 100644 --- a/toolchain/check/testdata/function/generic/deduce_nested_facet_value.carbon +++ b/toolchain/check/testdata/function/generic/deduce_nested_facet_value.carbon @@ -59,13 +59,13 @@ fn F() { // CHECK:STDOUT: %BitAndWith.type.f2e: type = generic_interface_type @BitAndWith [concrete] // CHECK:STDOUT: %BitAndWith.generic: %BitAndWith.type.f2e = struct_value () [concrete] // CHECK:STDOUT: %BitAndWith.type.e8c: type = facet_type <@BitAndWith, @BitAndWith(type)> [concrete] -// CHECK:STDOUT: %Op.type.9a3: type = fn_type @Op.1, @BitAndWith(type) [concrete] +// CHECK:STDOUT: %BitAndWith.Op.type.9a3: type = fn_type @BitAndWith.Op, @BitAndWith(type) [concrete] // CHECK:STDOUT: %BitAndWith.impl_witness: = impl_witness imports.%BitAndWith.impl_witness_table [concrete] // CHECK:STDOUT: %BitAndWith.facet: %BitAndWith.type.e8c = facet_value type, (%BitAndWith.impl_witness) [concrete] -// CHECK:STDOUT: %.2af: type = fn_type_with_self_type %Op.type.9a3, %BitAndWith.facet [concrete] -// CHECK:STDOUT: %Op.type.1cc: type = fn_type @Op.2 [concrete] -// CHECK:STDOUT: %Op.ff4: %Op.type.1cc = struct_value () [concrete] -// CHECK:STDOUT: %Op.bound: = bound_method %Y.type, %Op.ff4 [concrete] +// CHECK:STDOUT: %.2af: type = fn_type_with_self_type %BitAndWith.Op.type.9a3, %BitAndWith.facet [concrete] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.type: type = fn_type @type.as.BitAndWith.impl.Op [concrete] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op: %type.as.BitAndWith.impl.Op.type = struct_value () [concrete] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.bound: = bound_method %Y.type, %type.as.BitAndWith.impl.Op [concrete] // CHECK:STDOUT: %facet_type: type = facet_type <@Y & @W> [concrete] // CHECK:STDOUT: %E: %facet_type = bind_symbolic_name E, 0 [symbolic] // CHECK:STDOUT: %pattern_type.122: type = pattern_type %facet_type [concrete] @@ -73,13 +73,13 @@ fn F() { // CHECK:STDOUT: %E.as_type: type = facet_access_type %E [symbolic] // CHECK:STDOUT: %Y.facet.7ec: %Y.type = facet_value %E.as_type, (%Y.lookup_impl_witness) [symbolic] // CHECK:STDOUT: %CC.d02: type = class_type @CC, @CC(%Y.facet.7ec) [symbolic] -// CHECK:STDOUT: %Z.impl_witness.741: = impl_witness file.%Z.impl_witness_table, @Z.impl(%E) [symbolic] +// CHECK:STDOUT: %Z.impl_witness.741: = impl_witness file.%Z.impl_witness_table, @CC.as.Z.impl(%E) [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %Y.facet.268: %Y.type = facet_value %DD, (%Y.impl_witness) [concrete] // CHECK:STDOUT: %CC.7bf: type = class_type @CC, @CC(%Y.facet.268) [concrete] // CHECK:STDOUT: %facet_value: %facet_type = facet_value %DD, (%Y.impl_witness, %W.impl_witness) [concrete] -// CHECK:STDOUT: %Z.impl_witness.3b0: = impl_witness file.%Z.impl_witness_table, @Z.impl(%facet_value) [concrete] +// CHECK:STDOUT: %Z.impl_witness.3b0: = impl_witness file.%Z.impl_witness_table, @CC.as.Z.impl(%facet_value) [concrete] // CHECK:STDOUT: %Z.facet: %Z.type = facet_value %CC.7bf, (%Z.impl_witness.3b0) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -90,8 +90,8 @@ fn F() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.BitAndWith: %BitAndWith.type.f2e = import_ref Core//prelude, BitAndWith, loaded [concrete = constants.%BitAndWith.generic] -// CHECK:STDOUT: %Core.import_ref.012: %Op.type.1cc = import_ref Core//prelude, loc13_42, loaded [concrete = constants.%Op.ff4] -// CHECK:STDOUT: %BitAndWith.impl_witness_table = impl_witness_table (%Core.import_ref.012), @BitAndWith.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.012: %type.as.BitAndWith.impl.Op.type = import_ref Core//prelude, loc13_42, loaded [concrete = constants.%type.as.BitAndWith.impl.Op] +// CHECK:STDOUT: %BitAndWith.impl_witness_table = impl_witness_table (%Core.import_ref.012), @type.as.BitAndWith.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -108,17 +108,17 @@ fn F() { // CHECK:STDOUT: %Y.decl: type = interface_decl @Y [concrete = constants.%Y.type] {} {} // CHECK:STDOUT: %W.decl: type = interface_decl @W [concrete = constants.%W.type] {} {} // CHECK:STDOUT: %DD.decl: type = class_decl @DD [concrete = constants.%DD] {} {} -// CHECK:STDOUT: impl_decl @Y.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @DD.as.Y.impl [concrete] {} { // CHECK:STDOUT: %DD.ref: type = name_ref DD, file.%DD.decl [concrete = constants.%DD] // CHECK:STDOUT: %Y.ref: type = name_ref Y, file.%Y.decl [concrete = constants.%Y.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %Y.impl_witness_table = impl_witness_table (), @Y.impl [concrete] +// CHECK:STDOUT: %Y.impl_witness_table = impl_witness_table (), @DD.as.Y.impl [concrete] // CHECK:STDOUT: %Y.impl_witness: = impl_witness %Y.impl_witness_table [concrete = constants.%Y.impl_witness] -// CHECK:STDOUT: impl_decl @W.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @DD.as.W.impl [concrete] {} { // CHECK:STDOUT: %DD.ref: type = name_ref DD, file.%DD.decl [concrete = constants.%DD] // CHECK:STDOUT: %W.ref: type = name_ref W, file.%W.decl [concrete = constants.%W.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %W.impl_witness_table = impl_witness_table (), @W.impl [concrete] +// CHECK:STDOUT: %W.impl_witness_table = impl_witness_table (), @DD.as.W.impl [concrete] // CHECK:STDOUT: %W.impl_witness: = impl_witness %W.impl_witness_table [concrete = constants.%W.impl_witness] // CHECK:STDOUT: %CC.decl: %CC.type = class_decl @CC [concrete = constants.%CC.generic] { // CHECK:STDOUT: %D.patt: %pattern_type.667 = symbolic_binding_pattern D, 0 [concrete] @@ -127,7 +127,7 @@ fn F() { // CHECK:STDOUT: %D.loc12_10.2: %Y.type = bind_symbolic_name D, 0 [symbolic = %D.loc12_10.1 (constants.%D)] // CHECK:STDOUT: } // CHECK:STDOUT: %Z.decl: type = interface_decl @Z [concrete = constants.%Z.type] {} {} -// CHECK:STDOUT: impl_decl @Z.impl [concrete] { +// CHECK:STDOUT: impl_decl @CC.as.Z.impl [concrete] { // CHECK:STDOUT: %E.patt: %pattern_type.122 = symbolic_binding_pattern E, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %CC.ref: %CC.type = name_ref CC, file.%CC.decl [concrete = constants.%CC.generic] @@ -140,16 +140,16 @@ fn F() { // CHECK:STDOUT: %.loc19_20.1: type = splice_block %.loc19_20.3 [concrete = constants.%facet_type] { // CHECK:STDOUT: %Y.ref: type = name_ref Y, file.%Y.decl [concrete = constants.%Y.type] // CHECK:STDOUT: %W.ref: type = name_ref W, file.%W.decl [concrete = constants.%W.type] -// CHECK:STDOUT: %impl.elem0: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%Op.ff4] -// CHECK:STDOUT: %bound_method: = bound_method %Y.ref, %impl.elem0 [concrete = constants.%Op.bound] -// CHECK:STDOUT: %type.and: init type = call %bound_method(%Y.ref, %W.ref) [concrete = constants.%facet_type] -// CHECK:STDOUT: %.loc19_20.2: type = value_of_initializer %type.and [concrete = constants.%facet_type] -// CHECK:STDOUT: %.loc19_20.3: type = converted %type.and, %.loc19_20.2 [concrete = constants.%facet_type] +// CHECK:STDOUT: %impl.elem0: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%type.as.BitAndWith.impl.Op] +// CHECK:STDOUT: %bound_method: = bound_method %Y.ref, %impl.elem0 [concrete = constants.%type.as.BitAndWith.impl.Op.bound] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.call: init type = call %bound_method(%Y.ref, %W.ref) [concrete = constants.%facet_type] +// CHECK:STDOUT: %.loc19_20.2: type = value_of_initializer %type.as.BitAndWith.impl.Op.call [concrete = constants.%facet_type] +// CHECK:STDOUT: %.loc19_20.3: type = converted %type.as.BitAndWith.impl.Op.call, %.loc19_20.2 [concrete = constants.%facet_type] // CHECK:STDOUT: } // CHECK:STDOUT: %E.loc19_14.1: %facet_type = bind_symbolic_name E, 0 [symbolic = %E.loc19_14.2 (constants.%E)] // CHECK:STDOUT: } -// CHECK:STDOUT: %Z.impl_witness_table = impl_witness_table (), @Z.impl [concrete] -// CHECK:STDOUT: %Z.impl_witness: = impl_witness %Z.impl_witness_table, @Z.impl(constants.%E) [symbolic = @Z.impl.%Z.impl_witness (constants.%Z.impl_witness.741)] +// CHECK:STDOUT: %Z.impl_witness_table = impl_witness_table (), @CC.as.Z.impl [concrete] +// CHECK:STDOUT: %Z.impl_witness: = impl_witness %Z.impl_witness_table, @CC.as.Z.impl(constants.%E) [symbolic = @CC.as.Z.impl.%Z.impl_witness (constants.%Z.impl_witness.741)] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: @@ -177,23 +177,23 @@ fn F() { // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Y.impl: %DD.ref as %Y.ref { +// CHECK:STDOUT: impl @DD.as.Y.impl: %DD.ref as %Y.ref { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%Y.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @W.impl: %DD.ref as %W.ref { +// CHECK:STDOUT: impl @DD.as.W.impl: %DD.ref as %W.ref { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%W.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @Z.impl(%E.loc19_14.1: %facet_type) { +// CHECK:STDOUT: generic impl @CC.as.Z.impl(%E.loc19_14.1: %facet_type) { // CHECK:STDOUT: %E.loc19_14.2: %facet_type = bind_symbolic_name E, 0 [symbolic = %E.loc19_14.2 (constants.%E)] // CHECK:STDOUT: %Y.lookup_impl_witness: = lookup_impl_witness %E.loc19_14.2, @Y [symbolic = %Y.lookup_impl_witness (constants.%Y.lookup_impl_witness)] // CHECK:STDOUT: %E.as_type.loc19_29.2: type = facet_access_type %E.loc19_14.2 [symbolic = %E.as_type.loc19_29.2 (constants.%E.as_type)] // CHECK:STDOUT: %Y.facet.loc19_29.2: %Y.type = facet_value %E.as_type.loc19_29.2, (%Y.lookup_impl_witness) [symbolic = %Y.facet.loc19_29.2 (constants.%Y.facet.7ec)] // CHECK:STDOUT: %CC.loc19_29.2: type = class_type @CC, @CC(%Y.facet.loc19_29.2) [symbolic = %CC.loc19_29.2 (constants.%CC.d02)] -// CHECK:STDOUT: %Z.impl_witness: = impl_witness file.%Z.impl_witness_table, @Z.impl(%E.loc19_14.2) [symbolic = %Z.impl_witness (constants.%Z.impl_witness.741)] +// CHECK:STDOUT: %Z.impl_witness: = impl_witness file.%Z.impl_witness_table, @CC.as.Z.impl(%E.loc19_14.2) [symbolic = %Z.impl_witness (constants.%Z.impl_witness.741)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -250,7 +250,7 @@ fn F() { // CHECK:STDOUT: %D.loc12_10.1 => constants.%Y.facet.7ec // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Z.impl(constants.%E) { +// CHECK:STDOUT: specific @CC.as.Z.impl(constants.%E) { // CHECK:STDOUT: %E.loc19_14.2 => constants.%E // CHECK:STDOUT: %Y.lookup_impl_witness => constants.%Y.lookup_impl_witness // CHECK:STDOUT: %E.as_type.loc19_29.2 => constants.%E.as_type @@ -263,7 +263,7 @@ fn F() { // CHECK:STDOUT: %D.loc12_10.1 => constants.%Y.facet.268 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Z.impl(constants.%facet_value) { +// CHECK:STDOUT: specific @CC.as.Z.impl(constants.%facet_value) { // CHECK:STDOUT: %E.loc19_14.2 => constants.%facet_value // CHECK:STDOUT: %Y.lookup_impl_witness => constants.%Y.impl_witness // CHECK:STDOUT: %E.as_type.loc19_29.2 => constants.%DD diff --git a/toolchain/check/testdata/function/generic/param_in_type.carbon b/toolchain/check/testdata/function/generic/param_in_type.carbon index 7450e883638a..130a3d2039e5 100644 --- a/toolchain/check/testdata/function/generic/param_in_type.carbon +++ b/toolchain/check/testdata/function/generic/param_in_type.carbon @@ -26,20 +26,20 @@ fn F(N:! i32, a: array(i32, N)*); // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.2fd: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [concrete] -// CHECK:STDOUT: %Convert.type.71e: type = fn_type @Convert.1, @ImplicitAs(Core.IntLiteral) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.71e: type = fn_type @ImplicitAs.Convert, @ImplicitAs(Core.IntLiteral) [concrete] // CHECK:STDOUT: %From: Core.IntLiteral = bind_symbolic_name From, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.708: type = fn_type @Convert.3, @ImplicitAs.impl.971(%From) [symbolic] -// CHECK:STDOUT: %Convert.c68: %Convert.type.708 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.a11: = impl_witness imports.%ImplicitAs.impl_witness_table.1d9, @ImplicitAs.impl.971(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.4ad: type = fn_type @Convert.3, @ImplicitAs.impl.971(%int_32) [concrete] -// CHECK:STDOUT: %Convert.960: %Convert.type.4ad = struct_value () [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.type.708: type = fn_type @Int.as.ImplicitAs.impl.Convert, @Int.as.ImplicitAs.impl(%From) [symbolic] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.c68: %Int.as.ImplicitAs.impl.Convert.type.708 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.a11: = impl_witness imports.%ImplicitAs.impl_witness_table.1d9, @Int.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.type.4ad: type = fn_type @Int.as.ImplicitAs.impl.Convert, @Int.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.960: %Int.as.ImplicitAs.impl.Convert.type.4ad = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.2fd = facet_value %i32, (%ImplicitAs.impl_witness.a11) [concrete] -// CHECK:STDOUT: %.0ea: type = fn_type_with_self_type %Convert.type.71e, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %N.51e, %Convert.960 [symbolic] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.960, @Convert.3(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %N.51e, %Convert.specific_fn [symbolic] -// CHECK:STDOUT: %int.convert_checked: init Core.IntLiteral = call %bound_method(%N.51e) [symbolic] -// CHECK:STDOUT: %array_type: type = array_type %int.convert_checked, %i32 [symbolic] +// CHECK:STDOUT: %.0ea: type = fn_type_with_self_type %ImplicitAs.Convert.type.71e, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.bound: = bound_method %N.51e, %Int.as.ImplicitAs.impl.Convert.960 [symbolic] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Int.as.ImplicitAs.impl.Convert.960, @Int.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %N.51e, %Int.as.ImplicitAs.impl.Convert.specific_fn [symbolic] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call: init Core.IntLiteral = call %bound_method(%N.51e) [symbolic] +// CHECK:STDOUT: %array_type: type = array_type %Int.as.ImplicitAs.impl.Convert.call, %i32 [symbolic] // CHECK:STDOUT: %ptr: type = ptr_type %array_type [symbolic] // CHECK:STDOUT: %pattern_type.c7e: type = pattern_type %ptr [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] @@ -55,8 +55,8 @@ fn F(N:! i32, a: array(i32, N)*); // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.85c: @ImplicitAs.impl.971.%Convert.type (%Convert.type.708) = import_ref Core//prelude/parts/int, loc20_44, loaded [symbolic = @ImplicitAs.impl.971.%Convert (constants.%Convert.c68)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.1d9 = impl_witness_table (%Core.import_ref.85c), @ImplicitAs.impl.971 [concrete] +// CHECK:STDOUT: %Core.import_ref.85c: @Int.as.ImplicitAs.impl.%Int.as.ImplicitAs.impl.Convert.type (%Int.as.ImplicitAs.impl.Convert.type.708) = import_ref Core//prelude/parts/int, loc20_44, loaded [symbolic = @Int.as.ImplicitAs.impl.%Int.as.ImplicitAs.impl.Convert (constants.%Int.as.ImplicitAs.impl.Convert.c68)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.1d9 = impl_witness_table (%Core.import_ref.85c), @Int.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -80,13 +80,13 @@ fn F(N:! i32, a: array(i32, N)*); // CHECK:STDOUT: %int_32.loc15_24: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc15_24: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %N.ref: %i32 = name_ref N, %N.loc15_6.2 [symbolic = %N.loc15_6.1 (constants.%N.51e)] -// CHECK:STDOUT: %impl.elem0: %.0ea = impl_witness_access constants.%ImplicitAs.impl_witness.a11, element0 [concrete = constants.%Convert.960] -// CHECK:STDOUT: %bound_method.loc15_29.2: = bound_method %N.ref, %impl.elem0 [symbolic = %Convert.bound (constants.%Convert.bound)] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.0ea = impl_witness_access constants.%ImplicitAs.impl_witness.a11, element0 [concrete = constants.%Int.as.ImplicitAs.impl.Convert.960] +// CHECK:STDOUT: %bound_method.loc15_29.2: = bound_method %N.ref, %impl.elem0 [symbolic = %Int.as.ImplicitAs.impl.Convert.bound (constants.%Int.as.ImplicitAs.impl.Convert.bound)] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Int.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Int.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc15_29.3: = bound_method %N.ref, %specific_fn [symbolic = %bound_method.loc15_29.1 (constants.%bound_method)] -// CHECK:STDOUT: %int.convert_checked.loc15_29.2: init Core.IntLiteral = call %bound_method.loc15_29.3(%N.ref) [symbolic = %int.convert_checked.loc15_29.1 (constants.%int.convert_checked)] -// CHECK:STDOUT: %.loc15_29.1: Core.IntLiteral = value_of_initializer %int.convert_checked.loc15_29.2 [symbolic = %int.convert_checked.loc15_29.1 (constants.%int.convert_checked)] -// CHECK:STDOUT: %.loc15_29.2: Core.IntLiteral = converted %N.ref, %.loc15_29.1 [symbolic = %int.convert_checked.loc15_29.1 (constants.%int.convert_checked)] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call.loc15_29.2: init Core.IntLiteral = call %bound_method.loc15_29.3(%N.ref) [symbolic = %Int.as.ImplicitAs.impl.Convert.call.loc15_29.1 (constants.%Int.as.ImplicitAs.impl.Convert.call)] +// CHECK:STDOUT: %.loc15_29.1: Core.IntLiteral = value_of_initializer %Int.as.ImplicitAs.impl.Convert.call.loc15_29.2 [symbolic = %Int.as.ImplicitAs.impl.Convert.call.loc15_29.1 (constants.%Int.as.ImplicitAs.impl.Convert.call)] +// CHECK:STDOUT: %.loc15_29.2: Core.IntLiteral = converted %N.ref, %.loc15_29.1 [symbolic = %Int.as.ImplicitAs.impl.Convert.call.loc15_29.1 (constants.%Int.as.ImplicitAs.impl.Convert.call)] // CHECK:STDOUT: %array_type.loc15_30.2: type = array_type %.loc15_29.2, %i32.loc15_24 [symbolic = %array_type.loc15_30.1 (constants.%array_type)] // CHECK:STDOUT: %ptr.loc15_31.2: type = ptr_type %array_type.loc15_30.2 [symbolic = %ptr.loc15_31.1 (constants.%ptr)] // CHECK:STDOUT: } @@ -96,10 +96,10 @@ fn F(N:! i32, a: array(i32, N)*); // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%N.loc15_6.2: %i32) { // CHECK:STDOUT: %N.loc15_6.1: %i32 = bind_symbolic_name N, 0 [symbolic = %N.loc15_6.1 (constants.%N.51e)] -// CHECK:STDOUT: %Convert.bound: = bound_method %N.loc15_6.1, constants.%Convert.960 [symbolic = %Convert.bound (constants.%Convert.bound)] -// CHECK:STDOUT: %bound_method.loc15_29.1: = bound_method %N.loc15_6.1, constants.%Convert.specific_fn [symbolic = %bound_method.loc15_29.1 (constants.%bound_method)] -// CHECK:STDOUT: %int.convert_checked.loc15_29.1: init Core.IntLiteral = call %bound_method.loc15_29.1(%N.loc15_6.1) [symbolic = %int.convert_checked.loc15_29.1 (constants.%int.convert_checked)] -// CHECK:STDOUT: %array_type.loc15_30.1: type = array_type %int.convert_checked.loc15_29.1, constants.%i32 [symbolic = %array_type.loc15_30.1 (constants.%array_type)] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.bound: = bound_method %N.loc15_6.1, constants.%Int.as.ImplicitAs.impl.Convert.960 [symbolic = %Int.as.ImplicitAs.impl.Convert.bound (constants.%Int.as.ImplicitAs.impl.Convert.bound)] +// CHECK:STDOUT: %bound_method.loc15_29.1: = bound_method %N.loc15_6.1, constants.%Int.as.ImplicitAs.impl.Convert.specific_fn [symbolic = %bound_method.loc15_29.1 (constants.%bound_method)] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call.loc15_29.1: init Core.IntLiteral = call %bound_method.loc15_29.1(%N.loc15_6.1) [symbolic = %Int.as.ImplicitAs.impl.Convert.call.loc15_29.1 (constants.%Int.as.ImplicitAs.impl.Convert.call)] +// CHECK:STDOUT: %array_type.loc15_30.1: type = array_type %Int.as.ImplicitAs.impl.Convert.call.loc15_29.1, constants.%i32 [symbolic = %array_type.loc15_30.1 (constants.%array_type)] // CHECK:STDOUT: %ptr.loc15_31.1: type = ptr_type %array_type.loc15_30.1 [symbolic = %ptr.loc15_31.1 (constants.%ptr)] // CHECK:STDOUT: %pattern_type: type = pattern_type %ptr.loc15_31.1 [symbolic = %pattern_type (constants.%pattern_type.c7e)] // CHECK:STDOUT: @@ -108,9 +108,9 @@ fn F(N:! i32, a: array(i32, N)*); // CHECK:STDOUT: // CHECK:STDOUT: specific @F(constants.%N.51e) { // CHECK:STDOUT: %N.loc15_6.1 => constants.%N.51e -// CHECK:STDOUT: %Convert.bound => constants.%Convert.bound +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.bound => constants.%Int.as.ImplicitAs.impl.Convert.bound // CHECK:STDOUT: %bound_method.loc15_29.1 => constants.%bound_method -// CHECK:STDOUT: %int.convert_checked.loc15_29.1 => constants.%int.convert_checked +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call.loc15_29.1 => constants.%Int.as.ImplicitAs.impl.Convert.call // CHECK:STDOUT: %array_type.loc15_30.1 => constants.%array_type // CHECK:STDOUT: %ptr.loc15_31.1 => constants.%ptr // CHECK:STDOUT: %pattern_type => constants.%pattern_type.c7e diff --git a/toolchain/check/testdata/function/generic/resolve_used.carbon b/toolchain/check/testdata/function/generic/resolve_used.carbon index f3c3c1a4157f..5004ddf2d1e7 100644 --- a/toolchain/check/testdata/function/generic/resolve_used.carbon +++ b/toolchain/check/testdata/function/generic/resolve_used.carbon @@ -54,17 +54,17 @@ fn CallNegative() { // CHECK:STDOUT: %require_complete.b4f426.1: = require_complete_type %Int.49d0e6.1 [symbolic] // CHECK:STDOUT: %pattern_type.8963eb.1: type = pattern_type %Int.49d0e6.1 [symbolic] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.bae: type = fn_type @Op.1 [concrete] +// CHECK:STDOUT: %Destroy.Op.type: type = fn_type @Destroy.Op [concrete] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %Op.type.bc9: type = fn_type @Op.3, @Destroy.impl(%T) [symbolic] -// CHECK:STDOUT: %Op.46f: %Op.type.bc9 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.bc9: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%T) [symbolic] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.46f: %T.as.Destroy.impl.Op.type.bc9 = struct_value () [symbolic] // CHECK:STDOUT: %ptr.784: type = ptr_type %Int.49d0e6.1 [symbolic] // CHECK:STDOUT: %require_complete.0f5: = require_complete_type %ptr.784 [symbolic] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %Int.49d0e6.1, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.13d: %Destroy.type = facet_value %Int.49d0e6.1, (%Destroy.lookup_impl_witness) [symbolic] -// CHECK:STDOUT: %.bbc: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.13d [symbolic] +// CHECK:STDOUT: %.bbc: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.13d [symbolic] // CHECK:STDOUT: %impl.elem0.fe8: %.bbc = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0.fe8, @Op.1(%Destroy.facet.13d) [symbolic] +// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0.fe8, @Destroy.Op(%Destroy.facet.13d) [symbolic] // CHECK:STDOUT: %CallNegative.type: type = fn_type @CallNegative [concrete] // CHECK:STDOUT: %CallNegative: %CallNegative.type = struct_value () [concrete] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] @@ -72,14 +72,14 @@ fn CallNegative() { // CHECK:STDOUT: %i0: type = class_type @Int, @Int(%int_0) [concrete] // CHECK:STDOUT: %complete_type.d94: = complete_type_witness [concrete] // CHECK:STDOUT: %pattern_type.47b: type = pattern_type %i0 [concrete] -// CHECK:STDOUT: %Destroy.impl_witness.404: = impl_witness imports.%Destroy.impl_witness_table, @Destroy.impl(%i0) [concrete] -// CHECK:STDOUT: %Op.type.1c2: type = fn_type @Op.3, @Destroy.impl(%i0) [concrete] -// CHECK:STDOUT: %Op.912: %Op.type.1c2 = struct_value () [concrete] +// CHECK:STDOUT: %Destroy.impl_witness.404: = impl_witness imports.%Destroy.impl_witness_table, @T.as.Destroy.impl(%i0) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.1c2: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%i0) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.912: %T.as.Destroy.impl.Op.type.1c2 = struct_value () [concrete] // CHECK:STDOUT: %ptr.3f1: type = ptr_type %i0 [concrete] // CHECK:STDOUT: %complete_type.588: = complete_type_witness %ptr.3f1 [concrete] // CHECK:STDOUT: %Destroy.facet.973: %Destroy.type = facet_value %i0, (%Destroy.impl_witness.404) [concrete] -// CHECK:STDOUT: %.9ab: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.973 [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.912, @Op.3(%i0) [concrete] +// CHECK:STDOUT: %.9ab: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.973 [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.912, @T.as.Destroy.impl.Op(%i0) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -93,8 +93,8 @@ fn CallNegative() { // CHECK:STDOUT: %Core.IntLiteral: %IntLiteral.type = import_ref Core//prelude/parts/int_literal, IntLiteral, loaded [concrete = constants.%IntLiteral] // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @Destroy.impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @Destroy.impl.%Op (constants.%Op.46f)] -// CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @Destroy.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.0b9: @T.as.Destroy.impl.%T.as.Destroy.impl.Op.type (%T.as.Destroy.impl.Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @T.as.Destroy.impl.%T.as.Destroy.impl.Op (constants.%T.as.Destroy.impl.Op.46f)] +// CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @T.as.Destroy.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -110,9 +110,9 @@ fn CallNegative() { // CHECK:STDOUT: %.loc4_39.1: type = splice_block %.loc4_39.3 [concrete = Core.IntLiteral] { // CHECK:STDOUT: %Core.ref.loc4: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, imports.%Core.IntLiteral [concrete = constants.%IntLiteral] -// CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc4_39.2: type = value_of_initializer %int_literal.make_type [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc4_39.3: type = converted %int_literal.make_type, %.loc4_39.2 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %IntLiteral.call: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc4_39.2: type = value_of_initializer %IntLiteral.call [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc4_39.3: type = converted %IntLiteral.call, %.loc4_39.2 [concrete = Core.IntLiteral] // CHECK:STDOUT: } // CHECK:STDOUT: %N.loc4_19.2: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N.loc4_19.1 (constants.%N)] // CHECK:STDOUT: } @@ -128,9 +128,9 @@ fn CallNegative() { // CHECK:STDOUT: %pattern_type: type = pattern_type %Int.loc12_20.2 [symbolic = %pattern_type (constants.%pattern_type.8963eb.1)] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %Int.loc12_20.2, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness)] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %Int.loc12_20.2, (%Destroy.lookup_impl_witness) [symbolic = %Destroy.facet (constants.%Destroy.facet.13d)] -// CHECK:STDOUT: %.loc12_3.2: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.loc12_3.2 (constants.%.bbc)] +// CHECK:STDOUT: %.loc12_3.2: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet [symbolic = %.loc12_3.2 (constants.%.bbc)] // CHECK:STDOUT: %impl.elem0.loc12_3.2: @ErrorIfNIsZero.%.loc12_3.2 (%.bbc) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc12_3.2 (constants.%impl.elem0.fe8)] -// CHECK:STDOUT: %specific_impl_fn.loc12_3.2: = specific_impl_function %impl.elem0.loc12_3.2, @Op.1(%Destroy.facet) [symbolic = %specific_impl_fn.loc12_3.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc12_3.2: = specific_impl_function %impl.elem0.loc12_3.2, @Destroy.Op(%Destroy.facet) [symbolic = %specific_impl_fn.loc12_3.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %ptr: type = ptr_type %Int.loc12_20.2 [symbolic = %ptr (constants.%ptr.784)] // CHECK:STDOUT: %require_complete.loc12_3: = require_complete_type %ptr [symbolic = %require_complete.loc12_3 (constants.%require_complete.0f5)] // CHECK:STDOUT: @@ -150,7 +150,7 @@ fn CallNegative() { // CHECK:STDOUT: %v: ref @ErrorIfNIsZero.%Int.loc12_20.2 (%Int.49d0e6.1) = bind_name v, %v.var // CHECK:STDOUT: %impl.elem0.loc12_3.1: @ErrorIfNIsZero.%.loc12_3.2 (%.bbc) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc12_3.2 (constants.%impl.elem0.fe8)] // CHECK:STDOUT: %bound_method.loc12_3.1: = bound_method %v.var, %impl.elem0.loc12_3.1 -// CHECK:STDOUT: %specific_impl_fn.loc12_3.1: = specific_impl_function %impl.elem0.loc12_3.1, @Op.1(constants.%Destroy.facet.13d) [symbolic = %specific_impl_fn.loc12_3.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc12_3.1: = specific_impl_function %impl.elem0.loc12_3.1, @Destroy.Op(constants.%Destroy.facet.13d) [symbolic = %specific_impl_fn.loc12_3.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %bound_method.loc12_3.2: = bound_method %v.var, %specific_impl_fn.loc12_3.1 // CHECK:STDOUT: %addr: @ErrorIfNIsZero.%ptr (%ptr.784) = addr_of %v.var // CHECK:STDOUT: %.loc12_3.1: init %empty_tuple.type = call %bound_method.loc12_3.2(%addr) @@ -181,8 +181,8 @@ fn CallNegative() { // CHECK:STDOUT: %Destroy.lookup_impl_witness => constants.%Destroy.impl_witness.404 // CHECK:STDOUT: %Destroy.facet => constants.%Destroy.facet.973 // CHECK:STDOUT: %.loc12_3.2 => constants.%.9ab -// CHECK:STDOUT: %impl.elem0.loc12_3.2 => constants.%Op.912 -// CHECK:STDOUT: %specific_impl_fn.loc12_3.2 => constants.%Op.specific_fn +// CHECK:STDOUT: %impl.elem0.loc12_3.2 => constants.%T.as.Destroy.impl.Op.912 +// CHECK:STDOUT: %specific_impl_fn.loc12_3.2 => constants.%T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %ptr => constants.%ptr.3f1 // CHECK:STDOUT: %require_complete.loc12_3 => constants.%complete_type.588 // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/generic/return_slot.carbon b/toolchain/check/testdata/function/generic/return_slot.carbon index 88c772075eb1..adb133f22a8f 100644 --- a/toolchain/check/testdata/function/generic/return_slot.carbon +++ b/toolchain/check/testdata/function/generic/return_slot.carbon @@ -34,12 +34,12 @@ fn G() { // CHECK:STDOUT: %Wrap.generic: %Wrap.type = struct_value () [concrete] // CHECK:STDOUT: %Wrap.af6: type = class_type @Wrap, @Wrap(%T) [symbolic] // CHECK:STDOUT: %pattern_type.7dcd0a.1: type = pattern_type %T [symbolic] -// CHECK:STDOUT: %Make.type.652: type = fn_type @Make, @Wrap(%T) [symbolic] -// CHECK:STDOUT: %Make.eb2: %Make.type.652 = struct_value () [symbolic] +// CHECK:STDOUT: %Wrap.Make.type.652: type = fn_type @Wrap.Make, @Wrap(%T) [symbolic] +// CHECK:STDOUT: %Wrap.Make.eb2: %Wrap.Make.type.652 = 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: %require_complete.4ae: = require_complete_type %T [symbolic] -// CHECK:STDOUT: %Make.specific_fn.bf1: = specific_function %Make.eb2, @Make(%T) [symbolic] +// CHECK:STDOUT: %Wrap.Make.specific_fn.bf1: = specific_function %Wrap.Make.eb2, @Wrap.Make(%T) [symbolic] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] @@ -56,32 +56,32 @@ fn G() { // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %Wrap.f84: type = class_type @Wrap, @Wrap(%i32) [concrete] -// CHECK:STDOUT: %Make.type.572: type = fn_type @Make, @Wrap(%i32) [concrete] -// CHECK:STDOUT: %Make.2c5: %Make.type.572 = struct_value () [concrete] -// CHECK:STDOUT: %Make.specific_fn.f29: = specific_function %Make.2c5, @Make(%i32) [concrete] +// CHECK:STDOUT: %Wrap.Make.type.572: type = fn_type @Wrap.Make, @Wrap(%i32) [concrete] +// CHECK:STDOUT: %Wrap.Make.2c5: %Wrap.Make.type.572 = struct_value () [concrete] +// CHECK:STDOUT: %Wrap.Make.specific_fn.f29: = specific_function %Wrap.Make.2c5, @Wrap.Make(%i32) [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Wrap.1aa: type = class_type @Wrap, @Wrap(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %Make.type.20e: type = fn_type @Make, @Wrap(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %Make.de0: %Make.type.20e = struct_value () [concrete] -// CHECK:STDOUT: %Make.specific_fn.e43: = specific_function %Make.de0, @Make(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %Wrap.Make.type.20e: type = fn_type @Wrap.Make, @Wrap(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %Wrap.Make.de0: %Wrap.Make.type.20e = struct_value () [concrete] +// CHECK:STDOUT: %Wrap.Make.specific_fn.e43: = specific_function %Wrap.Make.de0, @Wrap.Make(%empty_tuple.type) [concrete] // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] // CHECK:STDOUT: %Wrap.2eb: type = class_type @Wrap, @Wrap(%C) [concrete] -// CHECK:STDOUT: %Make.type.708: type = fn_type @Make, @Wrap(%C) [concrete] -// CHECK:STDOUT: %Make.e4b: %Make.type.708 = struct_value () [concrete] -// CHECK:STDOUT: %Make.specific_fn.834: = specific_function %Make.e4b, @Make(%C) [concrete] +// CHECK:STDOUT: %Wrap.Make.type.708: type = fn_type @Wrap.Make, @Wrap(%C) [concrete] +// CHECK:STDOUT: %Wrap.Make.e4b: %Wrap.Make.type.708 = struct_value () [concrete] +// CHECK:STDOUT: %Wrap.Make.specific_fn.834: = specific_function %Wrap.Make.e4b, @Wrap.Make(%C) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.153: type = fn_type @Op.1, @Destroy.impl(%C) [concrete] -// CHECK:STDOUT: %Op.5d7: %Op.type.153 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.153: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.5d7: %T.as.Destroy.impl.Op.type.153 = struct_value () [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] -// CHECK:STDOUT: %Op.specific_fn.6eb: = specific_function %Op.5d7, @Op.1(%C) [concrete] -// CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.1, @Destroy.impl(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.6eb: = specific_function %T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a63: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ea3: %T.as.Destroy.impl.Op.type.a63 = struct_value () [concrete] // CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] -// CHECK:STDOUT: %Op.specific_fn.393: = specific_function %Op.ea3, @Op.1(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.1, @Destroy.impl(%i32) [concrete] -// CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.393: = specific_function %T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a17: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.e6a: %T.as.Destroy.impl.Op.type.a17 = struct_value () [concrete] // CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] -// CHECK:STDOUT: %Op.specific_fn.014: = specific_function %Op.e6a, @Op.1(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.014: = specific_function %T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(%i32) [concrete] // CHECK:STDOUT: %complete_type.782: = complete_type_witness %empty_tuple.type [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -117,17 +117,17 @@ fn G() { // CHECK:STDOUT: %T.loc15_12.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc15_12.1 (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Make.type: type = fn_type @Make, @Wrap(%T.loc15_12.1) [symbolic = %Make.type (constants.%Make.type.652)] -// CHECK:STDOUT: %Make: @Wrap.%Make.type (%Make.type.652) = struct_value () [symbolic = %Make (constants.%Make.eb2)] +// CHECK:STDOUT: %Wrap.Make.type: type = fn_type @Wrap.Make, @Wrap(%T.loc15_12.1) [symbolic = %Wrap.Make.type (constants.%Wrap.Make.type.652)] +// CHECK:STDOUT: %Wrap.Make: @Wrap.%Wrap.Make.type (%Wrap.Make.type.652) = struct_value () [symbolic = %Wrap.Make (constants.%Wrap.Make.eb2)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %Make.decl: @Wrap.%Make.type (%Make.type.652) = fn_decl @Make [symbolic = @Wrap.%Make (constants.%Make.eb2)] { -// CHECK:STDOUT: %return.patt: @Make.%pattern_type (%pattern_type.7dcd0a.1) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @Make.%pattern_type (%pattern_type.7dcd0a.1) = out_param_pattern %return.patt, call_param0 [concrete] +// CHECK:STDOUT: %Wrap.Make.decl: @Wrap.%Wrap.Make.type (%Wrap.Make.type.652) = fn_decl @Wrap.Make [symbolic = @Wrap.%Wrap.Make (constants.%Wrap.Make.eb2)] { +// CHECK:STDOUT: %return.patt: @Wrap.Make.%pattern_type (%pattern_type.7dcd0a.1) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @Wrap.Make.%pattern_type (%pattern_type.7dcd0a.1) = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, @Wrap.%T.loc15_12.2 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %return.param: ref @Make.%T (%T) = out_param call_param0 -// CHECK:STDOUT: %return: ref @Make.%T (%T) = return_slot %return.param +// CHECK:STDOUT: %return.param: ref @Wrap.Make.%T (%T) = out_param call_param0 +// CHECK:STDOUT: %return: ref @Wrap.Make.%T (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] @@ -136,7 +136,7 @@ fn G() { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Wrap.af6 // CHECK:STDOUT: .T = -// CHECK:STDOUT: .Make = %Make.decl +// CHECK:STDOUT: .Make = %Wrap.Make.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -155,24 +155,24 @@ fn G() { // CHECK:STDOUT: .arr = %.loc19 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Make(@Wrap.%T.loc15_12.2: type) { +// CHECK:STDOUT: generic fn @Wrap.Make(@Wrap.%T.loc15_12.2: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %pattern_type: type = pattern_type %T [symbolic = %pattern_type (constants.%pattern_type.7dcd0a.1)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %T [symbolic = %require_complete (constants.%require_complete.4ae)] -// CHECK:STDOUT: %Make.type: type = fn_type @Make, @Wrap(%T) [symbolic = %Make.type (constants.%Make.type.652)] -// CHECK:STDOUT: %Make: @Make.%Make.type (%Make.type.652) = struct_value () [symbolic = %Make (constants.%Make.eb2)] -// CHECK:STDOUT: %Make.specific_fn.loc16_27.2: = specific_function %Make, @Make(%T) [symbolic = %Make.specific_fn.loc16_27.2 (constants.%Make.specific_fn.bf1)] +// CHECK:STDOUT: %Wrap.Make.type: type = fn_type @Wrap.Make, @Wrap(%T) [symbolic = %Wrap.Make.type (constants.%Wrap.Make.type.652)] +// CHECK:STDOUT: %Wrap.Make: @Wrap.Make.%Wrap.Make.type (%Wrap.Make.type.652) = struct_value () [symbolic = %Wrap.Make (constants.%Wrap.Make.eb2)] +// CHECK:STDOUT: %Wrap.Make.specific_fn.loc16_27.2: = specific_function %Wrap.Make, @Wrap.Make(%T) [symbolic = %Wrap.Make.specific_fn.loc16_27.2 (constants.%Wrap.Make.specific_fn.bf1)] // CHECK:STDOUT: -// CHECK:STDOUT: fn() -> @Make.%T (%T) { +// CHECK:STDOUT: fn() -> @Wrap.Make.%T (%T) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc16_27: @Make.%Make.type (%Make.type.652) = specific_constant @Wrap.%Make.decl, @Wrap(constants.%T) [symbolic = %Make (constants.%Make.eb2)] -// CHECK:STDOUT: %Make.ref: @Make.%Make.type (%Make.type.652) = name_ref Make, %.loc16_27 [symbolic = %Make (constants.%Make.eb2)] -// CHECK:STDOUT: %Make.specific_fn.loc16_27.1: = specific_function %Make.ref, @Make(constants.%T) [symbolic = %Make.specific_fn.loc16_27.2 (constants.%Make.specific_fn.bf1)] -// CHECK:STDOUT: %Make.call: init @Make.%T (%T) = call %Make.specific_fn.loc16_27.1() -// CHECK:STDOUT: %.loc16_33.1: @Make.%T (%T) = value_of_initializer %Make.call -// CHECK:STDOUT: %.loc16_33.2: @Make.%T (%T) = converted %Make.call, %.loc16_33.1 +// CHECK:STDOUT: %.loc16_27: @Wrap.Make.%Wrap.Make.type (%Wrap.Make.type.652) = specific_constant @Wrap.%Wrap.Make.decl, @Wrap(constants.%T) [symbolic = %Wrap.Make (constants.%Wrap.Make.eb2)] +// CHECK:STDOUT: %Make.ref: @Wrap.Make.%Wrap.Make.type (%Wrap.Make.type.652) = name_ref Make, %.loc16_27 [symbolic = %Wrap.Make (constants.%Wrap.Make.eb2)] +// CHECK:STDOUT: %Wrap.Make.specific_fn.loc16_27.1: = specific_function %Make.ref, @Wrap.Make(constants.%T) [symbolic = %Wrap.Make.specific_fn.loc16_27.2 (constants.%Wrap.Make.specific_fn.bf1)] +// CHECK:STDOUT: %Wrap.Make.call: init @Wrap.Make.%T (%T) = call %Wrap.Make.specific_fn.loc16_27.1() +// CHECK:STDOUT: %.loc16_33.1: @Wrap.Make.%T (%T) = value_of_initializer %Wrap.Make.call +// CHECK:STDOUT: %.loc16_33.2: @Wrap.Make.%T (%T) = converted %Wrap.Make.call, %.loc16_33.1 // CHECK:STDOUT: return %.loc16_33.2 // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -188,11 +188,11 @@ fn G() { // CHECK:STDOUT: %int_32.loc22_21: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc22_21: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %Wrap.loc22: type = class_type @Wrap, @Wrap(constants.%i32) [concrete = constants.%Wrap.f84] -// CHECK:STDOUT: %.loc22_25: %Make.type.572 = specific_constant @Wrap.%Make.decl, @Wrap(constants.%i32) [concrete = constants.%Make.2c5] -// CHECK:STDOUT: %Make.ref.loc22: %Make.type.572 = name_ref Make, %.loc22_25 [concrete = constants.%Make.2c5] -// CHECK:STDOUT: %Make.specific_fn.loc22: = specific_function %Make.ref.loc22, @Make(constants.%i32) [concrete = constants.%Make.specific_fn.f29] -// CHECK:STDOUT: %Make.call.loc22: init %i32 = call %Make.specific_fn.loc22() -// CHECK:STDOUT: assign %a.var, %Make.call.loc22 +// CHECK:STDOUT: %.loc22_25: %Wrap.Make.type.572 = specific_constant @Wrap.%Wrap.Make.decl, @Wrap(constants.%i32) [concrete = constants.%Wrap.Make.2c5] +// CHECK:STDOUT: %Make.ref.loc22: %Wrap.Make.type.572 = name_ref Make, %.loc22_25 [concrete = constants.%Wrap.Make.2c5] +// CHECK:STDOUT: %Wrap.Make.specific_fn.loc22: = specific_function %Make.ref.loc22, @Wrap.Make(constants.%i32) [concrete = constants.%Wrap.Make.specific_fn.f29] +// CHECK:STDOUT: %Wrap.Make.call.loc22: init %i32 = call %Wrap.Make.specific_fn.loc22() +// CHECK:STDOUT: assign %a.var, %Wrap.Make.call.loc22 // CHECK:STDOUT: %.loc22_10: type = splice_block %i32.loc22_10 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc22_10: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc22_10: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] @@ -207,11 +207,11 @@ fn G() { // CHECK:STDOUT: %.loc23_21: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc23_22: type = converted %.loc23_21, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %Wrap.loc23: type = class_type @Wrap, @Wrap(constants.%empty_tuple.type) [concrete = constants.%Wrap.1aa] -// CHECK:STDOUT: %.loc23_23: %Make.type.20e = specific_constant @Wrap.%Make.decl, @Wrap(constants.%empty_tuple.type) [concrete = constants.%Make.de0] -// CHECK:STDOUT: %Make.ref.loc23: %Make.type.20e = name_ref Make, %.loc23_23 [concrete = constants.%Make.de0] -// CHECK:STDOUT: %Make.specific_fn.loc23: = specific_function %Make.ref.loc23, @Make(constants.%empty_tuple.type) [concrete = constants.%Make.specific_fn.e43] -// CHECK:STDOUT: %Make.call.loc23: init %empty_tuple.type = call %Make.specific_fn.loc23() -// CHECK:STDOUT: assign %b.var, %Make.call.loc23 +// CHECK:STDOUT: %.loc23_23: %Wrap.Make.type.20e = specific_constant @Wrap.%Wrap.Make.decl, @Wrap(constants.%empty_tuple.type) [concrete = constants.%Wrap.Make.de0] +// CHECK:STDOUT: %Make.ref.loc23: %Wrap.Make.type.20e = name_ref Make, %.loc23_23 [concrete = constants.%Wrap.Make.de0] +// CHECK:STDOUT: %Wrap.Make.specific_fn.loc23: = specific_function %Make.ref.loc23, @Wrap.Make(constants.%empty_tuple.type) [concrete = constants.%Wrap.Make.specific_fn.e43] +// CHECK:STDOUT: %Wrap.Make.call.loc23: init %empty_tuple.type = call %Wrap.Make.specific_fn.loc23() +// CHECK:STDOUT: assign %b.var, %Wrap.Make.call.loc23 // CHECK:STDOUT: %.loc23_11.1: type = splice_block %.loc23_11.3 [concrete = constants.%empty_tuple.type] { // CHECK:STDOUT: %.loc23_11.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc23_11.3: type = converted %.loc23_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] @@ -225,34 +225,34 @@ fn G() { // CHECK:STDOUT: %Wrap.ref.loc24: %Wrap.type = name_ref Wrap, file.%Wrap.decl [concrete = constants.%Wrap.generic] // CHECK:STDOUT: %C.ref.loc24_19: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %Wrap.loc24: type = class_type @Wrap, @Wrap(constants.%C) [concrete = constants.%Wrap.2eb] -// CHECK:STDOUT: %.loc24_21: %Make.type.708 = specific_constant @Wrap.%Make.decl, @Wrap(constants.%C) [concrete = constants.%Make.e4b] -// CHECK:STDOUT: %Make.ref.loc24: %Make.type.708 = name_ref Make, %.loc24_21 [concrete = constants.%Make.e4b] -// CHECK:STDOUT: %Make.specific_fn.loc24: = specific_function %Make.ref.loc24, @Make(constants.%C) [concrete = constants.%Make.specific_fn.834] +// CHECK:STDOUT: %.loc24_21: %Wrap.Make.type.708 = specific_constant @Wrap.%Wrap.Make.decl, @Wrap(constants.%C) [concrete = constants.%Wrap.Make.e4b] +// CHECK:STDOUT: %Make.ref.loc24: %Wrap.Make.type.708 = name_ref Make, %.loc24_21 [concrete = constants.%Wrap.Make.e4b] +// CHECK:STDOUT: %Wrap.Make.specific_fn.loc24: = specific_function %Make.ref.loc24, @Wrap.Make(constants.%C) [concrete = constants.%Wrap.Make.specific_fn.834] // CHECK:STDOUT: %.loc24_3: ref %C = splice_block %c.var {} -// CHECK:STDOUT: %Make.call.loc24: init %C = call %Make.specific_fn.loc24() to %.loc24_3 -// CHECK:STDOUT: assign %c.var, %Make.call.loc24 +// CHECK:STDOUT: %Wrap.Make.call.loc24: init %C = call %Wrap.Make.specific_fn.loc24() to %.loc24_3 +// CHECK:STDOUT: assign %c.var, %Wrap.Make.call.loc24 // CHECK:STDOUT: %C.ref.loc24_10: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %c: ref %C = bind_name c, %c.var -// CHECK:STDOUT: %Op.bound.loc24_3.1: = bound_method %.loc24_3, constants.%Op.5d7 -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.5d7, @Op.1(constants.%C) [concrete = constants.%Op.specific_fn.6eb] -// CHECK:STDOUT: %bound_method.loc24_3.1: = bound_method %.loc24_3, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc24_3.1: = bound_method %.loc24_3, constants.%T.as.Destroy.impl.Op.5d7 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(constants.%C) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.6eb] +// CHECK:STDOUT: %bound_method.loc24_3.1: = bound_method %.loc24_3, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc24_3.1: %ptr.019 = addr_of %.loc24_3 -// CHECK:STDOUT: %no_op.loc24_3.1: init %empty_tuple.type = call %bound_method.loc24_3.1(%addr.loc24_3.1) -// CHECK:STDOUT: %Op.bound.loc24_3.2: = bound_method %c.var, constants.%Op.5d7 -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.5d7, @Op.1(constants.%C) [concrete = constants.%Op.specific_fn.6eb] -// CHECK:STDOUT: %bound_method.loc24_3.2: = bound_method %c.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc24_3.1: init %empty_tuple.type = call %bound_method.loc24_3.1(%addr.loc24_3.1) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc24_3.2: = bound_method %c.var, constants.%T.as.Destroy.impl.Op.5d7 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(constants.%C) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.6eb] +// CHECK:STDOUT: %bound_method.loc24_3.2: = bound_method %c.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc24_3.2: %ptr.019 = addr_of %c.var -// CHECK:STDOUT: %no_op.loc24_3.2: init %empty_tuple.type = call %bound_method.loc24_3.2(%addr.loc24_3.2) -// CHECK:STDOUT: %Op.bound.loc23: = bound_method %b.var, constants.%Op.ea3 -// CHECK:STDOUT: %Op.specific_fn.3: = specific_function constants.%Op.ea3, @Op.1(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn.393] -// CHECK:STDOUT: %bound_method.loc23: = bound_method %b.var, %Op.specific_fn.3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc24_3.2: init %empty_tuple.type = call %bound_method.loc24_3.2(%addr.loc24_3.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc23: = bound_method %b.var, constants.%T.as.Destroy.impl.Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.3: = specific_function constants.%T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.393] +// CHECK:STDOUT: %bound_method.loc23: = bound_method %b.var, %T.as.Destroy.impl.Op.specific_fn.3 // CHECK:STDOUT: %addr.loc23: %ptr.843 = addr_of %b.var -// CHECK:STDOUT: %no_op.loc23: init %empty_tuple.type = call %bound_method.loc23(%addr.loc23) -// CHECK:STDOUT: %Op.bound.loc22: = bound_method %a.var, constants.%Op.e6a -// CHECK:STDOUT: %Op.specific_fn.4: = specific_function constants.%Op.e6a, @Op.1(constants.%i32) [concrete = constants.%Op.specific_fn.014] -// CHECK:STDOUT: %bound_method.loc22: = bound_method %a.var, %Op.specific_fn.4 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc23: init %empty_tuple.type = call %bound_method.loc23(%addr.loc23) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc22: = bound_method %a.var, constants.%T.as.Destroy.impl.Op.e6a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.4: = specific_function constants.%T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.014] +// CHECK:STDOUT: %bound_method.loc22: = bound_method %a.var, %T.as.Destroy.impl.Op.specific_fn.4 // CHECK:STDOUT: %addr.loc22: %ptr.235 = addr_of %a.var -// CHECK:STDOUT: %no_op.loc22: init %empty_tuple.type = call %bound_method.loc22(%addr.loc22) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc22: init %empty_tuple.type = call %bound_method.loc22(%addr.loc22) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -260,75 +260,75 @@ fn G() { // CHECK:STDOUT: %T.loc15_12.1 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Make.type => constants.%Make.type.652 -// CHECK:STDOUT: %Make => constants.%Make.eb2 +// CHECK:STDOUT: %Wrap.Make.type => constants.%Wrap.Make.type.652 +// CHECK:STDOUT: %Wrap.Make => constants.%Wrap.Make.eb2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Make(constants.%T) { +// CHECK:STDOUT: specific @Wrap.Make(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7dcd0a.1 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete => constants.%require_complete.4ae -// CHECK:STDOUT: %Make.type => constants.%Make.type.652 -// CHECK:STDOUT: %Make => constants.%Make.eb2 -// CHECK:STDOUT: %Make.specific_fn.loc16_27.2 => constants.%Make.specific_fn.bf1 +// CHECK:STDOUT: %Wrap.Make.type => constants.%Wrap.Make.type.652 +// CHECK:STDOUT: %Wrap.Make => constants.%Wrap.Make.eb2 +// CHECK:STDOUT: %Wrap.Make.specific_fn.loc16_27.2 => constants.%Wrap.Make.specific_fn.bf1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Wrap(constants.%i32) { // CHECK:STDOUT: %T.loc15_12.1 => constants.%i32 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Make.type => constants.%Make.type.572 -// CHECK:STDOUT: %Make => constants.%Make.2c5 +// CHECK:STDOUT: %Wrap.Make.type => constants.%Wrap.Make.type.572 +// CHECK:STDOUT: %Wrap.Make => constants.%Wrap.Make.2c5 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Make(constants.%i32) { +// CHECK:STDOUT: specific @Wrap.Make(constants.%i32) { // CHECK:STDOUT: %T => constants.%i32 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7ce // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete => constants.%complete_type.f8a -// CHECK:STDOUT: %Make.type => constants.%Make.type.572 -// CHECK:STDOUT: %Make => constants.%Make.2c5 -// CHECK:STDOUT: %Make.specific_fn.loc16_27.2 => constants.%Make.specific_fn.f29 +// CHECK:STDOUT: %Wrap.Make.type => constants.%Wrap.Make.type.572 +// CHECK:STDOUT: %Wrap.Make => constants.%Wrap.Make.2c5 +// CHECK:STDOUT: %Wrap.Make.specific_fn.loc16_27.2 => constants.%Wrap.Make.specific_fn.f29 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Wrap(constants.%empty_tuple.type) { // CHECK:STDOUT: %T.loc15_12.1 => constants.%empty_tuple.type // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Make.type => constants.%Make.type.20e -// CHECK:STDOUT: %Make => constants.%Make.de0 +// CHECK:STDOUT: %Wrap.Make.type => constants.%Wrap.Make.type.20e +// CHECK:STDOUT: %Wrap.Make => constants.%Wrap.Make.de0 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Make(constants.%empty_tuple.type) { +// CHECK:STDOUT: specific @Wrap.Make(constants.%empty_tuple.type) { // CHECK:STDOUT: %T => constants.%empty_tuple.type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.cb1 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete => constants.%complete_type.782 -// CHECK:STDOUT: %Make.type => constants.%Make.type.20e -// CHECK:STDOUT: %Make => constants.%Make.de0 -// CHECK:STDOUT: %Make.specific_fn.loc16_27.2 => constants.%Make.specific_fn.e43 +// CHECK:STDOUT: %Wrap.Make.type => constants.%Wrap.Make.type.20e +// CHECK:STDOUT: %Wrap.Make => constants.%Wrap.Make.de0 +// CHECK:STDOUT: %Wrap.Make.specific_fn.loc16_27.2 => constants.%Wrap.Make.specific_fn.e43 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Wrap(constants.%C) { // CHECK:STDOUT: %T.loc15_12.1 => constants.%C // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Make.type => constants.%Make.type.708 -// CHECK:STDOUT: %Make => constants.%Make.e4b +// CHECK:STDOUT: %Wrap.Make.type => constants.%Wrap.Make.type.708 +// CHECK:STDOUT: %Wrap.Make => constants.%Wrap.Make.e4b // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Make(constants.%C) { +// CHECK:STDOUT: specific @Wrap.Make(constants.%C) { // CHECK:STDOUT: %T => constants.%C // CHECK:STDOUT: %pattern_type => constants.%pattern_type.c48 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete => constants.%complete_type.22a -// CHECK:STDOUT: %Make.type => constants.%Make.type.708 -// CHECK:STDOUT: %Make => constants.%Make.e4b -// CHECK:STDOUT: %Make.specific_fn.loc16_27.2 => constants.%Make.specific_fn.834 +// CHECK:STDOUT: %Wrap.Make.type => constants.%Wrap.Make.type.708 +// CHECK:STDOUT: %Wrap.Make => constants.%Wrap.Make.e4b +// CHECK:STDOUT: %Wrap.Make.specific_fn.loc16_27.2 => constants.%Wrap.Make.specific_fn.834 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/generic/type_param.carbon b/toolchain/check/testdata/function/generic/type_param.carbon index 7733d5c3e1c3..a3368dbe2e11 100644 --- a/toolchain/check/testdata/function/generic/type_param.carbon +++ b/toolchain/check/testdata/function/generic/type_param.carbon @@ -31,14 +31,14 @@ fn F(T:! type) { // CHECK:STDOUT: %require_complete.4ae: = require_complete_type %T [symbolic] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %T [symbolic] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.bae: type = fn_type @Op.1 [concrete] +// CHECK:STDOUT: %Destroy.Op.type: type = fn_type @Destroy.Op [concrete] // CHECK:STDOUT: %ptr.a13: type = ptr_type %ptr.79f [symbolic] // CHECK:STDOUT: %require_complete.132: = require_complete_type %ptr.a13 [symbolic] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %ptr.79f, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %ptr.79f, (%Destroy.lookup_impl_witness) [symbolic] -// CHECK:STDOUT: %.ea9: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [symbolic] +// CHECK:STDOUT: %.ea9: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet [symbolic] // CHECK:STDOUT: %impl.elem0: %.ea9 = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Op.1(%Destroy.facet) [symbolic] +// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Destroy.Op(%Destroy.facet) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -74,9 +74,9 @@ fn F(T:! type) { // CHECK:STDOUT: %pattern_type.loc17: type = pattern_type %T.loc15_6.1 [symbolic = %pattern_type.loc17 (constants.%pattern_type.7dc)] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %ptr.loc16_11.2, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness)] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %ptr.loc16_11.2, (%Destroy.lookup_impl_witness) [symbolic = %Destroy.facet (constants.%Destroy.facet)] -// CHECK:STDOUT: %.loc16_3.2: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.loc16_3.2 (constants.%.ea9)] +// CHECK:STDOUT: %.loc16_3.2: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet [symbolic = %.loc16_3.2 (constants.%.ea9)] // CHECK:STDOUT: %impl.elem0.loc16_3.2: @F.%.loc16_3.2 (%.ea9) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc16_3.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %specific_impl_fn.loc16_3.2: = specific_impl_function %impl.elem0.loc16_3.2, @Op.1(%Destroy.facet) [symbolic = %specific_impl_fn.loc16_3.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc16_3.2: = specific_impl_function %impl.elem0.loc16_3.2, @Destroy.Op(%Destroy.facet) [symbolic = %specific_impl_fn.loc16_3.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %ptr.loc16_3: type = ptr_type %ptr.loc16_11.2 [symbolic = %ptr.loc16_3 (constants.%ptr.a13)] // CHECK:STDOUT: %require_complete.loc16_3: = require_complete_type %ptr.loc16_3 [symbolic = %require_complete.loc16_3 (constants.%require_complete.132)] // CHECK:STDOUT: @@ -103,7 +103,7 @@ fn F(T:! type) { // CHECK:STDOUT: %n: @F.%T.loc15_6.1 (%T) = bind_name n, %.loc17_14.2 // CHECK:STDOUT: %impl.elem0.loc16_3.1: @F.%.loc16_3.2 (%.ea9) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc16_3.2 (constants.%impl.elem0)] // CHECK:STDOUT: %bound_method.loc16_3.1: = bound_method %p.var, %impl.elem0.loc16_3.1 -// CHECK:STDOUT: %specific_impl_fn.loc16_3.1: = specific_impl_function %impl.elem0.loc16_3.1, @Op.1(constants.%Destroy.facet) [symbolic = %specific_impl_fn.loc16_3.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc16_3.1: = specific_impl_function %impl.elem0.loc16_3.1, @Destroy.Op(constants.%Destroy.facet) [symbolic = %specific_impl_fn.loc16_3.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %bound_method.loc16_3.2: = bound_method %p.var, %specific_impl_fn.loc16_3.1 // CHECK:STDOUT: %addr: @F.%ptr.loc16_3 (%ptr.a13) = addr_of %p.var // CHECK:STDOUT: %.loc16_3.1: init %empty_tuple.type = call %bound_method.loc16_3.2(%addr) diff --git a/toolchain/check/testdata/function/generic/undefined.carbon b/toolchain/check/testdata/function/generic/undefined.carbon index cc8f753e4e8e..ed279c2ac8c9 100644 --- a/toolchain/check/testdata/function/generic/undefined.carbon +++ b/toolchain/check/testdata/function/generic/undefined.carbon @@ -77,18 +77,18 @@ fn CallUndefined() -> i32 { // CHECK:STDOUT: %As.type.90f: type = generic_interface_type @As [concrete] // CHECK:STDOUT: %As.generic: %As.type.90f = struct_value () [concrete] // CHECK:STDOUT: %As.type.fd4: type = facet_type <@As, @As(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.99b: type = fn_type @Convert.2, @As(%i32) [concrete] +// CHECK:STDOUT: %As.Convert.type.99b: type = fn_type @As.Convert, @As(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.062: type = fn_type @Convert.1, @As.impl.686(%To) [symbolic] -// CHECK:STDOUT: %Convert.527: %Convert.type.062 = struct_value () [symbolic] -// CHECK:STDOUT: %As.impl_witness.6b4: = impl_witness imports.%As.impl_witness_table.eb4, @As.impl.686(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.4fd: type = fn_type @Convert.1, @As.impl.686(%int_32) [concrete] -// CHECK:STDOUT: %Convert.197: %Convert.type.4fd = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.062: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.527: %Core.IntLiteral.as.As.impl.Convert.type.062 = struct_value () [symbolic] +// CHECK:STDOUT: %As.impl_witness.6b4: = impl_witness imports.%As.impl_witness_table.eb4, @Core.IntLiteral.as.As.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.4fd: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.197: %Core.IntLiteral.as.As.impl.Convert.type.4fd = struct_value () [concrete] // CHECK:STDOUT: %As.facet: %As.type.fd4 = facet_value Core.IntLiteral, (%As.impl_witness.6b4) [concrete] -// CHECK:STDOUT: %.982: type = fn_type_with_self_type %Convert.type.99b, %As.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.197 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.197, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.982: type = fn_type_with_self_type %As.Convert.type.99b, %As.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.bound: = bound_method %int_0.5c6, %Core.IntLiteral.as.As.impl.Convert.197 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.As.impl.Convert.197, @Core.IntLiteral.as.As.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Core.IntLiteral.as.As.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: %Defined.specific_fn: = specific_function %Defined, @Defined(%i32) [concrete] // CHECK:STDOUT: } @@ -102,8 +102,8 @@ fn CallUndefined() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.As: %As.type.90f = import_ref Core//prelude/parts/as, As, loaded [concrete = constants.%As.generic] -// CHECK:STDOUT: %Core.import_ref.78a: @As.impl.686.%Convert.type (%Convert.type.062) = import_ref Core//prelude/parts/int, loc25_39, loaded [symbolic = @As.impl.686.%Convert (constants.%Convert.527)] -// CHECK:STDOUT: %As.impl_witness_table.eb4 = impl_witness_table (%Core.import_ref.78a), @As.impl.686 [concrete] +// CHECK:STDOUT: %Core.import_ref.78a: @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert.type (%Core.IntLiteral.as.As.impl.Convert.type.062) = import_ref Core//prelude/parts/int, loc25_39, loaded [symbolic = @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert (constants.%Core.IntLiteral.as.As.impl.Convert.527)] +// CHECK:STDOUT: %As.impl_witness_table.eb4 = impl_witness_table (%Core.import_ref.78a), @Core.IntLiteral.as.As.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -159,12 +159,12 @@ fn CallUndefined() -> i32 { // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] // CHECK:STDOUT: %int_32.loc9: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc9: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %impl.elem0: %.982 = impl_witness_access constants.%As.impl_witness.6b4, element0 [concrete = constants.%Convert.197] -// CHECK:STDOUT: %bound_method.loc9_20.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.982 = impl_witness_access constants.%As.impl_witness.6b4, element0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.197] +// CHECK:STDOUT: %bound_method.loc9_20.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.As.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc9_20.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc9_20.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc9_20.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.call: init %i32 = call %bound_method.loc9_20.2(%int_0) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc9_20.1: %i32 = value_of_initializer %Core.IntLiteral.as.As.impl.Convert.call [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc9_20.2: %i32 = converted %int_0, %.loc9_20.1 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %Defined.specific_fn: = specific_function %Defined.ref, @Defined(constants.%i32) [concrete = constants.%Defined.specific_fn] // CHECK:STDOUT: %Defined.call: init %i32 = call %Defined.specific_fn(%.loc9_20.2) @@ -207,18 +207,18 @@ fn CallUndefined() -> i32 { // CHECK:STDOUT: %As.type.90f: type = generic_interface_type @As [concrete] // CHECK:STDOUT: %As.generic: %As.type.90f = struct_value () [concrete] // CHECK:STDOUT: %As.type.fd4: type = facet_type <@As, @As(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.99b: type = fn_type @Convert.2, @As(%i32) [concrete] +// CHECK:STDOUT: %As.Convert.type.99b: type = fn_type @As.Convert, @As(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.062: type = fn_type @Convert.1, @As.impl.686(%To) [symbolic] -// CHECK:STDOUT: %Convert.527: %Convert.type.062 = struct_value () [symbolic] -// CHECK:STDOUT: %As.impl_witness.6b4: = impl_witness imports.%As.impl_witness_table.eb4, @As.impl.686(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.4fd: type = fn_type @Convert.1, @As.impl.686(%int_32) [concrete] -// CHECK:STDOUT: %Convert.197: %Convert.type.4fd = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.062: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.527: %Core.IntLiteral.as.As.impl.Convert.type.062 = struct_value () [symbolic] +// CHECK:STDOUT: %As.impl_witness.6b4: = impl_witness imports.%As.impl_witness_table.eb4, @Core.IntLiteral.as.As.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.4fd: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.197: %Core.IntLiteral.as.As.impl.Convert.type.4fd = struct_value () [concrete] // CHECK:STDOUT: %As.facet: %As.type.fd4 = facet_value Core.IntLiteral, (%As.impl_witness.6b4) [concrete] -// CHECK:STDOUT: %.982: type = fn_type_with_self_type %Convert.type.99b, %As.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.197 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.197, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.982: type = fn_type_with_self_type %As.Convert.type.99b, %As.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.bound: = bound_method %int_0.5c6, %Core.IntLiteral.as.As.impl.Convert.197 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.As.impl.Convert.197, @Core.IntLiteral.as.As.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Core.IntLiteral.as.As.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: %Defined.specific_fn: = specific_function %Defined, @Defined(%i32) [concrete] // CHECK:STDOUT: %require_complete.4ae: = require_complete_type %T [symbolic] @@ -233,8 +233,8 @@ fn CallUndefined() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.As: %As.type.90f = import_ref Core//prelude/parts/as, As, loaded [concrete = constants.%As.generic] -// CHECK:STDOUT: %Core.import_ref.78a: @As.impl.686.%Convert.type (%Convert.type.062) = import_ref Core//prelude/parts/int, loc25_39, loaded [symbolic = @As.impl.686.%Convert (constants.%Convert.527)] -// CHECK:STDOUT: %As.impl_witness_table.eb4 = impl_witness_table (%Core.import_ref.78a), @As.impl.686 [concrete] +// CHECK:STDOUT: %Core.import_ref.78a: @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert.type (%Core.IntLiteral.as.As.impl.Convert.type.062) = import_ref Core//prelude/parts/int, loc25_39, loaded [symbolic = @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert (constants.%Core.IntLiteral.as.As.impl.Convert.527)] +// CHECK:STDOUT: %As.impl_witness_table.eb4 = impl_witness_table (%Core.import_ref.78a), @Core.IntLiteral.as.As.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -305,12 +305,12 @@ fn CallUndefined() -> i32 { // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] // CHECK:STDOUT: %int_32.loc7: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc7: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %impl.elem0: %.982 = impl_witness_access constants.%As.impl_witness.6b4, element0 [concrete = constants.%Convert.197] -// CHECK:STDOUT: %bound_method.loc7_20.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.982 = impl_witness_access constants.%As.impl_witness.6b4, element0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.197] +// CHECK:STDOUT: %bound_method.loc7_20.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.As.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc7_20.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc7_20.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc7_20.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.call: init %i32 = call %bound_method.loc7_20.2(%int_0) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc7_20.1: %i32 = value_of_initializer %Core.IntLiteral.as.As.impl.Convert.call [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc7_20.2: %i32 = converted %int_0, %.loc7_20.1 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %Defined.specific_fn: = specific_function %Defined.ref, @Defined(constants.%i32) [concrete = constants.%Defined.specific_fn] // CHECK:STDOUT: %Defined.call: init %i32 = call %Defined.specific_fn(%.loc7_20.2) @@ -351,18 +351,18 @@ fn CallUndefined() -> i32 { // CHECK:STDOUT: %As.type.90f: type = generic_interface_type @As [concrete] // CHECK:STDOUT: %As.generic: %As.type.90f = struct_value () [concrete] // CHECK:STDOUT: %As.type.fd4: type = facet_type <@As, @As(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.99b: type = fn_type @Convert.2, @As(%i32) [concrete] +// CHECK:STDOUT: %As.Convert.type.99b: type = fn_type @As.Convert, @As(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.062: type = fn_type @Convert.1, @As.impl.686(%To) [symbolic] -// CHECK:STDOUT: %Convert.527: %Convert.type.062 = struct_value () [symbolic] -// CHECK:STDOUT: %As.impl_witness.6b4: = impl_witness imports.%As.impl_witness_table.eb4, @As.impl.686(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.4fd: type = fn_type @Convert.1, @As.impl.686(%int_32) [concrete] -// CHECK:STDOUT: %Convert.197: %Convert.type.4fd = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.062: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.527: %Core.IntLiteral.as.As.impl.Convert.type.062 = struct_value () [symbolic] +// CHECK:STDOUT: %As.impl_witness.6b4: = impl_witness imports.%As.impl_witness_table.eb4, @Core.IntLiteral.as.As.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.4fd: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.197: %Core.IntLiteral.as.As.impl.Convert.type.4fd = struct_value () [concrete] // CHECK:STDOUT: %As.facet: %As.type.fd4 = facet_value Core.IntLiteral, (%As.impl_witness.6b4) [concrete] -// CHECK:STDOUT: %.982: type = fn_type_with_self_type %Convert.type.99b, %As.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.197 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.197, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.982: type = fn_type_with_self_type %As.Convert.type.99b, %As.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.bound: = bound_method %int_0.5c6, %Core.IntLiteral.as.As.impl.Convert.197 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.As.impl.Convert.197, @Core.IntLiteral.as.As.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Core.IntLiteral.as.As.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: %Undefined.specific_fn: = specific_function %Undefined, @Undefined(%i32) [concrete] // CHECK:STDOUT: } @@ -376,8 +376,8 @@ fn CallUndefined() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.As: %As.type.90f = import_ref Core//prelude/parts/as, As, loaded [concrete = constants.%As.generic] -// CHECK:STDOUT: %Core.import_ref.78a: @As.impl.686.%Convert.type (%Convert.type.062) = import_ref Core//prelude/parts/int, loc25_39, loaded [symbolic = @As.impl.686.%Convert (constants.%Convert.527)] -// CHECK:STDOUT: %As.impl_witness_table.eb4 = impl_witness_table (%Core.import_ref.78a), @As.impl.686 [concrete] +// CHECK:STDOUT: %Core.import_ref.78a: @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert.type (%Core.IntLiteral.as.As.impl.Convert.type.062) = import_ref Core//prelude/parts/int, loc25_39, loaded [symbolic = @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert (constants.%Core.IntLiteral.as.As.impl.Convert.527)] +// CHECK:STDOUT: %As.impl_witness_table.eb4 = impl_witness_table (%Core.import_ref.78a), @Core.IntLiteral.as.As.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -426,12 +426,12 @@ fn CallUndefined() -> i32 { // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] // CHECK:STDOUT: %int_32.loc14: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc14: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %impl.elem0: %.982 = impl_witness_access constants.%As.impl_witness.6b4, element0 [concrete = constants.%Convert.197] -// CHECK:STDOUT: %bound_method.loc14_22.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.982 = impl_witness_access constants.%As.impl_witness.6b4, element0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.197] +// CHECK:STDOUT: %bound_method.loc14_22.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.As.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc14_22.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc14_22.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc14_22.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.call: init %i32 = call %bound_method.loc14_22.2(%int_0) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc14_22.1: %i32 = value_of_initializer %Core.IntLiteral.as.As.impl.Convert.call [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc14_22.2: %i32 = converted %int_0, %.loc14_22.1 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %Undefined.specific_fn: = specific_function %Undefined.ref, @Undefined(constants.%i32) [concrete = constants.%Undefined.specific_fn] // CHECK:STDOUT: %Undefined.call: init %i32 = call %Undefined.specific_fn(%.loc14_22.2) diff --git a/toolchain/check/testdata/generic/call_basic_depth.carbon b/toolchain/check/testdata/generic/call_basic_depth.carbon index 25ece0ec8622..c11b5a94af04 100644 --- a/toolchain/check/testdata/generic/call_basic_depth.carbon +++ b/toolchain/check/testdata/generic/call_basic_depth.carbon @@ -51,9 +51,9 @@ fn M() { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %pattern_type.7dcd0a.1: type = pattern_type %T [symbolic] -// CHECK:STDOUT: %Cfn.type: type = fn_type @Cfn [concrete] +// CHECK:STDOUT: %C.Cfn.type: type = fn_type @C.Cfn [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %Cfn: %Cfn.type = struct_value () [concrete] +// CHECK:STDOUT: %C.Cfn: %C.Cfn.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %require_complete.4ae: = require_complete_type %T [symbolic] @@ -65,12 +65,12 @@ fn M() { // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %H.specific_fn.1ed: = specific_function %H, @H(%T) [symbolic] -// CHECK:STDOUT: %Cfn.specific_fn.53f: = specific_function %Cfn, @Cfn(%T) [symbolic] +// CHECK:STDOUT: %C.Cfn.specific_fn.53f: = specific_function %C.Cfn, @C.Cfn(%T) [symbolic] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.153: type = fn_type @Op.1, @Destroy.impl(%C) [concrete] -// CHECK:STDOUT: %Op.5d7: %Op.type.153 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.153: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.5d7: %T.as.Destroy.impl.Op.type.153 = struct_value () [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] -// CHECK:STDOUT: %Op.specific_fn.6eb: = specific_function %Op.5d7, @Op.1(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.6eb: = specific_function %T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(%C) [concrete] // CHECK:STDOUT: %M.type: type = fn_type @M [concrete] // CHECK:STDOUT: %M: %M.type = struct_value () [concrete] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] @@ -84,27 +84,27 @@ fn M() { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: %F.specific_fn.501: = specific_function %F, @F(%i32) [concrete] // CHECK:STDOUT: %G.specific_fn: = specific_function %G, @G(%i32) [concrete] -// CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.1, @Destroy.impl(%i32) [concrete] -// CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a17: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.e6a: %T.as.Destroy.impl.Op.type.a17 = struct_value () [concrete] // CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] -// CHECK:STDOUT: %Op.specific_fn.014: = specific_function %Op.e6a, @Op.1(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.014: = specific_function %T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(%i32) [concrete] // CHECK:STDOUT: %H.specific_fn.aac: = specific_function %H, @H(%i32) [concrete] -// CHECK:STDOUT: %Cfn.specific_fn.7b2: = specific_function %Cfn, @Cfn(%i32) [concrete] +// CHECK:STDOUT: %C.Cfn.specific_fn.7b2: = specific_function %C.Cfn, @C.Cfn(%i32) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -118,8 +118,8 @@ fn M() { // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -177,20 +177,20 @@ fn M() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %Cfn.decl: %Cfn.type = fn_decl @Cfn [concrete = constants.%Cfn] { +// CHECK:STDOUT: %C.Cfn.decl: %C.Cfn.type = fn_decl @C.Cfn [concrete = constants.%C.Cfn] { // CHECK:STDOUT: %self.patt: %pattern_type.c48 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.c48 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete] -// CHECK:STDOUT: %x.patt: @Cfn.%pattern_type (%pattern_type.7dcd0a.1) = binding_pattern x [concrete] -// CHECK:STDOUT: %x.param_patt: @Cfn.%pattern_type (%pattern_type.7dcd0a.1) = value_param_pattern %x.patt, call_param1 [concrete] +// CHECK:STDOUT: %x.patt: @C.Cfn.%pattern_type (%pattern_type.7dcd0a.1) = binding_pattern x [concrete] +// CHECK:STDOUT: %x.param_patt: @C.Cfn.%pattern_type (%pattern_type.7dcd0a.1) = value_param_pattern %x.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %self.param: %C = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] // CHECK:STDOUT: %self: %C = bind_name self, %self.param -// CHECK:STDOUT: %T.loc16_22.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc16_22.2 (constants.%T)] -// CHECK:STDOUT: %x.param: @Cfn.%T.loc16_22.2 (%T) = value_param call_param1 -// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc16_22.1 [symbolic = %T.loc16_22.2 (constants.%T)] -// CHECK:STDOUT: %x: @Cfn.%T.loc16_22.2 (%T) = bind_name x, %x.param +// CHECK:STDOUT: %T.loc16_22.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc16_22.1 (constants.%T)] +// CHECK:STDOUT: %x.param: @C.Cfn.%T.loc16_22.1 (%T) = value_param call_param1 +// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc16_22.2 [symbolic = %T.loc16_22.1 (constants.%T)] +// CHECK:STDOUT: %x: @C.Cfn.%T.loc16_22.1 (%T) = bind_name x, %x.param // CHECK:STDOUT: } // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] @@ -198,17 +198,17 @@ fn M() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C -// CHECK:STDOUT: .Cfn = %Cfn.decl +// CHECK:STDOUT: .Cfn = %C.Cfn.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Cfn(%T.loc16_22.1: type) { -// CHECK:STDOUT: %T.loc16_22.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc16_22.2 (constants.%T)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %T.loc16_22.2 [symbolic = %pattern_type (constants.%pattern_type.7dcd0a.1)] +// CHECK:STDOUT: generic fn @C.Cfn(%T.loc16_22.2: type) { +// CHECK:STDOUT: %T.loc16_22.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc16_22.1 (constants.%T)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %T.loc16_22.1 [symbolic = %pattern_type (constants.%pattern_type.7dcd0a.1)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type %T.loc16_22.2 [symbolic = %require_complete (constants.%require_complete.4ae)] +// CHECK:STDOUT: %require_complete: = require_complete_type %T.loc16_22.1 [symbolic = %require_complete (constants.%require_complete.4ae)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: %C, %x.param: @Cfn.%T.loc16_22.2 (%T)) { +// CHECK:STDOUT: fn(%self.param: %C, %x.param: @C.Cfn.%T.loc16_22.1 (%T)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -254,7 +254,7 @@ fn M() { // CHECK:STDOUT: %require_complete: = require_complete_type %T.loc29_6.1 [symbolic = %require_complete (constants.%require_complete.4ae)] // CHECK:STDOUT: %H.specific_fn.loc30_3.2: = specific_function constants.%H, @H(%T.loc29_6.1) [symbolic = %H.specific_fn.loc30_3.2 (constants.%H.specific_fn.1ed)] // CHECK:STDOUT: %F.specific_fn.loc31_3.2: = specific_function constants.%F, @F(%T.loc29_6.1) [symbolic = %F.specific_fn.loc31_3.2 (constants.%F.specific_fn.ef1)] -// CHECK:STDOUT: %Cfn.specific_fn.loc34_4.2: = specific_function constants.%Cfn, @Cfn(%T.loc29_6.1) [symbolic = %Cfn.specific_fn.loc34_4.2 (constants.%Cfn.specific_fn.53f)] +// CHECK:STDOUT: %C.Cfn.specific_fn.loc34_4.2: = specific_function constants.%C.Cfn, @C.Cfn(%T.loc29_6.1) [symbolic = %C.Cfn.specific_fn.loc34_4.2 (constants.%C.Cfn.specific_fn.53f)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%x.param: @G.%T.loc29_6.1 (%T)) -> @G.%T.loc29_6.1 (%T) { // CHECK:STDOUT: !entry: @@ -274,19 +274,19 @@ fn M() { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %c: ref %C = bind_name c, %c.var // CHECK:STDOUT: %c.ref: ref %C = name_ref c, %c -// CHECK:STDOUT: %Cfn.ref: %Cfn.type = name_ref Cfn, @C.%Cfn.decl [concrete = constants.%Cfn] -// CHECK:STDOUT: %Cfn.bound: = bound_method %c.ref, %Cfn.ref +// CHECK:STDOUT: %Cfn.ref: %C.Cfn.type = name_ref Cfn, @C.%C.Cfn.decl [concrete = constants.%C.Cfn] +// CHECK:STDOUT: %C.Cfn.bound: = bound_method %c.ref, %Cfn.ref // CHECK:STDOUT: %x.ref.loc34: @G.%T.loc29_6.1 (%T) = name_ref x, %x -// CHECK:STDOUT: %Cfn.specific_fn.loc34_4.1: = specific_function %Cfn.ref, @Cfn(constants.%T) [symbolic = %Cfn.specific_fn.loc34_4.2 (constants.%Cfn.specific_fn.53f)] -// CHECK:STDOUT: %bound_method.loc34: = bound_method %c.ref, %Cfn.specific_fn.loc34_4.1 +// CHECK:STDOUT: %C.Cfn.specific_fn.loc34_4.1: = specific_function %Cfn.ref, @C.Cfn(constants.%T) [symbolic = %C.Cfn.specific_fn.loc34_4.2 (constants.%C.Cfn.specific_fn.53f)] +// CHECK:STDOUT: %bound_method.loc34: = bound_method %c.ref, %C.Cfn.specific_fn.loc34_4.1 // CHECK:STDOUT: %.loc34: %C = bind_value %c.ref -// CHECK:STDOUT: %Cfn.call: init %empty_tuple.type = call %bound_method.loc34(%.loc34, %x.ref.loc34) +// CHECK:STDOUT: %C.Cfn.call: init %empty_tuple.type = call %bound_method.loc34(%.loc34, %x.ref.loc34) // CHECK:STDOUT: %x.ref.loc35: @G.%T.loc29_6.1 (%T) = name_ref x, %x -// CHECK:STDOUT: %Op.bound: = bound_method %c.var, constants.%Op.5d7 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.5d7, @Op.1(constants.%C) [concrete = constants.%Op.specific_fn.6eb] -// CHECK:STDOUT: %bound_method.loc33: = bound_method %c.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %c.var, constants.%T.as.Destroy.impl.Op.5d7 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(constants.%C) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.6eb] +// CHECK:STDOUT: %bound_method.loc33: = bound_method %c.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.019 = addr_of %c.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc33(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc33(%addr) // CHECK:STDOUT: return %x.ref.loc35 // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -299,12 +299,12 @@ fn M() { // CHECK:STDOUT: } // CHECK:STDOUT: %n.var: ref %i32 = var %n.var_patt // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc39_3.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc39_3.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc39_3.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc39_3.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc39_3: init %i32 = converted %int_0, %int.convert_checked [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc39_3.2(%int_0) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc39_3: init %i32 = converted %int_0, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] // CHECK:STDOUT: assign %n.var, %.loc39_3 // CHECK:STDOUT: %.loc39_10: type = splice_block %i32.loc39 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc39: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -333,21 +333,21 @@ fn M() { // CHECK:STDOUT: %.loc43: %i32 = bind_value %n.ref.loc43 // CHECK:STDOUT: %G.call: init %i32 = call %G.specific_fn(%.loc43) // CHECK:STDOUT: assign %m.ref, %G.call -// CHECK:STDOUT: %Op.bound.loc40: = bound_method %m.var, constants.%Op.e6a -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.e6a, @Op.1(constants.%i32) [concrete = constants.%Op.specific_fn.014] -// CHECK:STDOUT: %bound_method.loc40: = bound_method %m.var, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc40: = bound_method %m.var, constants.%T.as.Destroy.impl.Op.e6a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.014] +// CHECK:STDOUT: %bound_method.loc40: = bound_method %m.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc40: %ptr.235 = addr_of %m.var -// CHECK:STDOUT: %no_op.loc40: init %empty_tuple.type = call %bound_method.loc40(%addr.loc40) -// CHECK:STDOUT: %Op.bound.loc39: = bound_method %n.var, constants.%Op.e6a -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.e6a, @Op.1(constants.%i32) [concrete = constants.%Op.specific_fn.014] -// CHECK:STDOUT: %bound_method.loc39_3.3: = bound_method %n.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc40: init %empty_tuple.type = call %bound_method.loc40(%addr.loc40) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc39: = bound_method %n.var, constants.%T.as.Destroy.impl.Op.e6a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.014] +// CHECK:STDOUT: %bound_method.loc39_3.3: = bound_method %n.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc39: %ptr.235 = addr_of %n.var -// CHECK:STDOUT: %no_op.loc39: init %empty_tuple.type = call %bound_method.loc39_3.3(%addr.loc39) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc39: init %empty_tuple.type = call %bound_method.loc39_3.3(%addr.loc39) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Cfn(constants.%T) { -// CHECK:STDOUT: %T.loc16_22.2 => constants.%T +// CHECK:STDOUT: specific @C.Cfn(constants.%T) { +// CHECK:STDOUT: %T.loc16_22.1 => constants.%T // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7dcd0a.1 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -392,7 +392,7 @@ fn M() { // CHECK:STDOUT: %require_complete => constants.%complete_type.f8a // CHECK:STDOUT: %H.specific_fn.loc30_3.2 => constants.%H.specific_fn.aac // CHECK:STDOUT: %F.specific_fn.loc31_3.2 => constants.%F.specific_fn.501 -// CHECK:STDOUT: %Cfn.specific_fn.loc34_4.2 => constants.%Cfn.specific_fn.7b2 +// CHECK:STDOUT: %C.Cfn.specific_fn.loc34_4.2 => constants.%C.Cfn.specific_fn.7b2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @H(constants.%i32) { @@ -404,8 +404,8 @@ fn M() { // CHECK:STDOUT: %F.specific_fn.loc25_3.2 => constants.%F.specific_fn.501 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Cfn(constants.%i32) { -// CHECK:STDOUT: %T.loc16_22.2 => constants.%i32 +// CHECK:STDOUT: specific @C.Cfn(constants.%i32) { +// CHECK:STDOUT: %T.loc16_22.1 => constants.%i32 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7ce // CHECK:STDOUT: // CHECK:STDOUT: !definition: diff --git a/toolchain/check/testdata/generic/complete_type.carbon b/toolchain/check/testdata/generic/complete_type.carbon index 4e95f156ffc5..18607ea4c3c5 100644 --- a/toolchain/check/testdata/generic/complete_type.carbon +++ b/toolchain/check/testdata/generic/complete_type.carbon @@ -205,30 +205,30 @@ fn G() { F(B); } // CHECK:STDOUT: %require_complete.4ae: = require_complete_type %T [symbolic] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %T [symbolic] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.bae: type = fn_type @Op.1 [concrete] -// CHECK:STDOUT: %Op.type.bc9: type = fn_type @Op.2, @Destroy.impl(%T) [symbolic] -// CHECK:STDOUT: %Op.46f: %Op.type.bc9 = struct_value () [symbolic] +// CHECK:STDOUT: %Destroy.Op.type: type = fn_type @Destroy.Op [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.bc9: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%T) [symbolic] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.46f: %T.as.Destroy.impl.Op.type.bc9 = struct_value () [symbolic] // CHECK:STDOUT: %ptr.79f: type = ptr_type %T [symbolic] // CHECK:STDOUT: %require_complete.6e5: = require_complete_type %ptr.79f [symbolic] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %T, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.713: %Destroy.type = facet_value %T, (%Destroy.lookup_impl_witness) [symbolic] -// CHECK:STDOUT: %.a63: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.713 [symbolic] +// CHECK:STDOUT: %.a63: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.713 [symbolic] // CHECK:STDOUT: %impl.elem0: %.a63 = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Op.1(%Destroy.facet.713) [symbolic] +// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Destroy.Op(%Destroy.facet.713) [symbolic] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %F.specific_fn: = specific_function %F, @F(%B) [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type.049: type = pattern_type %B [concrete] -// CHECK:STDOUT: %Destroy.impl_witness.39d: = impl_witness imports.%Destroy.impl_witness_table, @Destroy.impl(%B) [concrete] -// CHECK:STDOUT: %Op.type.1a6: type = fn_type @Op.2, @Destroy.impl(%B) [concrete] -// CHECK:STDOUT: %Op.3c2: %Op.type.1a6 = struct_value () [concrete] +// CHECK:STDOUT: %Destroy.impl_witness.39d: = impl_witness imports.%Destroy.impl_witness_table, @T.as.Destroy.impl(%B) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.1a6: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%B) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.3c2: %T.as.Destroy.impl.Op.type.1a6 = struct_value () [concrete] // CHECK:STDOUT: %ptr.e79: type = ptr_type %B [concrete] // CHECK:STDOUT: %complete_type.3bf: = complete_type_witness %ptr.e79 [concrete] // CHECK:STDOUT: %Destroy.facet.331: %Destroy.type = facet_value %B, (%Destroy.impl_witness.39d) [concrete] -// CHECK:STDOUT: %.c16: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.331 [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.3c2, @Op.2(%B) [concrete] +// CHECK:STDOUT: %.c16: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.331 [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.3c2, @T.as.Destroy.impl.Op(%B) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -238,8 +238,8 @@ fn G() { F(B); } // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @Destroy.impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @Destroy.impl.%Op (constants.%Op.46f)] -// CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @Destroy.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.0b9: @T.as.Destroy.impl.%T.as.Destroy.impl.Op.type (%T.as.Destroy.impl.Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @T.as.Destroy.impl.%T.as.Destroy.impl.Op (constants.%T.as.Destroy.impl.Op.46f)] +// CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @T.as.Destroy.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -277,9 +277,9 @@ fn G() { F(B); } // CHECK:STDOUT: %pattern_type: type = pattern_type %T.loc6_6.1 [symbolic = %pattern_type (constants.%pattern_type.7dc)] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %T.loc6_6.1, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness)] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %T.loc6_6.1, (%Destroy.lookup_impl_witness) [symbolic = %Destroy.facet (constants.%Destroy.facet.713)] -// CHECK:STDOUT: %.loc7_3.2: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.loc7_3.2 (constants.%.a63)] +// CHECK:STDOUT: %.loc7_3.2: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet [symbolic = %.loc7_3.2 (constants.%.a63)] // CHECK:STDOUT: %impl.elem0.loc7_3.2: @F.%.loc7_3.2 (%.a63) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc7_3.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %specific_impl_fn.loc7_3.2: = specific_impl_function %impl.elem0.loc7_3.2, @Op.1(%Destroy.facet) [symbolic = %specific_impl_fn.loc7_3.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc7_3.2: = specific_impl_function %impl.elem0.loc7_3.2, @Destroy.Op(%Destroy.facet) [symbolic = %specific_impl_fn.loc7_3.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %ptr: type = ptr_type %T.loc6_6.1 [symbolic = %ptr (constants.%ptr.79f)] // CHECK:STDOUT: %require_complete.loc7_3: = require_complete_type %ptr [symbolic = %require_complete.loc7_3 (constants.%require_complete.6e5)] // CHECK:STDOUT: @@ -294,7 +294,7 @@ fn G() { F(B); } // CHECK:STDOUT: %v: ref @F.%T.loc6_6.1 (%T) = bind_name v, %v.var // CHECK:STDOUT: %impl.elem0.loc7_3.1: @F.%.loc7_3.2 (%.a63) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc7_3.2 (constants.%impl.elem0)] // CHECK:STDOUT: %bound_method.loc7_3.1: = bound_method %v.var, %impl.elem0.loc7_3.1 -// CHECK:STDOUT: %specific_impl_fn.loc7_3.1: = specific_impl_function %impl.elem0.loc7_3.1, @Op.1(constants.%Destroy.facet.713) [symbolic = %specific_impl_fn.loc7_3.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc7_3.1: = specific_impl_function %impl.elem0.loc7_3.1, @Destroy.Op(constants.%Destroy.facet.713) [symbolic = %specific_impl_fn.loc7_3.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %bound_method.loc7_3.2: = bound_method %v.var, %specific_impl_fn.loc7_3.1 // CHECK:STDOUT: %addr: @F.%ptr (%ptr.79f) = addr_of %v.var // CHECK:STDOUT: %.loc7_3.1: init %empty_tuple.type = call %bound_method.loc7_3.2(%addr) @@ -324,8 +324,8 @@ fn G() { F(B); } // CHECK:STDOUT: %Destroy.lookup_impl_witness => constants.%Destroy.impl_witness.39d // CHECK:STDOUT: %Destroy.facet => constants.%Destroy.facet.331 // CHECK:STDOUT: %.loc7_3.2 => constants.%.c16 -// CHECK:STDOUT: %impl.elem0.loc7_3.2 => constants.%Op.3c2 -// CHECK:STDOUT: %specific_impl_fn.loc7_3.2 => constants.%Op.specific_fn +// CHECK:STDOUT: %impl.elem0.loc7_3.2 => constants.%T.as.Destroy.impl.Op.3c2 +// CHECK:STDOUT: %specific_impl_fn.loc7_3.2 => constants.%T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %ptr => constants.%ptr.e79 // CHECK:STDOUT: %require_complete.loc7_3 => constants.%complete_type.3bf // CHECK:STDOUT: } @@ -342,28 +342,28 @@ fn G() { F(B); } // CHECK:STDOUT: %require_complete.4ae: = require_complete_type %T [symbolic] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %T [symbolic] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.bae: type = fn_type @Op.1 [concrete] -// CHECK:STDOUT: %Op.type.bc9: type = fn_type @Op.2, @Destroy.impl(%T) [symbolic] -// CHECK:STDOUT: %Op.46f: %Op.type.bc9 = struct_value () [symbolic] +// CHECK:STDOUT: %Destroy.Op.type: type = fn_type @Destroy.Op [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.bc9: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%T) [symbolic] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.46f: %T.as.Destroy.impl.Op.type.bc9 = struct_value () [symbolic] // CHECK:STDOUT: %ptr.79f: type = ptr_type %T [symbolic] // CHECK:STDOUT: %require_complete.6e5: = require_complete_type %ptr.79f [symbolic] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %T, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.713: %Destroy.type = facet_value %T, (%Destroy.lookup_impl_witness) [symbolic] -// CHECK:STDOUT: %.a63: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.713 [symbolic] +// CHECK:STDOUT: %.a63: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.713 [symbolic] // CHECK:STDOUT: %impl.elem0: %.a63 = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Op.1(%Destroy.facet.713) [symbolic] +// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Destroy.Op(%Destroy.facet.713) [symbolic] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %F.specific_fn: = specific_function %F, @F(%B) [concrete] // CHECK:STDOUT: %pattern_type.049: type = pattern_type %B [concrete] -// CHECK:STDOUT: %Destroy.impl_witness.39d: = impl_witness imports.%Destroy.impl_witness_table, @Destroy.impl(%B) [concrete] -// CHECK:STDOUT: %Op.type.1a6: type = fn_type @Op.2, @Destroy.impl(%B) [concrete] -// CHECK:STDOUT: %Op.3c2: %Op.type.1a6 = struct_value () [concrete] +// CHECK:STDOUT: %Destroy.impl_witness.39d: = impl_witness imports.%Destroy.impl_witness_table, @T.as.Destroy.impl(%B) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.1a6: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%B) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.3c2: %T.as.Destroy.impl.Op.type.1a6 = struct_value () [concrete] // CHECK:STDOUT: %ptr.e79: type = ptr_type %B [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %ptr.e79 [concrete] // CHECK:STDOUT: %Destroy.facet.331: %Destroy.type = facet_value %B, (%Destroy.impl_witness.39d) [concrete] -// CHECK:STDOUT: %.c16: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.331 [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.3c2, @Op.2(%B) [concrete] +// CHECK:STDOUT: %.c16: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.331 [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.3c2, @T.as.Destroy.impl.Op(%B) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -373,8 +373,8 @@ fn G() { F(B); } // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @Destroy.impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @Destroy.impl.%Op (constants.%Op.46f)] -// CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @Destroy.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.0b9: @T.as.Destroy.impl.%T.as.Destroy.impl.Op.type (%T.as.Destroy.impl.Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @T.as.Destroy.impl.%T.as.Destroy.impl.Op (constants.%T.as.Destroy.impl.Op.46f)] +// CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @T.as.Destroy.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -404,9 +404,9 @@ fn G() { F(B); } // CHECK:STDOUT: %pattern_type: type = pattern_type %T.loc6_6.1 [symbolic = %pattern_type (constants.%pattern_type.7dc)] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %T.loc6_6.1, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness)] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %T.loc6_6.1, (%Destroy.lookup_impl_witness) [symbolic = %Destroy.facet (constants.%Destroy.facet.713)] -// CHECK:STDOUT: %.loc13_3.2: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.loc13_3.2 (constants.%.a63)] +// CHECK:STDOUT: %.loc13_3.2: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet [symbolic = %.loc13_3.2 (constants.%.a63)] // CHECK:STDOUT: %impl.elem0.loc13_3.2: @F.%.loc13_3.2 (%.a63) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc13_3.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %specific_impl_fn.loc13_3.2: = specific_impl_function %impl.elem0.loc13_3.2, @Op.1(%Destroy.facet) [symbolic = %specific_impl_fn.loc13_3.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc13_3.2: = specific_impl_function %impl.elem0.loc13_3.2, @Destroy.Op(%Destroy.facet) [symbolic = %specific_impl_fn.loc13_3.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %ptr: type = ptr_type %T.loc6_6.1 [symbolic = %ptr (constants.%ptr.79f)] // CHECK:STDOUT: %require_complete.loc13_3: = require_complete_type %ptr [symbolic = %require_complete.loc13_3 (constants.%require_complete.6e5)] // CHECK:STDOUT: @@ -421,7 +421,7 @@ fn G() { F(B); } // CHECK:STDOUT: %v: ref @F.%T.loc6_6.1 (%T) = bind_name v, %v.var // CHECK:STDOUT: %impl.elem0.loc13_3.1: @F.%.loc13_3.2 (%.a63) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc13_3.2 (constants.%impl.elem0)] // CHECK:STDOUT: %bound_method.loc13_3.1: = bound_method %v.var, %impl.elem0.loc13_3.1 -// CHECK:STDOUT: %specific_impl_fn.loc13_3.1: = specific_impl_function %impl.elem0.loc13_3.1, @Op.1(constants.%Destroy.facet.713) [symbolic = %specific_impl_fn.loc13_3.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc13_3.1: = specific_impl_function %impl.elem0.loc13_3.1, @Destroy.Op(constants.%Destroy.facet.713) [symbolic = %specific_impl_fn.loc13_3.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %bound_method.loc13_3.2: = bound_method %v.var, %specific_impl_fn.loc13_3.1 // CHECK:STDOUT: %addr: @F.%ptr (%ptr.79f) = addr_of %v.var // CHECK:STDOUT: %.loc13_3.1: init %empty_tuple.type = call %bound_method.loc13_3.2(%addr) @@ -451,8 +451,8 @@ fn G() { F(B); } // CHECK:STDOUT: %Destroy.lookup_impl_witness => constants.%Destroy.impl_witness.39d // CHECK:STDOUT: %Destroy.facet => constants.%Destroy.facet.331 // CHECK:STDOUT: %.loc13_3.2 => constants.%.c16 -// CHECK:STDOUT: %impl.elem0.loc13_3.2 => constants.%Op.3c2 -// CHECK:STDOUT: %specific_impl_fn.loc13_3.2 => constants.%Op.specific_fn +// CHECK:STDOUT: %impl.elem0.loc13_3.2 => constants.%T.as.Destroy.impl.Op.3c2 +// CHECK:STDOUT: %specific_impl_fn.loc13_3.2 => constants.%T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %ptr => constants.%ptr.e79 // CHECK:STDOUT: %require_complete.loc13_3 => constants.%complete_type // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/generic/dependent_param.carbon b/toolchain/check/testdata/generic/dependent_param.carbon index 7989971999f8..25842222b9e1 100644 --- a/toolchain/check/testdata/generic/dependent_param.carbon +++ b/toolchain/check/testdata/generic/dependent_param.carbon @@ -37,8 +37,8 @@ var n: i32 = Outer(i32).Inner(42).Get(); // CHECK:STDOUT: %Inner.type.eae: type = generic_class_type @Inner, @Outer(%T) [symbolic] // CHECK:STDOUT: %Inner.generic.137: %Inner.type.eae = struct_value () [symbolic] // CHECK:STDOUT: %Inner.879: type = class_type @Inner, @Inner(%T, %U) [symbolic] -// CHECK:STDOUT: %Get.type.889: type = fn_type @Get, @Inner(%T, %U) [symbolic] -// CHECK:STDOUT: %Get.118: %Get.type.889 = struct_value () [symbolic] +// CHECK:STDOUT: %Inner.Get.type.889: type = fn_type @Inner.Get, @Inner(%T, %U) [symbolic] +// CHECK:STDOUT: %Inner.Get.118: %Inner.Get.type.889 = 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: %require_complete.4ae: = require_complete_type %T [symbolic] @@ -56,23 +56,23 @@ var n: i32 = Outer(i32).Inner(42).Get(); // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_42.20e, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_42.20e, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_42.20e, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_42.20e, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_42.c68: %i32 = int_value 42 [concrete] // CHECK:STDOUT: %Inner.025: type = class_type @Inner, @Inner(%i32, %int_42.c68) [concrete] -// CHECK:STDOUT: %Get.type.512: type = fn_type @Get, @Inner(%i32, %int_42.c68) [concrete] -// CHECK:STDOUT: %Get.18c: %Get.type.512 = struct_value () [concrete] -// CHECK:STDOUT: %Get.specific_fn: = specific_function %Get.18c, @Get(%i32, %int_42.c68) [concrete] +// CHECK:STDOUT: %Inner.Get.type.512: type = fn_type @Inner.Get, @Inner(%i32, %int_42.c68) [concrete] +// CHECK:STDOUT: %Inner.Get.18c: %Inner.Get.type.512 = struct_value () [concrete] +// CHECK:STDOUT: %Inner.Get.specific_fn: = specific_function %Inner.Get.18c, @Inner.Get(%i32, %int_42.c68) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -84,8 +84,8 @@ var n: i32 = Outer(i32).Inner(42).Get(); // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -124,7 +124,7 @@ var n: i32 = Outer(i32).Inner(42).Get(); // CHECK:STDOUT: %U.patt: @Inner.%pattern_type (%pattern_type.7dcd0a.1) = symbolic_binding_pattern U, 1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, @Outer.%T.loc4_13.2 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %U.loc5_15.1: @Inner.%T (%T) = bind_symbolic_name U, 1 [symbolic = %U.loc5_15.2 (constants.%U)] +// CHECK:STDOUT: %U.loc5_15.2: @Inner.%T (%T) = bind_symbolic_name U, 1 [symbolic = %U.loc5_15.1 (constants.%U)] // CHECK:STDOUT: } // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] @@ -137,23 +137,23 @@ var n: i32 = Outer(i32).Inner(42).Get(); // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic class @Inner(@Outer.%T.loc4_13.2: type, %U.loc5_15.1: @Inner.%T (%T)) { +// CHECK:STDOUT: generic class @Inner(@Outer.%T.loc4_13.2: type, %U.loc5_15.2: @Inner.%T (%T)) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %U.loc5_15.2: @Inner.%T (%T) = bind_symbolic_name U, 1 [symbolic = %U.loc5_15.2 (constants.%U)] +// CHECK:STDOUT: %U.loc5_15.1: @Inner.%T (%T) = bind_symbolic_name U, 1 [symbolic = %U.loc5_15.1 (constants.%U)] // CHECK:STDOUT: %pattern_type: type = pattern_type %T [symbolic = %pattern_type (constants.%pattern_type.7dcd0a.1)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Get.type: type = fn_type @Get, @Inner(%T, %U.loc5_15.2) [symbolic = %Get.type (constants.%Get.type.889)] -// CHECK:STDOUT: %Get: @Inner.%Get.type (%Get.type.889) = struct_value () [symbolic = %Get (constants.%Get.118)] +// CHECK:STDOUT: %Inner.Get.type: type = fn_type @Inner.Get, @Inner(%T, %U.loc5_15.1) [symbolic = %Inner.Get.type (constants.%Inner.Get.type.889)] +// CHECK:STDOUT: %Inner.Get: @Inner.%Inner.Get.type (%Inner.Get.type.889) = struct_value () [symbolic = %Inner.Get (constants.%Inner.Get.118)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %Get.decl: @Inner.%Get.type (%Get.type.889) = fn_decl @Get [symbolic = @Inner.%Get (constants.%Get.118)] { -// CHECK:STDOUT: %return.patt: @Get.%pattern_type (%pattern_type.7dcd0a.1) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @Get.%pattern_type (%pattern_type.7dcd0a.1) = out_param_pattern %return.patt, call_param0 [concrete] +// CHECK:STDOUT: %Inner.Get.decl: @Inner.%Inner.Get.type (%Inner.Get.type.889) = fn_decl @Inner.Get [symbolic = @Inner.%Inner.Get (constants.%Inner.Get.118)] { +// CHECK:STDOUT: %return.patt: @Inner.Get.%pattern_type (%pattern_type.7dcd0a.1) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @Inner.Get.%pattern_type (%pattern_type.7dcd0a.1) = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, @Outer.%T.loc4_13.2 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %return.param: ref @Get.%T (%T) = out_param call_param0 -// CHECK:STDOUT: %return: ref @Get.%T (%T) = return_slot %return.param +// CHECK:STDOUT: %return.param: ref @Inner.Get.%T (%T) = out_param call_param0 +// CHECK:STDOUT: %return: ref @Inner.Get.%T (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] @@ -162,22 +162,22 @@ var n: i32 = Outer(i32).Inner(42).Get(); // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Inner.879 // CHECK:STDOUT: .T = -// CHECK:STDOUT: .Get = %Get.decl +// CHECK:STDOUT: .Get = %Inner.Get.decl // CHECK:STDOUT: .U = // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Get(@Outer.%T.loc4_13.2: type, @Inner.%U.loc5_15.1: @Inner.%T (%T)) { +// CHECK:STDOUT: generic fn @Inner.Get(@Outer.%T.loc4_13.2: type, @Inner.%U.loc5_15.2: @Inner.%T (%T)) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %pattern_type: type = pattern_type %T [symbolic = %pattern_type (constants.%pattern_type.7dcd0a.1)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %T [symbolic = %require_complete (constants.%require_complete.4ae)] -// CHECK:STDOUT: %U: @Get.%T (%T) = bind_symbolic_name U, 1 [symbolic = %U (constants.%U)] +// CHECK:STDOUT: %U: @Inner.Get.%T (%T) = bind_symbolic_name U, 1 [symbolic = %U (constants.%U)] // CHECK:STDOUT: -// CHECK:STDOUT: fn() -> @Get.%T (%T) { +// CHECK:STDOUT: fn() -> @Inner.Get.%T (%T) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %U.ref: @Get.%T (%T) = name_ref U, @Inner.%U.loc5_15.1 [symbolic = %U (constants.%U)] +// CHECK:STDOUT: %U.ref: @Inner.Get.%T (%T) = name_ref U, @Inner.%U.loc5_15.2 [symbolic = %U (constants.%U)] // CHECK:STDOUT: return %U.ref // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -191,19 +191,19 @@ var n: i32 = Outer(i32).Inner(42).Get(); // CHECK:STDOUT: %.loc10_24: %Inner.type.bac = specific_constant @Outer.%Inner.decl, @Outer(constants.%i32) [concrete = constants.%Inner.generic.ba0] // CHECK:STDOUT: %Inner.ref: %Inner.type.bac = name_ref Inner, %.loc10_24 [concrete = constants.%Inner.generic.ba0] // CHECK:STDOUT: %int_42: Core.IntLiteral = int_value 42 [concrete = constants.%int_42.20e] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc10_33.1: = bound_method constants.%int_42.20e, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc10_33.1: = bound_method constants.%int_42.20e, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc10_33.2: = bound_method constants.%int_42.20e, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc10_33.2(constants.%int_42.20e) [concrete = constants.%int_42.c68] -// CHECK:STDOUT: %.loc10_33.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_42.c68] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc10_33.2(constants.%int_42.20e) [concrete = constants.%int_42.c68] +// CHECK:STDOUT: %.loc10_33.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_42.c68] // CHECK:STDOUT: %.loc10_33.2: %i32 = converted constants.%int_42.20e, %.loc10_33.1 [concrete = constants.%int_42.c68] // CHECK:STDOUT: %Inner: type = class_type @Inner, @Inner(constants.%i32, constants.%int_42.c68) [concrete = constants.%Inner.025] -// CHECK:STDOUT: %.loc10_34: %Get.type.512 = specific_constant @Inner.%Get.decl, @Inner(constants.%i32, constants.%int_42.c68) [concrete = constants.%Get.18c] -// CHECK:STDOUT: %Get.ref: %Get.type.512 = name_ref Get, %.loc10_34 [concrete = constants.%Get.18c] -// CHECK:STDOUT: %Get.specific_fn: = specific_function %Get.ref, @Get(constants.%i32, constants.%int_42.c68) [concrete = constants.%Get.specific_fn] -// CHECK:STDOUT: %Get.call: init %i32 = call %Get.specific_fn() -// CHECK:STDOUT: assign file.%n.var, %Get.call +// CHECK:STDOUT: %.loc10_34: %Inner.Get.type.512 = specific_constant @Inner.%Inner.Get.decl, @Inner(constants.%i32, constants.%int_42.c68) [concrete = constants.%Inner.Get.18c] +// CHECK:STDOUT: %Get.ref: %Inner.Get.type.512 = name_ref Get, %.loc10_34 [concrete = constants.%Inner.Get.18c] +// CHECK:STDOUT: %Inner.Get.specific_fn: = specific_function %Get.ref, @Inner.Get(constants.%i32, constants.%int_42.c68) [concrete = constants.%Inner.Get.specific_fn] +// CHECK:STDOUT: %Inner.Get.call: init %i32 = call %Inner.Get.specific_fn() +// CHECK:STDOUT: assign file.%n.var, %Inner.Get.call // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -217,15 +217,15 @@ var n: i32 = Outer(i32).Inner(42).Get(); // CHECK:STDOUT: // CHECK:STDOUT: specific @Inner(constants.%T, constants.%U) { // CHECK:STDOUT: %T => constants.%T -// CHECK:STDOUT: %U.loc5_15.2 => constants.%U +// CHECK:STDOUT: %U.loc5_15.1 => constants.%U // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7dcd0a.1 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Get.type => constants.%Get.type.889 -// CHECK:STDOUT: %Get => constants.%Get.118 +// CHECK:STDOUT: %Inner.Get.type => constants.%Inner.Get.type.889 +// CHECK:STDOUT: %Inner.Get => constants.%Inner.Get.118 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Get(constants.%T, constants.%U) { +// CHECK:STDOUT: specific @Inner.Get(constants.%T, constants.%U) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7dcd0a.1 // CHECK:STDOUT: } @@ -240,15 +240,15 @@ var n: i32 = Outer(i32).Inner(42).Get(); // CHECK:STDOUT: // CHECK:STDOUT: specific @Inner(constants.%i32, constants.%int_42.c68) { // CHECK:STDOUT: %T => constants.%i32 -// CHECK:STDOUT: %U.loc5_15.2 => constants.%int_42.c68 +// CHECK:STDOUT: %U.loc5_15.1 => constants.%int_42.c68 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7ce // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Get.type => constants.%Get.type.512 -// CHECK:STDOUT: %Get => constants.%Get.18c +// CHECK:STDOUT: %Inner.Get.type => constants.%Inner.Get.type.512 +// CHECK:STDOUT: %Inner.Get => constants.%Inner.Get.18c // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Get(constants.%i32, constants.%int_42.c68) { +// CHECK:STDOUT: specific @Inner.Get(constants.%i32, constants.%int_42.c68) { // CHECK:STDOUT: %T => constants.%i32 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7ce // CHECK:STDOUT: diff --git a/toolchain/check/testdata/generic/dot_self_symbolic_type.carbon b/toolchain/check/testdata/generic/dot_self_symbolic_type.carbon index 13e64ae1332f..d6048e9320f8 100644 --- a/toolchain/check/testdata/generic/dot_self_symbolic_type.carbon +++ b/toolchain/check/testdata/generic/dot_self_symbolic_type.carbon @@ -94,29 +94,29 @@ fn H(T:! type) { // CHECK:STDOUT: %A_where.type.5b404c.1: type = facet_type <@A, @A(%CC) where %impl.elem0.452c56.1 = %CC> [symbolic] // CHECK:STDOUT: %T.dad: %A_where.type.5b404c.1 = bind_symbolic_name T, 1 [symbolic] // CHECK:STDOUT: %pattern_type.2e9: type = pattern_type %A_where.type.5b404c.1 [symbolic] -// CHECK:STDOUT: %F.type.704ae6.1: type = fn_type @F, @C(%CC) [symbolic] -// CHECK:STDOUT: %F.2d247e.1: %F.type.704ae6.1 = struct_value () [symbolic] +// CHECK:STDOUT: %C.F.type.704ae6.1: type = fn_type @C.F, @C(%CC) [symbolic] +// CHECK:STDOUT: %C.F.2d247e.1: %C.F.type.704ae6.1 = struct_value () [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %DD: type = bind_symbolic_name DD, 0 [symbolic] // CHECK:STDOUT: %D.432: type = class_type @D, @D(%DD) [symbolic] // CHECK:STDOUT: %T.336: type = bind_symbolic_name T, 1 [symbolic] -// CHECK:STDOUT: %G.type.a94: type = fn_type @G, @D(%DD) [symbolic] -// CHECK:STDOUT: %G.714: %G.type.a94 = struct_value () [symbolic] +// CHECK:STDOUT: %D.G.type.a94: type = fn_type @D.G, @D(%DD) [symbolic] +// CHECK:STDOUT: %D.G.714: %D.G.type.a94 = struct_value () [symbolic] // CHECK:STDOUT: %C.f2e1b5.2: type = class_type @C, @C(%DD) [symbolic] -// CHECK:STDOUT: %F.type.704ae6.2: type = fn_type @F, @C(%DD) [symbolic] -// CHECK:STDOUT: %F.2d247e.2: %F.type.704ae6.2 = struct_value () [symbolic] +// CHECK:STDOUT: %C.F.type.704ae6.2: type = fn_type @C.F, @C(%DD) [symbolic] +// CHECK:STDOUT: %C.F.2d247e.2: %C.F.type.704ae6.2 = struct_value () [symbolic] // CHECK:STDOUT: %require_complete.389: = require_complete_type %C.f2e1b5.2 [symbolic] // CHECK:STDOUT: %A.type.75a876.3: type = facet_type <@A, @A(%DD)> [symbolic] // CHECK:STDOUT: %.Self.fafe34.2: %A.type.75a876.3 = bind_symbolic_name .Self [symbolic] // CHECK:STDOUT: %A.lookup_impl_witness.4e49fb.2: = lookup_impl_witness %.Self.fafe34.2, @A, @A(%DD) [symbolic] // CHECK:STDOUT: %impl.elem0.452c56.2: type = impl_witness_access %A.lookup_impl_witness.4e49fb.2, element0 [symbolic] // CHECK:STDOUT: %T.8b3: type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %G.type.0da: type = fn_type @G, @D(%empty_struct_type) [concrete] -// CHECK:STDOUT: %G.54c: %G.type.0da = struct_value () [concrete] +// CHECK:STDOUT: %D.G.type.0da: type = fn_type @D.G, @D(%empty_struct_type) [concrete] +// CHECK:STDOUT: %D.G.54c: %D.G.type.0da = struct_value () [concrete] // CHECK:STDOUT: %C.7a7: type = class_type @C, @C(%empty_struct_type) [concrete] -// CHECK:STDOUT: %F.type.789: type = fn_type @F, @C(%empty_struct_type) [concrete] -// CHECK:STDOUT: %F.cc7: %F.type.789 = struct_value () [concrete] +// CHECK:STDOUT: %C.F.type.789: type = fn_type @C.F, @C(%empty_struct_type) [concrete] +// CHECK:STDOUT: %C.F.cc7: %C.F.type.789 = struct_value () [concrete] // CHECK:STDOUT: %A.type.700: type = facet_type <@A, @A(%empty_struct_type)> [concrete] // CHECK:STDOUT: %.Self.4e2: %A.type.700 = bind_symbolic_name .Self [symbolic_self] // CHECK:STDOUT: %A.lookup_impl_witness.935: = lookup_impl_witness %.Self.4e2, @A, @A(%empty_struct_type) [symbolic_self] @@ -127,30 +127,30 @@ fn H(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type: type = fn_type @F, @C(%CC.loc6_9.1) [symbolic = %F.type (constants.%F.type.704ae6.1)] -// CHECK:STDOUT: %F: @C.%F.type (%F.type.704ae6.1) = struct_value () [symbolic = %F (constants.%F.2d247e.1)] +// CHECK:STDOUT: %C.F.type: type = fn_type @C.F, @C(%CC.loc6_9.1) [symbolic = %C.F.type (constants.%C.F.type.704ae6.1)] +// CHECK:STDOUT: %C.F: @C.%C.F.type (%C.F.type.704ae6.1) = struct_value () [symbolic = %C.F (constants.%C.F.2d247e.1)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %F.decl: @C.%F.type (%F.type.704ae6.1) = fn_decl @F [symbolic = @C.%F (constants.%F.2d247e.1)] { -// CHECK:STDOUT: %T.patt: @F.%pattern_type (%pattern_type.2e9) = symbolic_binding_pattern T, 1 [concrete] +// CHECK:STDOUT: %C.F.decl: @C.%C.F.type (%C.F.type.704ae6.1) = fn_decl @C.F [symbolic = @C.%C.F (constants.%C.F.2d247e.1)] { +// CHECK:STDOUT: %T.patt: @C.F.%pattern_type (%pattern_type.2e9) = symbolic_binding_pattern T, 1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc11_18.1: type = splice_block %.loc11_18.2 [symbolic = %A_where.type (constants.%A_where.type.5b404c.1)] { // CHECK:STDOUT: %A.ref: %A.type.495 = name_ref A, file.%A.decl [concrete = constants.%A.generic] // CHECK:STDOUT: %CC.ref.loc11_14: type = name_ref CC, @C.%CC.loc6_9.2 [symbolic = %CC (constants.%CC)] -// CHECK:STDOUT: %A.type.loc11_16.1: type = facet_type <@A, @A(constants.%CC)> [symbolic = %A.type.loc11_16.2 (constants.%A.type.75a876.2)] +// CHECK:STDOUT: %A.type.loc11_16.2: type = facet_type <@A, @A(constants.%CC)> [symbolic = %A.type.loc11_16.1 (constants.%A.type.75a876.2)] // CHECK:STDOUT: -// CHECK:STDOUT: %.Self.ref: @F.%A.type.loc11_16.2 (%A.type.75a876.2) = name_ref .Self, %.Self.1 [symbolic = %.Self.2 (constants.%.Self.fafe34.1)] -// CHECK:STDOUT: %.loc11_24.1: @F.%A.assoc_type (%A.assoc_type.ed3b32.2) = specific_constant @X.%assoc0, @A(constants.%CC) [symbolic = %assoc0 (constants.%assoc0.ce3509.2)] -// CHECK:STDOUT: %X.ref: @F.%A.assoc_type (%A.assoc_type.ed3b32.2) = name_ref X, %.loc11_24.1 [symbolic = %assoc0 (constants.%assoc0.ce3509.2)] -// CHECK:STDOUT: %.Self.as_type.loc11_24.1: type = facet_access_type %.Self.ref [symbolic = %.Self.as_type.loc11_24.2 (constants.%.Self.as_type)] -// CHECK:STDOUT: %.loc11_24.2: type = converted %.Self.ref, %.Self.as_type.loc11_24.1 [symbolic = %.Self.as_type.loc11_24.2 (constants.%.Self.as_type)] -// CHECK:STDOUT: %impl.elem0.loc11_24.1: type = impl_witness_access constants.%A.lookup_impl_witness.4e49fb.1, element0 [symbolic = %impl.elem0.loc11_24.2 (constants.%impl.elem0.452c56.1)] +// CHECK:STDOUT: %.Self.ref: @C.F.%A.type.loc11_16.1 (%A.type.75a876.2) = name_ref .Self, %.Self.2 [symbolic = %.Self.1 (constants.%.Self.fafe34.1)] +// CHECK:STDOUT: %.loc11_24.1: @C.F.%A.assoc_type (%A.assoc_type.ed3b32.2) = specific_constant @X.%assoc0, @A(constants.%CC) [symbolic = %assoc0 (constants.%assoc0.ce3509.2)] +// CHECK:STDOUT: %X.ref: @C.F.%A.assoc_type (%A.assoc_type.ed3b32.2) = name_ref X, %.loc11_24.1 [symbolic = %assoc0 (constants.%assoc0.ce3509.2)] +// CHECK:STDOUT: %.Self.as_type.loc11_24.2: type = facet_access_type %.Self.ref [symbolic = %.Self.as_type.loc11_24.1 (constants.%.Self.as_type)] +// CHECK:STDOUT: %.loc11_24.2: type = converted %.Self.ref, %.Self.as_type.loc11_24.2 [symbolic = %.Self.as_type.loc11_24.1 (constants.%.Self.as_type)] +// CHECK:STDOUT: %impl.elem0.loc11_24.2: type = impl_witness_access constants.%A.lookup_impl_witness.4e49fb.1, element0 [symbolic = %impl.elem0.loc11_24.1 (constants.%impl.elem0.452c56.1)] // CHECK:STDOUT: %CC.ref.loc11_29: type = name_ref CC, @C.%CC.loc6_9.2 [symbolic = %CC (constants.%CC)] -// CHECK:STDOUT: %.loc11_18.2: type = where_expr %.Self.1 [symbolic = %A_where.type (constants.%A_where.type.5b404c.1)] { -// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc11_24.1, %CC.ref.loc11_29 +// CHECK:STDOUT: %.loc11_18.2: type = where_expr %.Self.2 [symbolic = %A_where.type (constants.%A_where.type.5b404c.1)] { +// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc11_24.2, %CC.ref.loc11_29 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %T.loc11_8.1: @F.%A_where.type (%A_where.type.5b404c.1) = bind_symbolic_name T, 1 [symbolic = %T.loc11_8.2 (constants.%T.dad)] +// CHECK:STDOUT: %T.loc11_8.2: @C.F.%A_where.type (%A_where.type.5b404c.1) = bind_symbolic_name T, 1 [symbolic = %T.loc11_8.1 (constants.%T.dad)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: complete_type_witness = %complete_type @@ -159,7 +159,7 @@ fn H(T:! type) { // CHECK:STDOUT: .Self = constants.%C.f2e1b5.1 // CHECK:STDOUT: .A = // CHECK:STDOUT: .CC = -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %C.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -175,24 +175,24 @@ fn H(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%D.432 -// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .G = %D.G.decl // CHECK:STDOUT: .C = // CHECK:STDOUT: .DD = // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(@C.%CC.loc6_9.2: type, %T.loc11_8.1: @F.%A_where.type (%A_where.type.5b404c.1)) { +// CHECK:STDOUT: generic fn @C.F(@C.%CC.loc6_9.2: type, %T.loc11_8.2: @C.F.%A_where.type (%A_where.type.5b404c.1)) { // CHECK:STDOUT: %CC: type = bind_symbolic_name CC, 0 [symbolic = %CC (constants.%CC)] -// CHECK:STDOUT: %A.type.loc11_16.2: type = facet_type <@A, @A(%CC)> [symbolic = %A.type.loc11_16.2 (constants.%A.type.75a876.2)] +// CHECK:STDOUT: %A.type.loc11_16.1: type = facet_type <@A, @A(%CC)> [symbolic = %A.type.loc11_16.1 (constants.%A.type.75a876.2)] // CHECK:STDOUT: -// CHECK:STDOUT: %require_complete: = require_complete_type %A.type.loc11_16.2 [symbolic = %require_complete (constants.%require_complete.6da)] +// CHECK:STDOUT: %require_complete: = require_complete_type %A.type.loc11_16.1 [symbolic = %require_complete (constants.%require_complete.6da)] // CHECK:STDOUT: %A.assoc_type: type = assoc_entity_type @A, @A(%CC) [symbolic = %A.assoc_type (constants.%A.assoc_type.ed3b32.2)] -// CHECK:STDOUT: %assoc0: @F.%A.assoc_type (%A.assoc_type.ed3b32.2) = assoc_entity element0, @A.%X [symbolic = %assoc0 (constants.%assoc0.ce3509.2)] -// CHECK:STDOUT: %.Self.as_type.loc11_24.2: type = facet_access_type %.Self.2 [symbolic = %.Self.as_type.loc11_24.2 (constants.%.Self.as_type)] -// CHECK:STDOUT: %A.lookup_impl_witness: = lookup_impl_witness %.Self.2, @A, @A(%CC) [symbolic = %A.lookup_impl_witness (constants.%A.lookup_impl_witness.4e49fb.1)] -// CHECK:STDOUT: %impl.elem0.loc11_24.2: type = impl_witness_access %A.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc11_24.2 (constants.%impl.elem0.452c56.1)] -// CHECK:STDOUT: %A_where.type: type = facet_type <@A, @A(%CC) where %impl.elem0.loc11_24.2 = %CC> [symbolic = %A_where.type (constants.%A_where.type.5b404c.1)] -// CHECK:STDOUT: %T.loc11_8.2: @F.%A_where.type (%A_where.type.5b404c.1) = bind_symbolic_name T, 1 [symbolic = %T.loc11_8.2 (constants.%T.dad)] +// CHECK:STDOUT: %assoc0: @C.F.%A.assoc_type (%A.assoc_type.ed3b32.2) = assoc_entity element0, @A.%X [symbolic = %assoc0 (constants.%assoc0.ce3509.2)] +// CHECK:STDOUT: %.Self.as_type.loc11_24.1: type = facet_access_type %.Self.1 [symbolic = %.Self.as_type.loc11_24.1 (constants.%.Self.as_type)] +// CHECK:STDOUT: %A.lookup_impl_witness: = lookup_impl_witness %.Self.1, @A, @A(%CC) [symbolic = %A.lookup_impl_witness (constants.%A.lookup_impl_witness.4e49fb.1)] +// CHECK:STDOUT: %impl.elem0.loc11_24.1: type = impl_witness_access %A.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc11_24.1 (constants.%impl.elem0.452c56.1)] +// CHECK:STDOUT: %A_where.type: type = facet_type <@A, @A(%CC) where %impl.elem0.loc11_24.1 = %CC> [symbolic = %A_where.type (constants.%A_where.type.5b404c.1)] +// CHECK:STDOUT: %T.loc11_8.1: @C.F.%A_where.type (%A_where.type.5b404c.1) = bind_symbolic_name T, 1 [symbolic = %T.loc11_8.1 (constants.%T.dad)] // CHECK:STDOUT: %pattern_type: type = pattern_type %A_where.type [symbolic = %pattern_type (constants.%pattern_type.2e9)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -203,17 +203,17 @@ fn H(T:! type) { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @G(@D.%DD.loc15_9.2: type, %T.loc16_8.1: type) { +// CHECK:STDOUT: generic fn @D.G(@D.%DD.loc15_9.2: type, %T.loc16_8.2: type) { // CHECK:STDOUT: // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %DD: type = bind_symbolic_name DD, 0 [symbolic = %DD (constants.%DD)] // CHECK:STDOUT: %C.loc25_9.2: type = class_type @C, @C(%DD) [symbolic = %C.loc25_9.2 (constants.%C.f2e1b5.2)] // CHECK:STDOUT: %require_complete: = require_complete_type %C.loc25_9.2 [symbolic = %require_complete (constants.%require_complete.389)] -// CHECK:STDOUT: %F.type: type = fn_type @F, @C(%DD) [symbolic = %F.type (constants.%F.type.704ae6.2)] -// CHECK:STDOUT: %F: @G.%F.type (%F.type.704ae6.2) = struct_value () [symbolic = %F (constants.%F.2d247e.2)] +// CHECK:STDOUT: %C.F.type: type = fn_type @C.F, @C(%DD) [symbolic = %C.F.type (constants.%C.F.type.704ae6.2)] +// CHECK:STDOUT: %C.F: @D.G.%C.F.type (%C.F.type.704ae6.2) = struct_value () [symbolic = %C.F (constants.%C.F.2d247e.2)] // CHECK:STDOUT: %A.type: type = facet_type <@A, @A(%DD)> [symbolic = %A.type (constants.%A.type.75a876.3)] -// CHECK:STDOUT: %.Self: @G.%A.type (%A.type.75a876.3) = bind_symbolic_name .Self [symbolic = %.Self (constants.%.Self.fafe34.2)] +// CHECK:STDOUT: %.Self: @D.G.%A.type (%A.type.75a876.3) = bind_symbolic_name .Self [symbolic = %.Self (constants.%.Self.fafe34.2)] // CHECK:STDOUT: %A.lookup_impl_witness: = lookup_impl_witness %.Self, @A, @A(%DD) [symbolic = %A.lookup_impl_witness (constants.%A.lookup_impl_witness.4e49fb.2)] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access %A.lookup_impl_witness, element0 [symbolic = %impl.elem0 (constants.%impl.elem0.452c56.2)] // CHECK:STDOUT: @@ -222,9 +222,9 @@ fn H(T:! type) { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] // CHECK:STDOUT: %DD.ref: type = name_ref DD, @D.%DD.loc15_9.2 [symbolic = %DD (constants.%DD)] // CHECK:STDOUT: %C.loc25_9.1: type = class_type @C, @C(constants.%DD) [symbolic = %C.loc25_9.2 (constants.%C.f2e1b5.2)] -// CHECK:STDOUT: %.loc25: @G.%F.type (%F.type.704ae6.2) = specific_constant @C.%F.decl, @C(constants.%DD) [symbolic = %F (constants.%F.2d247e.2)] -// CHECK:STDOUT: %F.ref: @G.%F.type (%F.type.704ae6.2) = name_ref F, %.loc25 [symbolic = %F (constants.%F.2d247e.2)] -// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc16_8.1 [symbolic = %T.loc16_8.2 (constants.%T.336)] +// CHECK:STDOUT: %.loc25: @D.G.%C.F.type (%C.F.type.704ae6.2) = specific_constant @C.%C.F.decl, @C(constants.%DD) [symbolic = %C.F (constants.%C.F.2d247e.2)] +// CHECK:STDOUT: %F.ref: @D.G.%C.F.type (%C.F.type.704ae6.2) = name_ref F, %.loc25 [symbolic = %C.F (constants.%C.F.2d247e.2)] +// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc16_8.2 [symbolic = %T.loc16_8.1 (constants.%T.336)] // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -233,22 +233,22 @@ fn H(T:! type) { // CHECK:STDOUT: %CC.loc6_9.1 => constants.%CC // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.704ae6.1 -// CHECK:STDOUT: %F => constants.%F.2d247e.1 +// CHECK:STDOUT: %C.F.type => constants.%C.F.type.704ae6.1 +// CHECK:STDOUT: %C.F => constants.%C.F.2d247e.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%CC, constants.%T.dad) { +// CHECK:STDOUT: specific @C.F(constants.%CC, constants.%T.dad) { // CHECK:STDOUT: %CC => constants.%CC -// CHECK:STDOUT: %A.type.loc11_16.2 => constants.%A.type.75a876.2 -// CHECK:STDOUT: %.Self.2 => constants.%.Self.fafe34.1 +// CHECK:STDOUT: %A.type.loc11_16.1 => constants.%A.type.75a876.2 +// CHECK:STDOUT: %.Self.1 => constants.%.Self.fafe34.1 // CHECK:STDOUT: %require_complete => constants.%require_complete.6da // CHECK:STDOUT: %A.assoc_type => constants.%A.assoc_type.ed3b32.2 // CHECK:STDOUT: %assoc0 => constants.%assoc0.ce3509.2 -// CHECK:STDOUT: %.Self.as_type.loc11_24.2 => constants.%.Self.as_type +// CHECK:STDOUT: %.Self.as_type.loc11_24.1 => constants.%.Self.as_type // CHECK:STDOUT: %A.lookup_impl_witness => constants.%A.lookup_impl_witness.4e49fb.1 -// CHECK:STDOUT: %impl.elem0.loc11_24.2 => constants.%impl.elem0.452c56.1 +// CHECK:STDOUT: %impl.elem0.loc11_24.1 => constants.%impl.elem0.452c56.1 // CHECK:STDOUT: %A_where.type => constants.%A_where.type.5b404c.1 -// CHECK:STDOUT: %T.loc11_8.2 => constants.%T.dad +// CHECK:STDOUT: %T.loc11_8.1 => constants.%T.dad // CHECK:STDOUT: %pattern_type => constants.%pattern_type.2e9 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -256,39 +256,39 @@ fn H(T:! type) { // CHECK:STDOUT: %DD.loc15_9.1 => constants.%DD // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %G.type => constants.%G.type.a94 -// CHECK:STDOUT: %G => constants.%G.714 +// CHECK:STDOUT: %D.G.type => constants.%D.G.type.a94 +// CHECK:STDOUT: %D.G => constants.%D.G.714 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @G(constants.%DD, constants.%T.336) { -// CHECK:STDOUT: %T.loc16_8.2 => constants.%T.336 +// CHECK:STDOUT: specific @D.G(constants.%DD, constants.%T.336) { +// CHECK:STDOUT: %T.loc16_8.1 => constants.%T.336 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @C(constants.%DD) { // CHECK:STDOUT: %CC.loc6_9.1 => constants.%DD // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.704ae6.2 -// CHECK:STDOUT: %F => constants.%F.2d247e.2 +// CHECK:STDOUT: %C.F.type => constants.%C.F.type.704ae6.2 +// CHECK:STDOUT: %C.F => constants.%C.F.2d247e.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @D(constants.%empty_struct_type) { // CHECK:STDOUT: %DD.loc15_9.1 => constants.%empty_struct_type // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %G.type => constants.%G.type.0da -// CHECK:STDOUT: %G => constants.%G.54c +// CHECK:STDOUT: %D.G.type => constants.%D.G.type.0da +// CHECK:STDOUT: %D.G => constants.%D.G.54c // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @G(constants.%empty_struct_type, constants.%T.8b3) { -// CHECK:STDOUT: %T.loc16_8.2 => constants.%T.8b3 +// CHECK:STDOUT: specific @D.G(constants.%empty_struct_type, constants.%T.8b3) { +// CHECK:STDOUT: %T.loc16_8.1 => constants.%T.8b3 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %DD => constants.%empty_struct_type // CHECK:STDOUT: %C.loc25_9.2 => constants.%C.7a7 // CHECK:STDOUT: %require_complete => constants.%complete_type -// CHECK:STDOUT: %F.type => constants.%F.type.789 -// CHECK:STDOUT: %F => constants.%F.cc7 +// CHECK:STDOUT: %C.F.type => constants.%C.F.type.789 +// CHECK:STDOUT: %C.F => constants.%C.F.cc7 // CHECK:STDOUT: %A.type => constants.%A.type.700 // CHECK:STDOUT: %.Self => constants.%.Self.4e2 // CHECK:STDOUT: %A.lookup_impl_witness => constants.%A.lookup_impl_witness.935 @@ -299,8 +299,8 @@ fn H(T:! type) { // CHECK:STDOUT: %CC.loc6_9.1 => constants.%empty_struct_type // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.789 -// CHECK:STDOUT: %F => constants.%F.cc7 +// CHECK:STDOUT: %C.F.type => constants.%C.F.type.789 +// CHECK:STDOUT: %C.F => constants.%C.F.cc7 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- dot_self_symbolic_in_impl_lookup.carbon @@ -328,12 +328,12 @@ fn H(T:! type) { // CHECK:STDOUT: %ptr.79f131.1: type = ptr_type %AA [symbolic] // CHECK:STDOUT: %B.type.4e3fc4.1: type = facet_type <@B, @B(%ptr.79f131.1)> [symbolic] // CHECK:STDOUT: %require_complete.13ba89.1: = require_complete_type %B.type.4e3fc4.1 [symbolic] -// CHECK:STDOUT: %B.impl_witness.741: = impl_witness file.%B.impl_witness_table.loc9, @B.impl.e5b(%AA, %BB.a66) [symbolic] +// CHECK:STDOUT: %B.impl_witness.741: = impl_witness file.%B.impl_witness_table.loc9, @BB.as_type.as.B.impl(%AA, %BB.a66) [symbolic] // CHECK:STDOUT: %DD: type = bind_symbolic_name DD, 0 [symbolic] // CHECK:STDOUT: %D.432: type = class_type @D, @D(%DD) [symbolic] // CHECK:STDOUT: %T.336: type = bind_symbolic_name T, 1 [symbolic] -// CHECK:STDOUT: %G.type.a94: type = fn_type @G, @D(%DD) [symbolic] -// CHECK:STDOUT: %G.714: %G.type.a94 = struct_value () [symbolic] +// CHECK:STDOUT: %D.G.type.a94: type = fn_type @D.G, @D(%DD) [symbolic] +// CHECK:STDOUT: %D.G.714: %D.G.type.a94 = struct_value () [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %ptr.79f131.2: type = ptr_type %DD [symbolic] // CHECK:STDOUT: %B.type.4e3fc4.2: type = facet_type <@B, @B(%ptr.79f131.2)> [symbolic] @@ -344,8 +344,8 @@ fn H(T:! type) { // CHECK:STDOUT: %B.lookup_impl_witness.8e3: = lookup_impl_witness %T.336, @B, @B(%ptr.79f131.2) [symbolic] // CHECK:STDOUT: %B.facet.44e: %B.type.4e3fc4.2 = facet_value %T.336, (%B.lookup_impl_witness.8e3) [symbolic] // CHECK:STDOUT: %T.8b3: type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %G.type.0da: type = fn_type @G, @D(%empty_struct_type) [concrete] -// CHECK:STDOUT: %G.54c: %G.type.0da = struct_value () [concrete] +// CHECK:STDOUT: %D.G.type.0da: type = fn_type @D.G, @D(%empty_struct_type) [concrete] +// CHECK:STDOUT: %D.G.54c: %D.G.type.0da = struct_value () [concrete] // CHECK:STDOUT: %ptr.c28: type = ptr_type %empty_struct_type [concrete] // CHECK:STDOUT: %B.type.973: type = facet_type <@B, @B(%ptr.c28)> [concrete] // CHECK:STDOUT: %A.type.700: type = facet_type <@A, @A(%empty_struct_type)> [concrete] @@ -357,11 +357,11 @@ fn H(T:! type) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: impl_decl @B.impl.e5b [concrete] { +// CHECK:STDOUT: impl_decl @BB.as_type.as.B.impl [concrete] { // CHECK:STDOUT: %AA.patt: %pattern_type.98f = symbolic_binding_pattern AA, 0 [concrete] -// CHECK:STDOUT: %BB.patt: @B.impl.e5b.%pattern_type (%pattern_type.0b2) = symbolic_binding_pattern BB, 1 [concrete] +// CHECK:STDOUT: %BB.patt: @BB.as_type.as.B.impl.%pattern_type (%pattern_type.0b2) = symbolic_binding_pattern BB, 1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %BB.ref: @B.impl.e5b.%A_where.type (%A_where.type.812090.1) = name_ref BB, %BB.loc9_25.1 [symbolic = %BB.loc9_25.2 (constants.%BB.a66)] +// CHECK:STDOUT: %BB.ref: @BB.as_type.as.B.impl.%A_where.type (%A_where.type.812090.1) = name_ref BB, %BB.loc9_25.1 [symbolic = %BB.loc9_25.2 (constants.%BB.a66)] // CHECK:STDOUT: %BB.as_type.loc9_51.1: type = facet_access_type %BB.ref [symbolic = %BB.as_type.loc9_51.2 (constants.%BB.as_type)] // CHECK:STDOUT: %.loc9_51: type = converted %BB.ref, %BB.as_type.loc9_51.1 [symbolic = %BB.as_type.loc9_51.2 (constants.%BB.as_type)] // CHECK:STDOUT: %B.ref: %B.type.bf2 = name_ref B, file.%B.decl [concrete = constants.%B.generic] @@ -374,9 +374,9 @@ fn H(T:! type) { // CHECK:STDOUT: %AA.ref.loc9_32: type = name_ref AA, %AA.loc9_14.1 [symbolic = %AA.loc9_14.2 (constants.%AA)] // CHECK:STDOUT: %A.type.loc9_34.1: type = facet_type <@A, @A(constants.%AA)> [symbolic = %A.type.loc9_34.2 (constants.%A.type.75a876.1)] // CHECK:STDOUT: -// CHECK:STDOUT: %.Self.ref: @B.impl.e5b.%A.type.loc9_34.2 (%A.type.75a876.1) = name_ref .Self, %.Self.1 [symbolic = %.Self.2 (constants.%.Self.fafe34.1)] -// CHECK:STDOUT: %.loc9_42.1: @B.impl.e5b.%A.assoc_type (%A.assoc_type) = specific_constant @X.%assoc0, @A(constants.%AA) [symbolic = %assoc0 (constants.%assoc0)] -// CHECK:STDOUT: %X.ref: @B.impl.e5b.%A.assoc_type (%A.assoc_type) = name_ref X, %.loc9_42.1 [symbolic = %assoc0 (constants.%assoc0)] +// CHECK:STDOUT: %.Self.ref: @BB.as_type.as.B.impl.%A.type.loc9_34.2 (%A.type.75a876.1) = name_ref .Self, %.Self.1 [symbolic = %.Self.2 (constants.%.Self.fafe34.1)] +// CHECK:STDOUT: %.loc9_42.1: @BB.as_type.as.B.impl.%A.assoc_type (%A.assoc_type) = specific_constant @X.%assoc0, @A(constants.%AA) [symbolic = %assoc0 (constants.%assoc0)] +// CHECK:STDOUT: %X.ref: @BB.as_type.as.B.impl.%A.assoc_type (%A.assoc_type) = name_ref X, %.loc9_42.1 [symbolic = %assoc0 (constants.%assoc0)] // CHECK:STDOUT: %.Self.as_type.loc9_42.1: type = facet_access_type %.Self.ref [symbolic = %.Self.as_type.loc9_42.2 (constants.%.Self.as_type)] // CHECK:STDOUT: %.loc9_42.2: type = converted %.Self.ref, %.Self.as_type.loc9_42.1 [symbolic = %.Self.as_type.loc9_42.2 (constants.%.Self.as_type)] // CHECK:STDOUT: %impl.elem0.loc9_42.1: type = impl_witness_access constants.%A.lookup_impl_witness.4e49fb.1, element0 [symbolic = %impl.elem0.loc9_42.2 (constants.%impl.elem0.452c56.1)] @@ -386,30 +386,30 @@ fn H(T:! type) { // CHECK:STDOUT: requirement_rewrite %impl.elem0.loc9_42.1, %.loc9_48.2 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %BB.loc9_25.1: @B.impl.e5b.%A_where.type (%A_where.type.812090.1) = bind_symbolic_name BB, 1 [symbolic = %BB.loc9_25.2 (constants.%BB.a66)] +// CHECK:STDOUT: %BB.loc9_25.1: @BB.as_type.as.B.impl.%A_where.type (%A_where.type.812090.1) = bind_symbolic_name BB, 1 [symbolic = %BB.loc9_25.2 (constants.%BB.a66)] // CHECK:STDOUT: } -// CHECK:STDOUT: %B.impl_witness_table.loc9 = impl_witness_table (), @B.impl.e5b [concrete] -// CHECK:STDOUT: %B.impl_witness.loc9: = impl_witness %B.impl_witness_table.loc9, @B.impl.e5b(constants.%AA, constants.%BB.a66) [symbolic = @B.impl.e5b.%B.impl_witness (constants.%B.impl_witness.741)] +// CHECK:STDOUT: %B.impl_witness_table.loc9 = impl_witness_table (), @BB.as_type.as.B.impl [concrete] +// CHECK:STDOUT: %B.impl_witness.loc9: = impl_witness %B.impl_witness_table.loc9, @BB.as_type.as.B.impl(constants.%AA, constants.%BB.a66) [symbolic = @BB.as_type.as.B.impl.%B.impl_witness (constants.%B.impl_witness.741)] // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @B.impl.e5b(%AA.loc9_14.1: type, %BB.loc9_25.1: @B.impl.e5b.%A_where.type (%A_where.type.812090.1)) { +// CHECK:STDOUT: generic impl @BB.as_type.as.B.impl(%AA.loc9_14.1: type, %BB.loc9_25.1: @BB.as_type.as.B.impl.%A_where.type (%A_where.type.812090.1)) { // CHECK:STDOUT: %AA.loc9_14.2: type = bind_symbolic_name AA, 0 [symbolic = %AA.loc9_14.2 (constants.%AA)] // CHECK:STDOUT: %A.type.loc9_34.2: type = facet_type <@A, @A(%AA.loc9_14.2)> [symbolic = %A.type.loc9_34.2 (constants.%A.type.75a876.1)] // CHECK:STDOUT: // CHECK:STDOUT: %require_complete.loc9_42: = require_complete_type %A.type.loc9_34.2 [symbolic = %require_complete.loc9_42 (constants.%require_complete.6da)] // CHECK:STDOUT: %A.assoc_type: type = assoc_entity_type @A, @A(%AA.loc9_14.2) [symbolic = %A.assoc_type (constants.%A.assoc_type)] -// CHECK:STDOUT: %assoc0: @B.impl.e5b.%A.assoc_type (%A.assoc_type) = assoc_entity element0, @A.%X [symbolic = %assoc0 (constants.%assoc0)] +// CHECK:STDOUT: %assoc0: @BB.as_type.as.B.impl.%A.assoc_type (%A.assoc_type) = assoc_entity element0, @A.%X [symbolic = %assoc0 (constants.%assoc0)] // CHECK:STDOUT: %.Self.as_type.loc9_42.2: type = facet_access_type %.Self.2 [symbolic = %.Self.as_type.loc9_42.2 (constants.%.Self.as_type)] // CHECK:STDOUT: %A.lookup_impl_witness: = lookup_impl_witness %.Self.2, @A, @A(%AA.loc9_14.2) [symbolic = %A.lookup_impl_witness (constants.%A.lookup_impl_witness.4e49fb.1)] // CHECK:STDOUT: %impl.elem0.loc9_42.2: type = impl_witness_access %A.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc9_42.2 (constants.%impl.elem0.452c56.1)] // CHECK:STDOUT: %A_where.type: type = facet_type <@A, @A(%AA.loc9_14.2) where %impl.elem0.loc9_42.2 = constants.%empty_tuple.type> [symbolic = %A_where.type (constants.%A_where.type.812090.1)] -// CHECK:STDOUT: %BB.loc9_25.2: @B.impl.e5b.%A_where.type (%A_where.type.812090.1) = bind_symbolic_name BB, 1 [symbolic = %BB.loc9_25.2 (constants.%BB.a66)] +// CHECK:STDOUT: %BB.loc9_25.2: @BB.as_type.as.B.impl.%A_where.type (%A_where.type.812090.1) = bind_symbolic_name BB, 1 [symbolic = %BB.loc9_25.2 (constants.%BB.a66)] // CHECK:STDOUT: %pattern_type: type = pattern_type %A_where.type [symbolic = %pattern_type (constants.%pattern_type.0b2)] // CHECK:STDOUT: %BB.as_type.loc9_51.2: type = facet_access_type %BB.loc9_25.2 [symbolic = %BB.as_type.loc9_51.2 (constants.%BB.as_type)] // CHECK:STDOUT: %ptr.loc9_61.2: type = ptr_type %AA.loc9_14.2 [symbolic = %ptr.loc9_61.2 (constants.%ptr.79f131.1)] // CHECK:STDOUT: %B.type.loc9_62.2: type = facet_type <@B, @B(%ptr.loc9_61.2)> [symbolic = %B.type.loc9_62.2 (constants.%B.type.4e3fc4.1)] // CHECK:STDOUT: %require_complete.loc9_62: = require_complete_type %B.type.loc9_62.2 [symbolic = %require_complete.loc9_62 (constants.%require_complete.13ba89.1)] -// CHECK:STDOUT: %B.impl_witness: = impl_witness file.%B.impl_witness_table.loc9, @B.impl.e5b(%AA.loc9_14.2, %BB.loc9_25.2) [symbolic = %B.impl_witness (constants.%B.impl_witness.741)] +// CHECK:STDOUT: %B.impl_witness: = impl_witness file.%B.impl_witness_table.loc9, @BB.as_type.as.B.impl(%AA.loc9_14.2, %BB.loc9_25.2) [symbolic = %B.impl_witness (constants.%B.impl_witness.741)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -431,13 +431,13 @@ fn H(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%D.432 -// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .G = %D.G.decl // CHECK:STDOUT: .B = // CHECK:STDOUT: .DD = // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @G(@D.%DD.loc14_9.2: type, %T.loc15_8.1: type) { +// CHECK:STDOUT: generic fn @D.G(@D.%DD.loc14_9.2: type, %T.loc15_8.2: type) { // CHECK:STDOUT: // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -445,26 +445,26 @@ fn H(T:! type) { // CHECK:STDOUT: %ptr.loc21_14.2: type = ptr_type %DD [symbolic = %ptr.loc21_14.2 (constants.%ptr.79f131.2)] // CHECK:STDOUT: %B.type.loc21_15.2: type = facet_type <@B, @B(%ptr.loc21_14.2)> [symbolic = %B.type.loc21_15.2 (constants.%B.type.4e3fc4.2)] // CHECK:STDOUT: %A.type: type = facet_type <@A, @A(%DD)> [symbolic = %A.type (constants.%A.type.75a876.2)] -// CHECK:STDOUT: %.Self: @G.%A.type (%A.type.75a876.2) = bind_symbolic_name .Self [symbolic = %.Self (constants.%.Self.fafe34.2)] +// CHECK:STDOUT: %.Self: @D.G.%A.type (%A.type.75a876.2) = bind_symbolic_name .Self [symbolic = %.Self (constants.%.Self.fafe34.2)] // CHECK:STDOUT: %A.lookup_impl_witness: = lookup_impl_witness %.Self, @A, @A(%DD) [symbolic = %A.lookup_impl_witness (constants.%A.lookup_impl_witness.4e49fb.2)] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access %A.lookup_impl_witness, element0 [symbolic = %impl.elem0 (constants.%impl.elem0.452c56.2)] -// CHECK:STDOUT: %B.lookup_impl_witness: = lookup_impl_witness %T.loc15_8.2, @B, @B(%ptr.loc21_14.2) [symbolic = %B.lookup_impl_witness (constants.%B.lookup_impl_witness.8e3)] -// CHECK:STDOUT: %B.facet.loc21_7.2: @G.%B.type.loc21_15.2 (%B.type.4e3fc4.2) = facet_value %T.loc15_8.2, (%B.lookup_impl_witness) [symbolic = %B.facet.loc21_7.2 (constants.%B.facet.44e)] +// CHECK:STDOUT: %B.lookup_impl_witness: = lookup_impl_witness %T.loc15_8.1, @B, @B(%ptr.loc21_14.2) [symbolic = %B.lookup_impl_witness (constants.%B.lookup_impl_witness.8e3)] +// CHECK:STDOUT: %B.facet.loc21_7.2: @D.G.%B.type.loc21_15.2 (%B.type.4e3fc4.2) = facet_value %T.loc15_8.1, (%B.lookup_impl_witness) [symbolic = %B.facet.loc21_7.2 (constants.%B.facet.44e)] // CHECK:STDOUT: // CHECK:STDOUT: fn() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc15_8.1 [symbolic = %T.loc15_8.2 (constants.%T.336)] +// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc15_8.2 [symbolic = %T.loc15_8.1 (constants.%T.336)] // CHECK:STDOUT: %B.ref: %B.type.bf2 = name_ref B, file.%B.decl [concrete = constants.%B.generic] // CHECK:STDOUT: %DD.ref: type = name_ref DD, @D.%DD.loc14_9.2 [symbolic = %DD (constants.%DD)] // CHECK:STDOUT: %ptr.loc21_14.1: type = ptr_type %DD.ref [symbolic = %ptr.loc21_14.2 (constants.%ptr.79f131.2)] // CHECK:STDOUT: %B.type.loc21_15.1: type = facet_type <@B, @B(constants.%ptr.79f131.2)> [symbolic = %B.type.loc21_15.2 (constants.%B.type.4e3fc4.2)] -// CHECK:STDOUT: %B.facet.loc21_7.1: @G.%B.type.loc21_15.2 (%B.type.4e3fc4.2) = facet_value constants.%T.336, (constants.%B.lookup_impl_witness.8e3) [symbolic = %B.facet.loc21_7.2 (constants.%B.facet.44e)] -// CHECK:STDOUT: %.loc21: @G.%B.type.loc21_15.2 (%B.type.4e3fc4.2) = converted %T.ref, %B.facet.loc21_7.1 [symbolic = %B.facet.loc21_7.2 (constants.%B.facet.44e)] +// CHECK:STDOUT: %B.facet.loc21_7.1: @D.G.%B.type.loc21_15.2 (%B.type.4e3fc4.2) = facet_value constants.%T.336, (constants.%B.lookup_impl_witness.8e3) [symbolic = %B.facet.loc21_7.2 (constants.%B.facet.44e)] +// CHECK:STDOUT: %.loc21: @D.G.%B.type.loc21_15.2 (%B.type.4e3fc4.2) = converted %T.ref, %B.facet.loc21_7.1 [symbolic = %B.facet.loc21_7.2 (constants.%B.facet.44e)] // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @B.impl.e5b(constants.%AA, constants.%BB.a66) { +// CHECK:STDOUT: specific @BB.as_type.as.B.impl(constants.%AA, constants.%BB.a66) { // CHECK:STDOUT: %AA.loc9_14.2 => constants.%AA // CHECK:STDOUT: %A.type.loc9_34.2 => constants.%A.type.75a876.1 // CHECK:STDOUT: %.Self.2 => constants.%.Self.fafe34.1 @@ -488,24 +488,24 @@ fn H(T:! type) { // CHECK:STDOUT: %DD.loc14_9.1 => constants.%DD // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %G.type => constants.%G.type.a94 -// CHECK:STDOUT: %G => constants.%G.714 +// CHECK:STDOUT: %D.G.type => constants.%D.G.type.a94 +// CHECK:STDOUT: %D.G => constants.%D.G.714 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @G(constants.%DD, constants.%T.336) { -// CHECK:STDOUT: %T.loc15_8.2 => constants.%T.336 +// CHECK:STDOUT: specific @D.G(constants.%DD, constants.%T.336) { +// CHECK:STDOUT: %T.loc15_8.1 => constants.%T.336 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @D(constants.%empty_struct_type) { // CHECK:STDOUT: %DD.loc14_9.1 => constants.%empty_struct_type // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %G.type => constants.%G.type.0da -// CHECK:STDOUT: %G => constants.%G.54c +// CHECK:STDOUT: %D.G.type => constants.%D.G.type.0da +// CHECK:STDOUT: %D.G => constants.%D.G.54c // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @G(constants.%empty_struct_type, constants.%T.8b3) { -// CHECK:STDOUT: %T.loc15_8.2 => constants.%T.8b3 +// CHECK:STDOUT: specific @D.G(constants.%empty_struct_type, constants.%T.8b3) { +// CHECK:STDOUT: %T.loc15_8.1 => constants.%T.8b3 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %DD => constants.%empty_struct_type diff --git a/toolchain/check/testdata/generic/local.carbon b/toolchain/check/testdata/generic/local.carbon index 6f863c1c018d..904cf0bcf39a 100644 --- a/toolchain/check/testdata/generic/local.carbon +++ b/toolchain/check/testdata/generic/local.carbon @@ -78,25 +78,25 @@ class C(C:! type) { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %C.val: %C.d45 = struct_value (%int_1.5d2) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.39b: type = fn_type @Op.1, @Destroy.impl(%C.d45) [concrete] -// CHECK:STDOUT: %Op.5e9: %Op.type.39b = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.39b: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C.d45) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.5e9: %T.as.Destroy.impl.Op.type.39b = struct_value () [concrete] // CHECK:STDOUT: %ptr.9c7: type = ptr_type %C.d45 [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.5e9, @Op.1(%C.d45) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.5e9, @T.as.Destroy.impl.Op(%C.d45) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -109,8 +109,8 @@ class C(C:! type) { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -123,18 +123,18 @@ class C(C:! type) { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic class @C(%T.loc5_11.1: type) { -// CHECK:STDOUT: %T.loc5_11.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc5_11.2 (constants.%T)] +// CHECK:STDOUT: generic class @C(%T.loc5_11.2: type) { +// CHECK:STDOUT: %T.loc5_11.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc5_11.1 (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type %T.loc5_11.2 [symbolic = %require_complete (constants.%require_complete.4ae)] -// CHECK:STDOUT: %C: type = class_type @C, @C(%T.loc5_11.2) [symbolic = %C (constants.%C.f06)] -// CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %T.loc5_11.2 [symbolic = %C.elem (constants.%C.elem.cca)] -// CHECK:STDOUT: %struct_type.x.loc7_3.2: type = struct_type {.x: @C.%T.loc5_11.2 (%T)} [symbolic = %struct_type.x.loc7_3.2 (constants.%struct_type.x.2ac)] +// CHECK:STDOUT: %require_complete: = require_complete_type %T.loc5_11.1 [symbolic = %require_complete (constants.%require_complete.4ae)] +// CHECK:STDOUT: %C: type = class_type @C, @C(%T.loc5_11.1) [symbolic = %C (constants.%C.f06)] +// CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %T.loc5_11.1 [symbolic = %C.elem (constants.%C.elem.cca)] +// CHECK:STDOUT: %struct_type.x.loc7_3.2: type = struct_type {.x: @C.%T.loc5_11.1 (%T)} [symbolic = %struct_type.x.loc7_3.2 (constants.%struct_type.x.2ac)] // CHECK:STDOUT: %complete_type.loc7_3.2: = complete_type_witness %struct_type.x.loc7_3.2 [symbolic = %complete_type.loc7_3.2 (constants.%complete_type.4339)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc5_11.1 [symbolic = %T.loc5_11.2 (constants.%T)] +// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc5_11.2 [symbolic = %T.loc5_11.1 (constants.%T)] // CHECK:STDOUT: %.loc6: @C.%C.elem (%C.elem.cca) = field_decl x, element0 [concrete] // CHECK:STDOUT: %struct_type.x.loc7_3.1: type = struct_type {.x: %T} [symbolic = %struct_type.x.loc7_3.2 (constants.%struct_type.x.2ac)] // CHECK:STDOUT: %complete_type.loc7_3.1: = complete_type_witness %struct_type.x.loc7_3.1 [symbolic = %complete_type.loc7_3.2 (constants.%complete_type.4339)] @@ -152,7 +152,7 @@ class C(C:! type) { // CHECK:STDOUT: %C.decl: %C.type = class_decl @C [concrete = constants.%C.generic] { // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.loc5_11.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc5_11.2 (constants.%T)] +// CHECK:STDOUT: %T.loc5_11.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc5_11.1 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %v.patt: %pattern_type.7db = binding_pattern v [concrete] @@ -161,12 +161,12 @@ class C(C:! type) { // CHECK:STDOUT: %v.var: ref %C.d45 = var %v.var_patt // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %.loc8_26.1: %struct_type.x.c96 = struct_literal (%int_1) -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc8_26.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc8_26.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc8_26.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc8_26.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc8_26.2: init %i32 = converted %int_1, %int.convert_checked [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc8_26.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc8_26.2: init %i32 = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc8_26.3: ref %i32 = class_element_access %v.var, element0 // CHECK:STDOUT: %.loc8_26.4: init %i32 = initialize_from %.loc8_26.2 to %.loc8_26.3 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc8_26.5: init %C.d45 = class_init (%.loc8_26.4), %v.var [concrete = constants.%C.val] @@ -179,20 +179,20 @@ class C(C:! type) { // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%i32) [concrete = constants.%C.d45] // CHECK:STDOUT: } // CHECK:STDOUT: %v: ref %C.d45 = bind_name v, %v.var -// CHECK:STDOUT: %Op.bound: = bound_method %v.var, constants.%Op.5e9 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.5e9, @Op.1(constants.%C.d45) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc8_3: = bound_method %v.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %v.var, constants.%T.as.Destroy.impl.Op.5e9 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.5e9, @T.as.Destroy.impl.Op(constants.%C.d45) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc8_3: = bound_method %v.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.9c7 = addr_of %v.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc8_3(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc8_3(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @C(constants.%T) { -// CHECK:STDOUT: %T.loc5_11.2 => constants.%T +// CHECK:STDOUT: %T.loc5_11.1 => constants.%T // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @C(constants.%i32) { -// CHECK:STDOUT: %T.loc5_11.2 => constants.%i32 +// CHECK:STDOUT: %T.loc5_11.1 => constants.%i32 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete => constants.%complete_type.f8a @@ -232,8 +232,8 @@ class C(C:! type) { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic class @C(%C.loc13_11.1: type) { -// CHECK:STDOUT: %C.loc13_11.2: type = bind_symbolic_name C, 0 [symbolic = %C.loc13_11.2 (constants.%C.8b3)] +// CHECK:STDOUT: generic class @C(%C.loc13_11.2: type) { +// CHECK:STDOUT: %C.loc13_11.1: type = bind_symbolic_name C, 0 [symbolic = %C.loc13_11.1 (constants.%C.8b3)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -252,13 +252,13 @@ class C(C:! type) { // CHECK:STDOUT: %C.decl: %C.type = class_decl @C [concrete = constants.%C.generic] { // CHECK:STDOUT: %C.patt: %pattern_type = symbolic_binding_pattern C, 0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %C.loc13_11.1: type = bind_symbolic_name C, 0 [symbolic = %C.loc13_11.2 (constants.%C.8b3)] +// CHECK:STDOUT: %C.loc13_11.2: type = bind_symbolic_name C, 0 [symbolic = %C.loc13_11.1 (constants.%C.8b3)] // CHECK:STDOUT: } // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @C(constants.%C.8b3) { -// CHECK:STDOUT: %C.loc13_11.2 => constants.%C.8b3 +// CHECK:STDOUT: %C.loc13_11.1 => constants.%C.8b3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- nonlocal_param_shadows_class.carbon diff --git a/toolchain/check/testdata/generic/template/convert.carbon b/toolchain/check/testdata/generic/template/convert.carbon index 5b80ff42e3d9..b14b91cd36b1 100644 --- a/toolchain/check/testdata/generic/template/convert.carbon +++ b/toolchain/check/testdata/generic/template/convert.carbon @@ -83,11 +83,11 @@ fn Test(d: D) -> i32 { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.96d: = impl_witness @C.%ImplicitAs.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] -// CHECK:STDOUT: %Convert.type.dae: type = fn_type @Convert.loc15 [concrete] -// CHECK:STDOUT: %Convert.937: %Convert.type.dae = struct_value () [concrete] +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.type: type = fn_type @C.as.ImplicitAs.impl.Convert [concrete] +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert: %C.as.ImplicitAs.impl.Convert.type = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value %C, (%ImplicitAs.impl_witness.96d) [concrete] // CHECK:STDOUT: %struct_type.n: type = struct_type {.n: %i32} [concrete] // CHECK:STDOUT: %complete_type.54b: = complete_type_witness %struct_type.n [concrete] @@ -103,13 +103,13 @@ fn Test(d: D) -> i32 { // CHECK:STDOUT: %inst.as_compatible.c0a: = inst_value [concrete] { // CHECK:STDOUT: %.fbe: %C = as_compatible @F.%x.ref // CHECK:STDOUT: } -// CHECK:STDOUT: %.2ce: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %.2ce: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] // CHECK:STDOUT: %inst.splice_block.1fd: = inst_value [concrete] { // CHECK:STDOUT: %.96d: %i32 = splice_block %.521 { -// CHECK:STDOUT: %impl.elem0.2ce: %.2ce = impl_witness_access %ImplicitAs.impl_witness.96d, element0 [concrete = %Convert.937] +// CHECK:STDOUT: %impl.elem0.2ce: %.2ce = impl_witness_access %ImplicitAs.impl_witness.96d, element0 [concrete = %C.as.ImplicitAs.impl.Convert] // CHECK:STDOUT: %bound_method: = bound_method %.fbe, %impl.elem0.2ce -// CHECK:STDOUT: %Convert.call: init %i32 = call %bound_method(%.fbe) -// CHECK:STDOUT: %.fa7: %i32 = value_of_initializer %Convert.call +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method(%.fbe) +// CHECK:STDOUT: %.fa7: %i32 = value_of_initializer %C.as.ImplicitAs.impl.Convert.call // CHECK:STDOUT: %.521: %i32 = converted %.fbe, %.fa7 // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -185,8 +185,8 @@ fn Test(d: D) -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @ImplicitAs.impl.4e3: %Self.ref as %ImplicitAs.type { -// CHECK:STDOUT: %Convert.decl: %Convert.type.dae = fn_decl @Convert.loc15 [concrete = constants.%Convert.937] { +// CHECK:STDOUT: impl @C.as.ImplicitAs.impl: %Self.ref as %ImplicitAs.type { +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.decl: %C.as.ImplicitAs.impl.Convert.type = fn_decl @C.as.ImplicitAs.impl.Convert [concrete = constants.%C.as.ImplicitAs.impl.Convert] { // CHECK:STDOUT: %self.patt: %pattern_type.c48 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.c48 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] @@ -202,7 +202,7 @@ fn Test(d: D) -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Convert = %Convert.decl +// CHECK:STDOUT: .Convert = %C.as.ImplicitAs.impl.Convert.decl // CHECK:STDOUT: witness = @C.%ImplicitAs.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: @@ -210,7 +210,7 @@ fn Test(d: D) -> i32 { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %.loc13: %C.elem = field_decl n, element0 [concrete] -// CHECK:STDOUT: impl_decl @ImplicitAs.impl.4e3 [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.ImplicitAs.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %ImplicitAs.ref: %ImplicitAs.type.cc7 = name_ref ImplicitAs, imports.%Core.ImplicitAs [concrete = constants.%ImplicitAs.generic] @@ -218,7 +218,7 @@ fn Test(d: D) -> i32 { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%i32)> [concrete = constants.%ImplicitAs.type.205] // CHECK:STDOUT: } -// CHECK:STDOUT: %ImplicitAs.impl_witness_table = impl_witness_table (@ImplicitAs.impl.4e3.%Convert.decl), @ImplicitAs.impl.4e3 [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table = impl_witness_table (@C.as.ImplicitAs.impl.%C.as.ImplicitAs.impl.Convert.decl), @C.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness: = impl_witness %ImplicitAs.impl_witness_table [concrete = constants.%ImplicitAs.impl_witness.96d] // CHECK:STDOUT: %struct_type.n: type = struct_type {.n: %i32} [concrete = constants.%struct_type.n] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n [concrete = constants.%complete_type.54b] @@ -258,7 +258,7 @@ fn Test(d: D) -> i32 { // CHECK:STDOUT: return %.loc9_14.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert.loc15(%self.param: %C) -> %i32 { +// CHECK:STDOUT: fn @C.as.ImplicitAs.impl.Convert(%self.param: %C) -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: %C = name_ref self, %self // CHECK:STDOUT: %n.ref: %C.elem = name_ref n, @C.%.loc13 [concrete = @C.%.loc13] diff --git a/toolchain/check/testdata/generic/template/unimplemented.carbon b/toolchain/check/testdata/generic/template/unimplemented.carbon index 65d12cf144f7..709327032435 100644 --- a/toolchain/check/testdata/generic/template/unimplemented.carbon +++ b/toolchain/check/testdata/generic/template/unimplemented.carbon @@ -256,18 +256,18 @@ fn F[template T:! type](x: T) { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.bae: type = fn_type @Op.96 [concrete] -// CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.1, @Destroy.impl(%i32) [concrete] -// CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %Destroy.Op.type: type = fn_type @Destroy.Op [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a17: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.e6a: %T.as.Destroy.impl.Op.type.a17 = struct_value () [concrete] // CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] -// CHECK:STDOUT: %Op.specific_fn.014: = specific_function %Op.e6a, @Op.1(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(%i32) [concrete] // CHECK:STDOUT: %ptr.79f131.2: type = ptr_type %T.8b3d5d.1 [template] // CHECK:STDOUT: %require_complete.6e5e64.2: = require_complete_type %ptr.79f131.2 [template] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %T.8b3d5d.1, @Destroy [template] // CHECK:STDOUT: %Destroy.facet.713: %Destroy.type = facet_value %T.8b3d5d.1, (%Destroy.lookup_impl_witness) [template] -// CHECK:STDOUT: %.a63: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.713 [template] +// CHECK:STDOUT: %.a63: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.713 [template] // CHECK:STDOUT: %impl.elem0.538: %.a63 = impl_witness_access %Destroy.lookup_impl_witness, element0 [template] -// CHECK:STDOUT: %specific_impl_fn.1af: = specific_impl_function %impl.elem0.538, @Op.96(%Destroy.facet.713) [template] +// CHECK:STDOUT: %specific_impl_fn.1af: = specific_impl_function %impl.elem0.538, @Destroy.Op(%Destroy.facet.713) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -312,9 +312,9 @@ fn F[template T:! type](x: T) { // CHECK:STDOUT: %.loc14_3.5: type = type_of_inst %.loc14_3.4 [template] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %T.loc4_15.1, @Destroy [template = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness)] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %T.loc4_15.1, (%Destroy.lookup_impl_witness) [template = %Destroy.facet (constants.%Destroy.facet.713)] -// CHECK:STDOUT: %.loc14_3.6: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [template = %.loc14_3.6 (constants.%.a63)] +// CHECK:STDOUT: %.loc14_3.6: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet [template = %.loc14_3.6 (constants.%.a63)] // CHECK:STDOUT: %impl.elem0.loc14_3.2: @F.%.loc14_3.6 (%.a63) = impl_witness_access %Destroy.lookup_impl_witness, element0 [template = %impl.elem0.loc14_3.2 (constants.%impl.elem0.538)] -// CHECK:STDOUT: %specific_impl_fn.loc14_3.2: = specific_impl_function %impl.elem0.loc14_3.2, @Op.96(%Destroy.facet) [template = %specific_impl_fn.loc14_3.2 (constants.%specific_impl_fn.1af)] +// CHECK:STDOUT: %specific_impl_fn.loc14_3.2: = specific_impl_function %impl.elem0.loc14_3.2, @Destroy.Op(%Destroy.facet) [template = %specific_impl_fn.loc14_3.2 (constants.%specific_impl_fn.1af)] // CHECK:STDOUT: %ptr: type = ptr_type %T.loc4_15.1 [template = %ptr (constants.%ptr.79f131.2)] // CHECK:STDOUT: %require_complete.loc14: = require_complete_type %ptr [template = %require_complete.loc14 (constants.%require_complete.6e5e64.2)] // CHECK:STDOUT: @@ -345,14 +345,14 @@ fn F[template T:! type](x: T) { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %w: ref %i32 = bind_name w, %w.var -// CHECK:STDOUT: %Op.bound: = bound_method %w.var, constants.%Op.e6a -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.e6a, @Op.1(constants.%i32) [concrete = constants.%Op.specific_fn.014] -// CHECK:STDOUT: %bound_method.loc22: = bound_method %w.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %w.var, constants.%T.as.Destroy.impl.Op.e6a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc22: = bound_method %w.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr.loc22: %ptr.235 = addr_of %w.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc22(%addr.loc22) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc22(%addr.loc22) // CHECK:STDOUT: %impl.elem0.loc14_3.1: @F.%.loc14_3.6 (%.a63) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [template = %impl.elem0.loc14_3.2 (constants.%impl.elem0.538)] // CHECK:STDOUT: %bound_method.loc14_3.1: = bound_method %v.var, %impl.elem0.loc14_3.1 -// CHECK:STDOUT: %specific_impl_fn.loc14_3.1: = specific_impl_function %impl.elem0.loc14_3.1, @Op.96(constants.%Destroy.facet.713) [template = %specific_impl_fn.loc14_3.2 (constants.%specific_impl_fn.1af)] +// CHECK:STDOUT: %specific_impl_fn.loc14_3.1: = specific_impl_function %impl.elem0.loc14_3.1, @Destroy.Op(constants.%Destroy.facet.713) [template = %specific_impl_fn.loc14_3.2 (constants.%specific_impl_fn.1af)] // CHECK:STDOUT: %bound_method.loc14_3.2: = bound_method %v.var, %specific_impl_fn.loc14_3.1 // CHECK:STDOUT: %addr.loc14: @F.%ptr (%ptr.79f131.2) = addr_of %v.var // CHECK:STDOUT: %.loc14_3.3: init %empty_tuple.type = call %bound_method.loc14_3.2(%addr.loc14) diff --git a/toolchain/check/testdata/generic/template_dependence.carbon b/toolchain/check/testdata/generic/template_dependence.carbon index 4744bd2417cd..57b26236fce6 100644 --- a/toolchain/check/testdata/generic/template_dependence.carbon +++ b/toolchain/check/testdata/generic/template_dependence.carbon @@ -122,13 +122,13 @@ fn F(template T:! type, U:! type) -> (T, U) { // CHECK:STDOUT: %require_complete.fe1: = require_complete_type %tuple.type.30b [template] // CHECK:STDOUT: %F.specific_fn: = specific_function %F, @F(%T.8b3d5d.1, %U) [template] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.bae: type = fn_type @Op.1 [concrete] +// CHECK:STDOUT: %Destroy.Op.type: type = fn_type @Destroy.Op [concrete] // CHECK:STDOUT: %require_complete.8fa: = require_complete_type %ptr.937 [template] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %tuple.type.30b, @Destroy [template] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %tuple.type.30b, (%Destroy.lookup_impl_witness) [template] -// CHECK:STDOUT: %.1e9: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [template] +// CHECK:STDOUT: %.1e9: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet [template] // CHECK:STDOUT: %impl.elem0: %.1e9 = impl_witness_access %Destroy.lookup_impl_witness, element0 [template] -// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Op.1(%Destroy.facet) [template] +// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Destroy.Op(%Destroy.facet) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -174,9 +174,9 @@ fn F(template T:! type, U:! type) -> (T, U) { // CHECK:STDOUT: %F.specific_fn.loc5_10.2: = specific_function constants.%F, @F(%T.loc4_15.1, %U.loc4_25.1) [template = %F.specific_fn.loc5_10.2 (constants.%F.specific_fn)] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %tuple.type, @Destroy [template = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness)] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %tuple.type, (%Destroy.lookup_impl_witness) [template = %Destroy.facet (constants.%Destroy.facet)] -// CHECK:STDOUT: %.loc4_35.3: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [template = %.loc4_35.3 (constants.%.1e9)] +// CHECK:STDOUT: %.loc4_35.3: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet [template = %.loc4_35.3 (constants.%.1e9)] // CHECK:STDOUT: %impl.elem0.loc4_35.2: @F.%.loc4_35.3 (%.1e9) = impl_witness_access %Destroy.lookup_impl_witness, element0 [template = %impl.elem0.loc4_35.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %specific_impl_fn.loc4_35.2: = specific_impl_function %impl.elem0.loc4_35.2, @Op.1(%Destroy.facet) [template = %specific_impl_fn.loc4_35.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc4_35.2: = specific_impl_function %impl.elem0.loc4_35.2, @Destroy.Op(%Destroy.facet) [template = %specific_impl_fn.loc4_35.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %ptr: type = ptr_type %tuple.type [template = %ptr (constants.%ptr.937)] // CHECK:STDOUT: %require_complete.loc4_35.2: = require_complete_type %ptr [template = %require_complete.loc4_35.2 (constants.%require_complete.8fa)] // CHECK:STDOUT: @@ -190,7 +190,7 @@ fn F(template T:! type, U:! type) -> (T, U) { // CHECK:STDOUT: %F.call: init @F.%tuple.type (%tuple.type.30b) = call %F.specific_fn.loc5_10.1() to %.loc4_35.1 // CHECK:STDOUT: %impl.elem0.loc4_35.1: @F.%.loc4_35.3 (%.1e9) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [template = %impl.elem0.loc4_35.2 (constants.%impl.elem0)] // CHECK:STDOUT: %bound_method.loc4_35.1: = bound_method %.loc4_35.1, %impl.elem0.loc4_35.1 -// CHECK:STDOUT: %specific_impl_fn.loc4_35.1: = specific_impl_function %impl.elem0.loc4_35.1, @Op.1(constants.%Destroy.facet) [template = %specific_impl_fn.loc4_35.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc4_35.1: = specific_impl_function %impl.elem0.loc4_35.1, @Destroy.Op(constants.%Destroy.facet) [template = %specific_impl_fn.loc4_35.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %bound_method.loc4_35.2: = bound_method %.loc4_35.1, %specific_impl_fn.loc4_35.1 // CHECK:STDOUT: %addr: @F.%ptr (%ptr.937) = addr_of %.loc4_35.1 // CHECK:STDOUT: %.loc4_35.2: init %empty_tuple.type = call %bound_method.loc4_35.2(%addr) diff --git a/toolchain/check/testdata/if/basics.carbon b/toolchain/check/testdata/if/basics.carbon index c34b2ace7bc5..aeac2dcafd92 100644 --- a/toolchain/check/testdata/if/basics.carbon +++ b/toolchain/check/testdata/if/basics.carbon @@ -134,9 +134,9 @@ fn VarScope(b: bool) -> bool { // CHECK:STDOUT: } { // CHECK:STDOUT: %b.param: bool = value_param call_param0 // CHECK:STDOUT: %.loc8_10.1: type = splice_block %.loc8_10.3 [concrete = bool] { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc8_10.2: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc8_10.3: type = converted %bool.make_type, %.loc8_10.2 [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc8_10.2: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc8_10.3: type = converted %Bool.call, %.loc8_10.2 [concrete = bool] // CHECK:STDOUT: } // CHECK:STDOUT: %b: bool = bind_name b, %b.param // CHECK:STDOUT: } @@ -188,9 +188,9 @@ fn VarScope(b: bool) -> bool { // CHECK:STDOUT: } { // CHECK:STDOUT: %b.param: bool = value_param call_param0 // CHECK:STDOUT: %.loc7_10.1: type = splice_block %.loc7_10.3 [concrete = bool] { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc7_10.2: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc7_10.3: type = converted %bool.make_type, %.loc7_10.2 [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc7_10.2: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc7_10.3: type = converted %Bool.call, %.loc7_10.2 [concrete = bool] // CHECK:STDOUT: } // CHECK:STDOUT: %b: bool = bind_name b, %b.param // CHECK:STDOUT: } @@ -234,14 +234,14 @@ fn VarScope(b: bool) -> bool { // CHECK:STDOUT: %return.patt: %pattern_type.831 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.831 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %bool.make_type.loc4_19: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc4_19.1: type = value_of_initializer %bool.make_type.loc4_19 [concrete = bool] -// CHECK:STDOUT: %.loc4_19.2: type = converted %bool.make_type.loc4_19, %.loc4_19.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc4_19: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc4_19.1: type = value_of_initializer %Bool.call.loc4_19 [concrete = bool] +// CHECK:STDOUT: %.loc4_19.2: type = converted %Bool.call.loc4_19, %.loc4_19.1 [concrete = bool] // CHECK:STDOUT: %b.param: bool = value_param call_param0 // CHECK:STDOUT: %.loc4_10.1: type = splice_block %.loc4_10.3 [concrete = bool] { -// CHECK:STDOUT: %bool.make_type.loc4_10: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc4_10.2: type = value_of_initializer %bool.make_type.loc4_10 [concrete = bool] -// CHECK:STDOUT: %.loc4_10.3: type = converted %bool.make_type.loc4_10, %.loc4_10.2 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc4_10: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc4_10.2: type = value_of_initializer %Bool.call.loc4_10 [concrete = bool] +// CHECK:STDOUT: %.loc4_10.3: type = converted %Bool.call.loc4_10, %.loc4_10.2 [concrete = bool] // CHECK:STDOUT: } // CHECK:STDOUT: %b: bool = bind_name b, %b.param // CHECK:STDOUT: %return.param: ref bool = out_param call_param1 diff --git a/toolchain/check/testdata/if_expr/basic.carbon b/toolchain/check/testdata/if_expr/basic.carbon index d1927523384d..ca85f16136b9 100644 --- a/toolchain/check/testdata/if_expr/basic.carbon +++ b/toolchain/check/testdata/if_expr/basic.carbon @@ -40,24 +40,24 @@ fn F(b: bool, n: i32, m: i32) -> i32 { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: %array: %array_type = tuple_value (%int_0.6a9) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.fa9: type = fn_type @Op.1, @Destroy.impl(%array_type) [concrete] -// CHECK:STDOUT: %Op.606: %Op.type.fa9 = struct_value () [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.606, @Op.1(%array_type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.fa9: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%array_type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.606: %T.as.Destroy.impl.Op.type.fa9 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.606, @T.as.Destroy.impl.Op(%array_type) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -72,8 +72,8 @@ fn F(b: bool, n: i32, m: i32) -> i32 { // CHECK:STDOUT: %Core.Bool: %Bool.type = import_ref Core//prelude/parts/bool, Bool, loaded [concrete = constants.%Bool] // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -97,9 +97,9 @@ fn F(b: bool, n: i32, m: i32) -> i32 { // CHECK:STDOUT: %i32.loc15_34: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %b.param: bool = value_param call_param0 // CHECK:STDOUT: %.loc15_9.1: type = splice_block %.loc15_9.3 [concrete = bool] { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc15_9.2: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc15_9.3: type = converted %bool.make_type, %.loc15_9.2 [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc15_9.2: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc15_9.3: type = converted %Bool.call, %.loc15_9.2 [concrete = bool] // CHECK:STDOUT: } // CHECK:STDOUT: %b: bool = bind_name b, %b.param // CHECK:STDOUT: %n.param: %i32 = value_param call_param1 @@ -128,12 +128,12 @@ fn F(b: bool, n: i32, m: i32) -> i32 { // CHECK:STDOUT: %x.var: ref %array_type = var %x.var_patt // CHECK:STDOUT: %int_0.loc16_27: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] // CHECK:STDOUT: %.loc16_29.1: %tuple.type = tuple_literal (%int_0.loc16_27) -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc16_29.1: = bound_method %int_0.loc16_27, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc16_29.1: = bound_method %int_0.loc16_27, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc16_29.2: = bound_method %int_0.loc16_27, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc16_29.2(%int_0.loc16_27) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc16_29.2: init %i32 = converted %int_0.loc16_27, %int.convert_checked [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc16_29.2(%int_0.loc16_27) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc16_29.2: init %i32 = converted %int_0.loc16_27, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %int_0.loc16_29: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] // CHECK:STDOUT: %.loc16_29.3: ref %i32 = array_index %x.var, %int_0.loc16_29 // CHECK:STDOUT: %.loc16_29.4: init %i32 = initialize_from %.loc16_29.2 to %.loc16_29.3 [concrete = constants.%int_0.6a9] @@ -170,11 +170,11 @@ fn F(b: bool, n: i32, m: i32) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.result: // CHECK:STDOUT: %.loc17_10: %i32 = block_arg !if.expr.result -// CHECK:STDOUT: %Op.bound: = bound_method %x.var, constants.%Op.606 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.606, @Op.1(constants.%array_type) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc16_3: = bound_method %x.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %x.var, constants.%T.as.Destroy.impl.Op.606 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.606, @T.as.Destroy.impl.Op(constants.%array_type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc16_3: = bound_method %x.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.260 = addr_of %x.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc16_3(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc16_3(%addr) // CHECK:STDOUT: return %.loc17_10 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/if_expr/constant_condition.carbon b/toolchain/check/testdata/if_expr/constant_condition.carbon index 3018cba0b1cd..e708ef858aa0 100644 --- a/toolchain/check/testdata/if_expr/constant_condition.carbon +++ b/toolchain/check/testdata/if_expr/constant_condition.carbon @@ -51,24 +51,24 @@ fn PartiallyConstant(t: type) -> i32 { // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %B.type: type = fn_type @B [concrete] // CHECK:STDOUT: %B: %B.type = struct_value () [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -81,13 +81,13 @@ fn PartiallyConstant(t: type) -> i32 { // CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] // CHECK:STDOUT: %pattern_type.fe8: type = pattern_type %ptr.235 [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.ba2: type = fn_type @Op.2, @Destroy.impl(%ptr.235) [concrete] -// CHECK:STDOUT: %Op.649: %Op.type.ba2 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.ba2: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%ptr.235) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.649: %T.as.Destroy.impl.Op.type.ba2 = struct_value () [concrete] // CHECK:STDOUT: %ptr.5d5: type = ptr_type %ptr.235 [concrete] -// CHECK:STDOUT: %Op.specific_fn.829: = specific_function %Op.649, @Op.2(%ptr.235) [concrete] -// CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.2, @Destroy.impl(%i32) [concrete] -// CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] -// CHECK:STDOUT: %Op.specific_fn.014: = specific_function %Op.e6a, @Op.2(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.829: = specific_function %T.as.Destroy.impl.Op.649, @T.as.Destroy.impl.Op(%ptr.235) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a17: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.e6a: %T.as.Destroy.impl.Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.014: = specific_function %T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(%i32) [concrete] // CHECK:STDOUT: %PartiallyConstant.type: type = fn_type @PartiallyConstant [concrete] // CHECK:STDOUT: %PartiallyConstant: %PartiallyConstant.type = struct_value () [concrete] // CHECK:STDOUT: } @@ -102,8 +102,8 @@ fn PartiallyConstant(t: type) -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -181,12 +181,12 @@ fn PartiallyConstant(t: type) -> i32 { // CHECK:STDOUT: fn @A() -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc15_25.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc15_25.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc15_25.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc15_25.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc15_25.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc15_25.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc15_25.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc15_25.2: %i32 = converted %int_1, %.loc15_25.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: return %.loc15_25.2 // CHECK:STDOUT: } @@ -194,12 +194,12 @@ fn PartiallyConstant(t: type) -> i32 { // CHECK:STDOUT: fn @B() -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc16_25.1: = bound_method %int_2, %impl.elem0 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc16_25.1: = bound_method %int_2, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc16_25.2: = bound_method %int_2, %specific_fn [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc16_25.2(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc16_25.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc16_25.2(%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc16_25.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc16_25.2: %i32 = converted %int_2, %.loc16_25.1 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: return %.loc16_25.2 // CHECK:STDOUT: } @@ -260,12 +260,12 @@ fn PartiallyConstant(t: type) -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %v.var: ref %i32 = var %v.var_patt // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc27_3.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc27_3.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc27_3.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc27_3.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc27_3: init %i32 = converted %int_1, %int.convert_checked [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc27_3.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc27_3: init %i32 = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_1.5d2] // CHECK:STDOUT: assign %v.var, %.loc27_3 // CHECK:STDOUT: br !.loc27_13 // CHECK:STDOUT: @@ -325,16 +325,16 @@ fn PartiallyConstant(t: type) -> i32 { // CHECK:STDOUT: %.loc29_11: %ptr.235 = bind_value %w.ref // CHECK:STDOUT: %.loc29_10.1: ref %i32 = deref %.loc29_11 // CHECK:STDOUT: %.loc29_10.2: %i32 = bind_value %.loc29_10.1 -// CHECK:STDOUT: %Op.bound.loc28: = bound_method %w.var, constants.%Op.649 -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.649, @Op.2(constants.%ptr.235) [concrete = constants.%Op.specific_fn.829] -// CHECK:STDOUT: %bound_method.loc28: = bound_method %w.var, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc28: = bound_method %w.var, constants.%T.as.Destroy.impl.Op.649 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.649, @T.as.Destroy.impl.Op(constants.%ptr.235) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.829] +// CHECK:STDOUT: %bound_method.loc28: = bound_method %w.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc28_3: %ptr.5d5 = addr_of %w.var -// CHECK:STDOUT: %no_op.loc28: init %empty_tuple.type = call %bound_method.loc28(%addr.loc28_3) -// CHECK:STDOUT: %Op.bound.loc27: = bound_method %v.var, constants.%Op.e6a -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.e6a, @Op.2(constants.%i32) [concrete = constants.%Op.specific_fn.014] -// CHECK:STDOUT: %bound_method.loc27_3.3: = bound_method %v.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc28: init %empty_tuple.type = call %bound_method.loc28(%addr.loc28_3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc27: = bound_method %v.var, constants.%T.as.Destroy.impl.Op.e6a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.014] +// CHECK:STDOUT: %bound_method.loc27_3.3: = bound_method %v.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc27: %ptr.235 = addr_of %v.var -// CHECK:STDOUT: %no_op.loc27: init %empty_tuple.type = call %bound_method.loc27_3.3(%addr.loc27) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc27: init %empty_tuple.type = call %bound_method.loc27_3.3(%addr.loc27) // CHECK:STDOUT: return %.loc29_10.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -346,12 +346,12 @@ fn PartiallyConstant(t: type) -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %v.var: ref %i32 = var %v.var_patt // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc33_3.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc33_3.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc33_3.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc33_3.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc33_3: init %i32 = converted %int_1, %int.convert_checked [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc33_3.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc33_3: init %i32 = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_1.5d2] // CHECK:STDOUT: assign %v.var, %.loc33_3 // CHECK:STDOUT: br !.loc33_13 // CHECK:STDOUT: @@ -408,16 +408,16 @@ fn PartiallyConstant(t: type) -> i32 { // CHECK:STDOUT: %.loc35_11: %ptr.235 = bind_value %w.ref // CHECK:STDOUT: %.loc35_10.1: ref %i32 = deref %.loc35_11 // CHECK:STDOUT: %.loc35_10.2: %i32 = bind_value %.loc35_10.1 -// CHECK:STDOUT: %Op.bound.loc34: = bound_method %w.var, constants.%Op.649 -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.649, @Op.2(constants.%ptr.235) [concrete = constants.%Op.specific_fn.829] -// CHECK:STDOUT: %bound_method.loc34: = bound_method %w.var, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc34: = bound_method %w.var, constants.%T.as.Destroy.impl.Op.649 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.649, @T.as.Destroy.impl.Op(constants.%ptr.235) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.829] +// CHECK:STDOUT: %bound_method.loc34: = bound_method %w.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc34_3: %ptr.5d5 = addr_of %w.var -// CHECK:STDOUT: %no_op.loc34: init %empty_tuple.type = call %bound_method.loc34(%addr.loc34_3) -// CHECK:STDOUT: %Op.bound.loc33: = bound_method %v.var, constants.%Op.e6a -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.e6a, @Op.2(constants.%i32) [concrete = constants.%Op.specific_fn.014] -// CHECK:STDOUT: %bound_method.loc33_3.3: = bound_method %v.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc34: init %empty_tuple.type = call %bound_method.loc34(%addr.loc34_3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc33: = bound_method %v.var, constants.%T.as.Destroy.impl.Op.e6a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.014] +// CHECK:STDOUT: %bound_method.loc33_3.3: = bound_method %v.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc33: %ptr.235 = addr_of %v.var -// CHECK:STDOUT: %no_op.loc33: init %empty_tuple.type = call %bound_method.loc33_3.3(%addr.loc33) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc33: init %empty_tuple.type = call %bound_method.loc33_3.3(%addr.loc33) // CHECK:STDOUT: return %.loc35_10.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/if_expr/control_flow.carbon b/toolchain/check/testdata/if_expr/control_flow.carbon index 346cb039135d..0f64cbe6ee61 100644 --- a/toolchain/check/testdata/if_expr/control_flow.carbon +++ b/toolchain/check/testdata/if_expr/control_flow.carbon @@ -33,24 +33,24 @@ fn F(b: bool) -> i32 { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %B.type: type = fn_type @B [concrete] // CHECK:STDOUT: %B: %B.type = struct_value () [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %Bool.type: type = fn_type @Bool [concrete] // CHECK:STDOUT: %Bool: %Bool.type = struct_value () [concrete] @@ -69,8 +69,8 @@ fn F(b: bool) -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Bool: %Bool.type = import_ref Core//prelude/parts/bool, Bool, loaded [concrete = constants.%Bool] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -110,9 +110,9 @@ fn F(b: bool) -> i32 { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %b.param: bool = value_param call_param0 // CHECK:STDOUT: %.loc18_9.1: type = splice_block %.loc18_9.3 [concrete = bool] { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc18_9.2: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc18_9.3: type = converted %bool.make_type, %.loc18_9.2 [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc18_9.2: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc18_9.3: type = converted %Bool.call, %.loc18_9.2 [concrete = bool] // CHECK:STDOUT: } // CHECK:STDOUT: %b: bool = bind_name b, %b.param // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param1 @@ -123,12 +123,12 @@ fn F(b: bool) -> i32 { // CHECK:STDOUT: fn @A() -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc15_25.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc15_25.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc15_25.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc15_25.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc15_25.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc15_25.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc15_25.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc15_25.2: %i32 = converted %int_1, %.loc15_25.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: return %.loc15_25.2 // CHECK:STDOUT: } @@ -136,12 +136,12 @@ fn F(b: bool) -> i32 { // CHECK:STDOUT: fn @B() -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc16_25.1: = bound_method %int_2, %impl.elem0 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc16_25.1: = bound_method %int_2, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc16_25.2: = bound_method %int_2, %specific_fn [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc16_25.2(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc16_25.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc16_25.2(%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc16_25.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc16_25.2: %i32 = converted %int_2, %.loc16_25.1 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: return %.loc16_25.2 // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/if_expr/fail_partial_constant.carbon b/toolchain/check/testdata/if_expr/fail_partial_constant.carbon index 61aaa81a1c72..72cbfd5cfd34 100644 --- a/toolchain/check/testdata/if_expr/fail_partial_constant.carbon +++ b/toolchain/check/testdata/if_expr/fail_partial_constant.carbon @@ -85,9 +85,9 @@ fn ChosenBranchIsNonConstant(t: type) { // CHECK:STDOUT: } { // CHECK:STDOUT: %b.param: bool = value_param call_param0 // CHECK:STDOUT: %.loc4_30.1: type = splice_block %.loc4_30.3 [concrete = bool] { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc4_30.2: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc4_30.3: type = converted %bool.make_type, %.loc4_30.2 [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc4_30.2: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc4_30.3: type = converted %Bool.call, %.loc4_30.2 [concrete = bool] // CHECK:STDOUT: } // CHECK:STDOUT: %b: bool = bind_name b, %b.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/if_expr/nested.carbon b/toolchain/check/testdata/if_expr/nested.carbon index 29c886109d65..f76b74883c1a 100644 --- a/toolchain/check/testdata/if_expr/nested.carbon +++ b/toolchain/check/testdata/if_expr/nested.carbon @@ -33,30 +33,30 @@ fn F(a: bool, b: bool, c: bool) -> i32 { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [concrete] -// CHECK:STDOUT: %Convert.bound.b30: = bound_method %int_3.1ba, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.047: = bound_method %int_3.1ba, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.b30: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.047: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_3.822: %i32 = int_value 3 [concrete] // CHECK:STDOUT: %int_4.0c1: Core.IntLiteral = int_value 4 [concrete] -// CHECK:STDOUT: %Convert.bound.ac3: = bound_method %int_4.0c1, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.1da: = bound_method %int_4.0c1, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ac3: = bound_method %int_4.0c1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.1da: = bound_method %int_4.0c1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_4.940: %i32 = int_value 4 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -71,8 +71,8 @@ fn F(a: bool, b: bool, c: bool) -> i32 { // CHECK:STDOUT: %Core.Bool: %Bool.type = import_ref Core//prelude/parts/bool, Bool, loaded [concrete = constants.%Bool] // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -95,23 +95,23 @@ fn F(a: bool, b: bool, c: bool) -> i32 { // CHECK:STDOUT: %i32.loc15: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %a.param: bool = value_param call_param0 // CHECK:STDOUT: %.loc15_9.1: type = splice_block %.loc15_9.3 [concrete = bool] { -// CHECK:STDOUT: %bool.make_type.loc15_9: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc15_9.2: type = value_of_initializer %bool.make_type.loc15_9 [concrete = bool] -// CHECK:STDOUT: %.loc15_9.3: type = converted %bool.make_type.loc15_9, %.loc15_9.2 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc15_9: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc15_9.2: type = value_of_initializer %Bool.call.loc15_9 [concrete = bool] +// CHECK:STDOUT: %.loc15_9.3: type = converted %Bool.call.loc15_9, %.loc15_9.2 [concrete = bool] // CHECK:STDOUT: } // CHECK:STDOUT: %a: bool = bind_name a, %a.param // CHECK:STDOUT: %b.param: bool = value_param call_param1 // CHECK:STDOUT: %.loc15_18.1: type = splice_block %.loc15_18.3 [concrete = bool] { -// CHECK:STDOUT: %bool.make_type.loc15_18: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc15_18.2: type = value_of_initializer %bool.make_type.loc15_18 [concrete = bool] -// CHECK:STDOUT: %.loc15_18.3: type = converted %bool.make_type.loc15_18, %.loc15_18.2 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc15_18: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc15_18.2: type = value_of_initializer %Bool.call.loc15_18 [concrete = bool] +// CHECK:STDOUT: %.loc15_18.3: type = converted %Bool.call.loc15_18, %.loc15_18.2 [concrete = bool] // CHECK:STDOUT: } // CHECK:STDOUT: %b: bool = bind_name b, %b.param // CHECK:STDOUT: %c.param: bool = value_param call_param2 // CHECK:STDOUT: %.loc15_27.1: type = splice_block %.loc15_27.3 [concrete = bool] { -// CHECK:STDOUT: %bool.make_type.loc15_27: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc15_27.2: type = value_of_initializer %bool.make_type.loc15_27 [concrete = bool] -// CHECK:STDOUT: %.loc15_27.3: type = converted %bool.make_type.loc15_27, %.loc15_27.2 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc15_27: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc15_27.2: type = value_of_initializer %Bool.call.loc15_27 [concrete = bool] +// CHECK:STDOUT: %.loc15_27.3: type = converted %Bool.call.loc15_27, %.loc15_27.2 [concrete = bool] // CHECK:STDOUT: } // CHECK:STDOUT: %c: bool = bind_name c, %c.param // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param3 @@ -132,23 +132,23 @@ fn F(a: bool, b: bool, c: bool) -> i32 { // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_32.loc16_25: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc16_25: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc16_25: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc16_25.1: = bound_method %int_1, %impl.elem0.loc16_25 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc16_25: = specific_function %impl.elem0.loc16_25, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc16_25: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc16_25.1: = bound_method %int_1, %impl.elem0.loc16_25 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc16_25: = specific_function %impl.elem0.loc16_25, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc16_25.2: = bound_method %int_1, %specific_fn.loc16_25 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc16_25: init %i32 = call %bound_method.loc16_25.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc16_25.1: %i32 = value_of_initializer %int.convert_checked.loc16_25 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc16_25: init %i32 = call %bound_method.loc16_25.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc16_25.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc16_25 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc16_25.2: %i32 = converted %int_1, %.loc16_25.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: br !if.expr.result.loc16_20(%.loc16_25.2) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.else.loc16_20: // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %impl.elem0.loc16_32: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc16_32.1: = bound_method %int_2, %impl.elem0.loc16_32 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc16_32: = specific_function %impl.elem0.loc16_32, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc16_32: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc16_32.1: = bound_method %int_2, %impl.elem0.loc16_32 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc16_32: = specific_function %impl.elem0.loc16_32, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc16_32.2: = bound_method %int_2, %specific_fn.loc16_32 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc16_32: init %i32 = call %bound_method.loc16_32.2(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc16_32.1: %i32 = value_of_initializer %int.convert_checked.loc16_32 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc16_32: init %i32 = call %bound_method.loc16_32.2(%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc16_32.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc16_32 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc16_32.2: %i32 = converted %int_2, %.loc16_32.1 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: br !if.expr.result.loc16_20(%.loc16_32.2) // CHECK:STDOUT: @@ -164,23 +164,23 @@ fn F(a: bool, b: bool, c: bool) -> i32 { // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] // CHECK:STDOUT: %int_32.loc16_49: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc16_49: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc16_49: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc16_49.1: = bound_method %int_3, %impl.elem0.loc16_49 [concrete = constants.%Convert.bound.b30] -// CHECK:STDOUT: %specific_fn.loc16_49: = specific_function %impl.elem0.loc16_49, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc16_49: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc16_49.1: = bound_method %int_3, %impl.elem0.loc16_49 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.b30] +// CHECK:STDOUT: %specific_fn.loc16_49: = specific_function %impl.elem0.loc16_49, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc16_49.2: = bound_method %int_3, %specific_fn.loc16_49 [concrete = constants.%bound_method.047] -// CHECK:STDOUT: %int.convert_checked.loc16_49: init %i32 = call %bound_method.loc16_49.2(%int_3) [concrete = constants.%int_3.822] -// CHECK:STDOUT: %.loc16_49.1: %i32 = value_of_initializer %int.convert_checked.loc16_49 [concrete = constants.%int_3.822] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc16_49: init %i32 = call %bound_method.loc16_49.2(%int_3) [concrete = constants.%int_3.822] +// CHECK:STDOUT: %.loc16_49.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc16_49 [concrete = constants.%int_3.822] // CHECK:STDOUT: %.loc16_49.2: %i32 = converted %int_3, %.loc16_49.1 [concrete = constants.%int_3.822] // CHECK:STDOUT: br !if.expr.result.loc16_44(%.loc16_49.2) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.else.loc16_44: // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete = constants.%int_4.0c1] -// CHECK:STDOUT: %impl.elem0.loc16_56: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc16_56.1: = bound_method %int_4, %impl.elem0.loc16_56 [concrete = constants.%Convert.bound.ac3] -// CHECK:STDOUT: %specific_fn.loc16_56: = specific_function %impl.elem0.loc16_56, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc16_56: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc16_56.1: = bound_method %int_4, %impl.elem0.loc16_56 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ac3] +// CHECK:STDOUT: %specific_fn.loc16_56: = specific_function %impl.elem0.loc16_56, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc16_56.2: = bound_method %int_4, %specific_fn.loc16_56 [concrete = constants.%bound_method.1da] -// CHECK:STDOUT: %int.convert_checked.loc16_56: init %i32 = call %bound_method.loc16_56.2(%int_4) [concrete = constants.%int_4.940] -// CHECK:STDOUT: %.loc16_56.1: %i32 = value_of_initializer %int.convert_checked.loc16_56 [concrete = constants.%int_4.940] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc16_56: init %i32 = call %bound_method.loc16_56.2(%int_4) [concrete = constants.%int_4.940] +// CHECK:STDOUT: %.loc16_56.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc16_56 [concrete = constants.%int_4.940] // CHECK:STDOUT: %.loc16_56.2: %i32 = converted %int_4, %.loc16_56.1 [concrete = constants.%int_4.940] // CHECK:STDOUT: br !if.expr.result.loc16_44(%.loc16_56.2) // CHECK:STDOUT: diff --git a/toolchain/check/testdata/if_expr/struct.carbon b/toolchain/check/testdata/if_expr/struct.carbon index 78d2c2a125df..56db5e3fa075 100644 --- a/toolchain/check/testdata/if_expr/struct.carbon +++ b/toolchain/check/testdata/if_expr/struct.carbon @@ -43,27 +43,27 @@ fn F(cond: bool) { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %struct: %struct_type.a.b.501 = struct_value (%int_1.5d2, %int_2.ef8) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.da3: type = fn_type @Op.1, @Destroy.impl(%struct_type.a.b.501) [concrete] -// CHECK:STDOUT: %Op.9db: %Op.type.da3 = struct_value () [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.9db, @Op.1(%struct_type.a.b.501) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.da3: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%struct_type.a.b.501) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.9db: %T.as.Destroy.impl.Op.type.da3 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.9db, @T.as.Destroy.impl.Op(%struct_type.a.b.501) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -78,8 +78,8 @@ fn F(cond: bool) { // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.Bool: %Bool.type = import_ref Core//prelude/parts/bool, Bool, loaded [concrete = constants.%Bool] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -110,9 +110,9 @@ fn F(cond: bool) { // CHECK:STDOUT: } { // CHECK:STDOUT: %cond.param: bool = value_param call_param0 // CHECK:STDOUT: %.loc17_12.1: type = splice_block %.loc17_12.3 [concrete = bool] { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc17_12.2: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc17_12.3: type = converted %bool.make_type, %.loc17_12.2 [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc17_12.2: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc17_12.3: type = converted %Bool.call, %.loc17_12.2 [concrete = bool] // CHECK:STDOUT: } // CHECK:STDOUT: %cond: bool = bind_name cond, %cond.param // CHECK:STDOUT: } @@ -130,20 +130,20 @@ fn F(cond: bool) { // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %.loc18_46.1: %struct_type.a.b.cfd = struct_literal (%int_1, %int_2) -// CHECK:STDOUT: %impl.elem0.loc18_46.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc18_46.1: = bound_method %int_1, %impl.elem0.loc18_46.1 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc18_46.1: = specific_function %impl.elem0.loc18_46.1, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc18_46.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc18_46.1: = bound_method %int_1, %impl.elem0.loc18_46.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc18_46.1: = specific_function %impl.elem0.loc18_46.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc18_46.2: = bound_method %int_1, %specific_fn.loc18_46.1 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc18_46.1: init %i32 = call %bound_method.loc18_46.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc18_46.2: init %i32 = converted %int_1, %int.convert_checked.loc18_46.1 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc18_46.1: init %i32 = call %bound_method.loc18_46.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc18_46.2: init %i32 = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc18_46.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc18_46.3: ref %i32 = struct_access %a.var, element0 // CHECK:STDOUT: %.loc18_46.4: init %i32 = initialize_from %.loc18_46.2 to %.loc18_46.3 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %impl.elem0.loc18_46.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc18_46.3: = bound_method %int_2, %impl.elem0.loc18_46.2 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc18_46.2: = specific_function %impl.elem0.loc18_46.2, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc18_46.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc18_46.3: = bound_method %int_2, %impl.elem0.loc18_46.2 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc18_46.2: = specific_function %impl.elem0.loc18_46.2, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc18_46.4: = bound_method %int_2, %specific_fn.loc18_46.2 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc18_46.2: init %i32 = call %bound_method.loc18_46.4(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc18_46.5: init %i32 = converted %int_2, %int.convert_checked.loc18_46.2 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc18_46.2: init %i32 = call %bound_method.loc18_46.4(%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc18_46.5: init %i32 = converted %int_2, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc18_46.2 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc18_46.6: ref %i32 = struct_access %a.var, element1 // CHECK:STDOUT: %.loc18_46.7: init %i32 = initialize_from %.loc18_46.5 to %.loc18_46.6 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc18_46.8: init %struct_type.a.b.501 = struct_init (%.loc18_46.4, %.loc18_46.7) to %a.var [concrete = constants.%struct] @@ -184,11 +184,11 @@ fn F(cond: bool) { // CHECK:STDOUT: !if.expr.result: // CHECK:STDOUT: %.loc19_5: %struct_type.a.b.501 = block_arg !if.expr.result // CHECK:STDOUT: %G.call: init %empty_tuple.type = call %G.ref(%.loc19_5) -// CHECK:STDOUT: %Op.bound: = bound_method %a.var, constants.%Op.9db -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.9db, @Op.1(constants.%struct_type.a.b.501) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc18_3: = bound_method %a.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %a.var, constants.%T.as.Destroy.impl.Op.9db +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.9db, @T.as.Destroy.impl.Op(constants.%struct_type.a.b.501) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc18_3: = bound_method %a.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.3ee = addr_of %a.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc18_3(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc18_3(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/assoc_const_self.carbon b/toolchain/check/testdata/impl/assoc_const_self.carbon index 8f4c20d97531..ffd61ebde857 100644 --- a/toolchain/check/testdata/impl/assoc_const_self.carbon +++ b/toolchain/check/testdata/impl/assoc_const_self.carbon @@ -134,18 +134,18 @@ fn CallF() { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -158,8 +158,8 @@ fn CallF() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -169,7 +169,7 @@ fn CallF() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} -// CHECK:STDOUT: impl_decl @I.impl.983 [concrete] {} { +// CHECK:STDOUT: impl_decl @empty_struct_type.as.I.impl [concrete] {} { // CHECK:STDOUT: %.loc8_7.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc8_7.2: type = converted %.loc8_7.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] @@ -186,10 +186,10 @@ fn CallF() { // CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc8_26.2 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table.loc8 = impl_witness_table (%impl_witness_assoc_constant.loc8), @I.impl.983 [concrete] +// CHECK:STDOUT: %I.impl_witness_table.loc8 = impl_witness_table (%impl_witness_assoc_constant.loc8), @empty_struct_type.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness.loc8: = impl_witness %I.impl_witness_table.loc8 [concrete = constants.%I.impl_witness.3d1] // CHECK:STDOUT: %impl_witness_assoc_constant.loc8: %empty_struct_type = impl_witness_assoc_constant constants.%empty_struct [concrete = constants.%empty_struct] -// CHECK:STDOUT: impl_decl @I.impl.728 [concrete] {} { +// CHECK:STDOUT: impl_decl @i32.as.I.impl [concrete] {} { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] @@ -204,14 +204,14 @@ fn CallF() { // CHECK:STDOUT: requirement_rewrite %impl.elem0, %int_0 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table.loc10 = impl_witness_table (%impl_witness_assoc_constant.loc10), @I.impl.728 [concrete] +// CHECK:STDOUT: %I.impl_witness_table.loc10 = impl_witness_table (%impl_witness_assoc_constant.loc10), @i32.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness.loc10: = impl_witness %I.impl_witness_table.loc10 [concrete = constants.%I.impl_witness.5ef] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc10_15.1: = bound_method constants.%int_0.5c6, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc10_15.1: = bound_method constants.%int_0.5c6, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc10_15.2: = bound_method constants.%int_0.5c6, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc10_15.2(constants.%int_0.5c6) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc10_15.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc10_15.2(constants.%int_0.5c6) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc10_15.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc10_15.2: %i32 = converted constants.%int_0.5c6, %.loc10_15.1 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %impl_witness_assoc_constant.loc10: %i32 = impl_witness_assoc_constant constants.%int_0.6a9 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: } @@ -236,12 +236,12 @@ fn CallF() { // CHECK:STDOUT: assoc_const V:! @V.%Self.as_type (%Self.as_type.b70); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl.983: %.loc8_7.2 as %.loc8_14 { +// CHECK:STDOUT: impl @empty_struct_type.as.I.impl: %.loc8_7.2 as %.loc8_14 { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%I.impl_witness.loc8 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl.728: %i32 as %.loc10_15 { +// CHECK:STDOUT: impl @i32.as.I.impl: %i32 as %.loc10_15 { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%I.impl_witness.loc10 // CHECK:STDOUT: } @@ -311,7 +311,7 @@ fn CallF() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @empty_struct_type.as.I.impl [concrete] {} { // CHECK:STDOUT: %.loc15_7.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc15_7.2: type = converted %.loc15_7.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] @@ -326,7 +326,7 @@ fn CallF() { // CHECK:STDOUT: requirement_rewrite %impl.elem0, %int_0 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @I.impl [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @empty_struct_type.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness] // CHECK:STDOUT: %.loc15: %empty_struct_type = converted constants.%int_0, [concrete = ] // CHECK:STDOUT: %impl_witness_assoc_constant: = impl_witness_assoc_constant [concrete = ] @@ -352,7 +352,7 @@ fn CallF() { // CHECK:STDOUT: assoc_const V:! @V.%Self.as_type (%Self.as_type.b70); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: %.loc15_7.2 as %.loc15_14 { +// CHECK:STDOUT: impl @empty_struct_type.as.I.impl: %.loc15_7.2 as %.loc15_14 { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%I.impl_witness // CHECK:STDOUT: } @@ -391,12 +391,12 @@ fn CallF() { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.15e: type = facet_type <@ImplicitAs, @ImplicitAs(%C)> [concrete] -// CHECK:STDOUT: %Convert.type.56d: type = fn_type @Convert.1, @ImplicitAs(%C) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.56d: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%C) [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness: = impl_witness file.%ImplicitAs.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] -// CHECK:STDOUT: %Convert.type.721: type = fn_type @Convert.loc11 [concrete] -// CHECK:STDOUT: %Convert.155: %Convert.type.721 = struct_value () [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.ImplicitAs.impl.Convert.type: type = fn_type @empty_tuple.type.as.ImplicitAs.impl.Convert [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.ImplicitAs.impl.Convert: %empty_tuple.type.as.ImplicitAs.impl.Convert.type = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.15e = facet_value %empty_tuple.type, (%ImplicitAs.impl_witness) [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %.Self: %I.type = bind_symbolic_name .Self [symbolic_self] @@ -409,8 +409,8 @@ fn CallF() { // CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0 = %empty_tuple> [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table [concrete] // CHECK:STDOUT: %I.facet.5dc: %I.type = facet_value %C, (%I.impl_witness) [concrete] -// CHECK:STDOUT: %.5c3: type = fn_type_with_self_type %Convert.type.56d, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %empty_tuple, %Convert.155 [concrete] +// CHECK:STDOUT: %.5c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.56d, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.ImplicitAs.impl.Convert.bound: = bound_method %empty_tuple, %empty_tuple.type.as.ImplicitAs.impl.Convert [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -431,7 +431,7 @@ fn CallF() { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} -// CHECK:STDOUT: impl_decl @ImplicitAs.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @empty_tuple.type.as.ImplicitAs.impl [concrete] {} { // CHECK:STDOUT: %.loc10_7.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc10_7.2: type = converted %.loc10_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] @@ -439,9 +439,9 @@ fn CallF() { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%C)> [concrete = constants.%ImplicitAs.type.15e] // CHECK:STDOUT: } -// CHECK:STDOUT: %ImplicitAs.impl_witness_table = impl_witness_table (@ImplicitAs.impl.%Convert.decl), @ImplicitAs.impl [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table = impl_witness_table (@empty_tuple.type.as.ImplicitAs.impl.%empty_tuple.type.as.ImplicitAs.impl.Convert.decl), @empty_tuple.type.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness: = impl_witness %ImplicitAs.impl_witness_table [concrete = constants.%ImplicitAs.impl_witness] -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.I.impl [concrete] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: %.Self: %I.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] @@ -457,13 +457,13 @@ fn CallF() { // CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc18_25.2 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @I.impl [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @C.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness] -// CHECK:STDOUT: %impl.elem0: %.5c3 = impl_witness_access constants.%ImplicitAs.impl_witness, element0 [concrete = constants.%Convert.155] -// CHECK:STDOUT: %bound_method: = bound_method constants.%empty_tuple, %impl.elem0 [concrete = constants.%Convert.bound] +// CHECK:STDOUT: %impl.elem0: %.5c3 = impl_witness_access constants.%ImplicitAs.impl_witness, element0 [concrete = constants.%empty_tuple.type.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %bound_method: = bound_method constants.%empty_tuple, %impl.elem0 [concrete = constants.%empty_tuple.type.as.ImplicitAs.impl.Convert.bound] // CHECK:STDOUT: %.loc18_13.1: ref %C = temporary_storage -// CHECK:STDOUT: %Convert.call: init %C = call %bound_method(constants.%empty_tuple) to %.loc18_13.1 -// CHECK:STDOUT: %.loc18_13.2: init %C = converted constants.%empty_tuple, %Convert.call +// CHECK:STDOUT: %empty_tuple.type.as.ImplicitAs.impl.Convert.call: init %C = call %bound_method(constants.%empty_tuple) to %.loc18_13.1 +// CHECK:STDOUT: %.loc18_13.2: init %C = converted constants.%empty_tuple, %empty_tuple.type.as.ImplicitAs.impl.Convert.call // CHECK:STDOUT: %.loc18_13.3: ref %C = temporary %.loc18_13.1, %.loc18_13.2 // CHECK:STDOUT: %.loc18_13.4: %C = bind_value %.loc18_13.3 // CHECK:STDOUT: %impl_witness_assoc_constant: = impl_witness_assoc_constant [concrete = ] @@ -489,8 +489,8 @@ fn CallF() { // CHECK:STDOUT: assoc_const V:! @V.%Self.as_type (%Self.as_type.b70); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @ImplicitAs.impl: %.loc10_7.2 as %ImplicitAs.type { -// CHECK:STDOUT: %Convert.decl: %Convert.type.721 = fn_decl @Convert.loc11 [concrete = constants.%Convert.155] { +// CHECK:STDOUT: impl @empty_tuple.type.as.ImplicitAs.impl: %.loc10_7.2 as %ImplicitAs.type { +// CHECK:STDOUT: %empty_tuple.type.as.ImplicitAs.impl.Convert.decl: %empty_tuple.type.as.ImplicitAs.impl.Convert.type = fn_decl @empty_tuple.type.as.ImplicitAs.impl.Convert [concrete = constants.%empty_tuple.type.as.ImplicitAs.impl.Convert] { // CHECK:STDOUT: %self.patt: %pattern_type.cb1 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.cb1 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.c48 = return_slot_pattern [concrete] @@ -509,11 +509,11 @@ fn CallF() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .C = -// CHECK:STDOUT: .Convert = %Convert.decl +// CHECK:STDOUT: .Convert = %empty_tuple.type.as.ImplicitAs.impl.Convert.decl // CHECK:STDOUT: witness = file.%ImplicitAs.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: %C.ref as %.loc18_13 { +// CHECK:STDOUT: impl @C.as.I.impl: %C.ref as %.loc18_13 { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%I.impl_witness // CHECK:STDOUT: } @@ -527,7 +527,7 @@ fn CallF() { // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert.loc11(%self.param: %empty_tuple.type) -> %return.param: %C { +// CHECK:STDOUT: fn @empty_tuple.type.as.ImplicitAs.impl.Convert(%self.param: %empty_tuple.type) -> %return.param: %C { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %.loc11_41.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc11_41.2: init %C = class_init (), %return [concrete = constants.%C.val] @@ -573,13 +573,13 @@ fn CallF() { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %Negate.type: type = facet_type <@Negate> [concrete] -// CHECK:STDOUT: %Op.type.e42: type = fn_type @Op.1 [concrete] +// CHECK:STDOUT: %Negate.Op.type: type = fn_type @Negate.Op [concrete] // CHECK:STDOUT: %Negate.impl_witness: = impl_witness imports.%Negate.impl_witness_table [concrete] // CHECK:STDOUT: %Negate.facet: %Negate.type = facet_value Core.IntLiteral, (%Negate.impl_witness) [concrete] -// CHECK:STDOUT: %.d3d: type = fn_type_with_self_type %Op.type.e42, %Negate.facet [concrete] -// CHECK:STDOUT: %Op.type.18a: type = fn_type @Op.2 [concrete] -// CHECK:STDOUT: %Op.99f: %Op.type.18a = struct_value () [concrete] -// CHECK:STDOUT: %Op.bound: = bound_method %int_1, %Op.99f [concrete] +// CHECK:STDOUT: %.d3d: type = fn_type_with_self_type %Negate.Op.type, %Negate.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.type: type = fn_type @Core.IntLiteral.as.Negate.impl.Op [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op: %Core.IntLiteral.as.Negate.impl.Op.type = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.bound: = bound_method %int_1, %Core.IntLiteral.as.Negate.impl.Op [concrete] // CHECK:STDOUT: %int_-1: Core.IntLiteral = int_value -1 [concrete] // CHECK:STDOUT: %I.type.057: type = facet_type <@I, @I(%int_-1)> [concrete] // CHECK:STDOUT: %.Self.e4b: %I.type.057 = bind_symbolic_name .Self [symbolic_self] @@ -601,8 +601,8 @@ fn CallF() { // CHECK:STDOUT: %Core.IntLiteral: %IntLiteral.type = import_ref Core//prelude/parts/int_literal, IntLiteral, loaded [concrete = constants.%IntLiteral] // CHECK:STDOUT: %Core.Negate: type = import_ref Core//prelude/parts/int_literal, Negate, loaded [concrete = constants.%Negate.type] // CHECK:STDOUT: %Core.import_ref.abd = import_ref Core//prelude/parts/int_literal, loc13_50, unloaded -// CHECK:STDOUT: %Core.import_ref.5e6: %Op.type.18a = import_ref Core//prelude/parts/int_literal, loc14_31, loaded [concrete = constants.%Op.99f] -// CHECK:STDOUT: %Negate.impl_witness_table = impl_witness_table (%Core.import_ref.abd, %Core.import_ref.5e6), @Negate.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.5e6: %Core.IntLiteral.as.Negate.impl.Op.type = import_ref Core//prelude/parts/int_literal, loc14_31, loaded [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op] +// CHECK:STDOUT: %Negate.impl_witness_table = impl_witness_table (%Core.import_ref.abd, %Core.import_ref.5e6), @Core.IntLiteral.as.Negate.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -617,22 +617,22 @@ fn CallF() { // CHECK:STDOUT: %.loc4_33.1: type = splice_block %.loc4_33.3 [concrete = Core.IntLiteral] { // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, imports.%Core.IntLiteral [concrete = constants.%IntLiteral] -// CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc4_33.2: type = value_of_initializer %int_literal.make_type [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc4_33.3: type = converted %int_literal.make_type, %.loc4_33.2 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %IntLiteral.call: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc4_33.2: type = value_of_initializer %IntLiteral.call [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc4_33.3: type = converted %IntLiteral.call, %.loc4_33.2 [concrete = Core.IntLiteral] // CHECK:STDOUT: } // CHECK:STDOUT: %N.loc4_13.2: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N.loc4_13.1 (constants.%N)] // CHECK:STDOUT: } -// CHECK:STDOUT: impl_decl @impl [concrete] {} { +// CHECK:STDOUT: impl_decl @empty_struct_type.as..impl [concrete] {} { // CHECK:STDOUT: %.loc15_7.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc15_7.2: type = converted %.loc15_7.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, file.%I.decl [concrete = constants.%I.generic] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1] -// CHECK:STDOUT: %impl.elem1: %.d3d = impl_witness_access constants.%Negate.impl_witness, element1 [concrete = constants.%Op.99f] -// CHECK:STDOUT: %bound_method: = bound_method %int_1, %impl.elem1 [concrete = constants.%Op.bound] -// CHECK:STDOUT: %int.snegate: init Core.IntLiteral = call %bound_method(%int_1) [concrete = constants.%int_-1] -// CHECK:STDOUT: %.loc15_16.1: Core.IntLiteral = value_of_initializer %int.snegate [concrete = constants.%int_-1] -// CHECK:STDOUT: %.loc15_16.2: Core.IntLiteral = converted %int.snegate, %.loc15_16.1 [concrete = constants.%int_-1] +// CHECK:STDOUT: %impl.elem1: %.d3d = impl_witness_access constants.%Negate.impl_witness, element1 [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op] +// CHECK:STDOUT: %bound_method: = bound_method %int_1, %impl.elem1 [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op.bound] +// CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.call: init Core.IntLiteral = call %bound_method(%int_1) [concrete = constants.%int_-1] +// CHECK:STDOUT: %.loc15_16.1: Core.IntLiteral = value_of_initializer %Core.IntLiteral.as.Negate.impl.Op.call [concrete = constants.%int_-1] +// CHECK:STDOUT: %.loc15_16.2: Core.IntLiteral = converted %Core.IntLiteral.as.Negate.impl.Op.call, %.loc15_16.1 [concrete = constants.%int_-1] // CHECK:STDOUT: %I.type: type = facet_type <@I, @I(constants.%int_-1)> [concrete = constants.%I.type.057] // CHECK:STDOUT: %.Self: %I.type.057 = bind_symbolic_name .Self [symbolic_self = constants.%.Self.e4b] // CHECK:STDOUT: %.Self.ref: %I.type.057 = name_ref .Self, %.Self [symbolic_self = constants.%.Self.e4b] @@ -682,7 +682,7 @@ fn CallF() { // CHECK:STDOUT: assoc_const V:! @V.%array_type (%array_type); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl: %.loc15_7.2 as %.loc15_18 { +// CHECK:STDOUT: impl @empty_struct_type.as..impl: %.loc15_7.2 as %.loc15_18 { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/basic.carbon b/toolchain/check/testdata/impl/basic.carbon index a1fd8fe1a374..9a995b5abed4 100644 --- a/toolchain/check/testdata/impl/basic.carbon +++ b/toolchain/check/testdata/impl/basic.carbon @@ -27,16 +27,16 @@ impl C as Simple { // CHECK:STDOUT: constants { // CHECK:STDOUT: %Simple.type: type = facet_type <@Simple> [concrete] // CHECK:STDOUT: %Self: %Simple.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.e2e: type = fn_type @F.loc16 [concrete] -// CHECK:STDOUT: %F.df8: %F.type.e2e = struct_value () [concrete] +// CHECK:STDOUT: %Simple.F.type: type = fn_type @Simple.F [concrete] +// CHECK:STDOUT: %Simple.F: %Simple.F.type = struct_value () [concrete] // CHECK:STDOUT: %Simple.assoc_type: type = assoc_entity_type @Simple [concrete] -// CHECK:STDOUT: %assoc0: %Simple.assoc_type = assoc_entity element0, @Simple.%F.decl [concrete] +// CHECK:STDOUT: %assoc0: %Simple.assoc_type = assoc_entity element0, @Simple.%Simple.F.decl [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %Simple.impl_witness: = impl_witness file.%Simple.impl_witness_table [concrete] -// CHECK:STDOUT: %F.type.f9e: type = fn_type @F.loc22 [concrete] -// CHECK:STDOUT: %F.f50: %F.type.f9e = struct_value () [concrete] +// CHECK:STDOUT: %C.as.Simple.impl.F.type: type = fn_type @C.as.Simple.impl.F [concrete] +// CHECK:STDOUT: %C.as.Simple.impl.F: %C.as.Simple.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %Simple.facet: %Simple.type = facet_value %C, (%Simple.impl_witness) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -47,30 +47,30 @@ impl C as Simple { // CHECK:STDOUT: } // CHECK:STDOUT: %Simple.decl: type = interface_decl @Simple [concrete = constants.%Simple.type] {} {} // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} -// CHECK:STDOUT: impl_decl @Simple.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.Simple.impl [concrete] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %Simple.ref: type = name_ref Simple, file.%Simple.decl [concrete = constants.%Simple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %Simple.impl_witness_table = impl_witness_table (@Simple.impl.%F.decl), @Simple.impl [concrete] +// CHECK:STDOUT: %Simple.impl_witness_table = impl_witness_table (@C.as.Simple.impl.%C.as.Simple.impl.F.decl), @C.as.Simple.impl [concrete] // CHECK:STDOUT: %Simple.impl_witness: = impl_witness %Simple.impl_witness_table [concrete = constants.%Simple.impl_witness] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Simple { // CHECK:STDOUT: %Self: %Simple.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %F.decl: %F.type.e2e = fn_decl @F.loc16 [concrete = constants.%F.df8] {} {} -// CHECK:STDOUT: %assoc0: %Simple.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %Simple.F.decl: %Simple.F.type = fn_decl @Simple.F [concrete = constants.%Simple.F] {} {} +// CHECK:STDOUT: %assoc0: %Simple.assoc_type = assoc_entity element0, %Simple.F.decl [concrete = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F = %assoc0 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%Simple.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Simple.impl: %C.ref as %Simple.ref { -// CHECK:STDOUT: %F.decl: %F.type.f9e = fn_decl @F.loc22 [concrete = constants.%F.f50] {} {} +// CHECK:STDOUT: impl @C.as.Simple.impl: %C.ref as %Simple.ref { +// CHECK:STDOUT: %C.as.Simple.impl.F.decl: %C.as.Simple.impl.F.type = fn_decl @C.as.Simple.impl.F [concrete = constants.%C.as.Simple.impl.F] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %C.as.Simple.impl.F.decl // CHECK:STDOUT: witness = file.%Simple.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: @@ -83,16 +83,16 @@ impl C as Simple { // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc16(@Simple.%Self: %Simple.type) { +// CHECK:STDOUT: generic fn @Simple.F(@Simple.%Self: %Simple.type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc22() { +// CHECK:STDOUT: fn @C.as.Simple.impl.F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc16(constants.%Self) {} +// CHECK:STDOUT: specific @Simple.F(constants.%Self) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc16(constants.%Simple.facet) {} +// CHECK:STDOUT: specific @Simple.F(constants.%Simple.facet) {} // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/compound.carbon b/toolchain/check/testdata/impl/compound.carbon index 3b7d74600d6c..ba6fd564d2d1 100644 --- a/toolchain/check/testdata/impl/compound.carbon +++ b/toolchain/check/testdata/impl/compound.carbon @@ -132,10 +132,10 @@ fn InstanceCallFail() { // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic] // CHECK:STDOUT: %pattern_type.a93: type = pattern_type %Self.as_type [symbolic] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %Dest [symbolic] -// CHECK:STDOUT: %Convert.type: type = fn_type @Convert, @ImplicitAs(%Dest) [symbolic] -// CHECK:STDOUT: %Convert: %Convert.type = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.Convert.type: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%Dest) [symbolic] +// CHECK:STDOUT: %ImplicitAs.Convert: %ImplicitAs.Convert.type = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.assoc_type: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%Dest) [symbolic] -// CHECK:STDOUT: %assoc0: %ImplicitAs.assoc_type = assoc_entity element0, @ImplicitAs.%Convert.decl [symbolic] +// CHECK:STDOUT: %assoc0: %ImplicitAs.assoc_type = assoc_entity element0, @ImplicitAs.%ImplicitAs.Convert.decl [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -155,61 +155,61 @@ fn InstanceCallFail() { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%Dest.loc3_22.1)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.07f)] // CHECK:STDOUT: %Self.2: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.07f) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] -// CHECK:STDOUT: %Convert.type: type = fn_type @Convert, @ImplicitAs(%Dest.loc3_22.1) [symbolic = %Convert.type (constants.%Convert.type)] -// CHECK:STDOUT: %Convert: @ImplicitAs.%Convert.type (%Convert.type) = struct_value () [symbolic = %Convert (constants.%Convert)] +// CHECK:STDOUT: %ImplicitAs.Convert.type: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%Dest.loc3_22.1) [symbolic = %ImplicitAs.Convert.type (constants.%ImplicitAs.Convert.type)] +// CHECK:STDOUT: %ImplicitAs.Convert: @ImplicitAs.%ImplicitAs.Convert.type (%ImplicitAs.Convert.type) = struct_value () [symbolic = %ImplicitAs.Convert (constants.%ImplicitAs.Convert)] // CHECK:STDOUT: %ImplicitAs.assoc_type: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%Dest.loc3_22.1) [symbolic = %ImplicitAs.assoc_type (constants.%ImplicitAs.assoc_type)] -// CHECK:STDOUT: %assoc0.loc4_35.2: @ImplicitAs.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type) = assoc_entity element0, %Convert.decl [symbolic = %assoc0.loc4_35.2 (constants.%assoc0)] +// CHECK:STDOUT: %assoc0.loc4_35.2: @ImplicitAs.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type) = assoc_entity element0, %ImplicitAs.Convert.decl [symbolic = %assoc0.loc4_35.2 (constants.%assoc0)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: %Self.1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.07f) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] -// CHECK:STDOUT: %Convert.decl: @ImplicitAs.%Convert.type (%Convert.type) = fn_decl @Convert [symbolic = @ImplicitAs.%Convert (constants.%Convert)] { -// CHECK:STDOUT: %self.patt: @Convert.%pattern_type.loc4_14 (%pattern_type.a93) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @Convert.%pattern_type.loc4_14 (%pattern_type.a93) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: @Convert.%pattern_type.loc4_28 (%pattern_type.7dc) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @Convert.%pattern_type.loc4_28 (%pattern_type.7dc) = out_param_pattern %return.patt, call_param1 [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.decl: @ImplicitAs.%ImplicitAs.Convert.type (%ImplicitAs.Convert.type) = fn_decl @ImplicitAs.Convert [symbolic = @ImplicitAs.%ImplicitAs.Convert (constants.%ImplicitAs.Convert)] { +// CHECK:STDOUT: %self.patt: @ImplicitAs.Convert.%pattern_type.loc4_14 (%pattern_type.a93) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @ImplicitAs.Convert.%pattern_type.loc4_14 (%pattern_type.a93) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %return.patt: @ImplicitAs.Convert.%pattern_type.loc4_28 (%pattern_type.7dc) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @ImplicitAs.Convert.%pattern_type.loc4_28 (%pattern_type.7dc) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Dest.ref: type = name_ref Dest, @ImplicitAs.%Dest.loc3_22.2 [symbolic = %Dest (constants.%Dest)] -// CHECK:STDOUT: %self.param: @Convert.%Self.as_type.loc4_20.2 (%Self.as_type) = value_param call_param0 -// CHECK:STDOUT: %.loc4_20.1: type = splice_block %.loc4_20.3 [symbolic = %Self.as_type.loc4_20.2 (constants.%Self.as_type)] { -// CHECK:STDOUT: %.loc4_20.2: @Convert.%ImplicitAs.type (%ImplicitAs.type.07f) = specific_constant @ImplicitAs.%Self.1, @ImplicitAs(constants.%Dest) [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.ref: @Convert.%ImplicitAs.type (%ImplicitAs.type.07f) = name_ref Self, %.loc4_20.2 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc4_20.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc4_20.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc4_20.3: type = converted %Self.ref, %Self.as_type.loc4_20.1 [symbolic = %Self.as_type.loc4_20.2 (constants.%Self.as_type)] +// CHECK:STDOUT: %self.param: @ImplicitAs.Convert.%Self.as_type.loc4_20.1 (%Self.as_type) = value_param call_param0 +// CHECK:STDOUT: %.loc4_20.1: type = splice_block %.loc4_20.3 [symbolic = %Self.as_type.loc4_20.1 (constants.%Self.as_type)] { +// CHECK:STDOUT: %.loc4_20.2: @ImplicitAs.Convert.%ImplicitAs.type (%ImplicitAs.type.07f) = specific_constant @ImplicitAs.%Self.1, @ImplicitAs(constants.%Dest) [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %Self.ref: @ImplicitAs.Convert.%ImplicitAs.type (%ImplicitAs.type.07f) = name_ref Self, %.loc4_20.2 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %Self.as_type.loc4_20.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc4_20.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc4_20.3: type = converted %Self.ref, %Self.as_type.loc4_20.2 [symbolic = %Self.as_type.loc4_20.1 (constants.%Self.as_type)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @Convert.%Self.as_type.loc4_20.2 (%Self.as_type) = bind_name self, %self.param -// CHECK:STDOUT: %return.param: ref @Convert.%Dest (%Dest) = out_param call_param1 -// CHECK:STDOUT: %return: ref @Convert.%Dest (%Dest) = return_slot %return.param +// CHECK:STDOUT: %self: @ImplicitAs.Convert.%Self.as_type.loc4_20.1 (%Self.as_type) = bind_name self, %self.param +// CHECK:STDOUT: %return.param: ref @ImplicitAs.Convert.%Dest (%Dest) = out_param call_param1 +// CHECK:STDOUT: %return: ref @ImplicitAs.Convert.%Dest (%Dest) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0.loc4_35.1: @ImplicitAs.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type) = assoc_entity element0, %Convert.decl [symbolic = %assoc0.loc4_35.2 (constants.%assoc0)] +// CHECK:STDOUT: %assoc0.loc4_35.1: @ImplicitAs.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type) = assoc_entity element0, %ImplicitAs.Convert.decl [symbolic = %assoc0.loc4_35.2 (constants.%assoc0)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 // CHECK:STDOUT: .Dest = // CHECK:STDOUT: .Convert = %assoc0.loc4_35.1 -// CHECK:STDOUT: witness = (%Convert.decl) +// CHECK:STDOUT: witness = (%ImplicitAs.Convert.decl) // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Convert(@ImplicitAs.%Dest.loc3_22.2: type, @ImplicitAs.%Self.1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.07f)) { +// CHECK:STDOUT: generic fn @ImplicitAs.Convert(@ImplicitAs.%Dest.loc3_22.2: type, @ImplicitAs.%Self.1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.07f)) { // CHECK:STDOUT: %Dest: type = bind_symbolic_name Dest, 0 [symbolic = %Dest (constants.%Dest)] // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%Dest)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.07f)] -// CHECK:STDOUT: %Self: @Convert.%ImplicitAs.type (%ImplicitAs.type.07f) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc4_20.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc4_20.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %pattern_type.loc4_14: type = pattern_type %Self.as_type.loc4_20.2 [symbolic = %pattern_type.loc4_14 (constants.%pattern_type.a93)] +// CHECK:STDOUT: %Self: @ImplicitAs.Convert.%ImplicitAs.type (%ImplicitAs.type.07f) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %Self.as_type.loc4_20.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc4_20.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %pattern_type.loc4_14: type = pattern_type %Self.as_type.loc4_20.1 [symbolic = %pattern_type.loc4_14 (constants.%pattern_type.a93)] // CHECK:STDOUT: %pattern_type.loc4_28: type = pattern_type %Dest [symbolic = %pattern_type.loc4_28 (constants.%pattern_type.7dc)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @Convert.%Self.as_type.loc4_20.2 (%Self.as_type)) -> @Convert.%Dest (%Dest); +// CHECK:STDOUT: fn(%self.param: @ImplicitAs.Convert.%Self.as_type.loc4_20.1 (%Self.as_type)) -> @ImplicitAs.Convert.%Dest (%Dest); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @ImplicitAs(constants.%Dest) { // CHECK:STDOUT: %Dest.loc3_22.1 => constants.%Dest // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Convert(constants.%Dest, constants.%Self) { +// CHECK:STDOUT: specific @ImplicitAs.Convert(constants.%Dest, constants.%Self) { // CHECK:STDOUT: %Dest => constants.%Dest // CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.07f // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %Self.as_type.loc4_20.2 => constants.%Self.as_type +// CHECK:STDOUT: %Self.as_type.loc4_20.1 => constants.%Self.as_type // CHECK:STDOUT: %pattern_type.loc4_14 => constants.%pattern_type.a93 // CHECK:STDOUT: %pattern_type.loc4_28 => constants.%pattern_type.7dc // CHECK:STDOUT: } @@ -219,19 +219,19 @@ fn InstanceCallFail() { // CHECK:STDOUT: constants { // CHECK:STDOUT: %NonInstance1.type: type = facet_type <@NonInstance1> [concrete] // CHECK:STDOUT: %Self: %NonInstance1.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F1.type.163: type = fn_type @F1.loc4 [concrete] +// CHECK:STDOUT: %NonInstance1.F1.type: type = fn_type @NonInstance1.F1 [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F1.b1f: %F1.type.163 = struct_value () [concrete] +// CHECK:STDOUT: %NonInstance1.F1: %NonInstance1.F1.type = struct_value () [concrete] // CHECK:STDOUT: %NonInstance1.assoc_type: type = assoc_entity_type @NonInstance1 [concrete] -// CHECK:STDOUT: %assoc0: %NonInstance1.assoc_type = assoc_entity element0, @NonInstance1.%F1.decl [concrete] +// CHECK:STDOUT: %assoc0: %NonInstance1.assoc_type = assoc_entity element0, @NonInstance1.%NonInstance1.F1.decl [concrete] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %empty_tuple.type} [concrete] // CHECK:STDOUT: %NonInstance1.impl_witness: = impl_witness file.%NonInstance1.impl_witness_table [concrete] -// CHECK:STDOUT: %F1.type.d4a: type = fn_type @F1.loc8 [concrete] -// CHECK:STDOUT: %F1.c75: %F1.type.d4a = struct_value () [concrete] +// CHECK:STDOUT: %struct_type.a.as.NonInstance1.impl.F1.type: type = fn_type @struct_type.a.as.NonInstance1.impl.F1 [concrete] +// CHECK:STDOUT: %struct_type.a.as.NonInstance1.impl.F1: %struct_type.a.as.NonInstance1.impl.F1.type = struct_value () [concrete] // CHECK:STDOUT: %NonInstance1.facet: %NonInstance1.type = facet_value %struct_type.a, (%NonInstance1.impl_witness) [concrete] // CHECK:STDOUT: %NonInstanceCall1.type: type = fn_type @NonInstanceCall1 [concrete] // CHECK:STDOUT: %NonInstanceCall1: %NonInstanceCall1.type = struct_value () [concrete] -// CHECK:STDOUT: %.a2c: type = fn_type_with_self_type %F1.type.163, %NonInstance1.facet [concrete] +// CHECK:STDOUT: %.a2c: type = fn_type_with_self_type %NonInstance1.F1.type, %NonInstance1.facet [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -240,41 +240,41 @@ fn InstanceCallFail() { // CHECK:STDOUT: .NonInstanceCall1 = %NonInstanceCall1.decl // CHECK:STDOUT: } // CHECK:STDOUT: %NonInstance1.decl: type = interface_decl @NonInstance1 [concrete = constants.%NonInstance1.type] {} {} -// CHECK:STDOUT: impl_decl @NonInstance1.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @struct_type.a.as.NonInstance1.impl [concrete] {} { // CHECK:STDOUT: %.loc7_12.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc7_12.2: type = converted %.loc7_12.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %empty_tuple.type} [concrete = constants.%struct_type.a] // CHECK:STDOUT: %NonInstance1.ref: type = name_ref NonInstance1, file.%NonInstance1.decl [concrete = constants.%NonInstance1.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %NonInstance1.impl_witness_table = impl_witness_table (@NonInstance1.impl.%F1.decl), @NonInstance1.impl [concrete] +// CHECK:STDOUT: %NonInstance1.impl_witness_table = impl_witness_table (@struct_type.a.as.NonInstance1.impl.%struct_type.a.as.NonInstance1.impl.F1.decl), @struct_type.a.as.NonInstance1.impl [concrete] // CHECK:STDOUT: %NonInstance1.impl_witness: = impl_witness %NonInstance1.impl_witness_table [concrete = constants.%NonInstance1.impl_witness] // CHECK:STDOUT: %NonInstanceCall1.decl: %NonInstanceCall1.type = fn_decl @NonInstanceCall1 [concrete = constants.%NonInstanceCall1] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @NonInstance1 { // CHECK:STDOUT: %Self: %NonInstance1.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %F1.decl: %F1.type.163 = fn_decl @F1.loc4 [concrete = constants.%F1.b1f] {} {} -// CHECK:STDOUT: %assoc0: %NonInstance1.assoc_type = assoc_entity element0, %F1.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %NonInstance1.F1.decl: %NonInstance1.F1.type = fn_decl @NonInstance1.F1 [concrete = constants.%NonInstance1.F1] {} {} +// CHECK:STDOUT: %assoc0: %NonInstance1.assoc_type = assoc_entity element0, %NonInstance1.F1.decl [concrete = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F1 = %assoc0 -// CHECK:STDOUT: witness = (%F1.decl) +// CHECK:STDOUT: witness = (%NonInstance1.F1.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @NonInstance1.impl: %struct_type.a as %NonInstance1.ref { -// CHECK:STDOUT: %F1.decl: %F1.type.d4a = fn_decl @F1.loc8 [concrete = constants.%F1.c75] {} {} +// CHECK:STDOUT: impl @struct_type.a.as.NonInstance1.impl: %struct_type.a as %NonInstance1.ref { +// CHECK:STDOUT: %struct_type.a.as.NonInstance1.impl.F1.decl: %struct_type.a.as.NonInstance1.impl.F1.type = fn_decl @struct_type.a.as.NonInstance1.impl.F1 [concrete = constants.%struct_type.a.as.NonInstance1.impl.F1] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F1 = %F1.decl +// CHECK:STDOUT: .F1 = %struct_type.a.as.NonInstance1.impl.F1.decl // CHECK:STDOUT: witness = file.%NonInstance1.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F1.loc4(@NonInstance1.%Self: %NonInstance1.type) { +// CHECK:STDOUT: generic fn @NonInstance1.F1(@NonInstance1.%Self: %NonInstance1.type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F1.loc8() { +// CHECK:STDOUT: fn @struct_type.a.as.NonInstance1.impl.F1() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -288,29 +288,29 @@ fn InstanceCallFail() { // CHECK:STDOUT: %F1.ref: %NonInstance1.assoc_type = name_ref F1, @NonInstance1.%assoc0 [concrete = constants.%assoc0] // CHECK:STDOUT: %NonInstance1.facet: %NonInstance1.type = facet_value constants.%struct_type.a, (constants.%NonInstance1.impl_witness) [concrete = constants.%NonInstance1.facet] // CHECK:STDOUT: %.loc12_11: %NonInstance1.type = converted %struct_type.a, %NonInstance1.facet [concrete = constants.%NonInstance1.facet] -// CHECK:STDOUT: %impl.elem0: %.a2c = impl_witness_access constants.%NonInstance1.impl_witness, element0 [concrete = constants.%F1.c75] -// CHECK:STDOUT: %F1.call: init %empty_tuple.type = call %impl.elem0() +// CHECK:STDOUT: %impl.elem0: %.a2c = impl_witness_access constants.%NonInstance1.impl_witness, element0 [concrete = constants.%struct_type.a.as.NonInstance1.impl.F1] +// CHECK:STDOUT: %struct_type.a.as.NonInstance1.impl.F1.call: init %empty_tuple.type = call %impl.elem0() // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F1.loc4(constants.%Self) {} +// CHECK:STDOUT: specific @NonInstance1.F1(constants.%Self) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F1.loc4(constants.%NonInstance1.facet) {} +// CHECK:STDOUT: specific @NonInstance1.F1(constants.%NonInstance1.facet) {} // CHECK:STDOUT: // CHECK:STDOUT: --- fail_non-instance.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %NonInstance2.type: type = facet_type <@NonInstance2> [concrete] // CHECK:STDOUT: %Self.5a9: %NonInstance2.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F2.type.608: type = fn_type @F2.loc6 [concrete] +// CHECK:STDOUT: %NonInstance2.F2.type: type = fn_type @NonInstance2.F2 [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F2.86a: %F2.type.608 = struct_value () [concrete] +// CHECK:STDOUT: %NonInstance2.F2: %NonInstance2.F2.type = struct_value () [concrete] // CHECK:STDOUT: %NonInstance2.assoc_type: type = assoc_entity_type @NonInstance2 [concrete] -// CHECK:STDOUT: %assoc0.92e: %NonInstance2.assoc_type = assoc_entity element0, @NonInstance2.%F2.decl [concrete] +// CHECK:STDOUT: %assoc0.92e: %NonInstance2.assoc_type = assoc_entity element0, @NonInstance2.%NonInstance2.F2.decl [concrete] // CHECK:STDOUT: %struct_type.b: type = struct_type {.b: %empty_tuple.type} [concrete] // CHECK:STDOUT: %NonInstance2.impl_witness: = impl_witness file.%NonInstance2.impl_witness_table [concrete] -// CHECK:STDOUT: %F2.type.1ec: type = fn_type @F2.loc10 [concrete] -// CHECK:STDOUT: %F2.941: %F2.type.1ec = struct_value () [concrete] +// CHECK:STDOUT: %struct_type.b.as.NonInstance2.impl.F2.type: type = fn_type @struct_type.b.as.NonInstance2.impl.F2 [concrete] +// CHECK:STDOUT: %struct_type.b.as.NonInstance2.impl.F2: %struct_type.b.as.NonInstance2.impl.F2.type = struct_value () [concrete] // CHECK:STDOUT: %NonInstance2.facet: %NonInstance2.type = facet_value %struct_type.b, (%NonInstance2.impl_witness) [concrete] // CHECK:STDOUT: %pattern_type.d5c: type = pattern_type %struct_type.b [concrete] // CHECK:STDOUT: %NonInstanceCall2.type: type = fn_type @NonInstanceCall2 [concrete] @@ -320,8 +320,8 @@ fn InstanceCallFail() { // CHECK:STDOUT: %Dest: type = bind_symbolic_name Dest, 0 [symbolic] // CHECK:STDOUT: %ImplicitAs.type.d62: type = facet_type <@ImplicitAs, @ImplicitAs(%Dest)> [symbolic] // CHECK:STDOUT: %Self.519: %ImplicitAs.type.d62 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %Convert.type.275: type = fn_type @Convert, @ImplicitAs(%Dest) [symbolic] -// CHECK:STDOUT: %Convert.42e: %Convert.type.275 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.Convert.type.275: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%Dest) [symbolic] +// CHECK:STDOUT: %ImplicitAs.Convert.42e: %ImplicitAs.Convert.type.275 = struct_value () [symbolic] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %Dest [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self.519 [symbolic] // CHECK:STDOUT: %pattern_type.f3e: type = pattern_type %Self.as_type [symbolic] @@ -329,8 +329,8 @@ fn InstanceCallFail() { // CHECK:STDOUT: %assoc0.9f5: %ImplicitAs.assoc_type.ca0 = assoc_entity element0, imports.%Core.import_ref.1c7 [symbolic] // CHECK:STDOUT: %ImplicitAs.type.c38: type = facet_type <@ImplicitAs, @ImplicitAs(%NonInstance2.type)> [concrete] // CHECK:STDOUT: %Self.671: %ImplicitAs.type.c38 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %Convert.type.d1f: type = fn_type @Convert, @ImplicitAs(%NonInstance2.type) [concrete] -// CHECK:STDOUT: %Convert.079: %Convert.type.d1f = struct_value () [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.d1f: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%NonInstance2.type) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.079: %ImplicitAs.Convert.type.d1f = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.assoc_type.f63: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%NonInstance2.type) [concrete] // CHECK:STDOUT: %assoc0.ba9: %ImplicitAs.assoc_type.f63 = assoc_entity element0, imports.%Core.import_ref.1c7 [concrete] // CHECK:STDOUT: %assoc0.dc0: %ImplicitAs.assoc_type.ca0 = assoc_entity element0, imports.%Core.import_ref.207 [symbolic] @@ -348,7 +348,7 @@ fn InstanceCallFail() { // CHECK:STDOUT: %Core.Convert = import_ref Core//default, Convert, unloaded // CHECK:STDOUT: %Core.import_ref.5ab3ec.2: type = import_ref Core//default, loc3_22, loaded [symbolic = @ImplicitAs.%Dest (constants.%Dest)] // CHECK:STDOUT: %Core.import_ref.ce1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.d62) = import_ref Core//default, inst25 [no loc], loaded [symbolic = @ImplicitAs.%Self (constants.%Self.519)] -// CHECK:STDOUT: %Core.import_ref.1c7: @ImplicitAs.%Convert.type (%Convert.type.275) = import_ref Core//default, loc4_35, loaded [symbolic = @ImplicitAs.%Convert (constants.%Convert.42e)] +// CHECK:STDOUT: %Core.import_ref.1c7: @ImplicitAs.%ImplicitAs.Convert.type (%ImplicitAs.Convert.type.275) = import_ref Core//default, loc4_35, loaded [symbolic = @ImplicitAs.%ImplicitAs.Convert (constants.%ImplicitAs.Convert.42e)] // CHECK:STDOUT: %Core.import_ref.207 = import_ref Core//default, loc4_35, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: @@ -360,13 +360,13 @@ fn InstanceCallFail() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %NonInstance2.decl: type = interface_decl @NonInstance2 [concrete = constants.%NonInstance2.type] {} {} -// CHECK:STDOUT: impl_decl @NonInstance2.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @struct_type.b.as.NonInstance2.impl [concrete] {} { // CHECK:STDOUT: %.loc9_12.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc9_12.2: type = converted %.loc9_12.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.b: type = struct_type {.b: %empty_tuple.type} [concrete = constants.%struct_type.b] // CHECK:STDOUT: %NonInstance2.ref: type = name_ref NonInstance2, file.%NonInstance2.decl [concrete = constants.%NonInstance2.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %NonInstance2.impl_witness_table = impl_witness_table (@NonInstance2.impl.%F2.decl), @NonInstance2.impl [concrete] +// CHECK:STDOUT: %NonInstance2.impl_witness_table = impl_witness_table (@struct_type.b.as.NonInstance2.impl.%struct_type.b.as.NonInstance2.impl.F2.decl), @struct_type.b.as.NonInstance2.impl [concrete] // CHECK:STDOUT: %NonInstance2.impl_witness: = impl_witness %NonInstance2.impl_witness_table [concrete = constants.%NonInstance2.impl_witness] // CHECK:STDOUT: %NonInstanceCall2.decl: %NonInstanceCall2.type = fn_decl @NonInstanceCall2 [concrete = constants.%NonInstanceCall2] { // CHECK:STDOUT: %n.patt: %pattern_type.d5c = binding_pattern n [concrete] @@ -384,13 +384,13 @@ fn InstanceCallFail() { // CHECK:STDOUT: // CHECK:STDOUT: interface @NonInstance2 { // CHECK:STDOUT: %Self: %NonInstance2.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.5a9] -// CHECK:STDOUT: %F2.decl: %F2.type.608 = fn_decl @F2.loc6 [concrete = constants.%F2.86a] {} {} -// CHECK:STDOUT: %assoc0: %NonInstance2.assoc_type = assoc_entity element0, %F2.decl [concrete = constants.%assoc0.92e] +// CHECK:STDOUT: %NonInstance2.F2.decl: %NonInstance2.F2.type = fn_decl @NonInstance2.F2 [concrete = constants.%NonInstance2.F2] {} {} +// CHECK:STDOUT: %assoc0: %NonInstance2.assoc_type = assoc_entity element0, %NonInstance2.F2.decl [concrete = constants.%assoc0.92e] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F2 = %assoc0 -// CHECK:STDOUT: witness = (%F2.decl) +// CHECK:STDOUT: witness = (%NonInstance2.F2.decl) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic interface @ImplicitAs(imports.%Core.import_ref.5ab3ec.1: type) [from "core.carbon"] { @@ -399,8 +399,8 @@ fn InstanceCallFail() { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%Dest)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.d62)] // CHECK:STDOUT: %Self: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.d62) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.519)] -// CHECK:STDOUT: %Convert.type: type = fn_type @Convert, @ImplicitAs(%Dest) [symbolic = %Convert.type (constants.%Convert.type.275)] -// CHECK:STDOUT: %Convert: @ImplicitAs.%Convert.type (%Convert.type.275) = struct_value () [symbolic = %Convert (constants.%Convert.42e)] +// CHECK:STDOUT: %ImplicitAs.Convert.type: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%Dest) [symbolic = %ImplicitAs.Convert.type (constants.%ImplicitAs.Convert.type.275)] +// CHECK:STDOUT: %ImplicitAs.Convert: @ImplicitAs.%ImplicitAs.Convert.type (%ImplicitAs.Convert.type.275) = struct_value () [symbolic = %ImplicitAs.Convert (constants.%ImplicitAs.Convert.42e)] // CHECK:STDOUT: %ImplicitAs.assoc_type: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%Dest) [symbolic = %ImplicitAs.assoc_type (constants.%ImplicitAs.assoc_type.ca0)] // CHECK:STDOUT: %assoc0: @ImplicitAs.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type.ca0) = assoc_entity element0, imports.%Core.import_ref.1c7 [symbolic = %assoc0 (constants.%assoc0.9f5)] // CHECK:STDOUT: @@ -412,19 +412,19 @@ fn InstanceCallFail() { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @NonInstance2.impl: %struct_type.b as %NonInstance2.ref { -// CHECK:STDOUT: %F2.decl: %F2.type.1ec = fn_decl @F2.loc10 [concrete = constants.%F2.941] {} {} +// CHECK:STDOUT: impl @struct_type.b.as.NonInstance2.impl: %struct_type.b as %NonInstance2.ref { +// CHECK:STDOUT: %struct_type.b.as.NonInstance2.impl.F2.decl: %struct_type.b.as.NonInstance2.impl.F2.type = fn_decl @struct_type.b.as.NonInstance2.impl.F2 [concrete = constants.%struct_type.b.as.NonInstance2.impl.F2] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F2 = %F2.decl +// CHECK:STDOUT: .F2 = %struct_type.b.as.NonInstance2.impl.F2.decl // CHECK:STDOUT: witness = file.%NonInstance2.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F2.loc6(@NonInstance2.%Self: %NonInstance2.type) { +// CHECK:STDOUT: generic fn @NonInstance2.F2(@NonInstance2.%Self: %NonInstance2.type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F2.loc10() { +// CHECK:STDOUT: fn @struct_type.b.as.NonInstance2.impl.F2() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -438,10 +438,10 @@ fn InstanceCallFail() { // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Convert(imports.%Core.import_ref.5ab3ec.2: type, imports.%Core.import_ref.ce1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.d62)) [from "core.carbon"] { +// CHECK:STDOUT: generic fn @ImplicitAs.Convert(imports.%Core.import_ref.5ab3ec.2: type, imports.%Core.import_ref.ce1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.d62)) [from "core.carbon"] { // CHECK:STDOUT: %Dest: type = bind_symbolic_name Dest, 0 [symbolic = %Dest (constants.%Dest)] // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%Dest)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.d62)] -// CHECK:STDOUT: %Self: @Convert.%ImplicitAs.type (%ImplicitAs.type.d62) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.519)] +// CHECK:STDOUT: %Self: @ImplicitAs.Convert.%ImplicitAs.type (%ImplicitAs.type.d62) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.519)] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic = %Self.as_type (constants.%Self.as_type)] // CHECK:STDOUT: %pattern_type.1: type = pattern_type %Self.as_type [symbolic = %pattern_type.1 (constants.%pattern_type.f3e)] // CHECK:STDOUT: %pattern_type.2: type = pattern_type %Dest [symbolic = %pattern_type.2 (constants.%pattern_type.7dc)] @@ -449,15 +449,15 @@ fn InstanceCallFail() { // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F2.loc6(constants.%Self.5a9) {} +// CHECK:STDOUT: specific @NonInstance2.F2(constants.%Self.5a9) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F2.loc6(constants.%NonInstance2.facet) {} +// CHECK:STDOUT: specific @NonInstance2.F2(constants.%NonInstance2.facet) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @ImplicitAs(constants.%Dest) { // CHECK:STDOUT: %Dest => constants.%Dest // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Convert(constants.%Dest, constants.%Self.519) { +// CHECK:STDOUT: specific @ImplicitAs.Convert(constants.%Dest, constants.%Self.519) { // CHECK:STDOUT: %Dest => constants.%Dest // CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.d62 // CHECK:STDOUT: %Self => constants.%Self.519 @@ -472,8 +472,8 @@ fn InstanceCallFail() { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.c38 // CHECK:STDOUT: %Self => constants.%Self.671 -// CHECK:STDOUT: %Convert.type => constants.%Convert.type.d1f -// CHECK:STDOUT: %Convert => constants.%Convert.079 +// CHECK:STDOUT: %ImplicitAs.Convert.type => constants.%ImplicitAs.Convert.type.d1f +// CHECK:STDOUT: %ImplicitAs.Convert => constants.%ImplicitAs.Convert.079 // CHECK:STDOUT: %ImplicitAs.assoc_type => constants.%ImplicitAs.assoc_type.f63 // CHECK:STDOUT: %assoc0 => constants.%assoc0.ba9 // CHECK:STDOUT: } @@ -483,15 +483,15 @@ fn InstanceCallFail() { // CHECK:STDOUT: constants { // CHECK:STDOUT: %NonInstance3.type: type = facet_type <@NonInstance3> [concrete] // CHECK:STDOUT: %Self.dd1: %NonInstance3.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F3.type.ee4: type = fn_type @F3.loc6 [concrete] +// CHECK:STDOUT: %NonInstance3.F3.type: type = fn_type @NonInstance3.F3 [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F3.752: %F3.type.ee4 = struct_value () [concrete] +// CHECK:STDOUT: %NonInstance3.F3: %NonInstance3.F3.type = struct_value () [concrete] // CHECK:STDOUT: %NonInstance3.assoc_type: type = assoc_entity_type @NonInstance3 [concrete] -// CHECK:STDOUT: %assoc0.2f5: %NonInstance3.assoc_type = assoc_entity element0, @NonInstance3.%F3.decl [concrete] +// CHECK:STDOUT: %assoc0.2f5: %NonInstance3.assoc_type = assoc_entity element0, @NonInstance3.%NonInstance3.F3.decl [concrete] // CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %empty_tuple.type} [concrete] // CHECK:STDOUT: %NonInstance3.impl_witness: = impl_witness file.%NonInstance3.impl_witness_table [concrete] -// CHECK:STDOUT: %F3.type.1c2: type = fn_type @F3.loc10 [concrete] -// CHECK:STDOUT: %F3.1d3: %F3.type.1c2 = struct_value () [concrete] +// CHECK:STDOUT: %struct_type.c.as.NonInstance3.impl.F3.type: type = fn_type @struct_type.c.as.NonInstance3.impl.F3 [concrete] +// CHECK:STDOUT: %struct_type.c.as.NonInstance3.impl.F3: %struct_type.c.as.NonInstance3.impl.F3.type = struct_value () [concrete] // CHECK:STDOUT: %NonInstance3.facet: %NonInstance3.type = facet_value %struct_type.c, (%NonInstance3.impl_witness) [concrete] // CHECK:STDOUT: %ptr: type = ptr_type %struct_type.c [concrete] // CHECK:STDOUT: %pattern_type.5f5: type = pattern_type %ptr [concrete] @@ -502,8 +502,8 @@ fn InstanceCallFail() { // CHECK:STDOUT: %Dest: type = bind_symbolic_name Dest, 0 [symbolic] // CHECK:STDOUT: %ImplicitAs.type.d62: type = facet_type <@ImplicitAs, @ImplicitAs(%Dest)> [symbolic] // CHECK:STDOUT: %Self.519: %ImplicitAs.type.d62 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %Convert.type.275: type = fn_type @Convert, @ImplicitAs(%Dest) [symbolic] -// CHECK:STDOUT: %Convert.42e: %Convert.type.275 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.Convert.type.275: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%Dest) [symbolic] +// CHECK:STDOUT: %ImplicitAs.Convert.42e: %ImplicitAs.Convert.type.275 = struct_value () [symbolic] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %Dest [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self.519 [symbolic] // CHECK:STDOUT: %pattern_type.f3e: type = pattern_type %Self.as_type [symbolic] @@ -511,8 +511,8 @@ fn InstanceCallFail() { // CHECK:STDOUT: %assoc0.9f5: %ImplicitAs.assoc_type.ca0 = assoc_entity element0, imports.%Core.import_ref.1c7 [symbolic] // CHECK:STDOUT: %ImplicitAs.type.c69: type = facet_type <@ImplicitAs, @ImplicitAs(%NonInstance3.type)> [concrete] // CHECK:STDOUT: %Self.754: %ImplicitAs.type.c69 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %Convert.type.0f1: type = fn_type @Convert, @ImplicitAs(%NonInstance3.type) [concrete] -// CHECK:STDOUT: %Convert.bb3: %Convert.type.0f1 = struct_value () [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.0f1: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%NonInstance3.type) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.bb3: %ImplicitAs.Convert.type.0f1 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.assoc_type.4e3: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%NonInstance3.type) [concrete] // CHECK:STDOUT: %assoc0.d0b: %ImplicitAs.assoc_type.4e3 = assoc_entity element0, imports.%Core.import_ref.1c7 [concrete] // CHECK:STDOUT: %assoc0.dc0: %ImplicitAs.assoc_type.ca0 = assoc_entity element0, imports.%Core.import_ref.207 [symbolic] @@ -530,7 +530,7 @@ fn InstanceCallFail() { // CHECK:STDOUT: %Core.Convert = import_ref Core//default, Convert, unloaded // CHECK:STDOUT: %Core.import_ref.5ab3ec.2: type = import_ref Core//default, loc3_22, loaded [symbolic = @ImplicitAs.%Dest (constants.%Dest)] // CHECK:STDOUT: %Core.import_ref.ce1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.d62) = import_ref Core//default, inst25 [no loc], loaded [symbolic = @ImplicitAs.%Self (constants.%Self.519)] -// CHECK:STDOUT: %Core.import_ref.1c7: @ImplicitAs.%Convert.type (%Convert.type.275) = import_ref Core//default, loc4_35, loaded [symbolic = @ImplicitAs.%Convert (constants.%Convert.42e)] +// CHECK:STDOUT: %Core.import_ref.1c7: @ImplicitAs.%ImplicitAs.Convert.type (%ImplicitAs.Convert.type.275) = import_ref Core//default, loc4_35, loaded [symbolic = @ImplicitAs.%ImplicitAs.Convert (constants.%ImplicitAs.Convert.42e)] // CHECK:STDOUT: %Core.import_ref.207 = import_ref Core//default, loc4_35, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: @@ -542,13 +542,13 @@ fn InstanceCallFail() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %NonInstance3.decl: type = interface_decl @NonInstance3 [concrete = constants.%NonInstance3.type] {} {} -// CHECK:STDOUT: impl_decl @NonInstance3.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @struct_type.c.as.NonInstance3.impl [concrete] {} { // CHECK:STDOUT: %.loc9_12.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc9_12.2: type = converted %.loc9_12.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %empty_tuple.type} [concrete = constants.%struct_type.c] // CHECK:STDOUT: %NonInstance3.ref: type = name_ref NonInstance3, file.%NonInstance3.decl [concrete = constants.%NonInstance3.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %NonInstance3.impl_witness_table = impl_witness_table (@NonInstance3.impl.%F3.decl), @NonInstance3.impl [concrete] +// CHECK:STDOUT: %NonInstance3.impl_witness_table = impl_witness_table (@struct_type.c.as.NonInstance3.impl.%struct_type.c.as.NonInstance3.impl.F3.decl), @struct_type.c.as.NonInstance3.impl [concrete] // CHECK:STDOUT: %NonInstance3.impl_witness: = impl_witness %NonInstance3.impl_witness_table [concrete = constants.%NonInstance3.impl_witness] // CHECK:STDOUT: %NonInstanceCallIndirect.decl: %NonInstanceCallIndirect.type = fn_decl @NonInstanceCallIndirect [concrete = constants.%NonInstanceCallIndirect] { // CHECK:STDOUT: %p.patt: %pattern_type.5f5 = binding_pattern p [concrete] @@ -567,13 +567,13 @@ fn InstanceCallFail() { // CHECK:STDOUT: // CHECK:STDOUT: interface @NonInstance3 { // CHECK:STDOUT: %Self: %NonInstance3.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.dd1] -// CHECK:STDOUT: %F3.decl: %F3.type.ee4 = fn_decl @F3.loc6 [concrete = constants.%F3.752] {} {} -// CHECK:STDOUT: %assoc0: %NonInstance3.assoc_type = assoc_entity element0, %F3.decl [concrete = constants.%assoc0.2f5] +// CHECK:STDOUT: %NonInstance3.F3.decl: %NonInstance3.F3.type = fn_decl @NonInstance3.F3 [concrete = constants.%NonInstance3.F3] {} {} +// CHECK:STDOUT: %assoc0: %NonInstance3.assoc_type = assoc_entity element0, %NonInstance3.F3.decl [concrete = constants.%assoc0.2f5] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F3 = %assoc0 -// CHECK:STDOUT: witness = (%F3.decl) +// CHECK:STDOUT: witness = (%NonInstance3.F3.decl) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic interface @ImplicitAs(imports.%Core.import_ref.5ab3ec.1: type) [from "core.carbon"] { @@ -582,8 +582,8 @@ fn InstanceCallFail() { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%Dest)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.d62)] // CHECK:STDOUT: %Self: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.d62) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.519)] -// CHECK:STDOUT: %Convert.type: type = fn_type @Convert, @ImplicitAs(%Dest) [symbolic = %Convert.type (constants.%Convert.type.275)] -// CHECK:STDOUT: %Convert: @ImplicitAs.%Convert.type (%Convert.type.275) = struct_value () [symbolic = %Convert (constants.%Convert.42e)] +// CHECK:STDOUT: %ImplicitAs.Convert.type: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%Dest) [symbolic = %ImplicitAs.Convert.type (constants.%ImplicitAs.Convert.type.275)] +// CHECK:STDOUT: %ImplicitAs.Convert: @ImplicitAs.%ImplicitAs.Convert.type (%ImplicitAs.Convert.type.275) = struct_value () [symbolic = %ImplicitAs.Convert (constants.%ImplicitAs.Convert.42e)] // CHECK:STDOUT: %ImplicitAs.assoc_type: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%Dest) [symbolic = %ImplicitAs.assoc_type (constants.%ImplicitAs.assoc_type.ca0)] // CHECK:STDOUT: %assoc0: @ImplicitAs.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type.ca0) = assoc_entity element0, imports.%Core.import_ref.1c7 [symbolic = %assoc0 (constants.%assoc0.9f5)] // CHECK:STDOUT: @@ -595,19 +595,19 @@ fn InstanceCallFail() { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @NonInstance3.impl: %struct_type.c as %NonInstance3.ref { -// CHECK:STDOUT: %F3.decl: %F3.type.1c2 = fn_decl @F3.loc10 [concrete = constants.%F3.1d3] {} {} +// CHECK:STDOUT: impl @struct_type.c.as.NonInstance3.impl: %struct_type.c as %NonInstance3.ref { +// CHECK:STDOUT: %struct_type.c.as.NonInstance3.impl.F3.decl: %struct_type.c.as.NonInstance3.impl.F3.type = fn_decl @struct_type.c.as.NonInstance3.impl.F3 [concrete = constants.%struct_type.c.as.NonInstance3.impl.F3] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F3 = %F3.decl +// CHECK:STDOUT: .F3 = %struct_type.c.as.NonInstance3.impl.F3.decl // CHECK:STDOUT: witness = file.%NonInstance3.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F3.loc6(@NonInstance3.%Self: %NonInstance3.type) { +// CHECK:STDOUT: generic fn @NonInstance3.F3(@NonInstance3.%Self: %NonInstance3.type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F3.loc10() { +// CHECK:STDOUT: fn @struct_type.c.as.NonInstance3.impl.F3() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -622,10 +622,10 @@ fn InstanceCallFail() { // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Convert(imports.%Core.import_ref.5ab3ec.2: type, imports.%Core.import_ref.ce1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.d62)) [from "core.carbon"] { +// CHECK:STDOUT: generic fn @ImplicitAs.Convert(imports.%Core.import_ref.5ab3ec.2: type, imports.%Core.import_ref.ce1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.d62)) [from "core.carbon"] { // CHECK:STDOUT: %Dest: type = bind_symbolic_name Dest, 0 [symbolic = %Dest (constants.%Dest)] // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%Dest)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.d62)] -// CHECK:STDOUT: %Self: @Convert.%ImplicitAs.type (%ImplicitAs.type.d62) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.519)] +// CHECK:STDOUT: %Self: @ImplicitAs.Convert.%ImplicitAs.type (%ImplicitAs.type.d62) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.519)] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic = %Self.as_type (constants.%Self.as_type)] // CHECK:STDOUT: %pattern_type.1: type = pattern_type %Self.as_type [symbolic = %pattern_type.1 (constants.%pattern_type.f3e)] // CHECK:STDOUT: %pattern_type.2: type = pattern_type %Dest [symbolic = %pattern_type.2 (constants.%pattern_type.7dc)] @@ -633,15 +633,15 @@ fn InstanceCallFail() { // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F3.loc6(constants.%Self.dd1) {} +// CHECK:STDOUT: specific @NonInstance3.F3(constants.%Self.dd1) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F3.loc6(constants.%NonInstance3.facet) {} +// CHECK:STDOUT: specific @NonInstance3.F3(constants.%NonInstance3.facet) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @ImplicitAs(constants.%Dest) { // CHECK:STDOUT: %Dest => constants.%Dest // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Convert(constants.%Dest, constants.%Self.519) { +// CHECK:STDOUT: specific @ImplicitAs.Convert(constants.%Dest, constants.%Self.519) { // CHECK:STDOUT: %Dest => constants.%Dest // CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.d62 // CHECK:STDOUT: %Self => constants.%Self.519 @@ -656,8 +656,8 @@ fn InstanceCallFail() { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.c69 // CHECK:STDOUT: %Self => constants.%Self.754 -// CHECK:STDOUT: %Convert.type => constants.%Convert.type.0f1 -// CHECK:STDOUT: %Convert => constants.%Convert.bb3 +// CHECK:STDOUT: %ImplicitAs.Convert.type => constants.%ImplicitAs.Convert.type.0f1 +// CHECK:STDOUT: %ImplicitAs.Convert => constants.%ImplicitAs.Convert.bb3 // CHECK:STDOUT: %ImplicitAs.assoc_type => constants.%ImplicitAs.assoc_type.4e3 // CHECK:STDOUT: %assoc0 => constants.%assoc0.d0b // CHECK:STDOUT: } @@ -669,20 +669,20 @@ fn InstanceCallFail() { // CHECK:STDOUT: %Self: %Instance1.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic] // CHECK:STDOUT: %pattern_type.0f0: type = pattern_type %Self.as_type [symbolic] -// CHECK:STDOUT: %G1.type.cde: type = fn_type @G1.loc4 [concrete] +// CHECK:STDOUT: %Instance1.G1.type: type = fn_type @Instance1.G1 [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %G1.79a: %G1.type.cde = struct_value () [concrete] +// CHECK:STDOUT: %Instance1.G1: %Instance1.G1.type = struct_value () [concrete] // CHECK:STDOUT: %Instance1.assoc_type: type = assoc_entity_type @Instance1 [concrete] -// CHECK:STDOUT: %assoc0: %Instance1.assoc_type = assoc_entity element0, @Instance1.%G1.decl [concrete] +// CHECK:STDOUT: %assoc0: %Instance1.assoc_type = assoc_entity element0, @Instance1.%Instance1.G1.decl [concrete] // CHECK:STDOUT: %struct_type.d: type = struct_type {.d: %empty_tuple.type} [concrete] // CHECK:STDOUT: %Instance1.impl_witness: = impl_witness file.%Instance1.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.515: type = pattern_type %struct_type.d [concrete] -// CHECK:STDOUT: %G1.type.c50: type = fn_type @G1.loc8 [concrete] -// CHECK:STDOUT: %G1.fee: %G1.type.c50 = struct_value () [concrete] +// CHECK:STDOUT: %struct_type.d.as.Instance1.impl.G1.type: type = fn_type @struct_type.d.as.Instance1.impl.G1 [concrete] +// CHECK:STDOUT: %struct_type.d.as.Instance1.impl.G1: %struct_type.d.as.Instance1.impl.G1.type = struct_value () [concrete] // CHECK:STDOUT: %Instance1.facet: %Instance1.type = facet_value %struct_type.d, (%Instance1.impl_witness) [concrete] // CHECK:STDOUT: %InstanceCall.type: type = fn_type @InstanceCall [concrete] // CHECK:STDOUT: %InstanceCall: %InstanceCall.type = struct_value () [concrete] -// CHECK:STDOUT: %.d09: type = fn_type_with_self_type %G1.type.cde, %Instance1.facet [concrete] +// CHECK:STDOUT: %.d09: type = fn_type_with_self_type %Instance1.G1.type, %Instance1.facet [concrete] // CHECK:STDOUT: %ptr: type = ptr_type %struct_type.d [concrete] // CHECK:STDOUT: %pattern_type.8d6: type = pattern_type %ptr [concrete] // CHECK:STDOUT: %InstanceCallIndirect.type: type = fn_type @InstanceCallIndirect [concrete] @@ -698,13 +698,13 @@ fn InstanceCallFail() { // CHECK:STDOUT: .InstanceCallIndirect = %InstanceCallIndirect.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Instance1.decl: type = interface_decl @Instance1 [concrete = constants.%Instance1.type] {} {} -// CHECK:STDOUT: impl_decl @Instance1.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @struct_type.d.as.Instance1.impl [concrete] {} { // CHECK:STDOUT: %.loc7_12.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc7_12.2: type = converted %.loc7_12.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.d: type = struct_type {.d: %empty_tuple.type} [concrete = constants.%struct_type.d] // CHECK:STDOUT: %Instance1.ref: type = name_ref Instance1, file.%Instance1.decl [concrete = constants.%Instance1.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %Instance1.impl_witness_table = impl_witness_table (@Instance1.impl.%G1.decl), @Instance1.impl [concrete] +// CHECK:STDOUT: %Instance1.impl_witness_table = impl_witness_table (@struct_type.d.as.Instance1.impl.%struct_type.d.as.Instance1.impl.G1.decl), @struct_type.d.as.Instance1.impl [concrete] // CHECK:STDOUT: %Instance1.impl_witness: = impl_witness %Instance1.impl_witness_table [concrete = constants.%Instance1.impl_witness] // CHECK:STDOUT: %InstanceCall.decl: %InstanceCall.type = fn_decl @InstanceCall [concrete = constants.%InstanceCall] { // CHECK:STDOUT: %n.patt: %pattern_type.515 = binding_pattern n [concrete] @@ -735,50 +735,50 @@ fn InstanceCallFail() { // CHECK:STDOUT: // CHECK:STDOUT: interface @Instance1 { // CHECK:STDOUT: %Self: %Instance1.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %G1.decl: %G1.type.cde = fn_decl @G1.loc4 [concrete = constants.%G1.79a] { -// CHECK:STDOUT: %self.patt: @G1.loc4.%pattern_type (%pattern_type.0f0) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @G1.loc4.%pattern_type (%pattern_type.0f0) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %Instance1.G1.decl: %Instance1.G1.type = fn_decl @Instance1.G1 [concrete = constants.%Instance1.G1] { +// CHECK:STDOUT: %self.patt: @Instance1.G1.%pattern_type (%pattern_type.0f0) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @Instance1.G1.%pattern_type (%pattern_type.0f0) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @G1.loc4.%Self.as_type.loc4_15.2 (%Self.as_type) = value_param call_param0 -// CHECK:STDOUT: %.loc4_15.1: type = splice_block %.loc4_15.2 [symbolic = %Self.as_type.loc4_15.2 (constants.%Self.as_type)] { +// CHECK:STDOUT: %self.param: @Instance1.G1.%Self.as_type.loc4_15.1 (%Self.as_type) = value_param call_param0 +// CHECK:STDOUT: %.loc4_15.1: type = splice_block %.loc4_15.2 [symbolic = %Self.as_type.loc4_15.1 (constants.%Self.as_type)] { // CHECK:STDOUT: %Self.ref: %Instance1.type = name_ref Self, @Instance1.%Self [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc4_15.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc4_15.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc4_15.2: type = converted %Self.ref, %Self.as_type.loc4_15.1 [symbolic = %Self.as_type.loc4_15.2 (constants.%Self.as_type)] +// CHECK:STDOUT: %Self.as_type.loc4_15.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc4_15.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc4_15.2: type = converted %Self.ref, %Self.as_type.loc4_15.2 [symbolic = %Self.as_type.loc4_15.1 (constants.%Self.as_type)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @G1.loc4.%Self.as_type.loc4_15.2 (%Self.as_type) = bind_name self, %self.param +// CHECK:STDOUT: %self: @Instance1.G1.%Self.as_type.loc4_15.1 (%Self.as_type) = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %Instance1.assoc_type = assoc_entity element0, %G1.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %assoc0: %Instance1.assoc_type = assoc_entity element0, %Instance1.G1.decl [concrete = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .G1 = %assoc0 -// CHECK:STDOUT: witness = (%G1.decl) +// CHECK:STDOUT: witness = (%Instance1.G1.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Instance1.impl: %struct_type.d as %Instance1.ref { -// CHECK:STDOUT: %G1.decl: %G1.type.c50 = fn_decl @G1.loc8 [concrete = constants.%G1.fee] { +// CHECK:STDOUT: impl @struct_type.d.as.Instance1.impl: %struct_type.d as %Instance1.ref { +// CHECK:STDOUT: %struct_type.d.as.Instance1.impl.G1.decl: %struct_type.d.as.Instance1.impl.G1.type = fn_decl @struct_type.d.as.Instance1.impl.G1 [concrete = constants.%struct_type.d.as.Instance1.impl.G1] { // CHECK:STDOUT: %self.patt: %pattern_type.515 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.515 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %self.param: %struct_type.d = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @Instance1.impl.%struct_type.d [concrete = constants.%struct_type.d] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @struct_type.d.as.Instance1.impl.%struct_type.d [concrete = constants.%struct_type.d] // CHECK:STDOUT: %self: %struct_type.d = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .G1 = %G1.decl +// CHECK:STDOUT: .G1 = %struct_type.d.as.Instance1.impl.G1.decl // CHECK:STDOUT: witness = file.%Instance1.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @G1.loc4(@Instance1.%Self: %Instance1.type) { +// CHECK:STDOUT: generic fn @Instance1.G1(@Instance1.%Self: %Instance1.type) { // CHECK:STDOUT: %Self: %Instance1.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc4_15.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc4_15.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc4_15.2 [symbolic = %pattern_type (constants.%pattern_type.0f0)] +// CHECK:STDOUT: %Self.as_type.loc4_15.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc4_15.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc4_15.1 [symbolic = %pattern_type (constants.%pattern_type.0f0)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @G1.loc4.%Self.as_type.loc4_15.2 (%Self.as_type)); +// CHECK:STDOUT: fn(%self.param: @Instance1.G1.%Self.as_type.loc4_15.1 (%Self.as_type)); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G1.loc8(%self.param: %struct_type.d) { +// CHECK:STDOUT: fn @struct_type.d.as.Instance1.impl.G1(%self.param: %struct_type.d) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -788,9 +788,9 @@ fn InstanceCallFail() { // CHECK:STDOUT: %n.ref: %struct_type.d = name_ref n, %n // CHECK:STDOUT: %Instance1.ref: type = name_ref Instance1, file.%Instance1.decl [concrete = constants.%Instance1.type] // CHECK:STDOUT: %G1.ref: %Instance1.assoc_type = name_ref G1, @Instance1.%assoc0 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: %.d09 = impl_witness_access constants.%Instance1.impl_witness, element0 [concrete = constants.%G1.fee] +// CHECK:STDOUT: %impl.elem0: %.d09 = impl_witness_access constants.%Instance1.impl_witness, element0 [concrete = constants.%struct_type.d.as.Instance1.impl.G1] // CHECK:STDOUT: %bound_method: = bound_method %n.ref, %impl.elem0 -// CHECK:STDOUT: %G1.call: init %empty_tuple.type = call %bound_method(%n.ref) +// CHECK:STDOUT: %struct_type.d.as.Instance1.impl.G1.call: init %empty_tuple.type = call %bound_method(%n.ref) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -800,26 +800,26 @@ fn InstanceCallFail() { // CHECK:STDOUT: %Instance1.ref: type = name_ref Instance1, file.%Instance1.decl [concrete = constants.%Instance1.type] // CHECK:STDOUT: %G1.ref: %Instance1.assoc_type = name_ref G1, @Instance1.%assoc0 [concrete = constants.%assoc0] // CHECK:STDOUT: %.loc16_4.1: ref %struct_type.d = deref %p.ref -// CHECK:STDOUT: %impl.elem0: %.d09 = impl_witness_access constants.%Instance1.impl_witness, element0 [concrete = constants.%G1.fee] +// CHECK:STDOUT: %impl.elem0: %.d09 = impl_witness_access constants.%Instance1.impl_witness, element0 [concrete = constants.%struct_type.d.as.Instance1.impl.G1] // CHECK:STDOUT: %bound_method: = bound_method %.loc16_4.1, %impl.elem0 // CHECK:STDOUT: %.loc16_4.2: ref %empty_tuple.type = struct_access %.loc16_4.1, element0 // CHECK:STDOUT: %tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc16_4.3: %empty_tuple.type = converted %.loc16_4.2, %tuple [concrete = constants.%empty_tuple] // CHECK:STDOUT: %struct: %struct_type.d = struct_value (%.loc16_4.3) [concrete = constants.%struct] // CHECK:STDOUT: %.loc16_4.4: %struct_type.d = converted %.loc16_4.1, %struct [concrete = constants.%struct] -// CHECK:STDOUT: %G1.call: init %empty_tuple.type = call %bound_method(%.loc16_4.4) +// CHECK:STDOUT: %struct_type.d.as.Instance1.impl.G1.call: init %empty_tuple.type = call %bound_method(%.loc16_4.4) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @G1.loc4(constants.%Self) { +// CHECK:STDOUT: specific @Instance1.G1(constants.%Self) { // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %Self.as_type.loc4_15.2 => constants.%Self.as_type +// CHECK:STDOUT: %Self.as_type.loc4_15.1 => constants.%Self.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.0f0 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @G1.loc4(constants.%Instance1.facet) { +// CHECK:STDOUT: specific @Instance1.G1(constants.%Instance1.facet) { // CHECK:STDOUT: %Self => constants.%Instance1.facet -// CHECK:STDOUT: %Self.as_type.loc4_15.2 => constants.%struct_type.d +// CHECK:STDOUT: %Self.as_type.loc4_15.1 => constants.%struct_type.d // CHECK:STDOUT: %pattern_type => constants.%pattern_type.515 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -830,16 +830,16 @@ fn InstanceCallFail() { // CHECK:STDOUT: %Self: %Instance2.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic] // CHECK:STDOUT: %pattern_type.8d7: type = pattern_type %Self.as_type [symbolic] -// CHECK:STDOUT: %G2.type.aa7: type = fn_type @G2.loc4 [concrete] +// CHECK:STDOUT: %Instance2.G2.type: type = fn_type @Instance2.G2 [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %G2.588: %G2.type.aa7 = struct_value () [concrete] +// CHECK:STDOUT: %Instance2.G2: %Instance2.G2.type = struct_value () [concrete] // CHECK:STDOUT: %Instance2.assoc_type: type = assoc_entity_type @Instance2 [concrete] -// CHECK:STDOUT: %assoc0: %Instance2.assoc_type = assoc_entity element0, @Instance2.%G2.decl [concrete] +// CHECK:STDOUT: %assoc0: %Instance2.assoc_type = assoc_entity element0, @Instance2.%Instance2.G2.decl [concrete] // CHECK:STDOUT: %struct_type.e: type = struct_type {.e: %empty_tuple.type} [concrete] // CHECK:STDOUT: %Instance2.impl_witness: = impl_witness file.%Instance2.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.efd: type = pattern_type %struct_type.e [concrete] -// CHECK:STDOUT: %G2.type.50c: type = fn_type @G2.loc8 [concrete] -// CHECK:STDOUT: %G2.707: %G2.type.50c = struct_value () [concrete] +// CHECK:STDOUT: %struct_type.e.as.Instance2.impl.G2.type: type = fn_type @struct_type.e.as.Instance2.impl.G2 [concrete] +// CHECK:STDOUT: %struct_type.e.as.Instance2.impl.G2: %struct_type.e.as.Instance2.impl.G2.type = struct_value () [concrete] // CHECK:STDOUT: %Instance2.facet: %Instance2.type = facet_value %struct_type.e, (%Instance2.impl_witness) [concrete] // CHECK:STDOUT: %InstanceCallFail.type: type = fn_type @InstanceCallFail [concrete] // CHECK:STDOUT: %InstanceCallFail: %InstanceCallFail.type = struct_value () [concrete] @@ -851,63 +851,63 @@ fn InstanceCallFail() { // CHECK:STDOUT: .InstanceCallFail = %InstanceCallFail.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Instance2.decl: type = interface_decl @Instance2 [concrete = constants.%Instance2.type] {} {} -// CHECK:STDOUT: impl_decl @Instance2.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @struct_type.e.as.Instance2.impl [concrete] {} { // CHECK:STDOUT: %.loc7_12.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc7_12.2: type = converted %.loc7_12.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.e: type = struct_type {.e: %empty_tuple.type} [concrete = constants.%struct_type.e] // CHECK:STDOUT: %Instance2.ref: type = name_ref Instance2, file.%Instance2.decl [concrete = constants.%Instance2.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %Instance2.impl_witness_table = impl_witness_table (@Instance2.impl.%G2.decl), @Instance2.impl [concrete] +// CHECK:STDOUT: %Instance2.impl_witness_table = impl_witness_table (@struct_type.e.as.Instance2.impl.%struct_type.e.as.Instance2.impl.G2.decl), @struct_type.e.as.Instance2.impl [concrete] // CHECK:STDOUT: %Instance2.impl_witness: = impl_witness %Instance2.impl_witness_table [concrete = constants.%Instance2.impl_witness] // CHECK:STDOUT: %InstanceCallFail.decl: %InstanceCallFail.type = fn_decl @InstanceCallFail [concrete = constants.%InstanceCallFail] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Instance2 { // CHECK:STDOUT: %Self: %Instance2.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %G2.decl: %G2.type.aa7 = fn_decl @G2.loc4 [concrete = constants.%G2.588] { -// CHECK:STDOUT: %self.patt: @G2.loc4.%pattern_type (%pattern_type.8d7) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @G2.loc4.%pattern_type (%pattern_type.8d7) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %Instance2.G2.decl: %Instance2.G2.type = fn_decl @Instance2.G2 [concrete = constants.%Instance2.G2] { +// CHECK:STDOUT: %self.patt: @Instance2.G2.%pattern_type (%pattern_type.8d7) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @Instance2.G2.%pattern_type (%pattern_type.8d7) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @G2.loc4.%Self.as_type.loc4_15.2 (%Self.as_type) = value_param call_param0 -// CHECK:STDOUT: %.loc4_15.1: type = splice_block %.loc4_15.2 [symbolic = %Self.as_type.loc4_15.2 (constants.%Self.as_type)] { +// CHECK:STDOUT: %self.param: @Instance2.G2.%Self.as_type.loc4_15.1 (%Self.as_type) = value_param call_param0 +// CHECK:STDOUT: %.loc4_15.1: type = splice_block %.loc4_15.2 [symbolic = %Self.as_type.loc4_15.1 (constants.%Self.as_type)] { // CHECK:STDOUT: %Self.ref: %Instance2.type = name_ref Self, @Instance2.%Self [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc4_15.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc4_15.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc4_15.2: type = converted %Self.ref, %Self.as_type.loc4_15.1 [symbolic = %Self.as_type.loc4_15.2 (constants.%Self.as_type)] +// CHECK:STDOUT: %Self.as_type.loc4_15.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc4_15.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc4_15.2: type = converted %Self.ref, %Self.as_type.loc4_15.2 [symbolic = %Self.as_type.loc4_15.1 (constants.%Self.as_type)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @G2.loc4.%Self.as_type.loc4_15.2 (%Self.as_type) = bind_name self, %self.param +// CHECK:STDOUT: %self: @Instance2.G2.%Self.as_type.loc4_15.1 (%Self.as_type) = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %Instance2.assoc_type = assoc_entity element0, %G2.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %assoc0: %Instance2.assoc_type = assoc_entity element0, %Instance2.G2.decl [concrete = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .G2 = %assoc0 -// CHECK:STDOUT: witness = (%G2.decl) +// CHECK:STDOUT: witness = (%Instance2.G2.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Instance2.impl: %struct_type.e as %Instance2.ref { -// CHECK:STDOUT: %G2.decl: %G2.type.50c = fn_decl @G2.loc8 [concrete = constants.%G2.707] { +// CHECK:STDOUT: impl @struct_type.e.as.Instance2.impl: %struct_type.e as %Instance2.ref { +// CHECK:STDOUT: %struct_type.e.as.Instance2.impl.G2.decl: %struct_type.e.as.Instance2.impl.G2.type = fn_decl @struct_type.e.as.Instance2.impl.G2 [concrete = constants.%struct_type.e.as.Instance2.impl.G2] { // CHECK:STDOUT: %self.patt: %pattern_type.efd = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.efd = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %self.param: %struct_type.e = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @Instance2.impl.%struct_type.e [concrete = constants.%struct_type.e] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @struct_type.e.as.Instance2.impl.%struct_type.e [concrete = constants.%struct_type.e] // CHECK:STDOUT: %self: %struct_type.e = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .G2 = %G2.decl +// CHECK:STDOUT: .G2 = %struct_type.e.as.Instance2.impl.G2.decl // CHECK:STDOUT: witness = file.%Instance2.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @G2.loc4(@Instance2.%Self: %Instance2.type) { +// CHECK:STDOUT: generic fn @Instance2.G2(@Instance2.%Self: %Instance2.type) { // CHECK:STDOUT: %Self: %Instance2.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc4_15.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc4_15.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc4_15.2 [symbolic = %pattern_type (constants.%pattern_type.8d7)] +// CHECK:STDOUT: %Self.as_type.loc4_15.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc4_15.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc4_15.1 [symbolic = %pattern_type (constants.%pattern_type.8d7)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @G2.loc4.%Self.as_type.loc4_15.2 (%Self.as_type)); +// CHECK:STDOUT: fn(%self.param: @Instance2.G2.%Self.as_type.loc4_15.1 (%Self.as_type)); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G2.loc8(%self.param: %struct_type.e) { +// CHECK:STDOUT: fn @struct_type.e.as.Instance2.impl.G2(%self.param: %struct_type.e) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -922,15 +922,15 @@ fn InstanceCallFail() { // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @G2.loc4(constants.%Self) { +// CHECK:STDOUT: specific @Instance2.G2(constants.%Self) { // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %Self.as_type.loc4_15.2 => constants.%Self.as_type +// CHECK:STDOUT: %Self.as_type.loc4_15.1 => constants.%Self.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.8d7 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @G2.loc4(constants.%Instance2.facet) { +// CHECK:STDOUT: specific @Instance2.G2(constants.%Instance2.facet) { // CHECK:STDOUT: %Self => constants.%Instance2.facet -// CHECK:STDOUT: %Self.as_type.loc4_15.2 => constants.%struct_type.e +// CHECK:STDOUT: %Self.as_type.loc4_15.1 => constants.%struct_type.e // CHECK:STDOUT: %pattern_type => constants.%pattern_type.efd // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/declaration.carbon b/toolchain/check/testdata/impl/declaration.carbon index 3e3eaa26bb98..336e4fe0eec1 100644 --- a/toolchain/check/testdata/impl/declaration.carbon +++ b/toolchain/check/testdata/impl/declaration.carbon @@ -46,14 +46,14 @@ impl i32 as I {} // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @i32.as.I.impl [concrete] {} { // CHECK:STDOUT: %int_32.loc17: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc17: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %I.ref.loc17: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @I.impl [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @i32.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness] -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @i32.as.I.impl [concrete] {} { // CHECK:STDOUT: %int_32.loc19: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc19: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %I.ref.loc19: type = name_ref I, file.%I.decl [concrete = constants.%I.type] @@ -68,7 +68,7 @@ impl i32 as I {} // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: %i32.loc17 as %I.ref.loc17 { +// CHECK:STDOUT: impl @i32.as.I.impl: %i32.loc17 as %I.ref.loc17 { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%I.impl_witness // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/empty.carbon b/toolchain/check/testdata/impl/empty.carbon index 3a739eee3a70..881258bd7f8b 100644 --- a/toolchain/check/testdata/impl/empty.carbon +++ b/toolchain/check/testdata/impl/empty.carbon @@ -46,12 +46,12 @@ impl i32 as Empty { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Empty.decl: type = interface_decl @Empty [concrete = constants.%Empty.type] {} {} -// CHECK:STDOUT: impl_decl @Empty.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @i32.as.Empty.impl [concrete] {} { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %Empty.ref: type = name_ref Empty, file.%Empty.decl [concrete = constants.%Empty.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %Empty.impl_witness_table = impl_witness_table (), @Empty.impl [concrete] +// CHECK:STDOUT: %Empty.impl_witness_table = impl_witness_table (), @i32.as.Empty.impl [concrete] // CHECK:STDOUT: %Empty.impl_witness: = impl_witness %Empty.impl_witness_table [concrete = constants.%Empty.impl_witness] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -63,7 +63,7 @@ impl i32 as Empty { // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Empty.impl: %i32 as %Empty.ref { +// CHECK:STDOUT: impl @i32.as.Empty.impl: %i32 as %Empty.ref { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%Empty.impl_witness // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/error_recovery.carbon b/toolchain/check/testdata/impl/error_recovery.carbon index 2a1c01823d25..3937164adcbd 100644 --- a/toolchain/check/testdata/impl/error_recovery.carbon +++ b/toolchain/check/testdata/impl/error_recovery.carbon @@ -41,11 +41,11 @@ impl forall [T: type] C as I { } // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.I.impl [concrete] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @I.impl [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @C.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -57,7 +57,7 @@ impl forall [T: type] C as I { } // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: %C.ref as %I.ref { +// CHECK:STDOUT: impl @C.as.I.impl: %C.ref as %I.ref { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%I.impl_witness // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/extend_impl.carbon b/toolchain/check/testdata/impl/extend_impl.carbon index 5c8670bea306..cdc5342fb9a1 100644 --- a/toolchain/check/testdata/impl/extend_impl.carbon +++ b/toolchain/check/testdata/impl/extend_impl.carbon @@ -62,8 +62,8 @@ extend impl nonexistent* as I {} // CHECK:STDOUT: %HasF.type: type = facet_type <@HasF> [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %HasF.impl_witness: = impl_witness @C.%HasF.impl_witness_table [concrete] -// CHECK:STDOUT: %F.type.a65: type = fn_type @F.loc11 [concrete] -// CHECK:STDOUT: %F.ad8: %F.type.a65 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.HasF.impl.F.type: type = fn_type @C.as.HasF.impl.F [concrete] +// CHECK:STDOUT: %C.as.HasF.impl.F: %C.as.HasF.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: } @@ -72,20 +72,20 @@ extend impl nonexistent* as I {} // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @HasF.impl: %Self.ref as %HasF.ref { -// CHECK:STDOUT: %F.decl: %F.type.a65 = fn_decl @F.loc11 [concrete = constants.%F.ad8] {} {} +// CHECK:STDOUT: impl @C.as.HasF.impl: %Self.ref as %HasF.ref { +// CHECK:STDOUT: %C.as.HasF.impl.F.decl: %C.as.HasF.impl.F.type = fn_decl @C.as.HasF.impl.F [concrete = constants.%C.as.HasF.impl.F] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %C.as.HasF.impl.F.decl // CHECK:STDOUT: witness = @C.%HasF.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: impl_decl @HasF.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.HasF.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] // CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [concrete = constants.%HasF.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %HasF.impl_witness_table = impl_witness_table (@HasF.impl.%F.decl), @HasF.impl [concrete] +// CHECK:STDOUT: %HasF.impl_witness_table = impl_witness_table (@C.as.HasF.impl.%C.as.HasF.impl.F.decl), @C.as.HasF.impl [concrete] // CHECK:STDOUT: %HasF.impl_witness: = impl_witness %HasF.impl_witness_table [concrete = constants.%HasF.impl_witness] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] @@ -95,10 +95,10 @@ extend impl nonexistent* as I {} // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .HasF = // CHECK:STDOUT: .F = -// CHECK:STDOUT: extend @HasF.impl.%HasF.ref +// CHECK:STDOUT: extend @C.as.HasF.impl.%HasF.ref // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc11() { +// CHECK:STDOUT: fn @C.as.HasF.impl.F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/extend_impl_generic.carbon b/toolchain/check/testdata/impl/extend_impl_generic.carbon index ea5a47c9fdae..e2766865f4f6 100644 --- a/toolchain/check/testdata/impl/extend_impl_generic.carbon +++ b/toolchain/check/testdata/impl/extend_impl_generic.carbon @@ -62,10 +62,10 @@ class X(U:! type) { // CHECK:STDOUT: %HasF.type.901: type = facet_type <@HasF, @HasF(%T)> [symbolic] // CHECK:STDOUT: %Self.322: %HasF.type.901 = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %pattern_type.7dcd0a.1: type = pattern_type %T [symbolic] -// CHECK:STDOUT: %F.type.46c: type = fn_type @F.loc5, @HasF(%T) [symbolic] -// CHECK:STDOUT: %F.823: %F.type.46c = struct_value () [symbolic] +// CHECK:STDOUT: %HasF.F.type.46c: type = fn_type @HasF.F, @HasF(%T) [symbolic] +// CHECK:STDOUT: %HasF.F.823: %HasF.F.type.46c = struct_value () [symbolic] // CHECK:STDOUT: %HasF.assoc_type.dd8: type = assoc_entity_type @HasF, @HasF(%T) [symbolic] -// CHECK:STDOUT: %assoc0.d31: %HasF.assoc_type.dd8 = assoc_entity element0, @HasF.%F.decl [symbolic] +// CHECK:STDOUT: %assoc0.d31: %HasF.assoc_type.dd8 = assoc_entity element0, @HasF.%HasF.F.decl [symbolic] // CHECK:STDOUT: %Param: type = class_type @Param [concrete] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] @@ -77,14 +77,14 @@ class X(U:! type) { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %HasF.type.b18: type = facet_type <@HasF, @HasF(%Param)> [concrete] // CHECK:STDOUT: %Self.a41: %HasF.type.b18 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %F.type.7f1: type = fn_type @F.loc5, @HasF(%Param) [concrete] -// CHECK:STDOUT: %F.eff: %F.type.7f1 = struct_value () [concrete] +// CHECK:STDOUT: %HasF.F.type.7f1: type = fn_type @HasF.F, @HasF(%Param) [concrete] +// CHECK:STDOUT: %HasF.F.eff: %HasF.F.type.7f1 = struct_value () [concrete] // CHECK:STDOUT: %HasF.assoc_type.257: type = assoc_entity_type @HasF, @HasF(%Param) [concrete] -// CHECK:STDOUT: %assoc0.afb: %HasF.assoc_type.257 = assoc_entity element0, @HasF.%F.decl [concrete] +// CHECK:STDOUT: %assoc0.afb: %HasF.assoc_type.257 = assoc_entity element0, @HasF.%HasF.F.decl [concrete] // CHECK:STDOUT: %HasF.impl_witness: = impl_witness @C.%HasF.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.b01: type = pattern_type %Param [concrete] -// CHECK:STDOUT: %F.type.94c: type = fn_type @F.loc14 [concrete] -// CHECK:STDOUT: %F.901: %F.type.94c = struct_value () [concrete] +// CHECK:STDOUT: %C.as.HasF.impl.F.type: type = fn_type @C.as.HasF.impl.F [concrete] +// CHECK:STDOUT: %C.as.HasF.impl.F: %C.as.HasF.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %HasF.facet: %HasF.type.b18 = facet_value %C, (%HasF.impl_witness) [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] @@ -93,34 +93,34 @@ class X(U:! type) { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_2.ecc, %Convert.956 [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %Param.val: %Param = struct_value (%int_2.ef8) [concrete] // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] -// CHECK:STDOUT: %.22c: type = fn_type_with_self_type %F.type.7f1, %HasF.facet [concrete] +// CHECK:STDOUT: %.22c: type = fn_type_with_self_type %HasF.F.type.7f1, %HasF.facet [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.70d: type = fn_type @Op.2, @Destroy.impl(%Param) [concrete] -// CHECK:STDOUT: %Op.e46: %Op.type.70d = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.70d: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%Param) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.e46: %T.as.Destroy.impl.Op.type.70d = struct_value () [concrete] // CHECK:STDOUT: %ptr.756: type = ptr_type %Param [concrete] -// CHECK:STDOUT: %Op.specific_fn.022: = specific_function %Op.e46, @Op.2(%Param) [concrete] -// CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.2, @Destroy.impl(%i32) [concrete] -// CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.022: = specific_function %T.as.Destroy.impl.Op.e46, @T.as.Destroy.impl.Op(%Param) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a17: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.e6a: %T.as.Destroy.impl.Op.type.a17 = struct_value () [concrete] // CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] -// CHECK:STDOUT: %Op.specific_fn.014: = specific_function %Op.e6a, @Op.2(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.014: = specific_function %T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(%i32) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -133,8 +133,8 @@ class X(U:! type) { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -170,34 +170,34 @@ class X(U:! type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %HasF.type: type = facet_type <@HasF, @HasF(%T.loc4_16.1)> [symbolic = %HasF.type (constants.%HasF.type.901)] // CHECK:STDOUT: %Self.2: @HasF.%HasF.type (%HasF.type.901) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.322)] -// CHECK:STDOUT: %F.type: type = fn_type @F.loc5, @HasF(%T.loc4_16.1) [symbolic = %F.type (constants.%F.type.46c)] -// CHECK:STDOUT: %F: @HasF.%F.type (%F.type.46c) = struct_value () [symbolic = %F (constants.%F.823)] +// CHECK:STDOUT: %HasF.F.type: type = fn_type @HasF.F, @HasF(%T.loc4_16.1) [symbolic = %HasF.F.type (constants.%HasF.F.type.46c)] +// CHECK:STDOUT: %HasF.F: @HasF.%HasF.F.type (%HasF.F.type.46c) = struct_value () [symbolic = %HasF.F (constants.%HasF.F.823)] // CHECK:STDOUT: %HasF.assoc_type: type = assoc_entity_type @HasF, @HasF(%T.loc4_16.1) [symbolic = %HasF.assoc_type (constants.%HasF.assoc_type.dd8)] -// CHECK:STDOUT: %assoc0.loc5_14.2: @HasF.%HasF.assoc_type (%HasF.assoc_type.dd8) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc5_14.2 (constants.%assoc0.d31)] +// CHECK:STDOUT: %assoc0.loc5_14.2: @HasF.%HasF.assoc_type (%HasF.assoc_type.dd8) = assoc_entity element0, %HasF.F.decl [symbolic = %assoc0.loc5_14.2 (constants.%assoc0.d31)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: %Self.1: @HasF.%HasF.type (%HasF.type.901) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.322)] -// CHECK:STDOUT: %F.decl: @HasF.%F.type (%F.type.46c) = fn_decl @F.loc5 [symbolic = @HasF.%F (constants.%F.823)] { -// CHECK:STDOUT: %return.patt: @F.loc5.%pattern_type (%pattern_type.7dcd0a.1) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @F.loc5.%pattern_type (%pattern_type.7dcd0a.1) = out_param_pattern %return.patt, call_param0 [concrete] +// CHECK:STDOUT: %HasF.F.decl: @HasF.%HasF.F.type (%HasF.F.type.46c) = fn_decl @HasF.F [symbolic = @HasF.%HasF.F (constants.%HasF.F.823)] { +// CHECK:STDOUT: %return.patt: @HasF.F.%pattern_type (%pattern_type.7dcd0a.1) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @HasF.F.%pattern_type (%pattern_type.7dcd0a.1) = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, @HasF.%T.loc4_16.2 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %return.param: ref @F.loc5.%T (%T) = out_param call_param0 -// CHECK:STDOUT: %return: ref @F.loc5.%T (%T) = return_slot %return.param +// CHECK:STDOUT: %return.param: ref @HasF.F.%T (%T) = out_param call_param0 +// CHECK:STDOUT: %return: ref @HasF.F.%T (%T) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0.loc5_14.1: @HasF.%HasF.assoc_type (%HasF.assoc_type.dd8) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc5_14.2 (constants.%assoc0.d31)] +// CHECK:STDOUT: %assoc0.loc5_14.1: @HasF.%HasF.assoc_type (%HasF.assoc_type.dd8) = assoc_entity element0, %HasF.F.decl [symbolic = %assoc0.loc5_14.2 (constants.%assoc0.d31)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 // CHECK:STDOUT: .T = // CHECK:STDOUT: .F = %assoc0.loc5_14.1 // CHECK:STDOUT: .Param = -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%HasF.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @HasF.impl: %Self.ref as %HasF.type { -// CHECK:STDOUT: %F.decl: %F.type.94c = fn_decl @F.loc14 [concrete = constants.%F.901] { +// CHECK:STDOUT: impl @C.as.HasF.impl: %Self.ref as %HasF.type { +// CHECK:STDOUT: %C.as.HasF.impl.F.decl: %C.as.HasF.impl.F.type = fn_decl @C.as.HasF.impl.F [concrete = constants.%C.as.HasF.impl.F] { // CHECK:STDOUT: %return.patt: %pattern_type.b01 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.b01 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -208,7 +208,7 @@ class X(U:! type) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Param = -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %C.as.HasF.impl.F.decl // CHECK:STDOUT: witness = @C.%HasF.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: @@ -226,13 +226,13 @@ class X(U:! type) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: impl_decl @HasF.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.HasF.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] // CHECK:STDOUT: %HasF.ref: %HasF.type.fe3 = name_ref HasF, file.%HasF.decl [concrete = constants.%HasF.generic] // CHECK:STDOUT: %Param.ref: type = name_ref Param, file.%Param.decl [concrete = constants.%Param] // CHECK:STDOUT: %HasF.type: type = facet_type <@HasF, @HasF(constants.%Param)> [concrete = constants.%HasF.type.b18] // CHECK:STDOUT: } -// CHECK:STDOUT: %HasF.impl_witness_table = impl_witness_table (@HasF.impl.%F.decl), @HasF.impl [concrete] +// CHECK:STDOUT: %HasF.impl_witness_table = impl_witness_table (@C.as.HasF.impl.%C.as.HasF.impl.F.decl), @C.as.HasF.impl [concrete] // CHECK:STDOUT: %HasF.impl_witness: = impl_witness %HasF.impl_witness_table [concrete = constants.%HasF.impl_witness] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] @@ -243,26 +243,26 @@ class X(U:! type) { // CHECK:STDOUT: .HasF = // CHECK:STDOUT: .Param = // CHECK:STDOUT: .F = -// CHECK:STDOUT: extend @HasF.impl.%HasF.type +// CHECK:STDOUT: extend @C.as.HasF.impl.%HasF.type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc5(@HasF.%T.loc4_16.2: type, @HasF.%Self.1: @HasF.%HasF.type (%HasF.type.901)) { +// CHECK:STDOUT: generic fn @HasF.F(@HasF.%T.loc4_16.2: type, @HasF.%Self.1: @HasF.%HasF.type (%HasF.type.901)) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %pattern_type: type = pattern_type %T [symbolic = %pattern_type (constants.%pattern_type.7dcd0a.1)] // CHECK:STDOUT: -// CHECK:STDOUT: fn() -> @F.loc5.%T (%T); +// CHECK:STDOUT: fn() -> @HasF.F.%T (%T); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc14() -> %return.param: %Param { +// CHECK:STDOUT: fn @C.as.HasF.impl.F() -> %return.param: %Param { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %.loc15_21.1: %struct_type.x.c96 = struct_literal (%int_2) -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc15_21.1: = bound_method %int_2, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc15_21.1: = bound_method %int_2, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc15_21.2: = bound_method %int_2, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc15_21.2(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc15_21.2: init %i32 = converted %int_2, %int.convert_checked [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc15_21.2(%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc15_21.2: init %i32 = converted %int_2, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc15_21.3: ref %i32 = class_element_access %return, element0 // CHECK:STDOUT: %.loc15_21.4: init %i32 = initialize_from %.loc15_21.2 to %.loc15_21.3 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc15_21.5: init %Param = class_init (%.loc15_21.4), %return [concrete = constants.%Param.val] @@ -278,10 +278,10 @@ class X(U:! type) { // CHECK:STDOUT: %C.ref.loc21: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %.loc21_17: %HasF.assoc_type.257 = specific_constant @HasF.%assoc0.loc5_14.1, @HasF(constants.%Param) [concrete = constants.%assoc0.afb] // CHECK:STDOUT: %F.ref.loc21: %HasF.assoc_type.257 = name_ref F, %.loc21_17 [concrete = constants.%assoc0.afb] -// CHECK:STDOUT: %impl.elem0.loc21: %.22c = impl_witness_access constants.%HasF.impl_witness, element0 [concrete = constants.%F.901] +// CHECK:STDOUT: %impl.elem0.loc21: %.22c = impl_witness_access constants.%HasF.impl_witness, element0 [concrete = constants.%C.as.HasF.impl.F] // CHECK:STDOUT: %.loc21_20.1: ref %Param = temporary_storage -// CHECK:STDOUT: %F.call.loc21: init %Param = call %impl.elem0.loc21() to %.loc21_20.1 -// CHECK:STDOUT: %.loc21_20.2: ref %Param = temporary %.loc21_20.1, %F.call.loc21 +// CHECK:STDOUT: %C.as.HasF.impl.F.call.loc21: init %Param = call %impl.elem0.loc21() to %.loc21_20.1 +// CHECK:STDOUT: %.loc21_20.2: ref %Param = temporary %.loc21_20.1, %C.as.HasF.impl.F.call.loc21 // CHECK:STDOUT: %x.ref.loc21: %Param.elem = name_ref x, @Param.%.loc9 [concrete = @Param.%.loc9] // CHECK:STDOUT: %.loc21_21.1: ref %i32 = class_element_access %.loc21_20.2, element0 // CHECK:STDOUT: %.loc21_10: type = splice_block %i32.loc21 [concrete = constants.%i32] { @@ -298,10 +298,10 @@ class X(U:! type) { // CHECK:STDOUT: %c.ref: %C = name_ref c, %c // CHECK:STDOUT: %.loc22_17: %HasF.assoc_type.257 = specific_constant @HasF.%assoc0.loc5_14.1, @HasF(constants.%Param) [concrete = constants.%assoc0.afb] // CHECK:STDOUT: %F.ref.loc22: %HasF.assoc_type.257 = name_ref F, %.loc22_17 [concrete = constants.%assoc0.afb] -// CHECK:STDOUT: %impl.elem0.loc22: %.22c = impl_witness_access constants.%HasF.impl_witness, element0 [concrete = constants.%F.901] +// CHECK:STDOUT: %impl.elem0.loc22: %.22c = impl_witness_access constants.%HasF.impl_witness, element0 [concrete = constants.%C.as.HasF.impl.F] // CHECK:STDOUT: %.loc22_20.1: ref %Param = temporary_storage -// CHECK:STDOUT: %F.call.loc22: init %Param = call %impl.elem0.loc22() to %.loc22_20.1 -// CHECK:STDOUT: %.loc22_20.2: ref %Param = temporary %.loc22_20.1, %F.call.loc22 +// CHECK:STDOUT: %C.as.HasF.impl.F.call.loc22: init %Param = call %impl.elem0.loc22() to %.loc22_20.1 +// CHECK:STDOUT: %.loc22_20.2: ref %Param = temporary %.loc22_20.1, %C.as.HasF.impl.F.call.loc22 // CHECK:STDOUT: %x.ref.loc22: %Param.elem = name_ref x, @Param.%.loc9 [concrete = @Param.%.loc9] // CHECK:STDOUT: %.loc22_21.1: ref %i32 = class_element_access %.loc22_20.2, element0 // CHECK:STDOUT: %.loc22_21.2: %i32 = bind_value %.loc22_21.1 @@ -311,21 +311,21 @@ class X(U:! type) { // CHECK:STDOUT: %i32.loc22: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var -// CHECK:STDOUT: %Op.bound.loc22_20: = bound_method %.loc22_20.1, constants.%Op.e46 -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.e46, @Op.2(constants.%Param) [concrete = constants.%Op.specific_fn.022] -// CHECK:STDOUT: %bound_method.loc22_20: = bound_method %.loc22_20.1, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc22_20: = bound_method %.loc22_20.1, constants.%T.as.Destroy.impl.Op.e46 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.e46, @T.as.Destroy.impl.Op(constants.%Param) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.022] +// CHECK:STDOUT: %bound_method.loc22_20: = bound_method %.loc22_20.1, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc22_20: %ptr.756 = addr_of %.loc22_20.1 -// CHECK:STDOUT: %no_op.loc22_20: init %empty_tuple.type = call %bound_method.loc22_20(%addr.loc22_20) -// CHECK:STDOUT: %Op.bound.loc22_3: = bound_method %b.var, constants.%Op.e6a -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.e6a, @Op.2(constants.%i32) [concrete = constants.%Op.specific_fn.014] -// CHECK:STDOUT: %bound_method.loc22_3: = bound_method %b.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc22_20: init %empty_tuple.type = call %bound_method.loc22_20(%addr.loc22_20) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc22_3: = bound_method %b.var, constants.%T.as.Destroy.impl.Op.e6a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.014] +// CHECK:STDOUT: %bound_method.loc22_3: = bound_method %b.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc22_3: %ptr.235 = addr_of %b.var -// CHECK:STDOUT: %no_op.loc22_3: init %empty_tuple.type = call %bound_method.loc22_3(%addr.loc22_3) -// CHECK:STDOUT: %Op.bound.loc21: = bound_method %.loc21_20.1, constants.%Op.e46 -// CHECK:STDOUT: %Op.specific_fn.3: = specific_function constants.%Op.e46, @Op.2(constants.%Param) [concrete = constants.%Op.specific_fn.022] -// CHECK:STDOUT: %bound_method.loc21: = bound_method %.loc21_20.1, %Op.specific_fn.3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc22_3: init %empty_tuple.type = call %bound_method.loc22_3(%addr.loc22_3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc21: = bound_method %.loc21_20.1, constants.%T.as.Destroy.impl.Op.e46 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.3: = specific_function constants.%T.as.Destroy.impl.Op.e46, @T.as.Destroy.impl.Op(constants.%Param) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.022] +// CHECK:STDOUT: %bound_method.loc21: = bound_method %.loc21_20.1, %T.as.Destroy.impl.Op.specific_fn.3 // CHECK:STDOUT: %addr.loc21: %ptr.756 = addr_of %.loc21_20.1 -// CHECK:STDOUT: %no_op.loc21: init %empty_tuple.type = call %bound_method.loc21(%addr.loc21) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc21: init %empty_tuple.type = call %bound_method.loc21(%addr.loc21) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -333,7 +333,7 @@ class X(U:! type) { // CHECK:STDOUT: %T.loc4_16.1 => constants.%T // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%T, constants.%Self.322) { +// CHECK:STDOUT: specific @HasF.F(constants.%T, constants.%Self.322) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7dcd0a.1 // CHECK:STDOUT: } @@ -344,13 +344,13 @@ class X(U:! type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %HasF.type => constants.%HasF.type.b18 // CHECK:STDOUT: %Self.2 => constants.%Self.a41 -// CHECK:STDOUT: %F.type => constants.%F.type.7f1 -// CHECK:STDOUT: %F => constants.%F.eff +// CHECK:STDOUT: %HasF.F.type => constants.%HasF.F.type.7f1 +// CHECK:STDOUT: %HasF.F => constants.%HasF.F.eff // CHECK:STDOUT: %HasF.assoc_type => constants.%HasF.assoc_type.257 // CHECK:STDOUT: %assoc0.loc5_14.2 => constants.%assoc0.afb // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%Param, constants.%HasF.facet) { +// CHECK:STDOUT: specific @HasF.F(constants.%Param, constants.%HasF.facet) { // CHECK:STDOUT: %T => constants.%Param // CHECK:STDOUT: %pattern_type => constants.%pattern_type.b01 // CHECK:STDOUT: } @@ -367,26 +367,26 @@ class X(U:! type) { // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self.209206.1 [symbolic] // CHECK:STDOUT: %pattern_type.4be: type = pattern_type %Self.as_type [symbolic] // CHECK:STDOUT: %pattern_type.7dcd0a.1: type = pattern_type %T [symbolic] -// CHECK:STDOUT: %F.type.2aef59.1: type = fn_type @F.loc5, @I(%T) [symbolic] -// CHECK:STDOUT: %F.bb2dd4.1: %F.type.2aef59.1 = struct_value () [symbolic] +// CHECK:STDOUT: %I.F.type.2aef59.1: type = fn_type @I.F, @I(%T) [symbolic] +// CHECK:STDOUT: %I.F.bb2dd4.1: %I.F.type.2aef59.1 = struct_value () [symbolic] // CHECK:STDOUT: %I.assoc_type.1e5078.1: type = assoc_entity_type @I, @I(%T) [symbolic] -// CHECK:STDOUT: %assoc0.8f0422.1: %I.assoc_type.1e5078.1 = assoc_entity element0, @I.%F.decl [symbolic] +// CHECK:STDOUT: %assoc0.8f0422.1: %I.assoc_type.1e5078.1 = assoc_entity element0, @I.%I.F.decl [symbolic] // CHECK:STDOUT: %U: type = bind_symbolic_name U, 0 [symbolic] // CHECK:STDOUT: %X.type: type = generic_class_type @X [concrete] // CHECK:STDOUT: %X.generic: %X.type = struct_value () [concrete] // CHECK:STDOUT: %X: type = class_type @X, @X(%U) [symbolic] // CHECK:STDOUT: %I.type.325e65.2: type = facet_type <@I, @I(%U)> [symbolic] // CHECK:STDOUT: %Self.209206.2: %I.type.325e65.2 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %F.type.2aef59.2: type = fn_type @F.loc5, @I(%U) [symbolic] -// CHECK:STDOUT: %F.bb2dd4.2: %F.type.2aef59.2 = struct_value () [symbolic] +// CHECK:STDOUT: %I.F.type.2aef59.2: type = fn_type @I.F, @I(%U) [symbolic] +// CHECK:STDOUT: %I.F.bb2dd4.2: %I.F.type.2aef59.2 = struct_value () [symbolic] // CHECK:STDOUT: %I.assoc_type.1e5078.2: type = assoc_entity_type @I, @I(%U) [symbolic] -// CHECK:STDOUT: %assoc0.8f0422.2: %I.assoc_type.1e5078.2 = assoc_entity element0, @I.%F.decl [symbolic] +// CHECK:STDOUT: %assoc0.8f0422.2: %I.assoc_type.1e5078.2 = assoc_entity element0, @I.%I.F.decl [symbolic] // CHECK:STDOUT: %require_complete.cfe: = require_complete_type %I.type.325e65.2 [symbolic] -// CHECK:STDOUT: %I.impl_witness: = impl_witness @X.%I.impl_witness_table, @I.impl(%U) [symbolic] +// CHECK:STDOUT: %I.impl_witness: = impl_witness @X.%I.impl_witness_table, @X.as.I.impl(%U) [symbolic] // CHECK:STDOUT: %pattern_type.830: type = pattern_type %X [symbolic] // CHECK:STDOUT: %pattern_type.7dcd0a.2: type = pattern_type %U [symbolic] -// CHECK:STDOUT: %F.type.e88: type = fn_type @F.loc10, @I.impl(%U) [symbolic] -// CHECK:STDOUT: %F.b02: %F.type.e88 = struct_value () [symbolic] +// CHECK:STDOUT: %X.as.I.impl.F.type: type = fn_type @X.as.I.impl.F, @X.as.I.impl(%U) [symbolic] +// CHECK:STDOUT: %X.as.I.impl.F: %X.as.I.impl.F.type = struct_value () [symbolic] // CHECK:STDOUT: %I.facet: %I.type.325e65.2 = facet_value %X, (%I.impl_witness) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] @@ -426,74 +426,74 @@ class X(U:! type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T.loc4_13.1)> [symbolic = %I.type (constants.%I.type.325e65.1)] // CHECK:STDOUT: %Self.2: @I.%I.type (%I.type.325e65.1) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.209206.1)] -// CHECK:STDOUT: %F.type: type = fn_type @F.loc5, @I(%T.loc4_13.1) [symbolic = %F.type (constants.%F.type.2aef59.1)] -// CHECK:STDOUT: %F: @I.%F.type (%F.type.2aef59.1) = struct_value () [symbolic = %F (constants.%F.bb2dd4.1)] +// CHECK:STDOUT: %I.F.type: type = fn_type @I.F, @I(%T.loc4_13.1) [symbolic = %I.F.type (constants.%I.F.type.2aef59.1)] +// CHECK:STDOUT: %I.F: @I.%I.F.type (%I.F.type.2aef59.1) = struct_value () [symbolic = %I.F (constants.%I.F.bb2dd4.1)] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I, @I(%T.loc4_13.1) [symbolic = %I.assoc_type (constants.%I.assoc_type.1e5078.1)] -// CHECK:STDOUT: %assoc0.loc5_25.2: @I.%I.assoc_type (%I.assoc_type.1e5078.1) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc5_25.2 (constants.%assoc0.8f0422.1)] +// CHECK:STDOUT: %assoc0.loc5_25.2: @I.%I.assoc_type (%I.assoc_type.1e5078.1) = assoc_entity element0, %I.F.decl [symbolic = %assoc0.loc5_25.2 (constants.%assoc0.8f0422.1)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: %Self.1: @I.%I.type (%I.type.325e65.1) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.209206.1)] -// CHECK:STDOUT: %F.decl: @I.%F.type (%F.type.2aef59.1) = fn_decl @F.loc5 [symbolic = @I.%F (constants.%F.bb2dd4.1)] { -// CHECK:STDOUT: %self.patt: @F.loc5.%pattern_type.loc5_8 (%pattern_type.4be) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.loc5.%pattern_type.loc5_8 (%pattern_type.4be) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %t.patt: @F.loc5.%pattern_type.loc5_20 (%pattern_type.7dcd0a.1) = binding_pattern t [concrete] -// CHECK:STDOUT: %t.param_patt: @F.loc5.%pattern_type.loc5_20 (%pattern_type.7dcd0a.1) = value_param_pattern %t.patt, call_param1 [concrete] +// CHECK:STDOUT: %I.F.decl: @I.%I.F.type (%I.F.type.2aef59.1) = fn_decl @I.F [symbolic = @I.%I.F (constants.%I.F.bb2dd4.1)] { +// CHECK:STDOUT: %self.patt: @I.F.%pattern_type.loc5_8 (%pattern_type.4be) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @I.F.%pattern_type.loc5_8 (%pattern_type.4be) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %t.patt: @I.F.%pattern_type.loc5_20 (%pattern_type.7dcd0a.1) = binding_pattern t [concrete] +// CHECK:STDOUT: %t.param_patt: @I.F.%pattern_type.loc5_20 (%pattern_type.7dcd0a.1) = value_param_pattern %t.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @F.loc5.%Self.as_type.loc5_14.2 (%Self.as_type) = value_param call_param0 -// CHECK:STDOUT: %.loc5_14.1: type = splice_block %.loc5_14.3 [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type)] { -// CHECK:STDOUT: %.loc5_14.2: @F.loc5.%I.type (%I.type.325e65.1) = specific_constant @I.%Self.1, @I(constants.%T) [symbolic = %Self (constants.%Self.209206.1)] -// CHECK:STDOUT: %Self.ref: @F.loc5.%I.type (%I.type.325e65.1) = name_ref Self, %.loc5_14.2 [symbolic = %Self (constants.%Self.209206.1)] -// CHECK:STDOUT: %Self.as_type.loc5_14.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc5_14.3: type = converted %Self.ref, %Self.as_type.loc5_14.1 [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type)] +// CHECK:STDOUT: %self.param: @I.F.%Self.as_type.loc5_14.1 (%Self.as_type) = value_param call_param0 +// CHECK:STDOUT: %.loc5_14.1: type = splice_block %.loc5_14.3 [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] { +// CHECK:STDOUT: %.loc5_14.2: @I.F.%I.type (%I.type.325e65.1) = specific_constant @I.%Self.1, @I(constants.%T) [symbolic = %Self (constants.%Self.209206.1)] +// CHECK:STDOUT: %Self.ref: @I.F.%I.type (%I.type.325e65.1) = name_ref Self, %.loc5_14.2 [symbolic = %Self (constants.%Self.209206.1)] +// CHECK:STDOUT: %Self.as_type.loc5_14.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc5_14.3: type = converted %Self.ref, %Self.as_type.loc5_14.2 [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.loc5.%Self.as_type.loc5_14.2 (%Self.as_type) = bind_name self, %self.param -// CHECK:STDOUT: %t.param: @F.loc5.%T (%T) = value_param call_param1 +// CHECK:STDOUT: %self: @I.F.%Self.as_type.loc5_14.1 (%Self.as_type) = bind_name self, %self.param +// CHECK:STDOUT: %t.param: @I.F.%T (%T) = value_param call_param1 // CHECK:STDOUT: %T.ref: type = name_ref T, @I.%T.loc4_13.2 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %t: @F.loc5.%T (%T) = bind_name t, %t.param +// CHECK:STDOUT: %t: @I.F.%T (%T) = bind_name t, %t.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0.loc5_25.1: @I.%I.assoc_type (%I.assoc_type.1e5078.1) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc5_25.2 (constants.%assoc0.8f0422.1)] +// CHECK:STDOUT: %assoc0.loc5_25.1: @I.%I.assoc_type (%I.assoc_type.1e5078.1) = assoc_entity element0, %I.F.decl [symbolic = %assoc0.loc5_25.2 (constants.%assoc0.8f0422.1)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 // CHECK:STDOUT: .T = // CHECK:STDOUT: .F = %assoc0.loc5_25.1 // CHECK:STDOUT: .U = -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%I.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @I.impl(@X.%U.loc8_9.2: type) { +// CHECK:STDOUT: generic impl @X.as.I.impl(@X.%U.loc8_9.2: type) { // CHECK:STDOUT: %U: type = bind_symbolic_name U, 0 [symbolic = %U (constants.%U)] // CHECK:STDOUT: %X: type = class_type @X, @X(%U) [symbolic = %X (constants.%X)] -// CHECK:STDOUT: %I.type.loc9_21.2: type = facet_type <@I, @I(%U)> [symbolic = %I.type.loc9_21.2 (constants.%I.type.325e65.2)] -// CHECK:STDOUT: %require_complete: = require_complete_type %I.type.loc9_21.2 [symbolic = %require_complete (constants.%require_complete.cfe)] -// CHECK:STDOUT: %I.impl_witness: = impl_witness @X.%I.impl_witness_table, @I.impl(%U) [symbolic = %I.impl_witness (constants.%I.impl_witness)] +// CHECK:STDOUT: %I.type.loc9_21.1: type = facet_type <@I, @I(%U)> [symbolic = %I.type.loc9_21.1 (constants.%I.type.325e65.2)] +// CHECK:STDOUT: %require_complete: = require_complete_type %I.type.loc9_21.1 [symbolic = %require_complete (constants.%require_complete.cfe)] +// CHECK:STDOUT: %I.impl_witness: = impl_witness @X.%I.impl_witness_table, @X.as.I.impl(%U) [symbolic = %I.impl_witness (constants.%I.impl_witness)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type: type = fn_type @F.loc10, @I.impl(%U) [symbolic = %F.type (constants.%F.type.e88)] -// CHECK:STDOUT: %F: @I.impl.%F.type (%F.type.e88) = struct_value () [symbolic = %F (constants.%F.b02)] +// CHECK:STDOUT: %X.as.I.impl.F.type: type = fn_type @X.as.I.impl.F, @X.as.I.impl(%U) [symbolic = %X.as.I.impl.F.type (constants.%X.as.I.impl.F.type)] +// CHECK:STDOUT: %X.as.I.impl.F: @X.as.I.impl.%X.as.I.impl.F.type (%X.as.I.impl.F.type) = struct_value () [symbolic = %X.as.I.impl.F (constants.%X.as.I.impl.F)] // CHECK:STDOUT: -// CHECK:STDOUT: impl: %Self.ref as %I.type.loc9_21.1 { -// CHECK:STDOUT: %F.decl: @I.impl.%F.type (%F.type.e88) = fn_decl @F.loc10 [symbolic = @I.impl.%F (constants.%F.b02)] { -// CHECK:STDOUT: %self.patt: @F.loc10.%pattern_type.loc10_10 (%pattern_type.830) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.loc10.%pattern_type.loc10_10 (%pattern_type.830) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %t.patt: @F.loc10.%pattern_type.loc10_22 (%pattern_type.7dcd0a.2) = binding_pattern t [concrete] -// CHECK:STDOUT: %t.param_patt: @F.loc10.%pattern_type.loc10_22 (%pattern_type.7dcd0a.2) = value_param_pattern %t.patt, call_param1 [concrete] +// CHECK:STDOUT: impl: %Self.ref as %I.type.loc9_21.2 { +// CHECK:STDOUT: %X.as.I.impl.F.decl: @X.as.I.impl.%X.as.I.impl.F.type (%X.as.I.impl.F.type) = fn_decl @X.as.I.impl.F [symbolic = @X.as.I.impl.%X.as.I.impl.F (constants.%X.as.I.impl.F)] { +// CHECK:STDOUT: %self.patt: @X.as.I.impl.F.%pattern_type.loc10_10 (%pattern_type.830) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @X.as.I.impl.F.%pattern_type.loc10_10 (%pattern_type.830) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %t.patt: @X.as.I.impl.F.%pattern_type.loc10_22 (%pattern_type.7dcd0a.2) = binding_pattern t [concrete] +// CHECK:STDOUT: %t.param_patt: @X.as.I.impl.F.%pattern_type.loc10_22 (%pattern_type.7dcd0a.2) = value_param_pattern %t.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @F.loc10.%X (%X) = value_param call_param0 +// CHECK:STDOUT: %self.param: @X.as.I.impl.F.%X (%X) = value_param call_param0 // CHECK:STDOUT: %.loc10_16.1: type = splice_block %Self.ref [symbolic = %X (constants.%X)] { // CHECK:STDOUT: %.loc10_16.2: type = specific_constant constants.%X, @X(constants.%U) [symbolic = %X (constants.%X)] // CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc10_16.2 [symbolic = %X (constants.%X)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.loc10.%X (%X) = bind_name self, %self.param -// CHECK:STDOUT: %t.param: @F.loc10.%U (%U) = value_param call_param1 +// CHECK:STDOUT: %self: @X.as.I.impl.F.%X (%X) = bind_name self, %self.param +// CHECK:STDOUT: %t.param: @X.as.I.impl.F.%U (%U) = value_param call_param1 // CHECK:STDOUT: %U.ref: type = name_ref U, @X.%U.loc8_9.2 [symbolic = %U (constants.%U)] -// CHECK:STDOUT: %t: @F.loc10.%U (%U) = bind_name t, %t.param +// CHECK:STDOUT: %t: @X.as.I.impl.F.%U (%U) = bind_name t, %t.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .U = -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %X.as.I.impl.F.decl // CHECK:STDOUT: witness = @X.%I.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -506,15 +506,15 @@ class X(U:! type) { // CHECK:STDOUT: %require_complete: = require_complete_type %I.type [symbolic = %require_complete (constants.%require_complete.cfe)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @X.as.I.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%X [symbolic = %X (constants.%X)] // CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, file.%I.decl [concrete = constants.%I.generic] // CHECK:STDOUT: %U.ref: type = name_ref U, @X.%U.loc8_9.2 [symbolic = %U (constants.%U)] -// CHECK:STDOUT: %I.type.loc9_21.1: type = facet_type <@I, @I(constants.%U)> [symbolic = %I.type.loc9_21.2 (constants.%I.type.325e65.2)] +// CHECK:STDOUT: %I.type.loc9_21.2: type = facet_type <@I, @I(constants.%U)> [symbolic = %I.type.loc9_21.1 (constants.%I.type.325e65.2)] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (@I.impl.%F.decl), @I.impl [concrete] -// CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table, @I.impl(constants.%U) [symbolic = @I.impl.%I.impl_witness (constants.%I.impl_witness)] -// CHECK:STDOUT: %.loc9: type = specific_constant @I.impl.%I.type.loc9_21.1, @I.impl(constants.%U) [symbolic = %I.type (constants.%I.type.325e65.2)] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (@X.as.I.impl.%X.as.I.impl.F.decl), @X.as.I.impl [concrete] +// CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table, @X.as.I.impl(constants.%U) [symbolic = @X.as.I.impl.%I.impl_witness (constants.%I.impl_witness)] +// CHECK:STDOUT: %.loc9: type = specific_constant @X.as.I.impl.%I.type.loc9_21.2, @X.as.I.impl(constants.%U) [symbolic = %I.type (constants.%I.type.325e65.2)] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type @@ -527,18 +527,18 @@ class X(U:! type) { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc5(@I.%T.loc4_13.2: type, @I.%Self.1: @I.%I.type (%I.type.325e65.1)) { +// CHECK:STDOUT: generic fn @I.F(@I.%T.loc4_13.2: type, @I.%Self.1: @I.%I.type (%I.type.325e65.1)) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T)> [symbolic = %I.type (constants.%I.type.325e65.1)] -// CHECK:STDOUT: %Self: @F.loc5.%I.type (%I.type.325e65.1) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.209206.1)] -// CHECK:STDOUT: %Self.as_type.loc5_14.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %pattern_type.loc5_8: type = pattern_type %Self.as_type.loc5_14.2 [symbolic = %pattern_type.loc5_8 (constants.%pattern_type.4be)] +// CHECK:STDOUT: %Self: @I.F.%I.type (%I.type.325e65.1) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.209206.1)] +// CHECK:STDOUT: %Self.as_type.loc5_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %pattern_type.loc5_8: type = pattern_type %Self.as_type.loc5_14.1 [symbolic = %pattern_type.loc5_8 (constants.%pattern_type.4be)] // CHECK:STDOUT: %pattern_type.loc5_20: type = pattern_type %T [symbolic = %pattern_type.loc5_20 (constants.%pattern_type.7dcd0a.1)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @F.loc5.%Self.as_type.loc5_14.2 (%Self.as_type), %t.param: @F.loc5.%T (%T)); +// CHECK:STDOUT: fn(%self.param: @I.F.%Self.as_type.loc5_14.1 (%Self.as_type), %t.param: @I.F.%T (%T)); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc10(@X.%U.loc8_9.2: type) { +// CHECK:STDOUT: generic fn @X.as.I.impl.F(@X.%U.loc8_9.2: type) { // CHECK:STDOUT: %U: type = bind_symbolic_name U, 0 [symbolic = %U (constants.%U)] // CHECK:STDOUT: %X: type = class_type @X, @X(%U) [symbolic = %X (constants.%X)] // CHECK:STDOUT: %pattern_type.loc10_10: type = pattern_type %X [symbolic = %pattern_type.loc10_10 (constants.%pattern_type.830)] @@ -550,7 +550,7 @@ class X(U:! type) { // CHECK:STDOUT: %require_complete.loc10_14: = require_complete_type %X [symbolic = %require_complete.loc10_14 (constants.%require_complete.441)] // CHECK:STDOUT: %require_complete.loc10_23: = require_complete_type %U [symbolic = %require_complete.loc10_23 (constants.%require_complete.4ae)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @F.loc10.%X (%X), %t.param: @F.loc10.%U (%U)) { +// CHECK:STDOUT: fn(%self.param: @X.as.I.impl.F.%X (%X), %t.param: @X.as.I.impl.F.%U (%U)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -560,11 +560,11 @@ class X(U:! type) { // CHECK:STDOUT: %T.loc4_13.1 => constants.%T // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%T, constants.%Self.209206.1) { +// CHECK:STDOUT: specific @I.F(constants.%T, constants.%Self.209206.1) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %I.type => constants.%I.type.325e65.1 // CHECK:STDOUT: %Self => constants.%Self.209206.1 -// CHECK:STDOUT: %Self.as_type.loc5_14.2 => constants.%Self.as_type +// CHECK:STDOUT: %Self.as_type.loc5_14.1 => constants.%Self.as_type // CHECK:STDOUT: %pattern_type.loc5_8 => constants.%pattern_type.4be // CHECK:STDOUT: %pattern_type.loc5_20 => constants.%pattern_type.7dcd0a.1 // CHECK:STDOUT: } @@ -583,25 +583,25 @@ class X(U:! type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %I.type => constants.%I.type.325e65.2 // CHECK:STDOUT: %Self.2 => constants.%Self.209206.2 -// CHECK:STDOUT: %F.type => constants.%F.type.2aef59.2 -// CHECK:STDOUT: %F => constants.%F.bb2dd4.2 +// CHECK:STDOUT: %I.F.type => constants.%I.F.type.2aef59.2 +// CHECK:STDOUT: %I.F => constants.%I.F.bb2dd4.2 // CHECK:STDOUT: %I.assoc_type => constants.%I.assoc_type.1e5078.2 // CHECK:STDOUT: %assoc0.loc5_25.2 => constants.%assoc0.8f0422.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.impl(constants.%U) { +// CHECK:STDOUT: specific @X.as.I.impl(constants.%U) { // CHECK:STDOUT: %U => constants.%U // CHECK:STDOUT: %X => constants.%X -// CHECK:STDOUT: %I.type.loc9_21.2 => constants.%I.type.325e65.2 +// CHECK:STDOUT: %I.type.loc9_21.1 => constants.%I.type.325e65.2 // CHECK:STDOUT: %require_complete => constants.%require_complete.cfe // CHECK:STDOUT: %I.impl_witness => constants.%I.impl_witness // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.e88 -// CHECK:STDOUT: %F => constants.%F.b02 +// CHECK:STDOUT: %X.as.I.impl.F.type => constants.%X.as.I.impl.F.type +// CHECK:STDOUT: %X.as.I.impl.F => constants.%X.as.I.impl.F // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc10(constants.%U) { +// CHECK:STDOUT: specific @X.as.I.impl.F(constants.%U) { // CHECK:STDOUT: %U => constants.%U // CHECK:STDOUT: %X => constants.%X // CHECK:STDOUT: %pattern_type.loc10_10 => constants.%pattern_type.830 @@ -610,11 +610,11 @@ class X(U:! type) { // CHECK:STDOUT: %pattern_type.loc10_22 => constants.%pattern_type.7dcd0a.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%U, constants.%I.facet) { +// CHECK:STDOUT: specific @I.F(constants.%U, constants.%I.facet) { // CHECK:STDOUT: %T => constants.%U // CHECK:STDOUT: %I.type => constants.%I.type.325e65.2 // CHECK:STDOUT: %Self => constants.%I.facet -// CHECK:STDOUT: %Self.as_type.loc5_14.2 => constants.%X +// CHECK:STDOUT: %Self.as_type.loc5_14.1 => constants.%X // CHECK:STDOUT: %pattern_type.loc5_8 => constants.%pattern_type.830 // CHECK:STDOUT: %pattern_type.loc5_20 => constants.%pattern_type.7dcd0a.2 // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/fail_alias.carbon b/toolchain/check/testdata/impl/fail_alias.carbon index a8e921e86a4a..675b7c172b8e 100644 --- a/toolchain/check/testdata/impl/fail_alias.carbon +++ b/toolchain/check/testdata/impl/fail_alias.carbon @@ -53,13 +53,13 @@ impl AC as AI {} // CHECK:STDOUT: %AI: type = bind_alias AI, %I.decl [concrete = constants.%I.type] // CHECK:STDOUT: %C.ref: type = name_ref C, %C.decl [concrete = constants.%C] // CHECK:STDOUT: %AC: type = bind_alias AC, %C.decl [concrete = constants.%C] -// CHECK:STDOUT: impl_decl @I.impl.7704ae.1 [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.I.impl.7704ae.1 [concrete] {} { // CHECK:STDOUT: %AC.ref: type = name_ref AC, file.%AC [concrete = constants.%C] // CHECK:STDOUT: %AI.ref: type = name_ref AI, file.%AI [concrete = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @I.impl.7704ae.1 [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @C.as.I.impl.7704ae.1 [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness] -// CHECK:STDOUT: impl_decl @I.impl.7704ae.2 [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.I.impl.7704ae.2 [concrete] {} { // CHECK:STDOUT: %AC.ref: type = name_ref AC, file.%AC [concrete = constants.%C] // CHECK:STDOUT: %AI.ref: type = name_ref AI, file.%AI [concrete = constants.%I.type] // CHECK:STDOUT: } @@ -73,12 +73,12 @@ impl AC as AI {} // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl.7704ae.1: %AC.ref as %AI.ref { +// CHECK:STDOUT: impl @C.as.I.impl.7704ae.1: %AC.ref as %AI.ref { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%I.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl.7704ae.2: %AC.ref as %AI.ref { +// CHECK:STDOUT: impl @C.as.I.impl.7704ae.2: %AC.ref as %AI.ref { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/fail_call_invalid.carbon b/toolchain/check/testdata/impl/fail_call_invalid.carbon index 06fee5a79aaf..a464e231c4f2 100644 --- a/toolchain/check/testdata/impl/fail_call_invalid.carbon +++ b/toolchain/check/testdata/impl/fail_call_invalid.carbon @@ -35,25 +35,25 @@ fn InstanceCall(n: i32) { // CHECK:STDOUT: %Self.3c9: %Simple.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type.716: type = facet_access_type %Self.3c9 [symbolic] // CHECK:STDOUT: %pattern_type.f88: type = pattern_type %Self.as_type.716 [symbolic] -// CHECK:STDOUT: %G.type.b60: type = fn_type @G.loc16 [concrete] +// CHECK:STDOUT: %Simple.G.type: type = fn_type @Simple.G [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %G.cb0: %G.type.b60 = struct_value () [concrete] +// CHECK:STDOUT: %Simple.G: %Simple.G.type = struct_value () [concrete] // CHECK:STDOUT: %Simple.assoc_type: type = assoc_entity_type @Simple [concrete] -// CHECK:STDOUT: %assoc0.db2: %Simple.assoc_type = assoc_entity element0, @Simple.%G.decl [concrete] +// CHECK:STDOUT: %assoc0.db2: %Simple.assoc_type = assoc_entity element0, @Simple.%Simple.G.decl [concrete] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %Simple.impl_witness: = impl_witness file.%Simple.impl_witness_table [concrete] -// CHECK:STDOUT: %G.type.c9825d.1: type = fn_type @G.loc24_27.1 [concrete] -// CHECK:STDOUT: %G.e73e91.1: %G.type.c9825d.1 = struct_value () [concrete] +// CHECK:STDOUT: %i32.as.Simple.impl.G.type.c9825d.1: type = fn_type @i32.as.Simple.impl.G.loc24_27.1 [concrete] +// CHECK:STDOUT: %i32.as.Simple.impl.G.e73e91.1: %i32.as.Simple.impl.G.type.c9825d.1 = struct_value () [concrete] // CHECK:STDOUT: %Simple.facet: %Simple.type = facet_value %i32, (%Simple.impl_witness) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %G.type.c9825d.2: type = fn_type @G.loc24_27.2 [concrete] -// CHECK:STDOUT: %G.e73e91.2: %G.type.c9825d.2 = struct_value () [concrete] +// CHECK:STDOUT: %i32.as.Simple.impl.G.type.c9825d.2: type = fn_type @i32.as.Simple.impl.G.loc24_27.2 [concrete] +// CHECK:STDOUT: %i32.as.Simple.impl.G.e73e91.2: %i32.as.Simple.impl.G.type.c9825d.2 = struct_value () [concrete] // CHECK:STDOUT: %InstanceCall.type: type = fn_type @InstanceCall [concrete] // CHECK:STDOUT: %InstanceCall: %InstanceCall.type = struct_value () [concrete] -// CHECK:STDOUT: %.8e6: type = fn_type_with_self_type %G.type.b60, %Simple.facet [concrete] +// CHECK:STDOUT: %.8e6: type = fn_type_with_self_type %Simple.G.type, %Simple.facet [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -74,12 +74,12 @@ fn InstanceCall(n: i32) { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Simple.decl: type = interface_decl @Simple [concrete = constants.%Simple.type] {} {} -// CHECK:STDOUT: impl_decl @Simple.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @i32.as.Simple.impl [concrete] {} { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %Simple.ref: type = name_ref Simple, file.%Simple.decl [concrete = constants.%Simple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %Simple.impl_witness_table = impl_witness_table (@Simple.impl.%G.decl.loc24_27.2), @Simple.impl [concrete] +// CHECK:STDOUT: %Simple.impl_witness_table = impl_witness_table (@i32.as.Simple.impl.%i32.as.Simple.impl.G.decl.loc24_27.2), @i32.as.Simple.impl [concrete] // CHECK:STDOUT: %Simple.impl_witness: = impl_witness %Simple.impl_witness_table [concrete = constants.%Simple.impl_witness] // CHECK:STDOUT: %InstanceCall.decl: %InstanceCall.type = fn_decl @InstanceCall [concrete = constants.%InstanceCall] { // CHECK:STDOUT: %n.patt: %pattern_type.7ce = binding_pattern n [concrete] @@ -96,28 +96,28 @@ fn InstanceCall(n: i32) { // CHECK:STDOUT: // CHECK:STDOUT: interface @Simple { // CHECK:STDOUT: %Self: %Simple.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.3c9] -// CHECK:STDOUT: %G.decl: %G.type.b60 = fn_decl @G.loc16 [concrete = constants.%G.cb0] { -// CHECK:STDOUT: %self.patt: @G.loc16.%pattern_type (%pattern_type.f88) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @G.loc16.%pattern_type (%pattern_type.f88) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %Simple.G.decl: %Simple.G.type = fn_decl @Simple.G [concrete = constants.%Simple.G] { +// CHECK:STDOUT: %self.patt: @Simple.G.%pattern_type (%pattern_type.f88) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @Simple.G.%pattern_type (%pattern_type.f88) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @G.loc16.%Self.as_type.loc16_14.2 (%Self.as_type.716) = value_param call_param0 -// CHECK:STDOUT: %.loc16_14.1: type = splice_block %.loc16_14.2 [symbolic = %Self.as_type.loc16_14.2 (constants.%Self.as_type.716)] { +// CHECK:STDOUT: %self.param: @Simple.G.%Self.as_type.loc16_14.1 (%Self.as_type.716) = value_param call_param0 +// CHECK:STDOUT: %.loc16_14.1: type = splice_block %.loc16_14.2 [symbolic = %Self.as_type.loc16_14.1 (constants.%Self.as_type.716)] { // CHECK:STDOUT: %Self.ref: %Simple.type = name_ref Self, @Simple.%Self [symbolic = %Self (constants.%Self.3c9)] -// CHECK:STDOUT: %Self.as_type.loc16_14.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc16_14.2 (constants.%Self.as_type.716)] -// CHECK:STDOUT: %.loc16_14.2: type = converted %Self.ref, %Self.as_type.loc16_14.1 [symbolic = %Self.as_type.loc16_14.2 (constants.%Self.as_type.716)] +// CHECK:STDOUT: %Self.as_type.loc16_14.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc16_14.1 (constants.%Self.as_type.716)] +// CHECK:STDOUT: %.loc16_14.2: type = converted %Self.ref, %Self.as_type.loc16_14.2 [symbolic = %Self.as_type.loc16_14.1 (constants.%Self.as_type.716)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @G.loc16.%Self.as_type.loc16_14.2 (%Self.as_type.716) = bind_name self, %self.param +// CHECK:STDOUT: %self: @Simple.G.%Self.as_type.loc16_14.1 (%Self.as_type.716) = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %Simple.assoc_type = assoc_entity element0, %G.decl [concrete = constants.%assoc0.db2] +// CHECK:STDOUT: %assoc0: %Simple.assoc_type = assoc_entity element0, %Simple.G.decl [concrete = constants.%assoc0.db2] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .G = %assoc0 -// CHECK:STDOUT: witness = (%G.decl) +// CHECK:STDOUT: witness = (%Simple.G.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Simple.impl: %i32 as %Simple.ref { -// CHECK:STDOUT: %G.decl.loc24_27.1: %G.type.c9825d.1 = fn_decl @G.loc24_27.1 [concrete = constants.%G.e73e91.1] { +// CHECK:STDOUT: impl @i32.as.Simple.impl: %i32 as %Simple.ref { +// CHECK:STDOUT: %i32.as.Simple.impl.G.decl.loc24_27.1: %i32.as.Simple.impl.G.type.c9825d.1 = fn_decl @i32.as.Simple.impl.G.loc24_27.1 [concrete = constants.%i32.as.Simple.impl.G.e73e91.1] { // CHECK:STDOUT: %self.patt: = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -125,7 +125,7 @@ fn InstanceCall(n: i32) { // CHECK:STDOUT: %Undeclared.ref: = name_ref Undeclared, [concrete = ] // CHECK:STDOUT: %self: = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl.loc24_27.2: %G.type.c9825d.2 = fn_decl @G.loc24_27.2 [concrete = constants.%G.e73e91.2] { +// CHECK:STDOUT: %i32.as.Simple.impl.G.decl.loc24_27.2: %i32.as.Simple.impl.G.type.c9825d.2 = fn_decl @i32.as.Simple.impl.G.loc24_27.2 [concrete = constants.%i32.as.Simple.impl.G.e73e91.2] { // CHECK:STDOUT: %self.patt: %pattern_type.7ce = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.7ce = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -135,26 +135,26 @@ fn InstanceCall(n: i32) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Undeclared = -// CHECK:STDOUT: .G = %G.decl.loc24_27.1 +// CHECK:STDOUT: .G = %i32.as.Simple.impl.G.decl.loc24_27.1 // CHECK:STDOUT: witness = file.%Simple.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @G.loc16(@Simple.%Self: %Simple.type) { +// CHECK:STDOUT: generic fn @Simple.G(@Simple.%Self: %Simple.type) { // CHECK:STDOUT: %Self: %Simple.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.3c9)] -// CHECK:STDOUT: %Self.as_type.loc16_14.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc16_14.2 (constants.%Self.as_type.716)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc16_14.2 [symbolic = %pattern_type (constants.%pattern_type.f88)] +// CHECK:STDOUT: %Self.as_type.loc16_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc16_14.1 (constants.%Self.as_type.716)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc16_14.1 [symbolic = %pattern_type (constants.%pattern_type.f88)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @G.loc16.%Self.as_type.loc16_14.2 (%Self.as_type.716)); +// CHECK:STDOUT: fn(%self.param: @Simple.G.%Self.as_type.loc16_14.1 (%Self.as_type.716)); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G.loc24_27.1(%self.param: ); +// CHECK:STDOUT: fn @i32.as.Simple.impl.G.loc24_27.1(%self.param: ); // CHECK:STDOUT: -// CHECK:STDOUT: fn @G.loc24_27.2(%self.param: %i32) [thunk @Simple.impl.%G.decl.loc24_27.1] { +// CHECK:STDOUT: fn @i32.as.Simple.impl.G.loc24_27.2(%self.param: %i32) [thunk @i32.as.Simple.impl.%i32.as.Simple.impl.G.decl.loc24_27.1] { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %G.ref: %G.type.c9825d.1 = name_ref G, @Simple.impl.%G.decl.loc24_27.1 [concrete = constants.%G.e73e91.1] +// CHECK:STDOUT: %G.ref: %i32.as.Simple.impl.G.type.c9825d.1 = name_ref G, @i32.as.Simple.impl.%i32.as.Simple.impl.G.decl.loc24_27.1 [concrete = constants.%i32.as.Simple.impl.G.e73e91.1] // CHECK:STDOUT: %self.ref: %i32 = name_ref self, %self.param -// CHECK:STDOUT: %G.bound: = bound_method %self.ref, %G.ref -// CHECK:STDOUT: %G.call: init %empty_tuple.type = call %G.bound() +// CHECK:STDOUT: %i32.as.Simple.impl.G.bound: = bound_method %self.ref, %G.ref +// CHECK:STDOUT: %i32.as.Simple.impl.G.call: init %empty_tuple.type = call %i32.as.Simple.impl.G.bound() // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -163,23 +163,23 @@ fn InstanceCall(n: i32) { // CHECK:STDOUT: %n.ref: %i32 = name_ref n, %n // CHECK:STDOUT: %Simple.ref: type = name_ref Simple, file.%Simple.decl [concrete = constants.%Simple.type] // CHECK:STDOUT: %G.ref.loc28_12: %Simple.assoc_type = name_ref G, @Simple.%assoc0 [concrete = constants.%assoc0.db2] -// CHECK:STDOUT: %impl.elem0: %.8e6 = impl_witness_access constants.%Simple.impl_witness, element0 [concrete = constants.%G.e73e91.2] +// CHECK:STDOUT: %impl.elem0: %.8e6 = impl_witness_access constants.%Simple.impl_witness, element0 [concrete = constants.%i32.as.Simple.impl.G.e73e91.2] // CHECK:STDOUT: %bound_method: = bound_method %n.ref, %impl.elem0 -// CHECK:STDOUT: %G.ref.loc28_16: %G.type.c9825d.1 = name_ref G, @Simple.impl.%G.decl.loc24_27.1 [concrete = constants.%G.e73e91.1] -// CHECK:STDOUT: %G.bound: = bound_method %n.ref, %G.ref.loc28_16 -// CHECK:STDOUT: %G.call: init %empty_tuple.type = call %G.bound() +// CHECK:STDOUT: %G.ref.loc28_16: %i32.as.Simple.impl.G.type.c9825d.1 = name_ref G, @i32.as.Simple.impl.%i32.as.Simple.impl.G.decl.loc24_27.1 [concrete = constants.%i32.as.Simple.impl.G.e73e91.1] +// CHECK:STDOUT: %i32.as.Simple.impl.G.bound: = bound_method %n.ref, %G.ref.loc28_16 +// CHECK:STDOUT: %i32.as.Simple.impl.G.call: init %empty_tuple.type = call %i32.as.Simple.impl.G.bound() // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @G.loc16(constants.%Self.3c9) { +// CHECK:STDOUT: specific @Simple.G(constants.%Self.3c9) { // CHECK:STDOUT: %Self => constants.%Self.3c9 -// CHECK:STDOUT: %Self.as_type.loc16_14.2 => constants.%Self.as_type.716 +// CHECK:STDOUT: %Self.as_type.loc16_14.1 => constants.%Self.as_type.716 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.f88 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @G.loc16(constants.%Simple.facet) { +// CHECK:STDOUT: specific @Simple.G(constants.%Simple.facet) { // CHECK:STDOUT: %Self => constants.%Simple.facet -// CHECK:STDOUT: %Self.as_type.loc16_14.2 => constants.%i32 +// CHECK:STDOUT: %Self.as_type.loc16_14.1 => constants.%i32 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7ce // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/fail_extend_impl_forall.carbon b/toolchain/check/testdata/impl/fail_extend_impl_forall.carbon index 9fb0738f5cd4..2c3e3cc3f9f3 100644 --- a/toolchain/check/testdata/impl/fail_extend_impl_forall.carbon +++ b/toolchain/check/testdata/impl/fail_extend_impl_forall.carbon @@ -36,15 +36,15 @@ class C { // CHECK:STDOUT: %GenericInterface.type.3fe: type = facet_type <@GenericInterface, @GenericInterface(%T)> [symbolic] // CHECK:STDOUT: %Self: %GenericInterface.type.3fe = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %T [symbolic] -// CHECK:STDOUT: %F.type.a4b: type = fn_type @F.loc16, @GenericInterface(%T) [symbolic] -// CHECK:STDOUT: %F.3d9: %F.type.a4b = struct_value () [symbolic] +// CHECK:STDOUT: %GenericInterface.F.type: type = fn_type @GenericInterface.F, @GenericInterface(%T) [symbolic] +// CHECK:STDOUT: %GenericInterface.F: %GenericInterface.F.type = struct_value () [symbolic] // CHECK:STDOUT: %GenericInterface.assoc_type: type = assoc_entity_type @GenericInterface, @GenericInterface(%T) [symbolic] -// CHECK:STDOUT: %assoc0: %GenericInterface.assoc_type = assoc_entity element0, @GenericInterface.%F.decl [symbolic] +// CHECK:STDOUT: %assoc0: %GenericInterface.assoc_type = assoc_entity element0, @GenericInterface.%GenericInterface.F.decl [symbolic] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %require_complete.70f: = require_complete_type %GenericInterface.type.3fe [symbolic] -// CHECK:STDOUT: %GenericInterface.impl_witness: = impl_witness @C.%GenericInterface.impl_witness_table, @GenericInterface.impl(%T) [symbolic] -// CHECK:STDOUT: %F.type.2cb: type = fn_type @F.loc25, @GenericInterface.impl(%T) [symbolic] -// CHECK:STDOUT: %F.4b1: %F.type.2cb = struct_value () [symbolic] +// CHECK:STDOUT: %GenericInterface.impl_witness: = impl_witness @C.%GenericInterface.impl_witness_table, @C.as.GenericInterface.impl(%T) [symbolic] +// CHECK:STDOUT: %C.as.GenericInterface.impl.F.type: type = fn_type @C.as.GenericInterface.impl.F, @C.as.GenericInterface.impl(%T) [symbolic] +// CHECK:STDOUT: %C.as.GenericInterface.impl.F: %C.as.GenericInterface.impl.F.type = struct_value () [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %require_complete.4ae: = require_complete_type %T [symbolic] @@ -69,71 +69,71 @@ class C { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %GenericInterface.type: type = facet_type <@GenericInterface, @GenericInterface(%T.loc15_28.1)> [symbolic = %GenericInterface.type (constants.%GenericInterface.type.3fe)] // CHECK:STDOUT: %Self.2: @GenericInterface.%GenericInterface.type (%GenericInterface.type.3fe) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] -// CHECK:STDOUT: %F.type: type = fn_type @F.loc16, @GenericInterface(%T.loc15_28.1) [symbolic = %F.type (constants.%F.type.a4b)] -// CHECK:STDOUT: %F: @GenericInterface.%F.type (%F.type.a4b) = struct_value () [symbolic = %F (constants.%F.3d9)] +// CHECK:STDOUT: %GenericInterface.F.type: type = fn_type @GenericInterface.F, @GenericInterface(%T.loc15_28.1) [symbolic = %GenericInterface.F.type (constants.%GenericInterface.F.type)] +// CHECK:STDOUT: %GenericInterface.F: @GenericInterface.%GenericInterface.F.type (%GenericInterface.F.type) = struct_value () [symbolic = %GenericInterface.F (constants.%GenericInterface.F)] // CHECK:STDOUT: %GenericInterface.assoc_type: type = assoc_entity_type @GenericInterface, @GenericInterface(%T.loc15_28.1) [symbolic = %GenericInterface.assoc_type (constants.%GenericInterface.assoc_type)] -// CHECK:STDOUT: %assoc0.loc16_13.2: @GenericInterface.%GenericInterface.assoc_type (%GenericInterface.assoc_type) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc16_13.2 (constants.%assoc0)] +// CHECK:STDOUT: %assoc0.loc16_13.2: @GenericInterface.%GenericInterface.assoc_type (%GenericInterface.assoc_type) = assoc_entity element0, %GenericInterface.F.decl [symbolic = %assoc0.loc16_13.2 (constants.%assoc0)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: %Self.1: @GenericInterface.%GenericInterface.type (%GenericInterface.type.3fe) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] -// CHECK:STDOUT: %F.decl: @GenericInterface.%F.type (%F.type.a4b) = fn_decl @F.loc16 [symbolic = @GenericInterface.%F (constants.%F.3d9)] { -// CHECK:STDOUT: %x.patt: @F.loc16.%pattern_type (%pattern_type.7dc) = binding_pattern x [concrete] -// CHECK:STDOUT: %x.param_patt: @F.loc16.%pattern_type (%pattern_type.7dc) = value_param_pattern %x.patt, call_param0 [concrete] +// CHECK:STDOUT: %GenericInterface.F.decl: @GenericInterface.%GenericInterface.F.type (%GenericInterface.F.type) = fn_decl @GenericInterface.F [symbolic = @GenericInterface.%GenericInterface.F (constants.%GenericInterface.F)] { +// CHECK:STDOUT: %x.patt: @GenericInterface.F.%pattern_type (%pattern_type.7dc) = binding_pattern x [concrete] +// CHECK:STDOUT: %x.param_patt: @GenericInterface.F.%pattern_type (%pattern_type.7dc) = value_param_pattern %x.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %x.param: @F.loc16.%T (%T) = value_param call_param0 +// CHECK:STDOUT: %x.param: @GenericInterface.F.%T (%T) = value_param call_param0 // CHECK:STDOUT: %T.ref: type = name_ref T, @GenericInterface.%T.loc15_28.2 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %x: @F.loc16.%T (%T) = bind_name x, %x.param +// CHECK:STDOUT: %x: @GenericInterface.F.%T (%T) = bind_name x, %x.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0.loc16_13.1: @GenericInterface.%GenericInterface.assoc_type (%GenericInterface.assoc_type) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc16_13.2 (constants.%assoc0)] +// CHECK:STDOUT: %assoc0.loc16_13.1: @GenericInterface.%GenericInterface.assoc_type (%GenericInterface.assoc_type) = assoc_entity element0, %GenericInterface.F.decl [symbolic = %assoc0.loc16_13.2 (constants.%assoc0)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 // CHECK:STDOUT: .T = // CHECK:STDOUT: .F = %assoc0.loc16_13.1 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%GenericInterface.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @GenericInterface.impl(%T.loc24_23.1: type) { -// CHECK:STDOUT: %T.loc24_23.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc24_23.2 (constants.%T)] -// CHECK:STDOUT: %GenericInterface.type.loc24_54.2: type = facet_type <@GenericInterface, @GenericInterface(%T.loc24_23.2)> [symbolic = %GenericInterface.type.loc24_54.2 (constants.%GenericInterface.type.3fe)] -// CHECK:STDOUT: %require_complete: = require_complete_type %GenericInterface.type.loc24_54.2 [symbolic = %require_complete (constants.%require_complete.70f)] -// CHECK:STDOUT: %GenericInterface.impl_witness: = impl_witness @C.%GenericInterface.impl_witness_table, @GenericInterface.impl(%T.loc24_23.2) [symbolic = %GenericInterface.impl_witness (constants.%GenericInterface.impl_witness)] +// CHECK:STDOUT: generic impl @C.as.GenericInterface.impl(%T.loc24_23.2: type) { +// CHECK:STDOUT: %T.loc24_23.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc24_23.1 (constants.%T)] +// CHECK:STDOUT: %GenericInterface.type.loc24_54.1: type = facet_type <@GenericInterface, @GenericInterface(%T.loc24_23.1)> [symbolic = %GenericInterface.type.loc24_54.1 (constants.%GenericInterface.type.3fe)] +// CHECK:STDOUT: %require_complete: = require_complete_type %GenericInterface.type.loc24_54.1 [symbolic = %require_complete (constants.%require_complete.70f)] +// CHECK:STDOUT: %GenericInterface.impl_witness: = impl_witness @C.%GenericInterface.impl_witness_table, @C.as.GenericInterface.impl(%T.loc24_23.1) [symbolic = %GenericInterface.impl_witness (constants.%GenericInterface.impl_witness)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type: type = fn_type @F.loc25, @GenericInterface.impl(%T.loc24_23.2) [symbolic = %F.type (constants.%F.type.2cb)] -// CHECK:STDOUT: %F: @GenericInterface.impl.%F.type (%F.type.2cb) = struct_value () [symbolic = %F (constants.%F.4b1)] +// CHECK:STDOUT: %C.as.GenericInterface.impl.F.type: type = fn_type @C.as.GenericInterface.impl.F, @C.as.GenericInterface.impl(%T.loc24_23.1) [symbolic = %C.as.GenericInterface.impl.F.type (constants.%C.as.GenericInterface.impl.F.type)] +// CHECK:STDOUT: %C.as.GenericInterface.impl.F: @C.as.GenericInterface.impl.%C.as.GenericInterface.impl.F.type (%C.as.GenericInterface.impl.F.type) = struct_value () [symbolic = %C.as.GenericInterface.impl.F (constants.%C.as.GenericInterface.impl.F)] // CHECK:STDOUT: -// CHECK:STDOUT: impl: %Self.ref as %GenericInterface.type.loc24_54.1 { -// CHECK:STDOUT: %F.decl: @GenericInterface.impl.%F.type (%F.type.2cb) = fn_decl @F.loc25 [symbolic = @GenericInterface.impl.%F (constants.%F.4b1)] { -// CHECK:STDOUT: %x.patt: @F.loc25.%pattern_type (%pattern_type.7dc) = binding_pattern x [concrete] -// CHECK:STDOUT: %x.param_patt: @F.loc25.%pattern_type (%pattern_type.7dc) = value_param_pattern %x.patt, call_param0 [concrete] +// CHECK:STDOUT: impl: %Self.ref as %GenericInterface.type.loc24_54.2 { +// CHECK:STDOUT: %C.as.GenericInterface.impl.F.decl: @C.as.GenericInterface.impl.%C.as.GenericInterface.impl.F.type (%C.as.GenericInterface.impl.F.type) = fn_decl @C.as.GenericInterface.impl.F [symbolic = @C.as.GenericInterface.impl.%C.as.GenericInterface.impl.F (constants.%C.as.GenericInterface.impl.F)] { +// CHECK:STDOUT: %x.patt: @C.as.GenericInterface.impl.F.%pattern_type (%pattern_type.7dc) = binding_pattern x [concrete] +// CHECK:STDOUT: %x.param_patt: @C.as.GenericInterface.impl.F.%pattern_type (%pattern_type.7dc) = value_param_pattern %x.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %x.param: @F.loc25.%T (%T) = value_param call_param0 -// CHECK:STDOUT: %T.ref: type = name_ref T, @GenericInterface.impl.%T.loc24_23.1 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %x: @F.loc25.%T (%T) = bind_name x, %x.param +// CHECK:STDOUT: %x.param: @C.as.GenericInterface.impl.F.%T (%T) = value_param call_param0 +// CHECK:STDOUT: %T.ref: type = name_ref T, @C.as.GenericInterface.impl.%T.loc24_23.2 [symbolic = %T (constants.%T)] +// CHECK:STDOUT: %x: @C.as.GenericInterface.impl.F.%T (%T) = bind_name x, %x.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .T = -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %C.as.GenericInterface.impl.F.decl // CHECK:STDOUT: witness = // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: impl_decl @GenericInterface.impl [concrete] { +// CHECK:STDOUT: impl_decl @C.as.GenericInterface.impl [concrete] { // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] // CHECK:STDOUT: %GenericInterface.ref: %GenericInterface.type.c92 = name_ref GenericInterface, file.%GenericInterface.decl [concrete = constants.%GenericInterface.generic] -// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc24_23.1 [symbolic = %T.loc24_23.2 (constants.%T)] -// CHECK:STDOUT: %GenericInterface.type.loc24_54.1: type = facet_type <@GenericInterface, @GenericInterface(constants.%T)> [symbolic = %GenericInterface.type.loc24_54.2 (constants.%GenericInterface.type.3fe)] -// CHECK:STDOUT: %T.loc24_23.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc24_23.2 (constants.%T)] +// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc24_23.2 [symbolic = %T.loc24_23.1 (constants.%T)] +// CHECK:STDOUT: %GenericInterface.type.loc24_54.2: type = facet_type <@GenericInterface, @GenericInterface(constants.%T)> [symbolic = %GenericInterface.type.loc24_54.1 (constants.%GenericInterface.type.3fe)] +// CHECK:STDOUT: %T.loc24_23.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc24_23.1 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %GenericInterface.impl_witness_table = impl_witness_table (), @GenericInterface.impl [concrete] -// CHECK:STDOUT: %GenericInterface.impl_witness: = impl_witness %GenericInterface.impl_witness_table, @GenericInterface.impl(constants.%T) [symbolic = @GenericInterface.impl.%GenericInterface.impl_witness (constants.%GenericInterface.impl_witness)] -// CHECK:STDOUT: %.loc24: type = specific_constant @GenericInterface.impl.%GenericInterface.type.loc24_54.1, @GenericInterface.impl(constants.%T) [symbolic = constants.%GenericInterface.type.3fe] +// CHECK:STDOUT: %GenericInterface.impl_witness_table = impl_witness_table (), @C.as.GenericInterface.impl [concrete] +// CHECK:STDOUT: %GenericInterface.impl_witness: = impl_witness %GenericInterface.impl_witness_table, @C.as.GenericInterface.impl(constants.%T) [symbolic = @C.as.GenericInterface.impl.%GenericInterface.impl_witness (constants.%GenericInterface.impl_witness)] +// CHECK:STDOUT: %.loc24: type = specific_constant @C.as.GenericInterface.impl.%GenericInterface.type.loc24_54.2, @C.as.GenericInterface.impl(constants.%T) [symbolic = constants.%GenericInterface.type.3fe] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type @@ -144,21 +144,21 @@ class C { // CHECK:STDOUT: has_error // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc16(@GenericInterface.%T.loc15_28.2: type, @GenericInterface.%Self.1: @GenericInterface.%GenericInterface.type (%GenericInterface.type.3fe)) { +// CHECK:STDOUT: generic fn @GenericInterface.F(@GenericInterface.%T.loc15_28.2: type, @GenericInterface.%Self.1: @GenericInterface.%GenericInterface.type (%GenericInterface.type.3fe)) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %pattern_type: type = pattern_type %T [symbolic = %pattern_type (constants.%pattern_type.7dc)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%x.param: @F.loc16.%T (%T)); +// CHECK:STDOUT: fn(%x.param: @GenericInterface.F.%T (%T)); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc25(@GenericInterface.impl.%T.loc24_23.1: type) { +// CHECK:STDOUT: generic fn @C.as.GenericInterface.impl.F(@C.as.GenericInterface.impl.%T.loc24_23.2: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %pattern_type: type = pattern_type %T [symbolic = %pattern_type (constants.%pattern_type.7dc)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %T [symbolic = %require_complete (constants.%require_complete.4ae)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%x.param: @F.loc25.%T (%T)) { +// CHECK:STDOUT: fn(%x.param: @C.as.GenericInterface.impl.F.%T (%T)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -170,29 +170,29 @@ class C { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %GenericInterface.type => constants.%GenericInterface.type.3fe // CHECK:STDOUT: %Self.2 => constants.%Self -// CHECK:STDOUT: %F.type => constants.%F.type.a4b -// CHECK:STDOUT: %F => constants.%F.3d9 +// CHECK:STDOUT: %GenericInterface.F.type => constants.%GenericInterface.F.type +// CHECK:STDOUT: %GenericInterface.F => constants.%GenericInterface.F // CHECK:STDOUT: %GenericInterface.assoc_type => constants.%GenericInterface.assoc_type // CHECK:STDOUT: %assoc0.loc16_13.2 => constants.%assoc0 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc16(constants.%T, constants.%Self) { +// CHECK:STDOUT: specific @GenericInterface.F(constants.%T, constants.%Self) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7dc // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @GenericInterface.impl(constants.%T) { -// CHECK:STDOUT: %T.loc24_23.2 => constants.%T -// CHECK:STDOUT: %GenericInterface.type.loc24_54.2 => constants.%GenericInterface.type.3fe +// CHECK:STDOUT: specific @C.as.GenericInterface.impl(constants.%T) { +// CHECK:STDOUT: %T.loc24_23.1 => constants.%T +// CHECK:STDOUT: %GenericInterface.type.loc24_54.1 => constants.%GenericInterface.type.3fe // CHECK:STDOUT: %require_complete => constants.%require_complete.70f // CHECK:STDOUT: %GenericInterface.impl_witness => constants.%GenericInterface.impl_witness // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.2cb -// CHECK:STDOUT: %F => constants.%F.4b1 +// CHECK:STDOUT: %C.as.GenericInterface.impl.F.type => constants.%C.as.GenericInterface.impl.F.type +// CHECK:STDOUT: %C.as.GenericInterface.impl.F => constants.%C.as.GenericInterface.impl.F // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc25(constants.%T) { +// CHECK:STDOUT: specific @C.as.GenericInterface.impl.F(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7dc // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/fail_extend_impl_scope.carbon b/toolchain/check/testdata/impl/fail_extend_impl_scope.carbon index 22c6e5c8e627..7dc19a19a111 100644 --- a/toolchain/check/testdata/impl/fail_extend_impl_scope.carbon +++ b/toolchain/check/testdata/impl/fail_extend_impl_scope.carbon @@ -87,12 +87,12 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @empty_tuple.type.as.I.impl [concrete] {} { // CHECK:STDOUT: %.loc9_14.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc9_14.2: type = converted %.loc9_14.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @I.impl [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @empty_tuple.type.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -104,7 +104,7 @@ fn F() { // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: %.loc9_14.2 as %I.ref { +// CHECK:STDOUT: impl @empty_tuple.type.as.I.impl: %.loc9_14.2 as %I.ref { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = // CHECK:STDOUT: } @@ -146,19 +146,19 @@ fn F() { // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @J.impl: %.loc10_16.2 as %J.ref { +// CHECK:STDOUT: impl @empty_struct_type.as.J.impl: %.loc10_16.2 as %J.ref { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: impl_decl @J.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @empty_struct_type.as.J.impl [concrete] {} { // CHECK:STDOUT: %.loc10_16.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc10_16.2: type = converted %.loc10_16.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %J.impl_witness_table = impl_witness_table (), @J.impl [concrete] +// CHECK:STDOUT: %J.impl_witness_table = impl_witness_table (), @empty_struct_type.as.J.impl [concrete] // CHECK:STDOUT: %J.impl_witness: = impl_witness %J.impl_witness_table [concrete = constants.%J.impl_witness] // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -168,29 +168,29 @@ fn F() { // CHECK:STDOUT: constants { // CHECK:STDOUT: %Z.type: type = facet_type <@Z> [concrete] // CHECK:STDOUT: %Self.6e6: %Z.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %Zero.type.822: type = fn_type @Zero.loc4 [concrete] +// CHECK:STDOUT: %Z.Zero.type: type = fn_type @Z.Zero [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %Zero.d14: %Zero.type.822 = struct_value () [concrete] +// CHECK:STDOUT: %Z.Zero: %Z.Zero.type = struct_value () [concrete] // CHECK:STDOUT: %Z.assoc_type: type = assoc_entity_type @Z [concrete] -// CHECK:STDOUT: %assoc0.534: %Z.assoc_type = assoc_entity element0, @Z.%Zero.decl [concrete] -// CHECK:STDOUT: %Zero.type.db4: type = fn_type @Zero.loc11, @Z.impl.6b5(%Self.6e6) [symbolic] -// CHECK:STDOUT: %Zero.8fb: %Zero.type.db4 = struct_value () [symbolic] +// CHECK:STDOUT: %assoc0.534: %Z.assoc_type = assoc_entity element0, @Z.%Z.Zero.decl [concrete] +// CHECK:STDOUT: %.as.Z.impl.Zero.type: type = fn_type @.as.Z.impl.Zero, @.as.Z.impl(%Self.6e6) [symbolic] +// CHECK:STDOUT: %.as.Z.impl.Zero: %.as.Z.impl.Zero.type = struct_value () [symbolic] // CHECK:STDOUT: %Point: type = class_type @Point [concrete] // CHECK:STDOUT: %Z.impl_witness: = impl_witness @Point.%Z.impl_witness_table [concrete] -// CHECK:STDOUT: %Zero.type.e33: type = fn_type @Zero.loc17 [concrete] -// CHECK:STDOUT: %Zero.dec: %Zero.type.e33 = struct_value () [concrete] +// CHECK:STDOUT: %Point.as.Z.impl.Zero.type: type = fn_type @Point.as.Z.impl.Zero [concrete] +// CHECK:STDOUT: %Point.as.Z.impl.Zero: %Point.as.Z.impl.Zero.type = struct_value () [concrete] // CHECK:STDOUT: %Z.facet: %Z.type = facet_value %Point, (%Z.impl_witness) [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %Point.val: %Point = struct_value () [concrete] -// CHECK:STDOUT: %.766: type = fn_type_with_self_type %Zero.type.822, %Z.facet [concrete] +// CHECK:STDOUT: %.766: type = fn_type_with_self_type %Z.Zero.type, %Z.facet [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.003: type = fn_type @Op.1, @Destroy.impl(%Point) [concrete] -// CHECK:STDOUT: %Op.d2d: %Op.type.003 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.003: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%Point) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.d2d: %T.as.Destroy.impl.Op.type.003 = struct_value () [concrete] // CHECK:STDOUT: %ptr.536: type = ptr_type %Point [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.d2d, @Op.1(%Point) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.d2d, @T.as.Destroy.impl.Op(%Point) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -217,9 +217,9 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: interface @Z { // CHECK:STDOUT: %Self: %Z.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.6e6] -// CHECK:STDOUT: %Zero.decl: %Zero.type.822 = fn_decl @Zero.loc4 [concrete = constants.%Zero.d14] {} {} -// CHECK:STDOUT: %assoc0: %Z.assoc_type = assoc_entity element0, %Zero.decl [concrete = constants.%assoc0.534] -// CHECK:STDOUT: impl_decl @Z.impl.6b5 [concrete] {} { +// CHECK:STDOUT: %Z.Zero.decl: %Z.Zero.type = fn_decl @Z.Zero [concrete = constants.%Z.Zero] {} {} +// CHECK:STDOUT: %assoc0: %Z.assoc_type = assoc_entity element0, %Z.Zero.decl [concrete = constants.%assoc0.534] +// CHECK:STDOUT: impl_decl @.as.Z.impl [concrete] {} { // CHECK:STDOUT: %Z.ref: type = name_ref Z, file.%Z.decl [concrete = constants.%Z.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -227,38 +227,38 @@ fn F() { // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .Zero = %assoc0 // CHECK:STDOUT: .Z = -// CHECK:STDOUT: witness = (%Zero.decl) +// CHECK:STDOUT: witness = (%Z.Zero.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @Z.impl.6b5(@Z.%Self: %Z.type) { +// CHECK:STDOUT: generic impl @.as.Z.impl(@Z.%Self: %Z.type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Self: %Z.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.6e6)] -// CHECK:STDOUT: %Zero.type: type = fn_type @Zero.loc11, @Z.impl.6b5(%Self) [symbolic = %Zero.type (constants.%Zero.type.db4)] -// CHECK:STDOUT: %Zero: @Z.impl.6b5.%Zero.type (%Zero.type.db4) = struct_value () [symbolic = %Zero (constants.%Zero.8fb)] +// CHECK:STDOUT: %.as.Z.impl.Zero.type: type = fn_type @.as.Z.impl.Zero, @.as.Z.impl(%Self) [symbolic = %.as.Z.impl.Zero.type (constants.%.as.Z.impl.Zero.type)] +// CHECK:STDOUT: %.as.Z.impl.Zero: @.as.Z.impl.%.as.Z.impl.Zero.type (%.as.Z.impl.Zero.type) = struct_value () [symbolic = %.as.Z.impl.Zero (constants.%.as.Z.impl.Zero)] // CHECK:STDOUT: // CHECK:STDOUT: impl: as %Z.ref { -// CHECK:STDOUT: %Zero.decl: @Z.impl.6b5.%Zero.type (%Zero.type.db4) = fn_decl @Zero.loc11 [symbolic = @Z.impl.6b5.%Zero (constants.%Zero.8fb)] {} {} +// CHECK:STDOUT: %.as.Z.impl.Zero.decl: @.as.Z.impl.%.as.Z.impl.Zero.type (%.as.Z.impl.Zero.type) = fn_decl @.as.Z.impl.Zero [symbolic = @.as.Z.impl.%.as.Z.impl.Zero (constants.%.as.Z.impl.Zero)] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Zero = %Zero.decl +// CHECK:STDOUT: .Zero = %.as.Z.impl.Zero.decl // CHECK:STDOUT: witness = // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Z.impl.c94: %Self.ref as %Z.ref { -// CHECK:STDOUT: %Zero.decl: %Zero.type.e33 = fn_decl @Zero.loc17 [concrete = constants.%Zero.dec] {} {} +// CHECK:STDOUT: impl @Point.as.Z.impl: %Self.ref as %Z.ref { +// CHECK:STDOUT: %Point.as.Z.impl.Zero.decl: %Point.as.Z.impl.Zero.type = fn_decl @Point.as.Z.impl.Zero [concrete = constants.%Point.as.Z.impl.Zero] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Zero = %Zero.decl +// CHECK:STDOUT: .Zero = %Point.as.Z.impl.Zero.decl // CHECK:STDOUT: witness = @Point.%Z.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Point { -// CHECK:STDOUT: impl_decl @Z.impl.c94 [concrete] {} { +// CHECK:STDOUT: impl_decl @Point.as.Z.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Point [concrete = constants.%Point] // CHECK:STDOUT: %Z.ref: type = name_ref Z, file.%Z.decl [concrete = constants.%Z.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %Z.impl_witness_table = impl_witness_table (@Z.impl.c94.%Zero.decl), @Z.impl.c94 [concrete] +// CHECK:STDOUT: %Z.impl_witness_table = impl_witness_table (@Point.as.Z.impl.%Point.as.Z.impl.Zero.decl), @Point.as.Z.impl [concrete] // CHECK:STDOUT: %Z.impl_witness: = impl_witness %Z.impl_witness_table [concrete = constants.%Z.impl_witness] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] @@ -268,14 +268,14 @@ fn F() { // CHECK:STDOUT: .Self = constants.%Point // CHECK:STDOUT: .Z = // CHECK:STDOUT: .Zero = -// CHECK:STDOUT: extend @Z.impl.c94.%Z.ref +// CHECK:STDOUT: extend @Point.as.Z.impl.%Z.ref // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Zero.loc4(@Z.%Self: %Z.type) { +// CHECK:STDOUT: generic fn @Z.Zero(@Z.%Self: %Z.type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Zero.loc11(@Z.%Self: %Z.type) { +// CHECK:STDOUT: generic fn @.as.Z.impl.Zero(@Z.%Self: %Z.type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: fn() { @@ -284,7 +284,7 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Zero.loc17() { +// CHECK:STDOUT: fn @Point.as.Z.impl.Zero() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -298,26 +298,26 @@ fn F() { // CHECK:STDOUT: %.loc25_5.4: ref %Point = temporary %.loc25_5.2, %.loc25_5.3 // CHECK:STDOUT: %.loc25_7: ref %Point = converted %.loc25_5.1, %.loc25_5.4 // CHECK:STDOUT: %Zero.ref: %Z.assoc_type = name_ref Zero, @Z.%assoc0 [concrete = constants.%assoc0.534] -// CHECK:STDOUT: %impl.elem0: %.766 = impl_witness_access constants.%Z.impl_witness, element0 [concrete = constants.%Zero.dec] -// CHECK:STDOUT: %Zero.call: init %empty_tuple.type = call %impl.elem0() -// CHECK:STDOUT: %Op.bound: = bound_method %.loc25_5.2, constants.%Op.d2d -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.d2d, @Op.1(constants.%Point) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc25_5.2, %Op.specific_fn +// CHECK:STDOUT: %impl.elem0: %.766 = impl_witness_access constants.%Z.impl_witness, element0 [concrete = constants.%Point.as.Z.impl.Zero] +// CHECK:STDOUT: %Point.as.Z.impl.Zero.call: init %empty_tuple.type = call %impl.elem0() +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc25_5.2, constants.%T.as.Destroy.impl.Op.d2d +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.d2d, @T.as.Destroy.impl.Op(constants.%Point) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %.loc25_5.2, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.536 = addr_of %.loc25_5.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Zero.loc4(constants.%Self.6e6) {} +// CHECK:STDOUT: specific @Z.Zero(constants.%Self.6e6) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @Z.impl.6b5(constants.%Self.6e6) { +// CHECK:STDOUT: specific @.as.Z.impl(constants.%Self.6e6) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Self => constants.%Self.6e6 -// CHECK:STDOUT: %Zero.type => constants.%Zero.type.db4 -// CHECK:STDOUT: %Zero => constants.%Zero.8fb +// CHECK:STDOUT: %.as.Z.impl.Zero.type => constants.%.as.Z.impl.Zero.type +// CHECK:STDOUT: %.as.Z.impl.Zero => constants.%.as.Z.impl.Zero // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Zero.loc11(constants.%Self.6e6) {} +// CHECK:STDOUT: specific @.as.Z.impl.Zero(constants.%Self.6e6) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @Zero.loc4(constants.%Z.facet) {} +// CHECK:STDOUT: specific @Z.Zero(constants.%Z.facet) {} // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/fail_extend_impl_type_as.carbon b/toolchain/check/testdata/impl/fail_extend_impl_type_as.carbon index 927eca36798c..6947b61fe272 100644 --- a/toolchain/check/testdata/impl/fail_extend_impl_type_as.carbon +++ b/toolchain/check/testdata/impl/fail_extend_impl_type_as.carbon @@ -99,25 +99,25 @@ class E { // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl.154: %i32 as %I.ref { +// CHECK:STDOUT: impl @i32.as.I.impl: %i32 as %I.ref { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl.ca7: %D.ref as %I.ref; +// CHECK:STDOUT: impl @D.as.I.impl: %D.ref as %I.ref; // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl.c98: %Self.ref as %I.ref { +// CHECK:STDOUT: impl @E.as.I.impl: %Self.ref as %I.ref { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = @E.%I.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: impl_decl @I.impl.154 [concrete] {} { +// CHECK:STDOUT: impl_decl @i32.as.I.impl [concrete] {} { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @I.impl.154 [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @i32.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness.bf7] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] @@ -130,11 +130,11 @@ class E { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { -// CHECK:STDOUT: impl_decl @I.impl.ca7 [concrete] {} { +// CHECK:STDOUT: impl_decl @D.as.I.impl [concrete] {} { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @I.impl.ca7 [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @D.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness.fa5] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] @@ -144,15 +144,15 @@ class E { // CHECK:STDOUT: .Self = constants.%D // CHECK:STDOUT: .D = // CHECK:STDOUT: .I = -// CHECK:STDOUT: extend @I.impl.ca7.%I.ref +// CHECK:STDOUT: extend @D.as.I.impl.%I.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @E { -// CHECK:STDOUT: impl_decl @I.impl.c98 [concrete] {} { +// CHECK:STDOUT: impl_decl @E.as.I.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%E [concrete = constants.%E] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @I.impl.c98 [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @E.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness.7f3] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] @@ -161,6 +161,6 @@ class E { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%E // CHECK:STDOUT: .I = -// CHECK:STDOUT: extend @I.impl.c98.%I.ref +// CHECK:STDOUT: extend @E.as.I.impl.%I.ref // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/fail_extend_non_interface.carbon b/toolchain/check/testdata/impl/fail_extend_non_interface.carbon index 1a93c475da18..cb57a5c696c6 100644 --- a/toolchain/check/testdata/impl/fail_extend_non_interface.carbon +++ b/toolchain/check/testdata/impl/fail_extend_non_interface.carbon @@ -50,10 +50,10 @@ class C { // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl: %Self.ref as %i32; +// CHECK:STDOUT: impl @C.as..impl: %Self.ref as %i32; // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: impl_decl @impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as..impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] @@ -64,7 +64,7 @@ class C { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C -// CHECK:STDOUT: extend @impl.%i32 +// CHECK:STDOUT: extend @C.as..impl.%i32 // CHECK:STDOUT: has_error // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/fail_extend_partially_defined_interface.carbon b/toolchain/check/testdata/impl/fail_extend_partially_defined_interface.carbon index 5612b3dc2ebe..d14d14d96586 100644 --- a/toolchain/check/testdata/impl/fail_extend_partially_defined_interface.carbon +++ b/toolchain/check/testdata/impl/fail_extend_partially_defined_interface.carbon @@ -31,7 +31,7 @@ interface I { // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %C: type = class_type @C, @C(%Self) [symbolic] -// CHECK:STDOUT: %I.impl_witness: = impl_witness @C.%I.impl_witness_table, @I.impl(%Self) [symbolic] +// CHECK:STDOUT: %I.impl_witness: = impl_witness @C.%I.impl_witness_table, @C.as.I.impl(%Self) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: } @@ -54,10 +54,10 @@ interface I { // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @I.impl(@I.%Self: %I.type) { +// CHECK:STDOUT: generic impl @C.as.I.impl(@I.%Self: %I.type) { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %C: type = class_type @C, @C(%Self) [symbolic = %C (constants.%C)] -// CHECK:STDOUT: %I.impl_witness: = impl_witness @C.%I.impl_witness_table, @I.impl(%Self) [symbolic = %I.impl_witness (constants.%I.impl_witness)] +// CHECK:STDOUT: %I.impl_witness: = impl_witness @C.%I.impl_witness_table, @C.as.I.impl(%Self) [symbolic = %I.impl_witness (constants.%I.impl_witness)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %Self.ref as %I.ref; // CHECK:STDOUT: } @@ -66,13 +66,13 @@ interface I { // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.I.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [symbolic = %C (constants.%C)] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @I.impl [concrete] -// CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table, @I.impl(constants.%Self) [symbolic = @I.impl.%I.impl_witness (constants.%I.impl_witness)] -// CHECK:STDOUT: %.loc24: type = specific_constant @I.impl.%I.ref, @I.impl(constants.%Self) [concrete = constants.%I.type] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @C.as.I.impl [concrete] +// CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table, @C.as.I.impl(constants.%Self) [symbolic = @C.as.I.impl.%I.impl_witness (constants.%I.impl_witness)] +// CHECK:STDOUT: %.loc24: type = specific_constant @C.as.I.impl.%I.ref, @C.as.I.impl(constants.%Self) [concrete = constants.%I.type] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type @@ -86,7 +86,7 @@ interface I { // CHECK:STDOUT: // CHECK:STDOUT: specific @C(constants.%Self) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.impl(constants.%Self) { +// CHECK:STDOUT: specific @C.as.I.impl(constants.%Self) { // CHECK:STDOUT: %Self => constants.%Self // CHECK:STDOUT: %C => constants.%C // CHECK:STDOUT: %I.impl_witness => constants.%I.impl_witness diff --git a/toolchain/check/testdata/impl/fail_extend_undefined_interface.carbon b/toolchain/check/testdata/impl/fail_extend_undefined_interface.carbon index a1a231596f7e..c930ab0452ac 100644 --- a/toolchain/check/testdata/impl/fail_extend_undefined_interface.carbon +++ b/toolchain/check/testdata/impl/fail_extend_undefined_interface.carbon @@ -63,14 +63,14 @@ fn F(c: C) { // CHECK:STDOUT: // CHECK:STDOUT: interface @I; // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: %Self.ref as %I.ref; +// CHECK:STDOUT: impl @C.as.I.impl: %Self.ref as %I.ref; // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.I.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @I.impl [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @C.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] diff --git a/toolchain/check/testdata/impl/fail_impl_as_scope.carbon b/toolchain/check/testdata/impl/fail_impl_as_scope.carbon index 3c09302af79c..2ff374b19085 100644 --- a/toolchain/check/testdata/impl/fail_impl_as_scope.carbon +++ b/toolchain/check/testdata/impl/fail_impl_as_scope.carbon @@ -128,7 +128,7 @@ class X { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {} {} -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @.as.I.impl [concrete] {} { // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} @@ -142,7 +142,7 @@ class X { // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: as %I.ref { +// CHECK:STDOUT: impl @.as.I.impl: as %I.ref { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = // CHECK:STDOUT: } @@ -199,7 +199,7 @@ class X { // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @J.impl: as %J.ref { +// CHECK:STDOUT: impl @.as.J.impl: as %J.ref { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = // CHECK:STDOUT: } @@ -211,7 +211,7 @@ class X { // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: impl_decl @J.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @.as.J.impl [concrete] {} { // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: } // CHECK:STDOUT: %G.ref: %G.type = name_ref G, file.%G.decl [concrete = constants.%G] @@ -224,41 +224,41 @@ class X { // CHECK:STDOUT: constants { // CHECK:STDOUT: %Z.type: type = facet_type <@Z> [concrete] // CHECK:STDOUT: %Self.6e6: %Z.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %Zero.type.822: type = fn_type @Zero.loc4 [concrete] +// CHECK:STDOUT: %Z.Zero.type: type = fn_type @Z.Zero [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %Zero.d14: %Zero.type.822 = struct_value () [concrete] +// CHECK:STDOUT: %Z.Zero: %Z.Zero.type = struct_value () [concrete] // CHECK:STDOUT: %Z.assoc_type: type = assoc_entity_type @Z [concrete] -// CHECK:STDOUT: %assoc0.534: %Z.assoc_type = assoc_entity element0, @Z.%Zero.decl [concrete] +// CHECK:STDOUT: %assoc0.534: %Z.assoc_type = assoc_entity element0, @Z.%Z.Zero.decl [concrete] // CHECK:STDOUT: %Self.as_type.cd1: type = facet_access_type %Self.6e6 [symbolic] // CHECK:STDOUT: %pattern_type.a40: type = pattern_type %Self.as_type.cd1 [symbolic] -// CHECK:STDOUT: %Method.type.f12: type = fn_type @Method.loc5 [concrete] -// CHECK:STDOUT: %Method.724: %Method.type.f12 = struct_value () [concrete] -// CHECK:STDOUT: %assoc1: %Z.assoc_type = assoc_entity element1, @Z.%Method.decl [concrete] -// CHECK:STDOUT: %Zero.type.db4: type = fn_type @Zero.loc12, @Z.impl.6b5(%Self.6e6) [symbolic] -// CHECK:STDOUT: %Zero.8fb: %Zero.type.db4 = struct_value () [symbolic] -// CHECK:STDOUT: %Method.type.163: type = fn_type @Method.loc13, @Z.impl.6b5(%Self.6e6) [symbolic] -// CHECK:STDOUT: %Method.84d: %Method.type.163 = struct_value () [symbolic] +// CHECK:STDOUT: %Z.Method.type: type = fn_type @Z.Method [concrete] +// CHECK:STDOUT: %Z.Method: %Z.Method.type = struct_value () [concrete] +// CHECK:STDOUT: %assoc1: %Z.assoc_type = assoc_entity element1, @Z.%Z.Method.decl [concrete] +// CHECK:STDOUT: %.as.Z.impl.Zero.type: type = fn_type @.as.Z.impl.Zero, @.as.Z.impl(%Self.6e6) [symbolic] +// CHECK:STDOUT: %.as.Z.impl.Zero: %.as.Z.impl.Zero.type = struct_value () [symbolic] +// CHECK:STDOUT: %.as.Z.impl.Method.type: type = fn_type @.as.Z.impl.Method, @.as.Z.impl(%Self.6e6) [symbolic] +// CHECK:STDOUT: %.as.Z.impl.Method: %.as.Z.impl.Method.type = struct_value () [symbolic] // CHECK:STDOUT: %require_complete.dbd: = require_complete_type %Self.as_type.cd1 [symbolic] // CHECK:STDOUT: %Point: type = class_type @Point [concrete] // CHECK:STDOUT: %Z.impl_witness: = impl_witness @Point.%Z.impl_witness_table [concrete] -// CHECK:STDOUT: %Zero.type.e33: type = fn_type @Zero.loc19 [concrete] -// CHECK:STDOUT: %Zero.dec: %Zero.type.e33 = struct_value () [concrete] +// CHECK:STDOUT: %Point.as.Z.impl.Zero.type: type = fn_type @Point.as.Z.impl.Zero [concrete] +// CHECK:STDOUT: %Point.as.Z.impl.Zero: %Point.as.Z.impl.Zero.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.35b: type = pattern_type %Point [concrete] -// CHECK:STDOUT: %Method.type.2ed: type = fn_type @Method.loc20 [concrete] -// CHECK:STDOUT: %Method.2c2: %Method.type.2ed = struct_value () [concrete] +// CHECK:STDOUT: %Point.as.Z.impl.Method.type: type = fn_type @Point.as.Z.impl.Method [concrete] +// CHECK:STDOUT: %Point.as.Z.impl.Method: %Point.as.Z.impl.Method.type = struct_value () [concrete] // CHECK:STDOUT: %Z.facet: %Z.type = facet_value %Point, (%Z.impl_witness) [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %.d52: type = fn_type_with_self_type %Zero.type.822, %Z.facet [concrete] +// CHECK:STDOUT: %.d52: type = fn_type_with_self_type %Z.Zero.type, %Z.facet [concrete] // CHECK:STDOUT: %Point.val: %Point = struct_value () [concrete] -// CHECK:STDOUT: %.462: type = fn_type_with_self_type %Method.type.f12, %Z.facet [concrete] +// CHECK:STDOUT: %.462: type = fn_type_with_self_type %Z.Method.type, %Z.facet [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.003: type = fn_type @Op.1, @Destroy.impl(%Point) [concrete] -// CHECK:STDOUT: %Op.d2d: %Op.type.003 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.003: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%Point) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.d2d: %T.as.Destroy.impl.Op.type.003 = struct_value () [concrete] // CHECK:STDOUT: %ptr.536: type = ptr_type %Point [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.d2d, @Op.1(%Point) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.d2d, @T.as.Destroy.impl.Op(%Point) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -285,22 +285,22 @@ class X { // CHECK:STDOUT: // CHECK:STDOUT: interface @Z { // CHECK:STDOUT: %Self: %Z.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.6e6] -// CHECK:STDOUT: %Zero.decl: %Zero.type.822 = fn_decl @Zero.loc4 [concrete = constants.%Zero.d14] {} {} -// CHECK:STDOUT: %assoc0: %Z.assoc_type = assoc_entity element0, %Zero.decl [concrete = constants.%assoc0.534] -// CHECK:STDOUT: %Method.decl: %Method.type.f12 = fn_decl @Method.loc5 [concrete = constants.%Method.724] { -// CHECK:STDOUT: %self.patt: @Method.loc5.%pattern_type (%pattern_type.a40) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @Method.loc5.%pattern_type (%pattern_type.a40) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %Z.Zero.decl: %Z.Zero.type = fn_decl @Z.Zero [concrete = constants.%Z.Zero] {} {} +// CHECK:STDOUT: %assoc0: %Z.assoc_type = assoc_entity element0, %Z.Zero.decl [concrete = constants.%assoc0.534] +// CHECK:STDOUT: %Z.Method.decl: %Z.Method.type = fn_decl @Z.Method [concrete = constants.%Z.Method] { +// CHECK:STDOUT: %self.patt: @Z.Method.%pattern_type (%pattern_type.a40) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @Z.Method.%pattern_type (%pattern_type.a40) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @Method.loc5.%Self.as_type.loc5_19.2 (%Self.as_type.cd1) = value_param call_param0 -// CHECK:STDOUT: %.loc5_19.1: type = splice_block %.loc5_19.2 [symbolic = %Self.as_type.loc5_19.2 (constants.%Self.as_type.cd1)] { +// CHECK:STDOUT: %self.param: @Z.Method.%Self.as_type.loc5_19.1 (%Self.as_type.cd1) = value_param call_param0 +// CHECK:STDOUT: %.loc5_19.1: type = splice_block %.loc5_19.2 [symbolic = %Self.as_type.loc5_19.1 (constants.%Self.as_type.cd1)] { // CHECK:STDOUT: %Self.ref: %Z.type = name_ref Self, @Z.%Self [symbolic = %Self (constants.%Self.6e6)] -// CHECK:STDOUT: %Self.as_type.loc5_19.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc5_19.2 (constants.%Self.as_type.cd1)] -// CHECK:STDOUT: %.loc5_19.2: type = converted %Self.ref, %Self.as_type.loc5_19.1 [symbolic = %Self.as_type.loc5_19.2 (constants.%Self.as_type.cd1)] +// CHECK:STDOUT: %Self.as_type.loc5_19.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc5_19.1 (constants.%Self.as_type.cd1)] +// CHECK:STDOUT: %.loc5_19.2: type = converted %Self.ref, %Self.as_type.loc5_19.2 [symbolic = %Self.as_type.loc5_19.1 (constants.%Self.as_type.cd1)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @Method.loc5.%Self.as_type.loc5_19.2 (%Self.as_type.cd1) = bind_name self, %self.param +// CHECK:STDOUT: %self: @Z.Method.%Self.as_type.loc5_19.1 (%Self.as_type.cd1) = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc1: %Z.assoc_type = assoc_entity element1, %Method.decl [concrete = constants.%assoc1] -// CHECK:STDOUT: impl_decl @Z.impl.6b5 [concrete] {} { +// CHECK:STDOUT: %assoc1: %Z.assoc_type = assoc_entity element1, %Z.Method.decl [concrete = constants.%assoc1] +// CHECK:STDOUT: impl_decl @.as.Z.impl [concrete] {} { // CHECK:STDOUT: %Z.ref: type = name_ref Z, file.%Z.decl [concrete = constants.%Z.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -309,42 +309,42 @@ class X { // CHECK:STDOUT: .Zero = %assoc0 // CHECK:STDOUT: .Method = %assoc1 // CHECK:STDOUT: .Z = -// CHECK:STDOUT: witness = (%Zero.decl, %Method.decl) +// CHECK:STDOUT: witness = (%Z.Zero.decl, %Z.Method.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @Z.impl.6b5(@Z.%Self: %Z.type) { +// CHECK:STDOUT: generic impl @.as.Z.impl(@Z.%Self: %Z.type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Self: %Z.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.6e6)] -// CHECK:STDOUT: %Zero.type: type = fn_type @Zero.loc12, @Z.impl.6b5(%Self) [symbolic = %Zero.type (constants.%Zero.type.db4)] -// CHECK:STDOUT: %Zero: @Z.impl.6b5.%Zero.type (%Zero.type.db4) = struct_value () [symbolic = %Zero (constants.%Zero.8fb)] -// CHECK:STDOUT: %Method.type: type = fn_type @Method.loc13, @Z.impl.6b5(%Self) [symbolic = %Method.type (constants.%Method.type.163)] -// CHECK:STDOUT: %Method: @Z.impl.6b5.%Method.type (%Method.type.163) = struct_value () [symbolic = %Method (constants.%Method.84d)] +// CHECK:STDOUT: %.as.Z.impl.Zero.type: type = fn_type @.as.Z.impl.Zero, @.as.Z.impl(%Self) [symbolic = %.as.Z.impl.Zero.type (constants.%.as.Z.impl.Zero.type)] +// CHECK:STDOUT: %.as.Z.impl.Zero: @.as.Z.impl.%.as.Z.impl.Zero.type (%.as.Z.impl.Zero.type) = struct_value () [symbolic = %.as.Z.impl.Zero (constants.%.as.Z.impl.Zero)] +// CHECK:STDOUT: %.as.Z.impl.Method.type: type = fn_type @.as.Z.impl.Method, @.as.Z.impl(%Self) [symbolic = %.as.Z.impl.Method.type (constants.%.as.Z.impl.Method.type)] +// CHECK:STDOUT: %.as.Z.impl.Method: @.as.Z.impl.%.as.Z.impl.Method.type (%.as.Z.impl.Method.type) = struct_value () [symbolic = %.as.Z.impl.Method (constants.%.as.Z.impl.Method)] // CHECK:STDOUT: // CHECK:STDOUT: impl: as %Z.ref { -// CHECK:STDOUT: %Zero.decl: @Z.impl.6b5.%Zero.type (%Zero.type.db4) = fn_decl @Zero.loc12 [symbolic = @Z.impl.6b5.%Zero (constants.%Zero.8fb)] {} {} -// CHECK:STDOUT: %Method.decl: @Z.impl.6b5.%Method.type (%Method.type.163) = fn_decl @Method.loc13 [symbolic = @Z.impl.6b5.%Method (constants.%Method.84d)] { -// CHECK:STDOUT: %self.patt: @Method.loc13.%pattern_type (%pattern_type.a40) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @Method.loc13.%pattern_type (%pattern_type.a40) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %.as.Z.impl.Zero.decl: @.as.Z.impl.%.as.Z.impl.Zero.type (%.as.Z.impl.Zero.type) = fn_decl @.as.Z.impl.Zero [symbolic = @.as.Z.impl.%.as.Z.impl.Zero (constants.%.as.Z.impl.Zero)] {} {} +// CHECK:STDOUT: %.as.Z.impl.Method.decl: @.as.Z.impl.%.as.Z.impl.Method.type (%.as.Z.impl.Method.type) = fn_decl @.as.Z.impl.Method [symbolic = @.as.Z.impl.%.as.Z.impl.Method (constants.%.as.Z.impl.Method)] { +// CHECK:STDOUT: %self.patt: @.as.Z.impl.Method.%pattern_type (%pattern_type.a40) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @.as.Z.impl.Method.%pattern_type (%pattern_type.a40) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @Method.loc13.%Self.as_type.loc13_21.2 (%Self.as_type.cd1) = value_param call_param0 -// CHECK:STDOUT: %.loc13_21.1: type = splice_block %.loc13_21.2 [symbolic = %Self.as_type.loc13_21.2 (constants.%Self.as_type.cd1)] { +// CHECK:STDOUT: %self.param: @.as.Z.impl.Method.%Self.as_type.loc13_21.1 (%Self.as_type.cd1) = value_param call_param0 +// CHECK:STDOUT: %.loc13_21.1: type = splice_block %.loc13_21.2 [symbolic = %Self.as_type.loc13_21.1 (constants.%Self.as_type.cd1)] { // CHECK:STDOUT: %Self.ref: %Z.type = name_ref Self, @Z.%Self [symbolic = %Self (constants.%Self.6e6)] -// CHECK:STDOUT: %Self.as_type.loc13_21.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc13_21.2 (constants.%Self.as_type.cd1)] -// CHECK:STDOUT: %.loc13_21.2: type = converted %Self.ref, %Self.as_type.loc13_21.1 [symbolic = %Self.as_type.loc13_21.2 (constants.%Self.as_type.cd1)] +// CHECK:STDOUT: %Self.as_type.loc13_21.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc13_21.1 (constants.%Self.as_type.cd1)] +// CHECK:STDOUT: %.loc13_21.2: type = converted %Self.ref, %Self.as_type.loc13_21.2 [symbolic = %Self.as_type.loc13_21.1 (constants.%Self.as_type.cd1)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @Method.loc13.%Self.as_type.loc13_21.2 (%Self.as_type.cd1) = bind_name self, %self.param +// CHECK:STDOUT: %self: @.as.Z.impl.Method.%Self.as_type.loc13_21.1 (%Self.as_type.cd1) = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Zero = %Zero.decl -// CHECK:STDOUT: .Method = %Method.decl +// CHECK:STDOUT: .Zero = %.as.Z.impl.Zero.decl +// CHECK:STDOUT: .Method = %.as.Z.impl.Method.decl // CHECK:STDOUT: witness = // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Z.impl.c94: %Self.ref as %Z.ref { -// CHECK:STDOUT: %Zero.decl: %Zero.type.e33 = fn_decl @Zero.loc19 [concrete = constants.%Zero.dec] {} {} -// CHECK:STDOUT: %Method.decl: %Method.type.2ed = fn_decl @Method.loc20 [concrete = constants.%Method.2c2] { +// CHECK:STDOUT: impl @Point.as.Z.impl: %Self.ref as %Z.ref { +// CHECK:STDOUT: %Point.as.Z.impl.Zero.decl: %Point.as.Z.impl.Zero.type = fn_decl @Point.as.Z.impl.Zero [concrete = constants.%Point.as.Z.impl.Zero] {} {} +// CHECK:STDOUT: %Point.as.Z.impl.Method.decl: %Point.as.Z.impl.Method.type = fn_decl @Point.as.Z.impl.Method [concrete = constants.%Point.as.Z.impl.Method] { // CHECK:STDOUT: %self.patt: %pattern_type.35b = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.35b = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -354,17 +354,17 @@ class X { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Zero = %Zero.decl -// CHECK:STDOUT: .Method = %Method.decl +// CHECK:STDOUT: .Zero = %Point.as.Z.impl.Zero.decl +// CHECK:STDOUT: .Method = %Point.as.Z.impl.Method.decl // CHECK:STDOUT: witness = @Point.%Z.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Point { -// CHECK:STDOUT: impl_decl @Z.impl.c94 [concrete] {} { +// CHECK:STDOUT: impl_decl @Point.as.Z.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Point [concrete = constants.%Point] // CHECK:STDOUT: %Z.ref: type = name_ref Z, file.%Z.decl [concrete = constants.%Z.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %Z.impl_witness_table = impl_witness_table (@Z.impl.c94.%Zero.decl, @Z.impl.c94.%Method.decl), @Z.impl.c94 [concrete] +// CHECK:STDOUT: %Z.impl_witness_table = impl_witness_table (@Point.as.Z.impl.%Point.as.Z.impl.Zero.decl, @Point.as.Z.impl.%Point.as.Z.impl.Method.decl), @Point.as.Z.impl [concrete] // CHECK:STDOUT: %Z.impl_witness: = impl_witness %Z.impl_witness_table [concrete = constants.%Z.impl_witness] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] @@ -375,19 +375,19 @@ class X { // CHECK:STDOUT: .Z = // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Zero.loc4(@Z.%Self: %Z.type) { +// CHECK:STDOUT: generic fn @Z.Zero(@Z.%Self: %Z.type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Method.loc5(@Z.%Self: %Z.type) { +// CHECK:STDOUT: generic fn @Z.Method(@Z.%Self: %Z.type) { // CHECK:STDOUT: %Self: %Z.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.6e6)] -// CHECK:STDOUT: %Self.as_type.loc5_19.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc5_19.2 (constants.%Self.as_type.cd1)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc5_19.2 [symbolic = %pattern_type (constants.%pattern_type.a40)] +// CHECK:STDOUT: %Self.as_type.loc5_19.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc5_19.1 (constants.%Self.as_type.cd1)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc5_19.1 [symbolic = %pattern_type (constants.%pattern_type.a40)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @Method.loc5.%Self.as_type.loc5_19.2 (%Self.as_type.cd1)); +// CHECK:STDOUT: fn(%self.param: @Z.Method.%Self.as_type.loc5_19.1 (%Self.as_type.cd1)); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Zero.loc12(@Z.%Self: %Z.type) { +// CHECK:STDOUT: generic fn @.as.Z.impl.Zero(@Z.%Self: %Z.type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: fn() { @@ -396,26 +396,26 @@ class X { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Method.loc13(@Z.%Self: %Z.type) { +// CHECK:STDOUT: generic fn @.as.Z.impl.Method(@Z.%Self: %Z.type) { // CHECK:STDOUT: %Self: %Z.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.6e6)] -// CHECK:STDOUT: %Self.as_type.loc13_21.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc13_21.2 (constants.%Self.as_type.cd1)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc13_21.2 [symbolic = %pattern_type (constants.%pattern_type.a40)] +// CHECK:STDOUT: %Self.as_type.loc13_21.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc13_21.1 (constants.%Self.as_type.cd1)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc13_21.1 [symbolic = %pattern_type (constants.%pattern_type.a40)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type %Self.as_type.loc13_21.2 [symbolic = %require_complete (constants.%require_complete.dbd)] +// CHECK:STDOUT: %require_complete: = require_complete_type %Self.as_type.loc13_21.1 [symbolic = %require_complete (constants.%require_complete.dbd)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @Method.loc13.%Self.as_type.loc13_21.2 (%Self.as_type.cd1)) { +// CHECK:STDOUT: fn(%self.param: @.as.Z.impl.Method.%Self.as_type.loc13_21.1 (%Self.as_type.cd1)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Zero.loc19() { +// CHECK:STDOUT: fn @Point.as.Z.impl.Zero() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Method.loc20(%self.param: %Point) { +// CHECK:STDOUT: fn @Point.as.Z.impl.Method(%self.param: %Point) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -427,8 +427,8 @@ class X { // CHECK:STDOUT: %Zero.ref: %Z.assoc_type = name_ref Zero, @Z.%assoc0 [concrete = constants.%assoc0.534] // CHECK:STDOUT: %Z.facet: %Z.type = facet_value constants.%Point, (constants.%Z.impl_witness) [concrete = constants.%Z.facet] // CHECK:STDOUT: %.loc28: %Z.type = converted %Point.ref.loc28, %Z.facet [concrete = constants.%Z.facet] -// CHECK:STDOUT: %impl.elem0: %.d52 = impl_witness_access constants.%Z.impl_witness, element0 [concrete = constants.%Zero.dec] -// CHECK:STDOUT: %Zero.call: init %empty_tuple.type = call %impl.elem0() +// CHECK:STDOUT: %impl.elem0: %.d52 = impl_witness_access constants.%Z.impl_witness, element0 [concrete = constants.%Point.as.Z.impl.Zero] +// CHECK:STDOUT: %Point.as.Z.impl.Zero.call: init %empty_tuple.type = call %impl.elem0() // CHECK:STDOUT: %.loc29_5.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %Point.ref.loc29: type = name_ref Point, file.%Point.decl [concrete = constants.%Point] // CHECK:STDOUT: %.loc29_5.2: ref %Point = temporary_storage @@ -437,48 +437,48 @@ class X { // CHECK:STDOUT: %.loc29_7.1: ref %Point = converted %.loc29_5.1, %.loc29_5.4 // CHECK:STDOUT: %Z.ref.loc29: type = name_ref Z, file.%Z.decl [concrete = constants.%Z.type] // CHECK:STDOUT: %Method.ref: %Z.assoc_type = name_ref Method, @Z.%assoc1 [concrete = constants.%assoc1] -// CHECK:STDOUT: %impl.elem1: %.462 = impl_witness_access constants.%Z.impl_witness, element1 [concrete = constants.%Method.2c2] +// CHECK:STDOUT: %impl.elem1: %.462 = impl_witness_access constants.%Z.impl_witness, element1 [concrete = constants.%Point.as.Z.impl.Method] // CHECK:STDOUT: %bound_method.loc29_16: = bound_method %.loc29_7.1, %impl.elem1 // CHECK:STDOUT: %.loc29_7.2: %Point = bind_value %.loc29_7.1 -// CHECK:STDOUT: %Method.call: init %empty_tuple.type = call %bound_method.loc29_16(%.loc29_7.2) -// CHECK:STDOUT: %Op.bound: = bound_method %.loc29_5.2, constants.%Op.d2d -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.d2d, @Op.1(constants.%Point) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc29_5: = bound_method %.loc29_5.2, %Op.specific_fn +// CHECK:STDOUT: %Point.as.Z.impl.Method.call: init %empty_tuple.type = call %bound_method.loc29_16(%.loc29_7.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc29_5.2, constants.%T.as.Destroy.impl.Op.d2d +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.d2d, @T.as.Destroy.impl.Op(constants.%Point) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc29_5: = bound_method %.loc29_5.2, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.536 = addr_of %.loc29_5.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc29_5(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc29_5(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Zero.loc4(constants.%Self.6e6) {} +// CHECK:STDOUT: specific @Z.Zero(constants.%Self.6e6) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @Method.loc5(constants.%Self.6e6) { +// CHECK:STDOUT: specific @Z.Method(constants.%Self.6e6) { // CHECK:STDOUT: %Self => constants.%Self.6e6 -// CHECK:STDOUT: %Self.as_type.loc5_19.2 => constants.%Self.as_type.cd1 +// CHECK:STDOUT: %Self.as_type.loc5_19.1 => constants.%Self.as_type.cd1 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.a40 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Z.impl.6b5(constants.%Self.6e6) { +// CHECK:STDOUT: specific @.as.Z.impl(constants.%Self.6e6) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Self => constants.%Self.6e6 -// CHECK:STDOUT: %Zero.type => constants.%Zero.type.db4 -// CHECK:STDOUT: %Zero => constants.%Zero.8fb -// CHECK:STDOUT: %Method.type => constants.%Method.type.163 -// CHECK:STDOUT: %Method => constants.%Method.84d +// CHECK:STDOUT: %.as.Z.impl.Zero.type => constants.%.as.Z.impl.Zero.type +// CHECK:STDOUT: %.as.Z.impl.Zero => constants.%.as.Z.impl.Zero +// CHECK:STDOUT: %.as.Z.impl.Method.type => constants.%.as.Z.impl.Method.type +// CHECK:STDOUT: %.as.Z.impl.Method => constants.%.as.Z.impl.Method // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Zero.loc12(constants.%Self.6e6) {} +// CHECK:STDOUT: specific @.as.Z.impl.Zero(constants.%Self.6e6) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @Method.loc13(constants.%Self.6e6) { +// CHECK:STDOUT: specific @.as.Z.impl.Method(constants.%Self.6e6) { // CHECK:STDOUT: %Self => constants.%Self.6e6 -// CHECK:STDOUT: %Self.as_type.loc13_21.2 => constants.%Self.as_type.cd1 +// CHECK:STDOUT: %Self.as_type.loc13_21.1 => constants.%Self.as_type.cd1 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.a40 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Zero.loc4(constants.%Z.facet) {} +// CHECK:STDOUT: specific @Z.Zero(constants.%Z.facet) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @Method.loc5(constants.%Z.facet) { +// CHECK:STDOUT: specific @Z.Method(constants.%Z.facet) { // CHECK:STDOUT: %Self => constants.%Z.facet -// CHECK:STDOUT: %Self.as_type.loc5_19.2 => constants.%Point +// CHECK:STDOUT: %Self.as_type.loc5_19.1 => constants.%Point // CHECK:STDOUT: %pattern_type => constants.%pattern_type.35b // CHECK:STDOUT: } // CHECK:STDOUT: @@ -487,19 +487,19 @@ class X { // CHECK:STDOUT: constants { // CHECK:STDOUT: %A.type: type = facet_type <@A> [concrete] // CHECK:STDOUT: %Self.31d: %A.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %B.type.1c3: type = fn_type @B.loc5 [concrete] +// CHECK:STDOUT: %A.B.type: type = fn_type @A.B [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %B.b08: %B.type.1c3 = struct_value () [concrete] +// CHECK:STDOUT: %A.B: %A.B.type = struct_value () [concrete] // CHECK:STDOUT: %A.assoc_type: type = assoc_entity_type @A [concrete] -// CHECK:STDOUT: %assoc0: %A.assoc_type = assoc_entity element0, @A.%B.decl [concrete] +// CHECK:STDOUT: %assoc0: %A.assoc_type = assoc_entity element0, @A.%A.B.decl [concrete] // CHECK:STDOUT: %C.type: type = facet_type <@C> [concrete] // CHECK:STDOUT: %Self.02e: %C.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %X: type = class_type @X [concrete] // CHECK:STDOUT: %A.impl_witness: = impl_witness @X.%A.impl_witness_table [concrete] -// CHECK:STDOUT: %B.type.d47: type = fn_type @B.loc18 [concrete] -// CHECK:STDOUT: %B.4af: %B.type.d47 = struct_value () [concrete] +// CHECK:STDOUT: %X.as.A.impl.B.type: type = fn_type @X.as.A.impl.B [concrete] +// CHECK:STDOUT: %X.as.A.impl.B: %X.as.A.impl.B.type = struct_value () [concrete] // CHECK:STDOUT: %A.facet: %A.type = facet_value %X, (%A.impl_witness) [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] @@ -529,13 +529,13 @@ class X { // CHECK:STDOUT: // CHECK:STDOUT: interface @A { // CHECK:STDOUT: %Self: %A.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.31d] -// CHECK:STDOUT: %B.decl: %B.type.1c3 = fn_decl @B.loc5 [concrete = constants.%B.b08] {} {} -// CHECK:STDOUT: %assoc0: %A.assoc_type = assoc_entity element0, %B.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %A.B.decl: %A.B.type = fn_decl @A.B [concrete = constants.%A.B] {} {} +// CHECK:STDOUT: %assoc0: %A.assoc_type = assoc_entity element0, %A.B.decl [concrete = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .B = %assoc0 -// CHECK:STDOUT: witness = (%B.decl) +// CHECK:STDOUT: witness = (%A.B.decl) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @C { @@ -546,30 +546,30 @@ class X { // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @A.impl: %Self.ref as %A.ref { -// CHECK:STDOUT: impl_decl @C.impl [concrete] {} { +// CHECK:STDOUT: impl @X.as.A.impl: %Self.ref as %A.ref { +// CHECK:STDOUT: impl_decl @.as.C.impl [concrete] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %B.decl: %B.type.d47 = fn_decl @B.loc18 [concrete = constants.%B.4af] {} {} +// CHECK:STDOUT: %X.as.A.impl.B.decl: %X.as.A.impl.B.type = fn_decl @X.as.A.impl.B [concrete = constants.%X.as.A.impl.B] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .C = -// CHECK:STDOUT: .B = %B.decl +// CHECK:STDOUT: .B = %X.as.A.impl.B.decl // CHECK:STDOUT: .G = // CHECK:STDOUT: witness = @X.%A.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @C.impl: as %C.ref { +// CHECK:STDOUT: impl @.as.C.impl: as %C.ref { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @X { -// CHECK:STDOUT: impl_decl @A.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @X.as.A.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%X [concrete = constants.%X] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %A.impl_witness_table = impl_witness_table (@A.impl.%B.decl), @A.impl [concrete] +// CHECK:STDOUT: %A.impl_witness_table = impl_witness_table (@X.as.A.impl.%X.as.A.impl.B.decl), @X.as.A.impl [concrete] // CHECK:STDOUT: %A.impl_witness: = impl_witness %A.impl_witness_table [concrete = constants.%A.impl_witness] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] @@ -582,7 +582,7 @@ class X { // CHECK:STDOUT: .G = // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @B.loc5(@A.%Self: %A.type) { +// CHECK:STDOUT: generic fn @A.B(@A.%Self: %A.type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: @@ -591,14 +591,14 @@ class X { // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @B.loc18() { +// CHECK:STDOUT: fn @X.as.A.impl.B() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %G.ref: %G.type = name_ref G, file.%G.decl [concrete = constants.%G] // CHECK:STDOUT: %G.call: init %empty_tuple.type = call %G.ref() // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @B.loc5(constants.%Self.31d) {} +// CHECK:STDOUT: specific @A.B(constants.%Self.31d) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @B.loc5(constants.%A.facet) {} +// CHECK:STDOUT: specific @A.B(constants.%A.facet) {} // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/fail_impl_bad_assoc_const.carbon b/toolchain/check/testdata/impl/fail_impl_bad_assoc_const.carbon index 4b06d8568489..07cf322bad37 100644 --- a/toolchain/check/testdata/impl/fail_impl_bad_assoc_const.carbon +++ b/toolchain/check/testdata/impl/fail_impl_bad_assoc_const.carbon @@ -39,12 +39,12 @@ impl () as I {} // CHECK:STDOUT: .I = %I.decl // CHECK:STDOUT: } // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @empty_tuple.type.as.I.impl [concrete] {} { // CHECK:STDOUT: %.loc24_7.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc24_7.2: type = converted %.loc24_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @I.impl [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @empty_tuple.type.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -64,7 +64,7 @@ impl () as I {} // CHECK:STDOUT: assoc_const T:! type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: %.loc24_7.2 as %I.ref { +// CHECK:STDOUT: impl @empty_tuple.type.as.I.impl: %.loc24_7.2 as %I.ref { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%I.impl_witness // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/fail_impl_bad_assoc_fn.carbon b/toolchain/check/testdata/impl/fail_impl_bad_assoc_fn.carbon index e0ef6a8b0280..191a45b17882 100644 --- a/toolchain/check/testdata/impl/fail_impl_bad_assoc_fn.carbon +++ b/toolchain/check/testdata/impl/fail_impl_bad_assoc_fn.carbon @@ -245,18 +245,18 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: constants { // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] // CHECK:STDOUT: %Self.826: %I.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.cf0: type = fn_type @F.loc15 [concrete] +// CHECK:STDOUT: %I.F.type: type = fn_type @I.F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F.bc6: %F.type.cf0 = struct_value () [concrete] +// CHECK:STDOUT: %I.F: %I.F.type = struct_value () [concrete] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] -// CHECK:STDOUT: %assoc0.82e: %I.assoc_type = assoc_entity element0, @I.%F.decl [concrete] +// CHECK:STDOUT: %assoc0.82e: %I.assoc_type = assoc_entity element0, @I.%I.F.decl [concrete] // CHECK:STDOUT: %NoF: type = class_type @NoF [concrete] // CHECK:STDOUT: %I.impl_witness.901: = impl_witness @NoF.%I.impl_witness_table [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %FNotFunction: type = class_type @FNotFunction [concrete] // CHECK:STDOUT: %I.impl_witness.44e: = impl_witness @FNotFunction.%I.impl_witness_table [concrete] -// CHECK:STDOUT: %F.70c: type = class_type @F.loc37 [concrete] +// CHECK:STDOUT: %F: type = class_type @F [concrete] // CHECK:STDOUT: %PossiblyF.type: type = fn_type @PossiblyF [concrete] // CHECK:STDOUT: %PossiblyF: %PossiblyF.type = struct_value () [concrete] // CHECK:STDOUT: %FAlias: type = class_type @FAlias [concrete] @@ -266,82 +266,82 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %Bool.type: type = fn_type @Bool [concrete] // CHECK:STDOUT: %Bool: %Bool.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.831: type = pattern_type bool [concrete] -// CHECK:STDOUT: %F.type.44ef8c.1: type = fn_type @F.loc69_18.1 [concrete] -// CHECK:STDOUT: %F.424e9e.1: %F.type.44ef8c.1 = struct_value () [concrete] +// CHECK:STDOUT: %FExtraParam.as.I.impl.F.type.44ef8c.1: type = fn_type @FExtraParam.as.I.impl.F.loc69_18.1 [concrete] +// CHECK:STDOUT: %FExtraParam.as.I.impl.F.424e9e.1: %FExtraParam.as.I.impl.F.type.44ef8c.1 = struct_value () [concrete] // CHECK:STDOUT: %I.facet.fa4: %I.type = facet_value %FExtraParam, (%I.impl_witness.1f3) [concrete] -// CHECK:STDOUT: %F.type.44ef8c.2: type = fn_type @F.loc69_18.2 [concrete] -// CHECK:STDOUT: %F.424e9e.2: %F.type.44ef8c.2 = struct_value () [concrete] +// CHECK:STDOUT: %FExtraParam.as.I.impl.F.type.44ef8c.2: type = fn_type @FExtraParam.as.I.impl.F.loc69_18.2 [concrete] +// CHECK:STDOUT: %FExtraParam.as.I.impl.F.424e9e.2: %FExtraParam.as.I.impl.F.type.44ef8c.2 = struct_value () [concrete] // CHECK:STDOUT: %FExtraImplicitParam: type = class_type @FExtraImplicitParam [concrete] // CHECK:STDOUT: %I.impl_witness.a7b: = impl_witness @FExtraImplicitParam.%I.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.8ae: type = pattern_type %FExtraImplicitParam [concrete] -// CHECK:STDOUT: %F.type.e1abdd.1: type = fn_type @F.loc85_23.1 [concrete] -// CHECK:STDOUT: %F.6ff574.1: %F.type.e1abdd.1 = struct_value () [concrete] +// CHECK:STDOUT: %FExtraImplicitParam.as.I.impl.F.type.e1abdd.1: type = fn_type @FExtraImplicitParam.as.I.impl.F.loc85_23.1 [concrete] +// CHECK:STDOUT: %FExtraImplicitParam.as.I.impl.F.6ff574.1: %FExtraImplicitParam.as.I.impl.F.type.e1abdd.1 = struct_value () [concrete] // CHECK:STDOUT: %I.facet.ee5: %I.type = facet_value %FExtraImplicitParam, (%I.impl_witness.a7b) [concrete] -// CHECK:STDOUT: %F.type.e1abdd.2: type = fn_type @F.loc85_23.2 [concrete] -// CHECK:STDOUT: %F.6ff574.2: %F.type.e1abdd.2 = struct_value () [concrete] +// CHECK:STDOUT: %FExtraImplicitParam.as.I.impl.F.type.e1abdd.2: type = fn_type @FExtraImplicitParam.as.I.impl.F.loc85_23.2 [concrete] +// CHECK:STDOUT: %FExtraImplicitParam.as.I.impl.F.6ff574.2: %FExtraImplicitParam.as.I.impl.F.type.e1abdd.2 = struct_value () [concrete] // CHECK:STDOUT: %FExtraReturnType: type = class_type @FExtraReturnType [concrete] // CHECK:STDOUT: %I.impl_witness.59a: = impl_witness @FExtraReturnType.%I.impl_witness_table [concrete] -// CHECK:STDOUT: %F.type.387: type = fn_type @F.loc99 [concrete] -// CHECK:STDOUT: %F.df5: %F.type.387 = struct_value () [concrete] +// CHECK:STDOUT: %FExtraReturnType.as.I.impl.F.type: type = fn_type @FExtraReturnType.as.I.impl.F [concrete] +// CHECK:STDOUT: %FExtraReturnType.as.I.impl.F: %FExtraReturnType.as.I.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %I.facet.d5c: %I.type = facet_value %FExtraReturnType, (%I.impl_witness.59a) [concrete] // CHECK:STDOUT: %J.type: type = facet_type <@J> [concrete] // CHECK:STDOUT: %Self.ccd: %J.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.c14: type = fn_type @F.loc103 [concrete] -// CHECK:STDOUT: %F.b71: %F.type.c14 = struct_value () [concrete] +// CHECK:STDOUT: %J.F.type: type = fn_type @J.F [concrete] +// CHECK:STDOUT: %J.F: %J.F.type = struct_value () [concrete] // CHECK:STDOUT: %J.assoc_type: type = assoc_entity_type @J [concrete] -// CHECK:STDOUT: %assoc0.922: %J.assoc_type = assoc_entity element0, @J.%F.decl [concrete] +// CHECK:STDOUT: %assoc0.922: %J.assoc_type = assoc_entity element0, @J.%J.F.decl [concrete] // CHECK:STDOUT: %FMissingParam: type = class_type @FMissingParam [concrete] // CHECK:STDOUT: %J.impl_witness.4e9: = impl_witness @FMissingParam.%J.impl_witness_table [concrete] -// CHECK:STDOUT: %F.type.69596c.1: type = fn_type @F.loc117_31.1 [concrete] -// CHECK:STDOUT: %F.738f31.1: %F.type.69596c.1 = struct_value () [concrete] +// CHECK:STDOUT: %FMissingParam.as.J.impl.F.type.69596c.1: type = fn_type @FMissingParam.as.J.impl.F.loc117_31.1 [concrete] +// CHECK:STDOUT: %FMissingParam.as.J.impl.F.738f31.1: %FMissingParam.as.J.impl.F.type.69596c.1 = struct_value () [concrete] // CHECK:STDOUT: %J.facet.94c: %J.type = facet_value %FMissingParam, (%J.impl_witness.4e9) [concrete] -// CHECK:STDOUT: %F.type.69596c.2: type = fn_type @F.loc117_31.2 [concrete] -// CHECK:STDOUT: %F.738f31.2: %F.type.69596c.2 = struct_value () [concrete] +// CHECK:STDOUT: %FMissingParam.as.J.impl.F.type.69596c.2: type = fn_type @FMissingParam.as.J.impl.F.loc117_31.2 [concrete] +// CHECK:STDOUT: %FMissingParam.as.J.impl.F.738f31.2: %FMissingParam.as.J.impl.F.type.69596c.2 = struct_value () [concrete] // CHECK:STDOUT: %FMissingImplicitParam: type = class_type @FMissingImplicitParam [concrete] // CHECK:STDOUT: %J.impl_witness.841: = impl_witness @FMissingImplicitParam.%J.impl_witness_table [concrete] -// CHECK:STDOUT: %F.type.d97cef.1: type = fn_type @F.loc130_26.1 [concrete] -// CHECK:STDOUT: %F.01de92.1: %F.type.d97cef.1 = struct_value () [concrete] +// CHECK:STDOUT: %FMissingImplicitParam.as.J.impl.F.type.d97cef.1: type = fn_type @FMissingImplicitParam.as.J.impl.F.loc130_26.1 [concrete] +// CHECK:STDOUT: %FMissingImplicitParam.as.J.impl.F.01de92.1: %FMissingImplicitParam.as.J.impl.F.type.d97cef.1 = struct_value () [concrete] // CHECK:STDOUT: %J.facet.e7e: %J.type = facet_value %FMissingImplicitParam, (%J.impl_witness.841) [concrete] -// CHECK:STDOUT: %F.type.d97cef.2: type = fn_type @F.loc130_26.2 [concrete] -// CHECK:STDOUT: %F.01de92.2: %F.type.d97cef.2 = struct_value () [concrete] +// CHECK:STDOUT: %FMissingImplicitParam.as.J.impl.F.type.d97cef.2: type = fn_type @FMissingImplicitParam.as.J.impl.F.loc130_26.2 [concrete] +// CHECK:STDOUT: %FMissingImplicitParam.as.J.impl.F.01de92.2: %FMissingImplicitParam.as.J.impl.F.type.d97cef.2 = struct_value () [concrete] // CHECK:STDOUT: %FMissingReturnType: type = class_type @FMissingReturnType [concrete] // CHECK:STDOUT: %J.impl_witness.e75: = impl_witness @FMissingReturnType.%J.impl_witness_table [concrete] -// CHECK:STDOUT: %F.type.123d7a.1: type = fn_type @F.loc152_30.1 [concrete] -// CHECK:STDOUT: %F.c7d02d.1: %F.type.123d7a.1 = struct_value () [concrete] +// CHECK:STDOUT: %FMissingReturnType.as.J.impl.F.type.123d7a.1: type = fn_type @FMissingReturnType.as.J.impl.F.loc152_30.1 [concrete] +// CHECK:STDOUT: %FMissingReturnType.as.J.impl.F.c7d02d.1: %FMissingReturnType.as.J.impl.F.type.123d7a.1 = struct_value () [concrete] // CHECK:STDOUT: %J.facet.974: %J.type = facet_value %FMissingReturnType, (%J.impl_witness.e75) [concrete] -// CHECK:STDOUT: %F.type.123d7a.2: type = fn_type @F.loc152_30.2 [concrete] -// CHECK:STDOUT: %F.c7d02d.2: %F.type.123d7a.2 = struct_value () [concrete] +// CHECK:STDOUT: %FMissingReturnType.as.J.impl.F.type.123d7a.2: type = fn_type @FMissingReturnType.as.J.impl.F.loc152_30.2 [concrete] +// CHECK:STDOUT: %FMissingReturnType.as.J.impl.F.c7d02d.2: %FMissingReturnType.as.J.impl.F.type.123d7a.2 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %FDifferentParamType: type = class_type @FDifferentParamType [concrete] // CHECK:STDOUT: %J.impl_witness.cbe: = impl_witness @FDifferentParamType.%J.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.b90: type = pattern_type %FDifferentParamType [concrete] -// CHECK:STDOUT: %F.type.6b537d.1: type = fn_type @F.loc171_38.1 [concrete] -// CHECK:STDOUT: %F.04313a.1: %F.type.6b537d.1 = struct_value () [concrete] +// CHECK:STDOUT: %FDifferentParamType.as.J.impl.F.type.6b537d.1: type = fn_type @FDifferentParamType.as.J.impl.F.loc171_38.1 [concrete] +// CHECK:STDOUT: %FDifferentParamType.as.J.impl.F.04313a.1: %FDifferentParamType.as.J.impl.F.type.6b537d.1 = struct_value () [concrete] // CHECK:STDOUT: %J.facet.37e: %J.type = facet_value %FDifferentParamType, (%J.impl_witness.cbe) [concrete] -// CHECK:STDOUT: %F.type.6b537d.2: type = fn_type @F.loc171_38.2 [concrete] -// CHECK:STDOUT: %F.04313a.2: %F.type.6b537d.2 = struct_value () [concrete] +// CHECK:STDOUT: %FDifferentParamType.as.J.impl.F.type.6b537d.2: type = fn_type @FDifferentParamType.as.J.impl.F.loc171_38.2 [concrete] +// CHECK:STDOUT: %FDifferentParamType.as.J.impl.F.04313a.2: %FDifferentParamType.as.J.impl.F.type.6b537d.2 = struct_value () [concrete] // CHECK:STDOUT: %FDifferentImplicitParamType: type = class_type @FDifferentImplicitParamType [concrete] // CHECK:STDOUT: %J.impl_witness.af2: = impl_witness @FDifferentImplicitParamType.%J.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.9cc: type = pattern_type %FDifferentImplicitParamType [concrete] -// CHECK:STDOUT: %F.type.d6232a.1: type = fn_type @F.loc184_38.1 [concrete] -// CHECK:STDOUT: %F.886f70.1: %F.type.d6232a.1 = struct_value () [concrete] +// CHECK:STDOUT: %FDifferentImplicitParamType.as.J.impl.F.type.d6232a.1: type = fn_type @FDifferentImplicitParamType.as.J.impl.F.loc184_38.1 [concrete] +// CHECK:STDOUT: %FDifferentImplicitParamType.as.J.impl.F.886f70.1: %FDifferentImplicitParamType.as.J.impl.F.type.d6232a.1 = struct_value () [concrete] // CHECK:STDOUT: %J.facet.bf1: %J.type = facet_value %FDifferentImplicitParamType, (%J.impl_witness.af2) [concrete] -// CHECK:STDOUT: %F.type.d6232a.2: type = fn_type @F.loc184_38.2 [concrete] -// CHECK:STDOUT: %F.886f70.2: %F.type.d6232a.2 = struct_value () [concrete] +// CHECK:STDOUT: %FDifferentImplicitParamType.as.J.impl.F.type.d6232a.2: type = fn_type @FDifferentImplicitParamType.as.J.impl.F.loc184_38.2 [concrete] +// CHECK:STDOUT: %FDifferentImplicitParamType.as.J.impl.F.886f70.2: %FDifferentImplicitParamType.as.J.impl.F.type.d6232a.2 = struct_value () [concrete] // CHECK:STDOUT: %FDifferentReturnType: type = class_type @FDifferentReturnType [concrete] // CHECK:STDOUT: %J.impl_witness.bc1: = impl_witness @FDifferentReturnType.%J.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.8ee: type = pattern_type %FDifferentReturnType [concrete] -// CHECK:STDOUT: %F.type.d3b58f.1: type = fn_type @F.loc200_38.1 [concrete] -// CHECK:STDOUT: %F.be86c9.1: %F.type.d3b58f.1 = struct_value () [concrete] +// CHECK:STDOUT: %FDifferentReturnType.as.J.impl.F.type.d3b58f.1: type = fn_type @FDifferentReturnType.as.J.impl.F.loc200_38.1 [concrete] +// CHECK:STDOUT: %FDifferentReturnType.as.J.impl.F.be86c9.1: %FDifferentReturnType.as.J.impl.F.type.d3b58f.1 = struct_value () [concrete] // CHECK:STDOUT: %J.facet.67f: %J.type = facet_value %FDifferentReturnType, (%J.impl_witness.bc1) [concrete] -// CHECK:STDOUT: %F.type.d3b58f.2: type = fn_type @F.loc200_38.2 [concrete] -// CHECK:STDOUT: %F.be86c9.2: %F.type.d3b58f.2 = struct_value () [concrete] +// CHECK:STDOUT: %FDifferentReturnType.as.J.impl.F.type.d3b58f.2: type = fn_type @FDifferentReturnType.as.J.impl.F.loc200_38.2 [concrete] +// CHECK:STDOUT: %FDifferentReturnType.as.J.impl.F.be86c9.2: %FDifferentReturnType.as.J.impl.F.type.d3b58f.2 = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.3d3: type = fn_type @Op.1, @Destroy.impl(%FDifferentReturnType) [concrete] -// CHECK:STDOUT: %Op.ddd: %Op.type.3d3 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.3d3: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%FDifferentReturnType) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ddd: %T.as.Destroy.impl.Op.type.3d3 = struct_value () [concrete] // CHECK:STDOUT: %ptr.954: type = ptr_type %FDifferentReturnType [concrete] -// CHECK:STDOUT: %Op.specific_fn.b4b: = specific_function %Op.ddd, @Op.1(%FDifferentReturnType) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.b4b: = specific_function %T.as.Destroy.impl.Op.ddd, @T.as.Destroy.impl.Op(%FDifferentReturnType) [concrete] // CHECK:STDOUT: %SelfNested.type: type = facet_type <@SelfNested> [concrete] // CHECK:STDOUT: %Self.2ff: %SelfNested.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type.e1e: type = facet_access_type %Self.2ff [symbolic] @@ -357,10 +357,10 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete] // CHECK:STDOUT: %array_type.873: type = array_type %int_4, %Self.as_type.e1e [symbolic] // CHECK:STDOUT: %pattern_type.c7e: type = pattern_type %array_type.873 [symbolic] -// CHECK:STDOUT: %F.type.6ed: type = fn_type @F.loc211 [concrete] -// CHECK:STDOUT: %F.998: %F.type.6ed = struct_value () [concrete] +// CHECK:STDOUT: %SelfNested.F.type: type = fn_type @SelfNested.F [concrete] +// CHECK:STDOUT: %SelfNested.F: %SelfNested.F.type = struct_value () [concrete] // CHECK:STDOUT: %SelfNested.assoc_type: type = assoc_entity_type @SelfNested [concrete] -// CHECK:STDOUT: %assoc0.beb: %SelfNested.assoc_type = assoc_entity element0, @SelfNested.%F.decl [concrete] +// CHECK:STDOUT: %assoc0.beb: %SelfNested.assoc_type = assoc_entity element0, @SelfNested.%SelfNested.F.decl [concrete] // CHECK:STDOUT: %SelfNestedBadParam: type = class_type @SelfNestedBadParam [concrete] // CHECK:STDOUT: %SelfNested.impl_witness.e31: = impl_witness @SelfNestedBadParam.%SelfNested.impl_witness_table [concrete] // CHECK:STDOUT: %ptr.4cd: type = ptr_type %SelfNestedBadParam [concrete] @@ -369,31 +369,31 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %pattern_type.714: type = pattern_type %tuple.type.a7d [concrete] // CHECK:STDOUT: %array_type.a41: type = array_type %int_4, %SelfNestedBadParam [concrete] // CHECK:STDOUT: %pattern_type.1f1: type = pattern_type %array_type.a41 [concrete] -// CHECK:STDOUT: %F.type.f90165.1: type = fn_type @F.loc223_87.1 [concrete] -// CHECK:STDOUT: %F.fa8d04.1: %F.type.f90165.1 = struct_value () [concrete] +// CHECK:STDOUT: %SelfNestedBadParam.as.SelfNested.impl.F.type.f90165.1: type = fn_type @SelfNestedBadParam.as.SelfNested.impl.F.loc223_87.1 [concrete] +// CHECK:STDOUT: %SelfNestedBadParam.as.SelfNested.impl.F.fa8d04.1: %SelfNestedBadParam.as.SelfNested.impl.F.type.f90165.1 = struct_value () [concrete] // CHECK:STDOUT: %SelfNested.facet.608: %SelfNested.type = facet_value %SelfNestedBadParam, (%SelfNested.impl_witness.e31) [concrete] // CHECK:STDOUT: %struct_type.x.y.a89: type = struct_type {.x: %SelfNestedBadParam, .y: %i32} [concrete] // CHECK:STDOUT: %tuple.type.9c9: type = tuple_type (%ptr.4cd, %struct_type.x.y.a89) [concrete] // CHECK:STDOUT: %pattern_type.a5c: type = pattern_type %tuple.type.9c9 [concrete] -// CHECK:STDOUT: %F.type.f90165.2: type = fn_type @F.loc223_87.2 [concrete] -// CHECK:STDOUT: %F.fa8d04.2: %F.type.f90165.2 = struct_value () [concrete] +// CHECK:STDOUT: %SelfNestedBadParam.as.SelfNested.impl.F.type.f90165.2: type = fn_type @SelfNestedBadParam.as.SelfNested.impl.F.loc223_87.2 [concrete] +// CHECK:STDOUT: %SelfNestedBadParam.as.SelfNested.impl.F.fa8d04.2: %SelfNestedBadParam.as.SelfNested.impl.F.type.f90165.2 = struct_value () [concrete] // CHECK:STDOUT: %ptr.f40: type = ptr_type %array_type.a41 [concrete] -// CHECK:STDOUT: %Op.type.ba3: type = fn_type @Op.1, @Destroy.impl(%array_type.a41) [concrete] -// CHECK:STDOUT: %Op.d25: %Op.type.ba3 = struct_value () [concrete] -// CHECK:STDOUT: %Op.specific_fn.235: = specific_function %Op.d25, @Op.1(%array_type.a41) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.ba3: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%array_type.a41) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.d25: %T.as.Destroy.impl.Op.type.ba3 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.235: = specific_function %T.as.Destroy.impl.Op.d25, @T.as.Destroy.impl.Op(%array_type.a41) [concrete] // CHECK:STDOUT: %SelfNestedBadReturnType: type = class_type @SelfNestedBadReturnType [concrete] // CHECK:STDOUT: %SelfNested.impl_witness.d5e: = impl_witness @SelfNestedBadReturnType.%SelfNested.impl_witness_table [concrete] // CHECK:STDOUT: %ptr.612: type = ptr_type %SelfNestedBadReturnType [concrete] // CHECK:STDOUT: %struct_type.x.y.ac5: type = struct_type {.x: %SelfNestedBadReturnType, .y: %i32} [concrete] // CHECK:STDOUT: %tuple.type.eb9: type = tuple_type (%ptr.612, %struct_type.x.y.ac5) [concrete] // CHECK:STDOUT: %pattern_type.23f: type = pattern_type %tuple.type.eb9 [concrete] -// CHECK:STDOUT: %F.type.0e7d1d.1: type = fn_type @F.loc239_112.1 [concrete] -// CHECK:STDOUT: %F.0bc78a.1: %F.type.0e7d1d.1 = struct_value () [concrete] +// CHECK:STDOUT: %SelfNestedBadReturnType.as.SelfNested.impl.F.type.0e7d1d.1: type = fn_type @SelfNestedBadReturnType.as.SelfNested.impl.F.loc239_112.1 [concrete] +// CHECK:STDOUT: %SelfNestedBadReturnType.as.SelfNested.impl.F.0bc78a.1: %SelfNestedBadReturnType.as.SelfNested.impl.F.type.0e7d1d.1 = struct_value () [concrete] // CHECK:STDOUT: %SelfNested.facet.766: %SelfNested.type = facet_value %SelfNestedBadReturnType, (%SelfNested.impl_witness.d5e) [concrete] // CHECK:STDOUT: %array_type.126: type = array_type %int_4, %SelfNestedBadReturnType [concrete] // CHECK:STDOUT: %pattern_type.f56: type = pattern_type %array_type.126 [concrete] -// CHECK:STDOUT: %F.type.0e7d1d.2: type = fn_type @F.loc239_112.2 [concrete] -// CHECK:STDOUT: %F.0bc78a.2: %F.type.0e7d1d.2 = struct_value () [concrete] +// CHECK:STDOUT: %SelfNestedBadReturnType.as.SelfNested.impl.F.type.0e7d1d.2: type = fn_type @SelfNestedBadReturnType.as.SelfNested.impl.F.loc239_112.2 [concrete] +// CHECK:STDOUT: %SelfNestedBadReturnType.as.SelfNested.impl.F.0bc78a.2: %SelfNestedBadReturnType.as.SelfNested.impl.F.type.0e7d1d.2 = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -456,18 +456,18 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: // CHECK:STDOUT: interface @I { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.826] -// CHECK:STDOUT: %F.decl: %F.type.cf0 = fn_decl @F.loc15 [concrete = constants.%F.bc6] {} {} -// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0.82e] +// CHECK:STDOUT: %I.F.decl: %I.F.type = fn_decl @I.F [concrete = constants.%I.F] {} {} +// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %I.F.decl [concrete = constants.%assoc0.82e] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F = %assoc0 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%I.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @J { // CHECK:STDOUT: %Self: %J.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.ccd] -// CHECK:STDOUT: %F.decl: %F.type.c14 = fn_decl @F.loc103 [concrete = constants.%F.b71] { +// CHECK:STDOUT: %J.F.decl: %J.F.type = fn_decl @J.F [concrete = constants.%J.F] { // CHECK:STDOUT: %self.patt: %pattern_type.831 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.831 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %b.patt: %pattern_type.831 = binding_pattern b [concrete] @@ -475,89 +475,89 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %return.patt: %pattern_type.831 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.831 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %bool.make_type.loc103_44: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc103_44.1: type = value_of_initializer %bool.make_type.loc103_44 [concrete = bool] -// CHECK:STDOUT: %.loc103_44.2: type = converted %bool.make_type.loc103_44, %.loc103_44.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc103_44: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc103_44.1: type = value_of_initializer %Bool.call.loc103_44 [concrete = bool] +// CHECK:STDOUT: %.loc103_44.2: type = converted %Bool.call.loc103_44, %.loc103_44.1 [concrete = bool] // CHECK:STDOUT: %self.param: bool = value_param call_param0 // CHECK:STDOUT: %.loc103_26.1: type = splice_block %.loc103_26.3 [concrete = bool] { -// CHECK:STDOUT: %bool.make_type.loc103_26: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc103_26.2: type = value_of_initializer %bool.make_type.loc103_26 [concrete = bool] -// CHECK:STDOUT: %.loc103_26.3: type = converted %bool.make_type.loc103_26, %.loc103_26.2 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc103_26: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc103_26.2: type = value_of_initializer %Bool.call.loc103_26 [concrete = bool] +// CHECK:STDOUT: %.loc103_26.3: type = converted %Bool.call.loc103_26, %.loc103_26.2 [concrete = bool] // CHECK:STDOUT: } // CHECK:STDOUT: %self: bool = bind_name self, %self.param // CHECK:STDOUT: %b.param: bool = value_param call_param1 // CHECK:STDOUT: %.loc103_35.1: type = splice_block %.loc103_35.3 [concrete = bool] { -// CHECK:STDOUT: %bool.make_type.loc103_35: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc103_35.2: type = value_of_initializer %bool.make_type.loc103_35 [concrete = bool] -// CHECK:STDOUT: %.loc103_35.3: type = converted %bool.make_type.loc103_35, %.loc103_35.2 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc103_35: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc103_35.2: type = value_of_initializer %Bool.call.loc103_35 [concrete = bool] +// CHECK:STDOUT: %.loc103_35.3: type = converted %Bool.call.loc103_35, %.loc103_35.2 [concrete = bool] // CHECK:STDOUT: } // CHECK:STDOUT: %b: bool = bind_name b, %b.param // CHECK:STDOUT: %return.param: ref bool = out_param call_param2 // CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %J.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0.922] +// CHECK:STDOUT: %assoc0: %J.assoc_type = assoc_entity element0, %J.F.decl [concrete = constants.%assoc0.922] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F = %assoc0 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%J.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @SelfNested { // CHECK:STDOUT: %Self: %SelfNested.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.2ff] -// CHECK:STDOUT: %F.decl: %F.type.6ed = fn_decl @F.loc211 [concrete = constants.%F.998] { -// CHECK:STDOUT: %x.patt: @F.loc211.%pattern_type.loc211_8 (%pattern_type.ced) = binding_pattern x [concrete] -// CHECK:STDOUT: %x.param_patt: @F.loc211.%pattern_type.loc211_8 (%pattern_type.ced) = value_param_pattern %x.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: @F.loc211.%pattern_type.loc211_41 (%pattern_type.c7e) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @F.loc211.%pattern_type.loc211_41 (%pattern_type.c7e) = out_param_pattern %return.patt, call_param1 [concrete] +// CHECK:STDOUT: %SelfNested.F.decl: %SelfNested.F.type = fn_decl @SelfNested.F [concrete = constants.%SelfNested.F] { +// CHECK:STDOUT: %x.patt: @SelfNested.F.%pattern_type.loc211_8 (%pattern_type.ced) = binding_pattern x [concrete] +// CHECK:STDOUT: %x.param_patt: @SelfNested.F.%pattern_type.loc211_8 (%pattern_type.ced) = value_param_pattern %x.patt, call_param0 [concrete] +// CHECK:STDOUT: %return.patt: @SelfNested.F.%pattern_type.loc211_41 (%pattern_type.c7e) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @SelfNested.F.%pattern_type.loc211_41 (%pattern_type.c7e) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc211_50: %SelfNested.type = name_ref Self, @SelfNested.%Self [symbolic = %Self (constants.%Self.2ff)] // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete = constants.%int_4] -// CHECK:STDOUT: %Self.as_type.loc211_50: type = facet_access_type %Self.ref.loc211_50 [symbolic = %Self.as_type.loc211_16.2 (constants.%Self.as_type.e1e)] -// CHECK:STDOUT: %.loc211_50: type = converted %Self.ref.loc211_50, %Self.as_type.loc211_50 [symbolic = %Self.as_type.loc211_16.2 (constants.%Self.as_type.e1e)] -// CHECK:STDOUT: %array_type.loc211_57.1: type = array_type %int_4, %.loc211_50 [symbolic = %array_type.loc211_57.2 (constants.%array_type.873)] -// CHECK:STDOUT: %x.param: @F.loc211.%tuple.type (%tuple.type.229) = value_param call_param0 +// CHECK:STDOUT: %Self.as_type.loc211_50: type = facet_access_type %Self.ref.loc211_50 [symbolic = %Self.as_type.loc211_16.1 (constants.%Self.as_type.e1e)] +// CHECK:STDOUT: %.loc211_50: type = converted %Self.ref.loc211_50, %Self.as_type.loc211_50 [symbolic = %Self.as_type.loc211_16.1 (constants.%Self.as_type.e1e)] +// CHECK:STDOUT: %array_type.loc211_57.2: type = array_type %int_4, %.loc211_50 [symbolic = %array_type.loc211_57.1 (constants.%array_type.873)] +// CHECK:STDOUT: %x.param: @SelfNested.F.%tuple.type (%tuple.type.229) = value_param call_param0 // CHECK:STDOUT: %.loc211_38.1: type = splice_block %.loc211_38.3 [symbolic = %tuple.type (constants.%tuple.type.229)] { // CHECK:STDOUT: %Self.ref.loc211_12: %SelfNested.type = name_ref Self, @SelfNested.%Self [symbolic = %Self (constants.%Self.2ff)] -// CHECK:STDOUT: %Self.as_type.loc211_16.1: type = facet_access_type %Self.ref.loc211_12 [symbolic = %Self.as_type.loc211_16.2 (constants.%Self.as_type.e1e)] -// CHECK:STDOUT: %.loc211_16: type = converted %Self.ref.loc211_12, %Self.as_type.loc211_16.1 [symbolic = %Self.as_type.loc211_16.2 (constants.%Self.as_type.e1e)] -// CHECK:STDOUT: %ptr.loc211_16.1: type = ptr_type %.loc211_16 [symbolic = %ptr.loc211_16.2 (constants.%ptr.e87)] +// CHECK:STDOUT: %Self.as_type.loc211_16.2: type = facet_access_type %Self.ref.loc211_12 [symbolic = %Self.as_type.loc211_16.1 (constants.%Self.as_type.e1e)] +// CHECK:STDOUT: %.loc211_16: type = converted %Self.ref.loc211_12, %Self.as_type.loc211_16.2 [symbolic = %Self.as_type.loc211_16.1 (constants.%Self.as_type.e1e)] +// CHECK:STDOUT: %ptr.loc211_16.2: type = ptr_type %.loc211_16 [symbolic = %ptr.loc211_16.1 (constants.%ptr.e87)] // CHECK:STDOUT: %Self.ref.loc211_24: %SelfNested.type = name_ref Self, @SelfNested.%Self [symbolic = %Self (constants.%Self.2ff)] -// CHECK:STDOUT: %Self.as_type.loc211_24: type = facet_access_type %Self.ref.loc211_24 [symbolic = %Self.as_type.loc211_16.2 (constants.%Self.as_type.e1e)] -// CHECK:STDOUT: %.loc211_24: type = converted %Self.ref.loc211_24, %Self.as_type.loc211_24 [symbolic = %Self.as_type.loc211_16.2 (constants.%Self.as_type.e1e)] +// CHECK:STDOUT: %Self.as_type.loc211_24: type = facet_access_type %Self.ref.loc211_24 [symbolic = %Self.as_type.loc211_16.1 (constants.%Self.as_type.e1e)] +// CHECK:STDOUT: %.loc211_24: type = converted %Self.ref.loc211_24, %Self.as_type.loc211_24 [symbolic = %Self.as_type.loc211_16.1 (constants.%Self.as_type.e1e)] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %struct_type.x.y.loc211_37.1: type = struct_type {.x: @F.loc211.%Self.as_type.loc211_16.2 (%Self.as_type.e1e), .y: %i32} [symbolic = %struct_type.x.y.loc211_37.2 (constants.%struct_type.x.y.81e)] -// CHECK:STDOUT: %.loc211_38.2: %tuple.type.24b = tuple_literal (%ptr.loc211_16.1, %struct_type.x.y.loc211_37.1) +// CHECK:STDOUT: %struct_type.x.y.loc211_37.2: type = struct_type {.x: @SelfNested.F.%Self.as_type.loc211_16.1 (%Self.as_type.e1e), .y: %i32} [symbolic = %struct_type.x.y.loc211_37.1 (constants.%struct_type.x.y.81e)] +// CHECK:STDOUT: %.loc211_38.2: %tuple.type.24b = tuple_literal (%ptr.loc211_16.2, %struct_type.x.y.loc211_37.2) // CHECK:STDOUT: %.loc211_38.3: type = converted %.loc211_38.2, constants.%tuple.type.229 [symbolic = %tuple.type (constants.%tuple.type.229)] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: @F.loc211.%tuple.type (%tuple.type.229) = bind_name x, %x.param -// CHECK:STDOUT: %return.param: ref @F.loc211.%array_type.loc211_57.2 (%array_type.873) = out_param call_param1 -// CHECK:STDOUT: %return: ref @F.loc211.%array_type.loc211_57.2 (%array_type.873) = return_slot %return.param +// CHECK:STDOUT: %x: @SelfNested.F.%tuple.type (%tuple.type.229) = bind_name x, %x.param +// CHECK:STDOUT: %return.param: ref @SelfNested.F.%array_type.loc211_57.1 (%array_type.873) = out_param call_param1 +// CHECK:STDOUT: %return: ref @SelfNested.F.%array_type.loc211_57.1 (%array_type.873) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %SelfNested.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0.beb] +// CHECK:STDOUT: %assoc0: %SelfNested.assoc_type = assoc_entity element0, %SelfNested.F.decl [concrete = constants.%assoc0.beb] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F = %assoc0 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%SelfNested.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl.0c9: %Self.ref as %I.ref { +// CHECK:STDOUT: impl @NoF.as.I.impl: %Self.ref as %I.ref { // CHECK:STDOUT: !members: // CHECK:STDOUT: .F = // CHECK:STDOUT: witness = @NoF.%I.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl.b55: %Self.ref as %I.ref { -// CHECK:STDOUT: %F.decl: type = class_decl @F.loc37 [concrete = constants.%F.70c] {} {} +// CHECK:STDOUT: impl @FNotFunction.as.I.impl: %Self.ref as %I.ref { +// CHECK:STDOUT: %F.decl: type = class_decl @F [concrete = constants.%F] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: witness = @FNotFunction.%I.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl.199: %Self.ref as %I.ref { +// CHECK:STDOUT: impl @FAlias.as.I.impl: %Self.ref as %I.ref { // CHECK:STDOUT: %PossiblyF.ref: %PossiblyF.type = name_ref PossiblyF, file.%PossiblyF.decl [concrete = constants.%PossiblyF] // CHECK:STDOUT: %F: %PossiblyF.type = bind_alias F, file.%PossiblyF.decl [concrete = constants.%PossiblyF] // CHECK:STDOUT: @@ -567,28 +567,28 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: witness = @FAlias.%I.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl.ddd: %Self.ref as %I.ref { -// CHECK:STDOUT: %F.decl.loc69_18.1: %F.type.44ef8c.1 = fn_decl @F.loc69_18.1 [concrete = constants.%F.424e9e.1] { +// CHECK:STDOUT: impl @FExtraParam.as.I.impl: %Self.ref as %I.ref { +// CHECK:STDOUT: %FExtraParam.as.I.impl.F.decl.loc69_18.1: %FExtraParam.as.I.impl.F.type.44ef8c.1 = fn_decl @FExtraParam.as.I.impl.F.loc69_18.1 [concrete = constants.%FExtraParam.as.I.impl.F.424e9e.1] { // CHECK:STDOUT: %b.patt: %pattern_type.831 = binding_pattern b [concrete] // CHECK:STDOUT: %b.param_patt: %pattern_type.831 = value_param_pattern %b.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %b.param: bool = value_param call_param0 // CHECK:STDOUT: %.loc69_13.1: type = splice_block %.loc69_13.3 [concrete = bool] { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc69_13.2: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc69_13.3: type = converted %bool.make_type, %.loc69_13.2 [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc69_13.2: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc69_13.3: type = converted %Bool.call, %.loc69_13.2 [concrete = bool] // CHECK:STDOUT: } // CHECK:STDOUT: %b: bool = bind_name b, %b.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl.loc69_18.2: %F.type.44ef8c.2 = fn_decl @F.loc69_18.2 [concrete = constants.%F.424e9e.2] {} {} +// CHECK:STDOUT: %FExtraParam.as.I.impl.F.decl.loc69_18.2: %FExtraParam.as.I.impl.F.type.44ef8c.2 = fn_decl @FExtraParam.as.I.impl.F.loc69_18.2 [concrete = constants.%FExtraParam.as.I.impl.F.424e9e.2] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl.loc69_18.1 +// CHECK:STDOUT: .F = %FExtraParam.as.I.impl.F.decl.loc69_18.1 // CHECK:STDOUT: witness = @FExtraParam.%I.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl.698: %Self.ref as %I.ref { -// CHECK:STDOUT: %F.decl.loc85_23.1: %F.type.e1abdd.1 = fn_decl @F.loc85_23.1 [concrete = constants.%F.6ff574.1] { +// CHECK:STDOUT: impl @FExtraImplicitParam.as.I.impl: %Self.ref as %I.ref { +// CHECK:STDOUT: %FExtraImplicitParam.as.I.impl.F.decl.loc85_23.1: %FExtraImplicitParam.as.I.impl.F.type.e1abdd.1 = fn_decl @FExtraImplicitParam.as.I.impl.F.loc85_23.1 [concrete = constants.%FExtraImplicitParam.as.I.impl.F.6ff574.1] { // CHECK:STDOUT: %self.patt: %pattern_type.8ae = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.8ae = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -596,51 +596,51 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FExtraImplicitParam [concrete = constants.%FExtraImplicitParam] // CHECK:STDOUT: %self: %FExtraImplicitParam = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl.loc85_23.2: %F.type.e1abdd.2 = fn_decl @F.loc85_23.2 [concrete = constants.%F.6ff574.2] {} {} +// CHECK:STDOUT: %FExtraImplicitParam.as.I.impl.F.decl.loc85_23.2: %FExtraImplicitParam.as.I.impl.F.type.e1abdd.2 = fn_decl @FExtraImplicitParam.as.I.impl.F.loc85_23.2 [concrete = constants.%FExtraImplicitParam.as.I.impl.F.6ff574.2] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl.loc85_23.1 +// CHECK:STDOUT: .F = %FExtraImplicitParam.as.I.impl.F.decl.loc85_23.1 // CHECK:STDOUT: witness = @FExtraImplicitParam.%I.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl.77b: %Self.ref as %I.ref { -// CHECK:STDOUT: %F.decl: %F.type.387 = fn_decl @F.loc99 [concrete = constants.%F.df5] { +// CHECK:STDOUT: impl @FExtraReturnType.as.I.impl: %Self.ref as %I.ref { +// CHECK:STDOUT: %FExtraReturnType.as.I.impl.F.decl: %FExtraReturnType.as.I.impl.F.type = fn_decl @FExtraReturnType.as.I.impl.F [concrete = constants.%FExtraReturnType.as.I.impl.F] { // CHECK:STDOUT: %return.patt: %pattern_type.831 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.831 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc99_15.1: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc99_15.2: type = converted %bool.make_type, %.loc99_15.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc99_15.1: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc99_15.2: type = converted %Bool.call, %.loc99_15.1 [concrete = bool] // CHECK:STDOUT: %return.param: ref bool = out_param call_param0 // CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %FExtraReturnType.as.I.impl.F.decl // CHECK:STDOUT: witness = @FExtraReturnType.%I.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @J.impl.5cf: %Self.ref as %J.ref { -// CHECK:STDOUT: %F.decl.loc117_31.1: %F.type.69596c.1 = fn_decl @F.loc117_31.1 [concrete = constants.%F.738f31.1] { +// CHECK:STDOUT: impl @FMissingParam.as.J.impl: %Self.ref as %J.ref { +// CHECK:STDOUT: %FMissingParam.as.J.impl.F.decl.loc117_31.1: %FMissingParam.as.J.impl.F.type.69596c.1 = fn_decl @FMissingParam.as.J.impl.F.loc117_31.1 [concrete = constants.%FMissingParam.as.J.impl.F.738f31.1] { // CHECK:STDOUT: %self.patt: %pattern_type.831 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.831 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.831 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.831 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %bool.make_type.loc117_27: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc117_27.1: type = value_of_initializer %bool.make_type.loc117_27 [concrete = bool] -// CHECK:STDOUT: %.loc117_27.2: type = converted %bool.make_type.loc117_27, %.loc117_27.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc117_27: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc117_27.1: type = value_of_initializer %Bool.call.loc117_27 [concrete = bool] +// CHECK:STDOUT: %.loc117_27.2: type = converted %Bool.call.loc117_27, %.loc117_27.1 [concrete = bool] // CHECK:STDOUT: %self.param: bool = value_param call_param0 // CHECK:STDOUT: %.loc117_16.1: type = splice_block %.loc117_16.3 [concrete = bool] { -// CHECK:STDOUT: %bool.make_type.loc117_16: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc117_16.2: type = value_of_initializer %bool.make_type.loc117_16 [concrete = bool] -// CHECK:STDOUT: %.loc117_16.3: type = converted %bool.make_type.loc117_16, %.loc117_16.2 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc117_16: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc117_16.2: type = value_of_initializer %Bool.call.loc117_16 [concrete = bool] +// CHECK:STDOUT: %.loc117_16.3: type = converted %Bool.call.loc117_16, %.loc117_16.2 [concrete = bool] // CHECK:STDOUT: } // CHECK:STDOUT: %self: bool = bind_name self, %self.param // CHECK:STDOUT: %return.param: ref bool = out_param call_param1 // CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl.loc117_31.2: %F.type.69596c.2 = fn_decl @F.loc117_31.2 [concrete = constants.%F.738f31.2] { +// CHECK:STDOUT: %FMissingParam.as.J.impl.F.decl.loc117_31.2: %FMissingParam.as.J.impl.F.type.69596c.2 = fn_decl @FMissingParam.as.J.impl.F.loc117_31.2 [concrete = constants.%FMissingParam.as.J.impl.F.738f31.2] { // CHECK:STDOUT: %self.patt: %pattern_type.831 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.831 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %b.patt: %pattern_type.831 = binding_pattern b [concrete] @@ -657,31 +657,31 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl.loc117_31.1 +// CHECK:STDOUT: .F = %FMissingParam.as.J.impl.F.decl.loc117_31.1 // CHECK:STDOUT: witness = @FMissingParam.%J.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @J.impl.bac: %Self.ref as %J.ref { -// CHECK:STDOUT: %F.decl.loc130_26.1: %F.type.d97cef.1 = fn_decl @F.loc130_26.1 [concrete = constants.%F.01de92.1] { +// CHECK:STDOUT: impl @FMissingImplicitParam.as.J.impl: %Self.ref as %J.ref { +// CHECK:STDOUT: %FMissingImplicitParam.as.J.impl.F.decl.loc130_26.1: %FMissingImplicitParam.as.J.impl.F.type.d97cef.1 = fn_decl @FMissingImplicitParam.as.J.impl.F.loc130_26.1 [concrete = constants.%FMissingImplicitParam.as.J.impl.F.01de92.1] { // CHECK:STDOUT: %b.patt: %pattern_type.831 = binding_pattern b [concrete] // CHECK:STDOUT: %b.param_patt: %pattern_type.831 = value_param_pattern %b.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.831 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.831 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %bool.make_type.loc130_22: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc130_22.1: type = value_of_initializer %bool.make_type.loc130_22 [concrete = bool] -// CHECK:STDOUT: %.loc130_22.2: type = converted %bool.make_type.loc130_22, %.loc130_22.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc130_22: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc130_22.1: type = value_of_initializer %Bool.call.loc130_22 [concrete = bool] +// CHECK:STDOUT: %.loc130_22.2: type = converted %Bool.call.loc130_22, %.loc130_22.1 [concrete = bool] // CHECK:STDOUT: %b.param: bool = value_param call_param0 // CHECK:STDOUT: %.loc130_13.1: type = splice_block %.loc130_13.3 [concrete = bool] { -// CHECK:STDOUT: %bool.make_type.loc130_13: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc130_13.2: type = value_of_initializer %bool.make_type.loc130_13 [concrete = bool] -// CHECK:STDOUT: %.loc130_13.3: type = converted %bool.make_type.loc130_13, %.loc130_13.2 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc130_13: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc130_13.2: type = value_of_initializer %Bool.call.loc130_13 [concrete = bool] +// CHECK:STDOUT: %.loc130_13.3: type = converted %Bool.call.loc130_13, %.loc130_13.2 [concrete = bool] // CHECK:STDOUT: } // CHECK:STDOUT: %b: bool = bind_name b, %b.param // CHECK:STDOUT: %return.param: ref bool = out_param call_param1 // CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl.loc130_26.2: %F.type.d97cef.2 = fn_decl @F.loc130_26.2 [concrete = constants.%F.01de92.2] { +// CHECK:STDOUT: %FMissingImplicitParam.as.J.impl.F.decl.loc130_26.2: %FMissingImplicitParam.as.J.impl.F.type.d97cef.2 = fn_decl @FMissingImplicitParam.as.J.impl.F.loc130_26.2 [concrete = constants.%FMissingImplicitParam.as.J.impl.F.01de92.2] { // CHECK:STDOUT: %self.patt: %pattern_type.831 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.831 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %b.patt: %pattern_type.831 = binding_pattern b [concrete] @@ -698,12 +698,12 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl.loc130_26.1 +// CHECK:STDOUT: .F = %FMissingImplicitParam.as.J.impl.F.decl.loc130_26.1 // CHECK:STDOUT: witness = @FMissingImplicitParam.%J.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @J.impl.1a7: %Self.ref as %J.ref { -// CHECK:STDOUT: %F.decl.loc152_30.1: %F.type.123d7a.1 = fn_decl @F.loc152_30.1 [concrete = constants.%F.c7d02d.1] { +// CHECK:STDOUT: impl @FMissingReturnType.as.J.impl: %Self.ref as %J.ref { +// CHECK:STDOUT: %FMissingReturnType.as.J.impl.F.decl.loc152_30.1: %FMissingReturnType.as.J.impl.F.type.123d7a.1 = fn_decl @FMissingReturnType.as.J.impl.F.loc152_30.1 [concrete = constants.%FMissingReturnType.as.J.impl.F.c7d02d.1] { // CHECK:STDOUT: %self.patt: %pattern_type.831 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.831 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %b.patt: %pattern_type.831 = binding_pattern b [concrete] @@ -711,20 +711,20 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: } { // CHECK:STDOUT: %self.param: bool = value_param call_param0 // CHECK:STDOUT: %.loc152_16.1: type = splice_block %.loc152_16.3 [concrete = bool] { -// CHECK:STDOUT: %bool.make_type.loc152_16: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc152_16.2: type = value_of_initializer %bool.make_type.loc152_16 [concrete = bool] -// CHECK:STDOUT: %.loc152_16.3: type = converted %bool.make_type.loc152_16, %.loc152_16.2 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc152_16: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc152_16.2: type = value_of_initializer %Bool.call.loc152_16 [concrete = bool] +// CHECK:STDOUT: %.loc152_16.3: type = converted %Bool.call.loc152_16, %.loc152_16.2 [concrete = bool] // CHECK:STDOUT: } // CHECK:STDOUT: %self: bool = bind_name self, %self.param // CHECK:STDOUT: %b.param: bool = value_param call_param1 // CHECK:STDOUT: %.loc152_25.1: type = splice_block %.loc152_25.3 [concrete = bool] { -// CHECK:STDOUT: %bool.make_type.loc152_25: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc152_25.2: type = value_of_initializer %bool.make_type.loc152_25 [concrete = bool] -// CHECK:STDOUT: %.loc152_25.3: type = converted %bool.make_type.loc152_25, %.loc152_25.2 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc152_25: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc152_25.2: type = value_of_initializer %Bool.call.loc152_25 [concrete = bool] +// CHECK:STDOUT: %.loc152_25.3: type = converted %Bool.call.loc152_25, %.loc152_25.2 [concrete = bool] // CHECK:STDOUT: } // CHECK:STDOUT: %b: bool = bind_name b, %b.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl.loc152_30.2: %F.type.123d7a.2 = fn_decl @F.loc152_30.2 [concrete = constants.%F.c7d02d.2] { +// CHECK:STDOUT: %FMissingReturnType.as.J.impl.F.decl.loc152_30.2: %FMissingReturnType.as.J.impl.F.type.123d7a.2 = fn_decl @FMissingReturnType.as.J.impl.F.loc152_30.2 [concrete = constants.%FMissingReturnType.as.J.impl.F.c7d02d.2] { // CHECK:STDOUT: %self.patt: %pattern_type.831 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.831 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %b.patt: %pattern_type.831 = binding_pattern b [concrete] @@ -741,12 +741,12 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl.loc152_30.1 +// CHECK:STDOUT: .F = %FMissingReturnType.as.J.impl.F.decl.loc152_30.1 // CHECK:STDOUT: witness = @FMissingReturnType.%J.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @J.impl.f2b: %Self.ref as %J.ref { -// CHECK:STDOUT: %F.decl.loc171_38.1: %F.type.6b537d.1 = fn_decl @F.loc171_38.1 [concrete = constants.%F.04313a.1] { +// CHECK:STDOUT: impl @FDifferentParamType.as.J.impl: %Self.ref as %J.ref { +// CHECK:STDOUT: %FDifferentParamType.as.J.impl.F.decl.loc171_38.1: %FDifferentParamType.as.J.impl.F.type.6b537d.1 = fn_decl @FDifferentParamType.as.J.impl.F.loc171_38.1 [concrete = constants.%FDifferentParamType.as.J.impl.F.04313a.1] { // CHECK:STDOUT: %self.patt: %pattern_type.831 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.831 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %b.patt: %pattern_type.b90 = binding_pattern b [concrete] @@ -754,14 +754,14 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %return.patt: %pattern_type.831 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.831 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %bool.make_type.loc171_34: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc171_34.1: type = value_of_initializer %bool.make_type.loc171_34 [concrete = bool] -// CHECK:STDOUT: %.loc171_34.2: type = converted %bool.make_type.loc171_34, %.loc171_34.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc171_34: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc171_34.1: type = value_of_initializer %Bool.call.loc171_34 [concrete = bool] +// CHECK:STDOUT: %.loc171_34.2: type = converted %Bool.call.loc171_34, %.loc171_34.1 [concrete = bool] // CHECK:STDOUT: %self.param: bool = value_param call_param0 // CHECK:STDOUT: %.loc171_16.1: type = splice_block %.loc171_16.3 [concrete = bool] { -// CHECK:STDOUT: %bool.make_type.loc171_16: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc171_16.2: type = value_of_initializer %bool.make_type.loc171_16 [concrete = bool] -// CHECK:STDOUT: %.loc171_16.3: type = converted %bool.make_type.loc171_16, %.loc171_16.2 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc171_16: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc171_16.2: type = value_of_initializer %Bool.call.loc171_16 [concrete = bool] +// CHECK:STDOUT: %.loc171_16.3: type = converted %Bool.call.loc171_16, %.loc171_16.2 [concrete = bool] // CHECK:STDOUT: } // CHECK:STDOUT: %self: bool = bind_name self, %self.param // CHECK:STDOUT: %b.param: %FDifferentParamType = value_param call_param1 @@ -770,7 +770,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %return.param: ref bool = out_param call_param2 // CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl.loc171_38.2: %F.type.6b537d.2 = fn_decl @F.loc171_38.2 [concrete = constants.%F.04313a.2] { +// CHECK:STDOUT: %FDifferentParamType.as.J.impl.F.decl.loc171_38.2: %FDifferentParamType.as.J.impl.F.type.6b537d.2 = fn_decl @FDifferentParamType.as.J.impl.F.loc171_38.2 [concrete = constants.%FDifferentParamType.as.J.impl.F.04313a.2] { // CHECK:STDOUT: %self.patt: %pattern_type.831 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.831 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %b.patt: %pattern_type.831 = binding_pattern b [concrete] @@ -787,12 +787,12 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl.loc171_38.1 +// CHECK:STDOUT: .F = %FDifferentParamType.as.J.impl.F.decl.loc171_38.1 // CHECK:STDOUT: witness = @FDifferentParamType.%J.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @J.impl.db4: %Self.ref as %J.ref { -// CHECK:STDOUT: %F.decl.loc184_38.1: %F.type.d6232a.1 = fn_decl @F.loc184_38.1 [concrete = constants.%F.886f70.1] { +// CHECK:STDOUT: impl @FDifferentImplicitParamType.as.J.impl: %Self.ref as %J.ref { +// CHECK:STDOUT: %FDifferentImplicitParamType.as.J.impl.F.decl.loc184_38.1: %FDifferentImplicitParamType.as.J.impl.F.type.d6232a.1 = fn_decl @FDifferentImplicitParamType.as.J.impl.F.loc184_38.1 [concrete = constants.%FDifferentImplicitParamType.as.J.impl.F.886f70.1] { // CHECK:STDOUT: %self.patt: %pattern_type.9cc = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.9cc = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %b.patt: %pattern_type.831 = binding_pattern b [concrete] @@ -800,23 +800,23 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %return.patt: %pattern_type.831 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.831 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %bool.make_type.loc184_34: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc184_34.1: type = value_of_initializer %bool.make_type.loc184_34 [concrete = bool] -// CHECK:STDOUT: %.loc184_34.2: type = converted %bool.make_type.loc184_34, %.loc184_34.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc184_34: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc184_34.1: type = value_of_initializer %Bool.call.loc184_34 [concrete = bool] +// CHECK:STDOUT: %.loc184_34.2: type = converted %Bool.call.loc184_34, %.loc184_34.1 [concrete = bool] // CHECK:STDOUT: %self.param: %FDifferentImplicitParamType = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FDifferentImplicitParamType [concrete = constants.%FDifferentImplicitParamType] // CHECK:STDOUT: %self: %FDifferentImplicitParamType = bind_name self, %self.param // CHECK:STDOUT: %b.param: bool = value_param call_param1 // CHECK:STDOUT: %.loc184_25.1: type = splice_block %.loc184_25.3 [concrete = bool] { -// CHECK:STDOUT: %bool.make_type.loc184_25: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc184_25.2: type = value_of_initializer %bool.make_type.loc184_25 [concrete = bool] -// CHECK:STDOUT: %.loc184_25.3: type = converted %bool.make_type.loc184_25, %.loc184_25.2 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc184_25: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc184_25.2: type = value_of_initializer %Bool.call.loc184_25 [concrete = bool] +// CHECK:STDOUT: %.loc184_25.3: type = converted %Bool.call.loc184_25, %.loc184_25.2 [concrete = bool] // CHECK:STDOUT: } // CHECK:STDOUT: %b: bool = bind_name b, %b.param // CHECK:STDOUT: %return.param: ref bool = out_param call_param2 // CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl.loc184_38.2: %F.type.d6232a.2 = fn_decl @F.loc184_38.2 [concrete = constants.%F.886f70.2] { +// CHECK:STDOUT: %FDifferentImplicitParamType.as.J.impl.F.decl.loc184_38.2: %FDifferentImplicitParamType.as.J.impl.F.type.d6232a.2 = fn_decl @FDifferentImplicitParamType.as.J.impl.F.loc184_38.2 [concrete = constants.%FDifferentImplicitParamType.as.J.impl.F.886f70.2] { // CHECK:STDOUT: %self.patt: %pattern_type.831 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.831 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %b.patt: %pattern_type.831 = binding_pattern b [concrete] @@ -833,12 +833,12 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl.loc184_38.1 +// CHECK:STDOUT: .F = %FDifferentImplicitParamType.as.J.impl.F.decl.loc184_38.1 // CHECK:STDOUT: witness = @FDifferentImplicitParamType.%J.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @J.impl.fcc: %Self.ref as %J.ref { -// CHECK:STDOUT: %F.decl.loc200_38.1: %F.type.d3b58f.1 = fn_decl @F.loc200_38.1 [concrete = constants.%F.be86c9.1] { +// CHECK:STDOUT: impl @FDifferentReturnType.as.J.impl: %Self.ref as %J.ref { +// CHECK:STDOUT: %FDifferentReturnType.as.J.impl.F.decl.loc200_38.1: %FDifferentReturnType.as.J.impl.F.type.d3b58f.1 = fn_decl @FDifferentReturnType.as.J.impl.F.loc200_38.1 [concrete = constants.%FDifferentReturnType.as.J.impl.F.be86c9.1] { // CHECK:STDOUT: %self.patt: %pattern_type.831 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.831 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %b.patt: %pattern_type.831 = binding_pattern b [concrete] @@ -849,22 +849,22 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FDifferentReturnType [concrete = constants.%FDifferentReturnType] // CHECK:STDOUT: %self.param: bool = value_param call_param0 // CHECK:STDOUT: %.loc200_16.1: type = splice_block %.loc200_16.3 [concrete = bool] { -// CHECK:STDOUT: %bool.make_type.loc200_16: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc200_16.2: type = value_of_initializer %bool.make_type.loc200_16 [concrete = bool] -// CHECK:STDOUT: %.loc200_16.3: type = converted %bool.make_type.loc200_16, %.loc200_16.2 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc200_16: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc200_16.2: type = value_of_initializer %Bool.call.loc200_16 [concrete = bool] +// CHECK:STDOUT: %.loc200_16.3: type = converted %Bool.call.loc200_16, %.loc200_16.2 [concrete = bool] // CHECK:STDOUT: } // CHECK:STDOUT: %self: bool = bind_name self, %self.param // CHECK:STDOUT: %b.param: bool = value_param call_param1 // CHECK:STDOUT: %.loc200_25.1: type = splice_block %.loc200_25.3 [concrete = bool] { -// CHECK:STDOUT: %bool.make_type.loc200_25: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc200_25.2: type = value_of_initializer %bool.make_type.loc200_25 [concrete = bool] -// CHECK:STDOUT: %.loc200_25.3: type = converted %bool.make_type.loc200_25, %.loc200_25.2 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc200_25: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc200_25.2: type = value_of_initializer %Bool.call.loc200_25 [concrete = bool] +// CHECK:STDOUT: %.loc200_25.3: type = converted %Bool.call.loc200_25, %.loc200_25.2 [concrete = bool] // CHECK:STDOUT: } // CHECK:STDOUT: %b: bool = bind_name b, %b.param // CHECK:STDOUT: %return.param: ref %FDifferentReturnType = out_param call_param2 // CHECK:STDOUT: %return: ref %FDifferentReturnType = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl.loc200_38.2: %F.type.d3b58f.2 = fn_decl @F.loc200_38.2 [concrete = constants.%F.be86c9.2] { +// CHECK:STDOUT: %FDifferentReturnType.as.J.impl.F.decl.loc200_38.2: %FDifferentReturnType.as.J.impl.F.type.d3b58f.2 = fn_decl @FDifferentReturnType.as.J.impl.F.loc200_38.2 [concrete = constants.%FDifferentReturnType.as.J.impl.F.be86c9.2] { // CHECK:STDOUT: %self.patt: %pattern_type.831 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.831 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %b.patt: %pattern_type.831 = binding_pattern b [concrete] @@ -881,12 +881,12 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl.loc200_38.1 +// CHECK:STDOUT: .F = %FDifferentReturnType.as.J.impl.F.decl.loc200_38.1 // CHECK:STDOUT: witness = @FDifferentReturnType.%J.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @SelfNested.impl.6a5: %Self.ref as %SelfNested.ref { -// CHECK:STDOUT: %F.decl.loc223_87.1: %F.type.f90165.1 = fn_decl @F.loc223_87.1 [concrete = constants.%F.fa8d04.1] { +// CHECK:STDOUT: impl @SelfNestedBadParam.as.SelfNested.impl: %Self.ref as %SelfNested.ref { +// CHECK:STDOUT: %SelfNestedBadParam.as.SelfNested.impl.F.decl.loc223_87.1: %SelfNestedBadParam.as.SelfNested.impl.F.type.f90165.1 = fn_decl @SelfNestedBadParam.as.SelfNested.impl.F.loc223_87.1 [concrete = constants.%SelfNestedBadParam.as.SelfNested.impl.F.fa8d04.1] { // CHECK:STDOUT: %x.patt: %pattern_type.714 = binding_pattern x [concrete] // CHECK:STDOUT: %x.param_patt: %pattern_type.714 = value_param_pattern %x.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.1f1 = return_slot_pattern [concrete] @@ -911,7 +911,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %return.param: ref %array_type.a41 = out_param call_param1 // CHECK:STDOUT: %return: ref %array_type.a41 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl.loc223_87.2: %F.type.f90165.2 = fn_decl @F.loc223_87.2 [concrete = constants.%F.fa8d04.2] { +// CHECK:STDOUT: %SelfNestedBadParam.as.SelfNested.impl.F.decl.loc223_87.2: %SelfNestedBadParam.as.SelfNested.impl.F.type.f90165.2 = fn_decl @SelfNestedBadParam.as.SelfNested.impl.F.loc223_87.2 [concrete = constants.%SelfNestedBadParam.as.SelfNested.impl.F.fa8d04.2] { // CHECK:STDOUT: %x.patt: %pattern_type.a5c = binding_pattern x [concrete] // CHECK:STDOUT: %x.param_patt: %pattern_type.a5c = value_param_pattern %x.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.1f1 = return_slot_pattern [concrete] @@ -925,12 +925,12 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .SelfNestedBadParam = -// CHECK:STDOUT: .F = %F.decl.loc223_87.1 +// CHECK:STDOUT: .F = %SelfNestedBadParam.as.SelfNested.impl.F.decl.loc223_87.1 // CHECK:STDOUT: witness = @SelfNestedBadParam.%SelfNested.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @SelfNested.impl.bfc: %Self.ref as %SelfNested.ref { -// CHECK:STDOUT: %F.decl.loc239_112.1: %F.type.0e7d1d.1 = fn_decl @F.loc239_112.1 [concrete = constants.%F.0bc78a.1] { +// CHECK:STDOUT: impl @SelfNestedBadReturnType.as.SelfNested.impl: %Self.ref as %SelfNested.ref { +// CHECK:STDOUT: %SelfNestedBadReturnType.as.SelfNested.impl.F.decl.loc239_112.1: %SelfNestedBadReturnType.as.SelfNested.impl.F.type.0e7d1d.1 = fn_decl @SelfNestedBadReturnType.as.SelfNested.impl.F.loc239_112.1 [concrete = constants.%SelfNestedBadReturnType.as.SelfNested.impl.F.0bc78a.1] { // CHECK:STDOUT: %x.patt: %pattern_type.23f = binding_pattern x [concrete] // CHECK:STDOUT: %x.param_patt: %pattern_type.23f = value_param_pattern %x.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.1f1 = return_slot_pattern [concrete] @@ -954,7 +954,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %return.param: ref %array_type.a41 = out_param call_param1 // CHECK:STDOUT: %return: ref %array_type.a41 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl.loc239_112.2: %F.type.0e7d1d.2 = fn_decl @F.loc239_112.2 [concrete = constants.%F.0bc78a.2] { +// CHECK:STDOUT: %SelfNestedBadReturnType.as.SelfNested.impl.F.decl.loc239_112.2: %SelfNestedBadReturnType.as.SelfNested.impl.F.type.0e7d1d.2 = fn_decl @SelfNestedBadReturnType.as.SelfNested.impl.F.loc239_112.2 [concrete = constants.%SelfNestedBadReturnType.as.SelfNested.impl.F.0bc78a.2] { // CHECK:STDOUT: %x.patt: %pattern_type.23f = binding_pattern x [concrete] // CHECK:STDOUT: %x.param_patt: %pattern_type.23f = value_param_pattern %x.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.f56 = return_slot_pattern [concrete] @@ -969,16 +969,16 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: !members: // CHECK:STDOUT: .SelfNestedBadReturnType = // CHECK:STDOUT: .SelfNestedBadParam = -// CHECK:STDOUT: .F = %F.decl.loc239_112.1 +// CHECK:STDOUT: .F = %SelfNestedBadReturnType.as.SelfNested.impl.F.decl.loc239_112.1 // CHECK:STDOUT: witness = @SelfNestedBadReturnType.%SelfNested.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NoF { -// CHECK:STDOUT: impl_decl @I.impl.0c9 [concrete] {} { +// CHECK:STDOUT: impl_decl @NoF.as.I.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%NoF [concrete = constants.%NoF] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @I.impl.0c9 [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @NoF.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness.901] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] @@ -990,11 +990,11 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @FNotFunction { -// CHECK:STDOUT: impl_decl @I.impl.b55 [concrete] {} { +// CHECK:STDOUT: impl_decl @FNotFunction.as.I.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FNotFunction [concrete = constants.%FNotFunction] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @I.impl.b55 [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @FNotFunction.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness.44e] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] @@ -1005,14 +1005,14 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: .I = // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: class @F.loc37; +// CHECK:STDOUT: class @F; // CHECK:STDOUT: // CHECK:STDOUT: class @FAlias { -// CHECK:STDOUT: impl_decl @I.impl.199 [concrete] {} { +// CHECK:STDOUT: impl_decl @FAlias.as.I.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FAlias [concrete = constants.%FAlias] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @I.impl.199 [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @FAlias.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness.c80] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] @@ -1025,11 +1025,11 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @FExtraParam { -// CHECK:STDOUT: impl_decl @I.impl.ddd [concrete] {} { +// CHECK:STDOUT: impl_decl @FExtraParam.as.I.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FExtraParam [concrete = constants.%FExtraParam] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (@I.impl.ddd.%F.decl.loc69_18.2), @I.impl.ddd [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (@FExtraParam.as.I.impl.%FExtraParam.as.I.impl.F.decl.loc69_18.2), @FExtraParam.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness.1f3] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] @@ -1041,11 +1041,11 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @FExtraImplicitParam { -// CHECK:STDOUT: impl_decl @I.impl.698 [concrete] {} { +// CHECK:STDOUT: impl_decl @FExtraImplicitParam.as.I.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FExtraImplicitParam [concrete = constants.%FExtraImplicitParam] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (@I.impl.698.%F.decl.loc85_23.2), @I.impl.698 [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (@FExtraImplicitParam.as.I.impl.%FExtraImplicitParam.as.I.impl.F.decl.loc85_23.2), @FExtraImplicitParam.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness.a7b] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] @@ -1057,11 +1057,11 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @FExtraReturnType { -// CHECK:STDOUT: impl_decl @I.impl.77b [concrete] {} { +// CHECK:STDOUT: impl_decl @FExtraReturnType.as.I.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FExtraReturnType [concrete = constants.%FExtraReturnType] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @I.impl.77b [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @FExtraReturnType.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness.59a] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] @@ -1073,11 +1073,11 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @FMissingParam { -// CHECK:STDOUT: impl_decl @J.impl.5cf [concrete] {} { +// CHECK:STDOUT: impl_decl @FMissingParam.as.J.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FMissingParam [concrete = constants.%FMissingParam] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %J.impl_witness_table = impl_witness_table (@J.impl.5cf.%F.decl.loc117_31.2), @J.impl.5cf [concrete] +// CHECK:STDOUT: %J.impl_witness_table = impl_witness_table (@FMissingParam.as.J.impl.%FMissingParam.as.J.impl.F.decl.loc117_31.2), @FMissingParam.as.J.impl [concrete] // CHECK:STDOUT: %J.impl_witness: = impl_witness %J.impl_witness_table [concrete = constants.%J.impl_witness.4e9] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] @@ -1089,11 +1089,11 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @FMissingImplicitParam { -// CHECK:STDOUT: impl_decl @J.impl.bac [concrete] {} { +// CHECK:STDOUT: impl_decl @FMissingImplicitParam.as.J.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FMissingImplicitParam [concrete = constants.%FMissingImplicitParam] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %J.impl_witness_table = impl_witness_table (@J.impl.bac.%F.decl.loc130_26.2), @J.impl.bac [concrete] +// CHECK:STDOUT: %J.impl_witness_table = impl_witness_table (@FMissingImplicitParam.as.J.impl.%FMissingImplicitParam.as.J.impl.F.decl.loc130_26.2), @FMissingImplicitParam.as.J.impl [concrete] // CHECK:STDOUT: %J.impl_witness: = impl_witness %J.impl_witness_table [concrete = constants.%J.impl_witness.841] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] @@ -1105,11 +1105,11 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @FMissingReturnType { -// CHECK:STDOUT: impl_decl @J.impl.1a7 [concrete] {} { +// CHECK:STDOUT: impl_decl @FMissingReturnType.as.J.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FMissingReturnType [concrete = constants.%FMissingReturnType] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %J.impl_witness_table = impl_witness_table (@J.impl.1a7.%F.decl.loc152_30.2), @J.impl.1a7 [concrete] +// CHECK:STDOUT: %J.impl_witness_table = impl_witness_table (@FMissingReturnType.as.J.impl.%FMissingReturnType.as.J.impl.F.decl.loc152_30.2), @FMissingReturnType.as.J.impl [concrete] // CHECK:STDOUT: %J.impl_witness: = impl_witness %J.impl_witness_table [concrete = constants.%J.impl_witness.e75] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] @@ -1121,11 +1121,11 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @FDifferentParamType { -// CHECK:STDOUT: impl_decl @J.impl.f2b [concrete] {} { +// CHECK:STDOUT: impl_decl @FDifferentParamType.as.J.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FDifferentParamType [concrete = constants.%FDifferentParamType] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %J.impl_witness_table = impl_witness_table (@J.impl.f2b.%F.decl.loc171_38.2), @J.impl.f2b [concrete] +// CHECK:STDOUT: %J.impl_witness_table = impl_witness_table (@FDifferentParamType.as.J.impl.%FDifferentParamType.as.J.impl.F.decl.loc171_38.2), @FDifferentParamType.as.J.impl [concrete] // CHECK:STDOUT: %J.impl_witness: = impl_witness %J.impl_witness_table [concrete = constants.%J.impl_witness.cbe] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] @@ -1137,11 +1137,11 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @FDifferentImplicitParamType { -// CHECK:STDOUT: impl_decl @J.impl.db4 [concrete] {} { +// CHECK:STDOUT: impl_decl @FDifferentImplicitParamType.as.J.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FDifferentImplicitParamType [concrete = constants.%FDifferentImplicitParamType] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %J.impl_witness_table = impl_witness_table (@J.impl.db4.%F.decl.loc184_38.2), @J.impl.db4 [concrete] +// CHECK:STDOUT: %J.impl_witness_table = impl_witness_table (@FDifferentImplicitParamType.as.J.impl.%FDifferentImplicitParamType.as.J.impl.F.decl.loc184_38.2), @FDifferentImplicitParamType.as.J.impl [concrete] // CHECK:STDOUT: %J.impl_witness: = impl_witness %J.impl_witness_table [concrete = constants.%J.impl_witness.af2] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] @@ -1153,11 +1153,11 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @FDifferentReturnType { -// CHECK:STDOUT: impl_decl @J.impl.fcc [concrete] {} { +// CHECK:STDOUT: impl_decl @FDifferentReturnType.as.J.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FDifferentReturnType [concrete = constants.%FDifferentReturnType] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %J.impl_witness_table = impl_witness_table (@J.impl.fcc.%F.decl.loc200_38.2), @J.impl.fcc [concrete] +// CHECK:STDOUT: %J.impl_witness_table = impl_witness_table (@FDifferentReturnType.as.J.impl.%FDifferentReturnType.as.J.impl.F.decl.loc200_38.2), @FDifferentReturnType.as.J.impl [concrete] // CHECK:STDOUT: %J.impl_witness: = impl_witness %J.impl_witness_table [concrete = constants.%J.impl_witness.bc1] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] @@ -1169,11 +1169,11 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @SelfNestedBadParam { -// CHECK:STDOUT: impl_decl @SelfNested.impl.6a5 [concrete] {} { +// CHECK:STDOUT: impl_decl @SelfNestedBadParam.as.SelfNested.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%SelfNestedBadParam [concrete = constants.%SelfNestedBadParam] // CHECK:STDOUT: %SelfNested.ref: type = name_ref SelfNested, file.%SelfNested.decl [concrete = constants.%SelfNested.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %SelfNested.impl_witness_table = impl_witness_table (@SelfNested.impl.6a5.%F.decl.loc223_87.2), @SelfNested.impl.6a5 [concrete] +// CHECK:STDOUT: %SelfNested.impl_witness_table = impl_witness_table (@SelfNestedBadParam.as.SelfNested.impl.%SelfNestedBadParam.as.SelfNested.impl.F.decl.loc223_87.2), @SelfNestedBadParam.as.SelfNested.impl [concrete] // CHECK:STDOUT: %SelfNested.impl_witness: = impl_witness %SelfNested.impl_witness_table [concrete = constants.%SelfNested.impl_witness.e31] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] @@ -1186,11 +1186,11 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @SelfNestedBadReturnType { -// CHECK:STDOUT: impl_decl @SelfNested.impl.bfc [concrete] {} { +// CHECK:STDOUT: impl_decl @SelfNestedBadReturnType.as.SelfNested.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%SelfNestedBadReturnType [concrete = constants.%SelfNestedBadReturnType] // CHECK:STDOUT: %SelfNested.ref: type = name_ref SelfNested, file.%SelfNested.decl [concrete = constants.%SelfNested.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %SelfNested.impl_witness_table = impl_witness_table (@SelfNested.impl.bfc.%F.decl.loc239_112.2), @SelfNested.impl.bfc [concrete] +// CHECK:STDOUT: %SelfNested.impl_witness_table = impl_witness_table (@SelfNestedBadReturnType.as.SelfNested.impl.%SelfNestedBadReturnType.as.SelfNested.impl.F.decl.loc239_112.2), @SelfNestedBadReturnType.as.SelfNested.impl [concrete] // CHECK:STDOUT: %SelfNested.impl_witness: = impl_witness %SelfNested.impl_witness_table [concrete = constants.%SelfNested.impl_witness.d5e] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] @@ -1203,145 +1203,145 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: .SelfNestedBadParam = // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc15(@I.%Self: %I.type) { +// CHECK:STDOUT: generic fn @I.F(@I.%Self: %I.type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @PossiblyF(); // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc69_18.1(%b.param: bool); +// CHECK:STDOUT: fn @FExtraParam.as.I.impl.F.loc69_18.1(%b.param: bool); // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc69_18.2() [thunk @I.impl.ddd.%F.decl.loc69_18.1] { +// CHECK:STDOUT: fn @FExtraParam.as.I.impl.F.loc69_18.2() [thunk @FExtraParam.as.I.impl.%FExtraParam.as.I.impl.F.decl.loc69_18.1] { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %F.ref: %F.type.44ef8c.1 = name_ref F, @I.impl.ddd.%F.decl.loc69_18.1 [concrete = constants.%F.424e9e.1] +// CHECK:STDOUT: %F.ref: %FExtraParam.as.I.impl.F.type.44ef8c.1 = name_ref F, @FExtraParam.as.I.impl.%FExtraParam.as.I.impl.F.decl.loc69_18.1 [concrete = constants.%FExtraParam.as.I.impl.F.424e9e.1] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc85_23.1(%self.param: %FExtraImplicitParam); +// CHECK:STDOUT: fn @FExtraImplicitParam.as.I.impl.F.loc85_23.1(%self.param: %FExtraImplicitParam); // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc85_23.2() [thunk @I.impl.698.%F.decl.loc85_23.1] { +// CHECK:STDOUT: fn @FExtraImplicitParam.as.I.impl.F.loc85_23.2() [thunk @FExtraImplicitParam.as.I.impl.%FExtraImplicitParam.as.I.impl.F.decl.loc85_23.1] { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %F.ref: %F.type.e1abdd.1 = name_ref F, @I.impl.698.%F.decl.loc85_23.1 [concrete = constants.%F.6ff574.1] -// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.ref() +// CHECK:STDOUT: %F.ref: %FExtraImplicitParam.as.I.impl.F.type.e1abdd.1 = name_ref F, @FExtraImplicitParam.as.I.impl.%FExtraImplicitParam.as.I.impl.F.decl.loc85_23.1 [concrete = constants.%FExtraImplicitParam.as.I.impl.F.6ff574.1] +// CHECK:STDOUT: %FExtraImplicitParam.as.I.impl.F.call: init %empty_tuple.type = call %F.ref() // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc99() -> bool; +// CHECK:STDOUT: fn @FExtraReturnType.as.I.impl.F() -> bool; // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc103(@J.%Self: %J.type) { +// CHECK:STDOUT: generic fn @J.F(@J.%Self: %J.type) { // CHECK:STDOUT: fn(%self.param: bool, %b.param: bool) -> bool; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc117_31.1(%self.param: bool) -> bool; +// CHECK:STDOUT: fn @FMissingParam.as.J.impl.F.loc117_31.1(%self.param: bool) -> bool; // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc117_31.2(%self.param: bool, %b.param: bool) -> bool [thunk @J.impl.5cf.%F.decl.loc117_31.1] { +// CHECK:STDOUT: fn @FMissingParam.as.J.impl.F.loc117_31.2(%self.param: bool, %b.param: bool) -> bool [thunk @FMissingParam.as.J.impl.%FMissingParam.as.J.impl.F.decl.loc117_31.1] { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %F.ref: %F.type.69596c.1 = name_ref F, @J.impl.5cf.%F.decl.loc117_31.1 [concrete = constants.%F.738f31.1] +// CHECK:STDOUT: %F.ref: %FMissingParam.as.J.impl.F.type.69596c.1 = name_ref F, @FMissingParam.as.J.impl.%FMissingParam.as.J.impl.F.decl.loc117_31.1 [concrete = constants.%FMissingParam.as.J.impl.F.738f31.1] // CHECK:STDOUT: %self.ref: bool = name_ref self, %self.param // CHECK:STDOUT: %b.ref: bool = name_ref b, %b.param // CHECK:STDOUT: %return.ref: ref bool = name_ref , %return.param -// CHECK:STDOUT: %F.bound: = bound_method %self.ref, %F.ref +// CHECK:STDOUT: %FMissingParam.as.J.impl.F.bound: = bound_method %self.ref, %F.ref // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc130_26.1(%b.param: bool) -> bool; +// CHECK:STDOUT: fn @FMissingImplicitParam.as.J.impl.F.loc130_26.1(%b.param: bool) -> bool; // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc130_26.2(%self.param: bool, %b.param: bool) -> bool [thunk @J.impl.bac.%F.decl.loc130_26.1] { +// CHECK:STDOUT: fn @FMissingImplicitParam.as.J.impl.F.loc130_26.2(%self.param: bool, %b.param: bool) -> bool [thunk @FMissingImplicitParam.as.J.impl.%FMissingImplicitParam.as.J.impl.F.decl.loc130_26.1] { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %F.ref: %F.type.d97cef.1 = name_ref F, @J.impl.bac.%F.decl.loc130_26.1 [concrete = constants.%F.01de92.1] +// CHECK:STDOUT: %F.ref: %FMissingImplicitParam.as.J.impl.F.type.d97cef.1 = name_ref F, @FMissingImplicitParam.as.J.impl.%FMissingImplicitParam.as.J.impl.F.decl.loc130_26.1 [concrete = constants.%FMissingImplicitParam.as.J.impl.F.01de92.1] // CHECK:STDOUT: %self.ref: bool = name_ref self, %self.param // CHECK:STDOUT: %b.ref: bool = name_ref b, %b.param // CHECK:STDOUT: %return.ref: ref bool = name_ref , %return.param -// CHECK:STDOUT: %F.call: init bool = call %F.ref(%b.ref) -// CHECK:STDOUT: %.loc130_26.1: bool = value_of_initializer %F.call -// CHECK:STDOUT: %.loc130_26.2: bool = converted %F.call, %.loc130_26.1 +// CHECK:STDOUT: %FMissingImplicitParam.as.J.impl.F.call: init bool = call %F.ref(%b.ref) +// CHECK:STDOUT: %.loc130_26.1: bool = value_of_initializer %FMissingImplicitParam.as.J.impl.F.call +// CHECK:STDOUT: %.loc130_26.2: bool = converted %FMissingImplicitParam.as.J.impl.F.call, %.loc130_26.1 // CHECK:STDOUT: return %.loc130_26.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc152_30.1(%self.param: bool, %b.param: bool); +// CHECK:STDOUT: fn @FMissingReturnType.as.J.impl.F.loc152_30.1(%self.param: bool, %b.param: bool); // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc152_30.2(%self.param: bool, %b.param: bool) -> bool [thunk @J.impl.1a7.%F.decl.loc152_30.1] { +// CHECK:STDOUT: fn @FMissingReturnType.as.J.impl.F.loc152_30.2(%self.param: bool, %b.param: bool) -> bool [thunk @FMissingReturnType.as.J.impl.%FMissingReturnType.as.J.impl.F.decl.loc152_30.1] { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %F.ref: %F.type.123d7a.1 = name_ref F, @J.impl.1a7.%F.decl.loc152_30.1 [concrete = constants.%F.c7d02d.1] +// CHECK:STDOUT: %F.ref: %FMissingReturnType.as.J.impl.F.type.123d7a.1 = name_ref F, @FMissingReturnType.as.J.impl.%FMissingReturnType.as.J.impl.F.decl.loc152_30.1 [concrete = constants.%FMissingReturnType.as.J.impl.F.c7d02d.1] // CHECK:STDOUT: %self.ref: bool = name_ref self, %self.param // CHECK:STDOUT: %b.ref: bool = name_ref b, %b.param // CHECK:STDOUT: %return.ref: ref bool = name_ref , %return.param -// CHECK:STDOUT: %F.bound: = bound_method %self.ref, %F.ref -// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.bound(%self.ref, %b.ref) -// CHECK:STDOUT: %.loc152: bool = converted %F.call, [concrete = ] +// CHECK:STDOUT: %FMissingReturnType.as.J.impl.F.bound: = bound_method %self.ref, %F.ref +// CHECK:STDOUT: %FMissingReturnType.as.J.impl.F.call: init %empty_tuple.type = call %FMissingReturnType.as.J.impl.F.bound(%self.ref, %b.ref) +// CHECK:STDOUT: %.loc152: bool = converted %FMissingReturnType.as.J.impl.F.call, [concrete = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc171_38.1(%self.param: bool, %b.param: %FDifferentParamType) -> bool; +// CHECK:STDOUT: fn @FDifferentParamType.as.J.impl.F.loc171_38.1(%self.param: bool, %b.param: %FDifferentParamType) -> bool; // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc171_38.2(%self.param: bool, %b.param: bool) -> bool [thunk @J.impl.f2b.%F.decl.loc171_38.1] { +// CHECK:STDOUT: fn @FDifferentParamType.as.J.impl.F.loc171_38.2(%self.param: bool, %b.param: bool) -> bool [thunk @FDifferentParamType.as.J.impl.%FDifferentParamType.as.J.impl.F.decl.loc171_38.1] { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %F.ref: %F.type.6b537d.1 = name_ref F, @J.impl.f2b.%F.decl.loc171_38.1 [concrete = constants.%F.04313a.1] +// CHECK:STDOUT: %F.ref: %FDifferentParamType.as.J.impl.F.type.6b537d.1 = name_ref F, @FDifferentParamType.as.J.impl.%FDifferentParamType.as.J.impl.F.decl.loc171_38.1 [concrete = constants.%FDifferentParamType.as.J.impl.F.04313a.1] // CHECK:STDOUT: %self.ref: bool = name_ref self, %self.param // CHECK:STDOUT: %b.ref: bool = name_ref b, %b.param // CHECK:STDOUT: %return.ref: ref bool = name_ref , %return.param -// CHECK:STDOUT: %F.bound: = bound_method %self.ref, %F.ref +// CHECK:STDOUT: %FDifferentParamType.as.J.impl.F.bound: = bound_method %self.ref, %F.ref // CHECK:STDOUT: %.loc103: %FDifferentParamType = converted %b.ref, [concrete = ] -// CHECK:STDOUT: %F.call: init bool = call %F.bound(%self.ref, ) -// CHECK:STDOUT: %.loc171_38.1: bool = value_of_initializer %F.call -// CHECK:STDOUT: %.loc171_38.2: bool = converted %F.call, %.loc171_38.1 +// CHECK:STDOUT: %FDifferentParamType.as.J.impl.F.call: init bool = call %FDifferentParamType.as.J.impl.F.bound(%self.ref, ) +// CHECK:STDOUT: %.loc171_38.1: bool = value_of_initializer %FDifferentParamType.as.J.impl.F.call +// CHECK:STDOUT: %.loc171_38.2: bool = converted %FDifferentParamType.as.J.impl.F.call, %.loc171_38.1 // CHECK:STDOUT: return %.loc171_38.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc184_38.1(%self.param: %FDifferentImplicitParamType, %b.param: bool) -> bool; +// CHECK:STDOUT: fn @FDifferentImplicitParamType.as.J.impl.F.loc184_38.1(%self.param: %FDifferentImplicitParamType, %b.param: bool) -> bool; // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc184_38.2(%self.param: bool, %b.param: bool) -> bool [thunk @J.impl.db4.%F.decl.loc184_38.1] { +// CHECK:STDOUT: fn @FDifferentImplicitParamType.as.J.impl.F.loc184_38.2(%self.param: bool, %b.param: bool) -> bool [thunk @FDifferentImplicitParamType.as.J.impl.%FDifferentImplicitParamType.as.J.impl.F.decl.loc184_38.1] { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %F.ref: %F.type.d6232a.1 = name_ref F, @J.impl.db4.%F.decl.loc184_38.1 [concrete = constants.%F.886f70.1] +// CHECK:STDOUT: %F.ref: %FDifferentImplicitParamType.as.J.impl.F.type.d6232a.1 = name_ref F, @FDifferentImplicitParamType.as.J.impl.%FDifferentImplicitParamType.as.J.impl.F.decl.loc184_38.1 [concrete = constants.%FDifferentImplicitParamType.as.J.impl.F.886f70.1] // CHECK:STDOUT: %self.ref: bool = name_ref self, %self.param // CHECK:STDOUT: %b.ref: bool = name_ref b, %b.param // CHECK:STDOUT: %return.ref: ref bool = name_ref , %return.param -// CHECK:STDOUT: %F.bound: = bound_method %self.ref, %F.ref +// CHECK:STDOUT: %FDifferentImplicitParamType.as.J.impl.F.bound: = bound_method %self.ref, %F.ref // CHECK:STDOUT: %.loc103: %FDifferentImplicitParamType = converted %self.ref, [concrete = ] -// CHECK:STDOUT: %F.call: init bool = call %F.bound(, %b.ref) -// CHECK:STDOUT: %.loc184_38.1: bool = value_of_initializer %F.call -// CHECK:STDOUT: %.loc184_38.2: bool = converted %F.call, %.loc184_38.1 +// CHECK:STDOUT: %FDifferentImplicitParamType.as.J.impl.F.call: init bool = call %FDifferentImplicitParamType.as.J.impl.F.bound(, %b.ref) +// CHECK:STDOUT: %.loc184_38.1: bool = value_of_initializer %FDifferentImplicitParamType.as.J.impl.F.call +// CHECK:STDOUT: %.loc184_38.2: bool = converted %FDifferentImplicitParamType.as.J.impl.F.call, %.loc184_38.1 // CHECK:STDOUT: return %.loc184_38.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc200_38.1(%self.param: bool, %b.param: bool) -> %return.param: %FDifferentReturnType; +// CHECK:STDOUT: fn @FDifferentReturnType.as.J.impl.F.loc200_38.1(%self.param: bool, %b.param: bool) -> %return.param: %FDifferentReturnType; // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc200_38.2(%self.param: bool, %b.param: bool) -> bool [thunk @J.impl.fcc.%F.decl.loc200_38.1] { +// CHECK:STDOUT: fn @FDifferentReturnType.as.J.impl.F.loc200_38.2(%self.param: bool, %b.param: bool) -> bool [thunk @FDifferentReturnType.as.J.impl.%FDifferentReturnType.as.J.impl.F.decl.loc200_38.1] { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %F.ref: %F.type.d3b58f.1 = name_ref F, @J.impl.fcc.%F.decl.loc200_38.1 [concrete = constants.%F.be86c9.1] +// CHECK:STDOUT: %F.ref: %FDifferentReturnType.as.J.impl.F.type.d3b58f.1 = name_ref F, @FDifferentReturnType.as.J.impl.%FDifferentReturnType.as.J.impl.F.decl.loc200_38.1 [concrete = constants.%FDifferentReturnType.as.J.impl.F.be86c9.1] // CHECK:STDOUT: %self.ref: bool = name_ref self, %self.param // CHECK:STDOUT: %b.ref: bool = name_ref b, %b.param // CHECK:STDOUT: %return.ref: ref bool = name_ref , %return.param -// CHECK:STDOUT: %F.bound: = bound_method %self.ref, %F.ref +// CHECK:STDOUT: %FDifferentReturnType.as.J.impl.F.bound: = bound_method %self.ref, %F.ref // CHECK:STDOUT: %.loc200_38.1: ref %FDifferentReturnType = temporary_storage -// CHECK:STDOUT: %F.call: init %FDifferentReturnType = call %F.bound(%self.ref, %b.ref) to %.loc200_38.1 -// CHECK:STDOUT: %.loc200_38.2: bool = converted %F.call, [concrete = ] -// CHECK:STDOUT: %Op.bound: = bound_method %.loc200_38.1, constants.%Op.ddd -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.ddd, @Op.1(constants.%FDifferentReturnType) [concrete = constants.%Op.specific_fn.b4b] -// CHECK:STDOUT: %bound_method: = bound_method %.loc200_38.1, %Op.specific_fn +// CHECK:STDOUT: %FDifferentReturnType.as.J.impl.F.call: init %FDifferentReturnType = call %FDifferentReturnType.as.J.impl.F.bound(%self.ref, %b.ref) to %.loc200_38.1 +// CHECK:STDOUT: %.loc200_38.2: bool = converted %FDifferentReturnType.as.J.impl.F.call, [concrete = ] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc200_38.1, constants.%T.as.Destroy.impl.Op.ddd +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.ddd, @T.as.Destroy.impl.Op(constants.%FDifferentReturnType) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.b4b] +// CHECK:STDOUT: %bound_method: = bound_method %.loc200_38.1, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.954 = addr_of %.loc200_38.1 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc211(@SelfNested.%Self: %SelfNested.type) { +// CHECK:STDOUT: generic fn @SelfNested.F(@SelfNested.%Self: %SelfNested.type) { // CHECK:STDOUT: %Self: %SelfNested.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.2ff)] -// CHECK:STDOUT: %Self.as_type.loc211_16.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc211_16.2 (constants.%Self.as_type.e1e)] -// CHECK:STDOUT: %ptr.loc211_16.2: type = ptr_type %Self.as_type.loc211_16.2 [symbolic = %ptr.loc211_16.2 (constants.%ptr.e87)] -// CHECK:STDOUT: %struct_type.x.y.loc211_37.2: type = struct_type {.x: @F.loc211.%Self.as_type.loc211_16.2 (%Self.as_type.e1e), .y: %i32} [symbolic = %struct_type.x.y.loc211_37.2 (constants.%struct_type.x.y.81e)] -// CHECK:STDOUT: %tuple.type: type = tuple_type (%ptr.loc211_16.2, %struct_type.x.y.loc211_37.2) [symbolic = %tuple.type (constants.%tuple.type.229)] +// CHECK:STDOUT: %Self.as_type.loc211_16.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc211_16.1 (constants.%Self.as_type.e1e)] +// CHECK:STDOUT: %ptr.loc211_16.1: type = ptr_type %Self.as_type.loc211_16.1 [symbolic = %ptr.loc211_16.1 (constants.%ptr.e87)] +// CHECK:STDOUT: %struct_type.x.y.loc211_37.1: type = struct_type {.x: @SelfNested.F.%Self.as_type.loc211_16.1 (%Self.as_type.e1e), .y: %i32} [symbolic = %struct_type.x.y.loc211_37.1 (constants.%struct_type.x.y.81e)] +// CHECK:STDOUT: %tuple.type: type = tuple_type (%ptr.loc211_16.1, %struct_type.x.y.loc211_37.1) [symbolic = %tuple.type (constants.%tuple.type.229)] // CHECK:STDOUT: %pattern_type.loc211_8: type = pattern_type %tuple.type [symbolic = %pattern_type.loc211_8 (constants.%pattern_type.ced)] -// CHECK:STDOUT: %array_type.loc211_57.2: type = array_type constants.%int_4, %Self.as_type.loc211_16.2 [symbolic = %array_type.loc211_57.2 (constants.%array_type.873)] -// CHECK:STDOUT: %pattern_type.loc211_41: type = pattern_type %array_type.loc211_57.2 [symbolic = %pattern_type.loc211_41 (constants.%pattern_type.c7e)] +// CHECK:STDOUT: %array_type.loc211_57.1: type = array_type constants.%int_4, %Self.as_type.loc211_16.1 [symbolic = %array_type.loc211_57.1 (constants.%array_type.873)] +// CHECK:STDOUT: %pattern_type.loc211_41: type = pattern_type %array_type.loc211_57.1 [symbolic = %pattern_type.loc211_41 (constants.%pattern_type.c7e)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%x.param: @F.loc211.%tuple.type (%tuple.type.229)) -> @F.loc211.%array_type.loc211_57.2 (%array_type.873); +// CHECK:STDOUT: fn(%x.param: @SelfNested.F.%tuple.type (%tuple.type.229)) -> @SelfNested.F.%array_type.loc211_57.1 (%array_type.873); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc223_87.1(%x.param: %tuple.type.a7d) -> %return.param: %array_type.a41; +// CHECK:STDOUT: fn @SelfNestedBadParam.as.SelfNested.impl.F.loc223_87.1(%x.param: %tuple.type.a7d) -> %return.param: %array_type.a41; // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc223_87.2(%x.param: %tuple.type.9c9) -> %return.param: %array_type.a41 [thunk @SelfNested.impl.6a5.%F.decl.loc223_87.1] { +// CHECK:STDOUT: fn @SelfNestedBadParam.as.SelfNested.impl.F.loc223_87.2(%x.param: %tuple.type.9c9) -> %return.param: %array_type.a41 [thunk @SelfNestedBadParam.as.SelfNested.impl.%SelfNestedBadParam.as.SelfNested.impl.F.decl.loc223_87.1] { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %F.ref: %F.type.f90165.1 = name_ref F, @SelfNested.impl.6a5.%F.decl.loc223_87.1 [concrete = constants.%F.fa8d04.1] +// CHECK:STDOUT: %F.ref: %SelfNestedBadParam.as.SelfNested.impl.F.type.f90165.1 = name_ref F, @SelfNestedBadParam.as.SelfNested.impl.%SelfNestedBadParam.as.SelfNested.impl.F.decl.loc223_87.1 [concrete = constants.%SelfNestedBadParam.as.SelfNested.impl.F.fa8d04.1] // CHECK:STDOUT: %x.ref: %tuple.type.9c9 = name_ref x, %x.param // CHECK:STDOUT: %return.ref: ref %array_type.a41 = name_ref , %return.param // CHECK:STDOUT: %.loc211_41: ref %array_type.a41 = splice_block %return {} @@ -1349,85 +1349,85 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %tuple.elem1: %struct_type.x.y.a89 = tuple_access %x.ref, element1 // CHECK:STDOUT: %.loc211_9.1: %SelfNestedBadParam = struct_access %tuple.elem1, element0 // CHECK:STDOUT: %.loc211_9.2: %i32 = converted %.loc211_9.1, [concrete = ] -// CHECK:STDOUT: %F.call: init %array_type.a41 = call %F.ref() to %.loc211_41 -// CHECK:STDOUT: %Op.bound: = bound_method %.loc211_41, constants.%Op.d25 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.d25, @Op.1(constants.%array_type.a41) [concrete = constants.%Op.specific_fn.235] -// CHECK:STDOUT: %bound_method: = bound_method %.loc211_41, %Op.specific_fn +// CHECK:STDOUT: %SelfNestedBadParam.as.SelfNested.impl.F.call: init %array_type.a41 = call %F.ref() to %.loc211_41 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc211_41, constants.%T.as.Destroy.impl.Op.d25 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.d25, @T.as.Destroy.impl.Op(constants.%array_type.a41) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.235] +// CHECK:STDOUT: %bound_method: = bound_method %.loc211_41, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.f40 = addr_of %.loc211_41 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) -// CHECK:STDOUT: return %F.call to %return +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: return %SelfNestedBadParam.as.SelfNested.impl.F.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc239_112.1(%x.param: %tuple.type.eb9) -> %return.param: %array_type.a41; +// CHECK:STDOUT: fn @SelfNestedBadReturnType.as.SelfNested.impl.F.loc239_112.1(%x.param: %tuple.type.eb9) -> %return.param: %array_type.a41; // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc239_112.2(%x.param: %tuple.type.eb9) -> %return.param: %array_type.126 [thunk @SelfNested.impl.bfc.%F.decl.loc239_112.1] { +// CHECK:STDOUT: fn @SelfNestedBadReturnType.as.SelfNested.impl.F.loc239_112.2(%x.param: %tuple.type.eb9) -> %return.param: %array_type.126 [thunk @SelfNestedBadReturnType.as.SelfNested.impl.%SelfNestedBadReturnType.as.SelfNested.impl.F.decl.loc239_112.1] { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %F.ref: %F.type.0e7d1d.1 = name_ref F, @SelfNested.impl.bfc.%F.decl.loc239_112.1 [concrete = constants.%F.0bc78a.1] +// CHECK:STDOUT: %F.ref: %SelfNestedBadReturnType.as.SelfNested.impl.F.type.0e7d1d.1 = name_ref F, @SelfNestedBadReturnType.as.SelfNested.impl.%SelfNestedBadReturnType.as.SelfNested.impl.F.decl.loc239_112.1 [concrete = constants.%SelfNestedBadReturnType.as.SelfNested.impl.F.0bc78a.1] // CHECK:STDOUT: %x.ref: %tuple.type.eb9 = name_ref x, %x.param // CHECK:STDOUT: %return.ref: ref %array_type.126 = name_ref , %return.param // CHECK:STDOUT: %.loc239_112.1: ref %array_type.a41 = temporary_storage -// CHECK:STDOUT: %F.call: init %array_type.a41 = call %F.ref(%x.ref) to %.loc239_112.1 -// CHECK:STDOUT: %.loc239_112.2: %array_type.126 = converted %F.call, [concrete = ] -// CHECK:STDOUT: %Op.bound: = bound_method %.loc239_112.1, constants.%Op.d25 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.d25, @Op.1(constants.%array_type.a41) [concrete = constants.%Op.specific_fn.235] -// CHECK:STDOUT: %bound_method: = bound_method %.loc239_112.1, %Op.specific_fn +// CHECK:STDOUT: %SelfNestedBadReturnType.as.SelfNested.impl.F.call: init %array_type.a41 = call %F.ref(%x.ref) to %.loc239_112.1 +// CHECK:STDOUT: %.loc239_112.2: %array_type.126 = converted %SelfNestedBadReturnType.as.SelfNested.impl.F.call, [concrete = ] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc239_112.1, constants.%T.as.Destroy.impl.Op.d25 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.d25, @T.as.Destroy.impl.Op(constants.%array_type.a41) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.235] +// CHECK:STDOUT: %bound_method: = bound_method %.loc239_112.1, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.f40 = addr_of %.loc239_112.1 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc15(constants.%Self.826) {} +// CHECK:STDOUT: specific @I.F(constants.%Self.826) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc15(constants.%I.facet.fa4) {} +// CHECK:STDOUT: specific @I.F(constants.%I.facet.fa4) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc15(constants.%I.facet.ee5) {} +// CHECK:STDOUT: specific @I.F(constants.%I.facet.ee5) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc15(constants.%I.facet.d5c) {} +// CHECK:STDOUT: specific @I.F(constants.%I.facet.d5c) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc103(constants.%Self.ccd) {} +// CHECK:STDOUT: specific @J.F(constants.%Self.ccd) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc103(constants.%J.facet.94c) {} +// CHECK:STDOUT: specific @J.F(constants.%J.facet.94c) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc103(constants.%J.facet.e7e) {} +// CHECK:STDOUT: specific @J.F(constants.%J.facet.e7e) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc103(constants.%J.facet.974) {} +// CHECK:STDOUT: specific @J.F(constants.%J.facet.974) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc103(constants.%J.facet.37e) {} +// CHECK:STDOUT: specific @J.F(constants.%J.facet.37e) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc103(constants.%J.facet.bf1) {} +// CHECK:STDOUT: specific @J.F(constants.%J.facet.bf1) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc103(constants.%J.facet.67f) {} +// CHECK:STDOUT: specific @J.F(constants.%J.facet.67f) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc211(constants.%Self.2ff) { +// CHECK:STDOUT: specific @SelfNested.F(constants.%Self.2ff) { // CHECK:STDOUT: %Self => constants.%Self.2ff -// CHECK:STDOUT: %Self.as_type.loc211_16.2 => constants.%Self.as_type.e1e -// CHECK:STDOUT: %ptr.loc211_16.2 => constants.%ptr.e87 -// CHECK:STDOUT: %struct_type.x.y.loc211_37.2 => constants.%struct_type.x.y.81e +// CHECK:STDOUT: %Self.as_type.loc211_16.1 => constants.%Self.as_type.e1e +// CHECK:STDOUT: %ptr.loc211_16.1 => constants.%ptr.e87 +// CHECK:STDOUT: %struct_type.x.y.loc211_37.1 => constants.%struct_type.x.y.81e // CHECK:STDOUT: %tuple.type => constants.%tuple.type.229 // CHECK:STDOUT: %pattern_type.loc211_8 => constants.%pattern_type.ced -// CHECK:STDOUT: %array_type.loc211_57.2 => constants.%array_type.873 +// CHECK:STDOUT: %array_type.loc211_57.1 => constants.%array_type.873 // CHECK:STDOUT: %pattern_type.loc211_41 => constants.%pattern_type.c7e // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc211(constants.%SelfNested.facet.608) { +// CHECK:STDOUT: specific @SelfNested.F(constants.%SelfNested.facet.608) { // CHECK:STDOUT: %Self => constants.%SelfNested.facet.608 -// CHECK:STDOUT: %Self.as_type.loc211_16.2 => constants.%SelfNestedBadParam -// CHECK:STDOUT: %ptr.loc211_16.2 => constants.%ptr.4cd -// CHECK:STDOUT: %struct_type.x.y.loc211_37.2 => constants.%struct_type.x.y.a89 +// CHECK:STDOUT: %Self.as_type.loc211_16.1 => constants.%SelfNestedBadParam +// CHECK:STDOUT: %ptr.loc211_16.1 => constants.%ptr.4cd +// CHECK:STDOUT: %struct_type.x.y.loc211_37.1 => constants.%struct_type.x.y.a89 // CHECK:STDOUT: %tuple.type => constants.%tuple.type.9c9 // CHECK:STDOUT: %pattern_type.loc211_8 => constants.%pattern_type.a5c -// CHECK:STDOUT: %array_type.loc211_57.2 => constants.%array_type.a41 +// CHECK:STDOUT: %array_type.loc211_57.1 => constants.%array_type.a41 // CHECK:STDOUT: %pattern_type.loc211_41 => constants.%pattern_type.1f1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc211(constants.%SelfNested.facet.766) { +// CHECK:STDOUT: specific @SelfNested.F(constants.%SelfNested.facet.766) { // CHECK:STDOUT: %Self => constants.%SelfNested.facet.766 -// CHECK:STDOUT: %Self.as_type.loc211_16.2 => constants.%SelfNestedBadReturnType -// CHECK:STDOUT: %ptr.loc211_16.2 => constants.%ptr.612 -// CHECK:STDOUT: %struct_type.x.y.loc211_37.2 => constants.%struct_type.x.y.ac5 +// CHECK:STDOUT: %Self.as_type.loc211_16.1 => constants.%SelfNestedBadReturnType +// CHECK:STDOUT: %ptr.loc211_16.1 => constants.%ptr.612 +// CHECK:STDOUT: %struct_type.x.y.loc211_37.1 => constants.%struct_type.x.y.ac5 // CHECK:STDOUT: %tuple.type => constants.%tuple.type.eb9 // CHECK:STDOUT: %pattern_type.loc211_8 => constants.%pattern_type.23f -// CHECK:STDOUT: %array_type.loc211_57.2 => constants.%array_type.126 +// CHECK:STDOUT: %array_type.loc211_57.1 => constants.%array_type.126 // CHECK:STDOUT: %pattern_type.loc211_41 => constants.%pattern_type.f56 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/fail_impl_bad_interface.carbon b/toolchain/check/testdata/impl/fail_impl_bad_interface.carbon index 6b1bad38f94a..1103bbf2305f 100644 --- a/toolchain/check/testdata/impl/fail_impl_bad_interface.carbon +++ b/toolchain/check/testdata/impl/fail_impl_bad_interface.carbon @@ -85,15 +85,15 @@ impl {.a: bool} as type where .Self impls I {} // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %.loc11: type = converted @impl.%false, [concrete = ] -// CHECK:STDOUT: impl_decl @impl [concrete] {} { +// CHECK:STDOUT: %.loc11: type = converted @i32.as..impl.%false, [concrete = ] +// CHECK:STDOUT: impl_decl @i32.as..impl [concrete] {} { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %false: bool = bool_literal false [concrete = constants.%false] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl: %i32 as { +// CHECK:STDOUT: impl @i32.as..impl: %i32 as { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = // CHECK:STDOUT: } @@ -119,14 +119,14 @@ impl {.a: bool} as type where .Self impls I {} // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: impl_decl @impl [concrete] {} { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc8_6.1: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc8_6.2: type = converted %bool.make_type, %.loc8_6.1 [concrete = bool] +// CHECK:STDOUT: impl_decl @bool.as..impl [concrete] {} { +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc8_6.1: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc8_6.2: type = converted %Bool.call, %.loc8_6.1 [concrete = bool] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl: %.loc8_6.2 as type { +// CHECK:STDOUT: impl @bool.as..impl: %.loc8_6.2 as type { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = // CHECK:STDOUT: } @@ -155,11 +155,11 @@ impl {.a: bool} as type where .Self impls I {} // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: impl_decl @impl [concrete] {} { +// CHECK:STDOUT: impl_decl @f64.as..impl [concrete] {} { // CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [concrete = constants.%int_64] -// CHECK:STDOUT: %float.make_type: init type = call constants.%Float(%int_64) [concrete = f64] -// CHECK:STDOUT: %.loc8_6.1: type = value_of_initializer %float.make_type [concrete = f64] -// CHECK:STDOUT: %.loc8_6.2: type = converted %float.make_type, %.loc8_6.1 [concrete = f64] +// CHECK:STDOUT: %Float.call: init type = call constants.%Float(%int_64) [concrete = f64] +// CHECK:STDOUT: %.loc8_6.1: type = value_of_initializer %Float.call [concrete = f64] +// CHECK:STDOUT: %.loc8_6.2: type = converted %Float.call, %.loc8_6.1 [concrete = f64] // CHECK:STDOUT: %.Self: type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %.Self.ref: type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %.loc8_18: type = where_expr %.Self [concrete = constants.%type] { @@ -168,7 +168,7 @@ impl {.a: bool} as type where .Self impls I {} // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl: %.loc8_6.2 as %.loc8_18 { +// CHECK:STDOUT: impl @f64.as..impl: %.loc8_6.2 as %.loc8_18 { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = // CHECK:STDOUT: } @@ -201,10 +201,10 @@ impl {.a: bool} as type where .Self impls I {} // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} -// CHECK:STDOUT: impl_decl @impl [concrete] {} { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc10_11.1: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc10_11.2: type = converted %bool.make_type, %.loc10_11.1 [concrete = bool] +// CHECK:STDOUT: impl_decl @struct_type.a.as..impl [concrete] {} { +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc10_11.1: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc10_11.2: type = converted %Bool.call, %.loc10_11.1 [concrete = bool] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: bool} [concrete = constants.%struct_type.a] // CHECK:STDOUT: %.Self: type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %.Self.ref: type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] @@ -223,7 +223,7 @@ impl {.a: bool} as type where .Self impls I {} // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl: %struct_type.a as %.loc10_25 { +// CHECK:STDOUT: impl @struct_type.a.as..impl: %struct_type.a as %.loc10_25 { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/fail_impl_bad_type.carbon b/toolchain/check/testdata/impl/fail_impl_bad_type.carbon index 24b02d411f34..af77c83feac7 100644 --- a/toolchain/check/testdata/impl/fail_impl_bad_type.carbon +++ b/toolchain/check/testdata/impl/fail_impl_bad_type.carbon @@ -49,7 +49,7 @@ impl true as I {} // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @.as.I.impl [concrete] {} { // CHECK:STDOUT: %true: bool = bool_literal true [concrete = constants.%true] // CHECK:STDOUT: %.loc24: type = converted %true, [concrete = ] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] @@ -64,7 +64,7 @@ impl true as I {} // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: as %I.ref { +// CHECK:STDOUT: impl @.as.I.impl: as %I.ref { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/fail_redefinition.carbon b/toolchain/check/testdata/impl/fail_redefinition.carbon index 2389378964e6..6e832cfc2c22 100644 --- a/toolchain/check/testdata/impl/fail_redefinition.carbon +++ b/toolchain/check/testdata/impl/fail_redefinition.carbon @@ -53,14 +53,14 @@ impl i32 as I {} // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} -// CHECK:STDOUT: impl_decl @I.impl.a9ac64.1 [concrete] {} { +// CHECK:STDOUT: impl_decl @i32.as.I.impl.a9ac64.1 [concrete] {} { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @I.impl.a9ac64.1 [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @i32.as.I.impl.a9ac64.1 [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness] -// CHECK:STDOUT: impl_decl @I.impl.a9ac64.2 [concrete] {} { +// CHECK:STDOUT: impl_decl @i32.as.I.impl.a9ac64.2 [concrete] {} { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] @@ -75,12 +75,12 @@ impl i32 as I {} // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl.a9ac64.1: %i32 as %I.ref { +// CHECK:STDOUT: impl @i32.as.I.impl.a9ac64.1: %i32 as %I.ref { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%I.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl.a9ac64.2: %i32 as %I.ref { +// CHECK:STDOUT: impl @i32.as.I.impl.a9ac64.2: %i32 as %I.ref { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/fail_self_type_mismatch.carbon b/toolchain/check/testdata/impl/fail_self_type_mismatch.carbon index 74577acface8..5b22c4b6d3a1 100644 --- a/toolchain/check/testdata/impl/fail_self_type_mismatch.carbon +++ b/toolchain/check/testdata/impl/fail_self_type_mismatch.carbon @@ -61,18 +61,18 @@ impl i32 as I { // CHECK:STDOUT: %pattern_type.2b5: type = pattern_type %I.type [concrete] // CHECK:STDOUT: %C.dbb: type = class_type @C, @C(%I.type, %Self.826) [symbolic] // CHECK:STDOUT: %pattern_type.4fb: type = pattern_type %C.dbb [symbolic] -// CHECK:STDOUT: %F.type.cf0: type = fn_type @F.loc25 [concrete] -// CHECK:STDOUT: %F.bc6: %F.type.cf0 = struct_value () [concrete] +// CHECK:STDOUT: %I.F.type: type = fn_type @I.F [concrete] +// CHECK:STDOUT: %I.F: %I.F.type = struct_value () [concrete] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] -// CHECK:STDOUT: %assoc0.82e: %I.assoc_type = assoc_entity element0, @I.%F.decl [concrete] +// CHECK:STDOUT: %assoc0.82e: %I.assoc_type = assoc_entity element0, @I.%I.F.decl [concrete] // CHECK:STDOUT: %Bool.type: type = fn_type @Bool [concrete] // CHECK:STDOUT: %Bool: %Bool.type = struct_value () [concrete] // CHECK:STDOUT: %I.impl_witness.c21: = impl_witness file.%I.impl_witness_table.loc28 [concrete] // CHECK:STDOUT: %I.facet.e8a: %I.type = facet_value bool, (%I.impl_witness.c21) [concrete] // CHECK:STDOUT: %C.7db: type = class_type @C, @C(%I.type, %I.facet.e8a) [concrete] // CHECK:STDOUT: %pattern_type.225: type = pattern_type %C.7db [concrete] -// CHECK:STDOUT: %F.type.8ba: type = fn_type @F.loc32 [concrete] -// CHECK:STDOUT: %F.2cf: %F.type.8ba = struct_value () [concrete] +// CHECK:STDOUT: %bool.as.I.impl.F.type: type = fn_type @bool.as.I.impl.F [concrete] +// CHECK:STDOUT: %bool.as.I.impl.F: %bool.as.I.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] @@ -80,13 +80,13 @@ impl i32 as I { // CHECK:STDOUT: %I.impl_witness.863: = impl_witness file.%I.impl_witness_table.loc35 [concrete] // CHECK:STDOUT: %C.6fb: type = class_type @C, @C(type, %i32) [concrete] // CHECK:STDOUT: %pattern_type.52b: type = pattern_type %C.6fb [concrete] -// CHECK:STDOUT: %F.type.066a53.1: type = fn_type @F.loc43_18.1 [concrete] -// CHECK:STDOUT: %F.9ec58f.1: %F.type.066a53.1 = struct_value () [concrete] +// CHECK:STDOUT: %i32.as.I.impl.F.type.066a53.1: type = fn_type @i32.as.I.impl.F.loc43_18.1 [concrete] +// CHECK:STDOUT: %i32.as.I.impl.F.9ec58f.1: %i32.as.I.impl.F.type.066a53.1 = struct_value () [concrete] // CHECK:STDOUT: %I.facet.118: %I.type = facet_value %i32, (%I.impl_witness.863) [concrete] // CHECK:STDOUT: %C.d88: type = class_type @C, @C(%I.type, %I.facet.118) [concrete] // CHECK:STDOUT: %pattern_type.c65: type = pattern_type %C.d88 [concrete] -// CHECK:STDOUT: %F.type.066a53.2: type = fn_type @F.loc43_18.2 [concrete] -// CHECK:STDOUT: %F.9ec58f.2: %F.type.066a53.2 = struct_value () [concrete] +// CHECK:STDOUT: %i32.as.I.impl.F.type.066a53.2: type = fn_type @i32.as.I.impl.F.loc43_18.2 [concrete] +// CHECK:STDOUT: %i32.as.I.impl.F.9ec58f.2: %i32.as.I.impl.F.type.066a53.2 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: } @@ -120,58 +120,58 @@ impl i32 as I { // CHECK:STDOUT: %X.loc15_19.2: @C.%T.loc15_9.1 (%T) = bind_symbolic_name X, 1 [symbolic = %X.loc15_19.1 (constants.%X)] // CHECK:STDOUT: } // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} -// CHECK:STDOUT: impl_decl @I.impl.049 [concrete] {} { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc28_6.1: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc28_6.2: type = converted %bool.make_type, %.loc28_6.1 [concrete = bool] +// CHECK:STDOUT: impl_decl @bool.as.I.impl [concrete] {} { +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc28_6.1: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc28_6.2: type = converted %Bool.call, %.loc28_6.1 [concrete = bool] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table.loc28 = impl_witness_table (@I.impl.049.%F.decl), @I.impl.049 [concrete] +// CHECK:STDOUT: %I.impl_witness_table.loc28 = impl_witness_table (@bool.as.I.impl.%bool.as.I.impl.F.decl), @bool.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness.loc28: = impl_witness %I.impl_witness_table.loc28 [concrete = constants.%I.impl_witness.c21] -// CHECK:STDOUT: impl_decl @I.impl.a9a [concrete] {} { +// CHECK:STDOUT: impl_decl @i32.as.I.impl [concrete] {} { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table.loc35 = impl_witness_table (@I.impl.a9a.%F.decl.loc43_18.2), @I.impl.a9a [concrete] +// CHECK:STDOUT: %I.impl_witness_table.loc35 = impl_witness_table (@i32.as.I.impl.%i32.as.I.impl.F.decl.loc43_18.2), @i32.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness.loc35: = impl_witness %I.impl_witness_table.loc35 [concrete = constants.%I.impl_witness.863] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.826] -// CHECK:STDOUT: %F.decl: %F.type.cf0 = fn_decl @F.loc25 [concrete = constants.%F.bc6] { -// CHECK:STDOUT: %c.patt: @F.loc25.%pattern_type (%pattern_type.4fb) = binding_pattern c [concrete] -// CHECK:STDOUT: %c.param_patt: @F.loc25.%pattern_type (%pattern_type.4fb) = value_param_pattern %c.patt, call_param0 [concrete] +// CHECK:STDOUT: %I.F.decl: %I.F.type = fn_decl @I.F [concrete = constants.%I.F] { +// CHECK:STDOUT: %c.patt: @I.F.%pattern_type (%pattern_type.4fb) = binding_pattern c [concrete] +// CHECK:STDOUT: %c.param_patt: @I.F.%pattern_type (%pattern_type.4fb) = value_param_pattern %c.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %c.param: @F.loc25.%C.loc25_17.2 (%C.dbb) = value_param call_param0 -// CHECK:STDOUT: %.loc25: type = splice_block %C.loc25_17.1 [symbolic = %C.loc25_17.2 (constants.%C.dbb)] { +// CHECK:STDOUT: %c.param: @I.F.%C.loc25_17.1 (%C.dbb) = value_param call_param0 +// CHECK:STDOUT: %.loc25: type = splice_block %C.loc25_17.2 [symbolic = %C.loc25_17.1 (constants.%C.dbb)] { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] // CHECK:STDOUT: %Self.ref: %I.type = name_ref Self, @I.%Self [symbolic = %Self (constants.%Self.826)] -// CHECK:STDOUT: %C.loc25_17.1: type = class_type @C, @C(constants.%I.type, constants.%Self.826) [symbolic = %C.loc25_17.2 (constants.%C.dbb)] +// CHECK:STDOUT: %C.loc25_17.2: type = class_type @C, @C(constants.%I.type, constants.%Self.826) [symbolic = %C.loc25_17.1 (constants.%C.dbb)] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: @F.loc25.%C.loc25_17.2 (%C.dbb) = bind_name c, %c.param +// CHECK:STDOUT: %c: @I.F.%C.loc25_17.1 (%C.dbb) = bind_name c, %c.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0.82e] +// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %I.F.decl [concrete = constants.%assoc0.82e] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .C = // CHECK:STDOUT: .F = %assoc0 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%I.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl.049: %.loc28_6.2 as %I.ref { -// CHECK:STDOUT: %F.decl: %F.type.8ba = fn_decl @F.loc32 [concrete = constants.%F.2cf] { +// CHECK:STDOUT: impl @bool.as.I.impl: %.loc28_6.2 as %I.ref { +// CHECK:STDOUT: %bool.as.I.impl.F.decl: %bool.as.I.impl.F.type = fn_decl @bool.as.I.impl.F [concrete = constants.%bool.as.I.impl.F] { // CHECK:STDOUT: %c.patt: %pattern_type.225 = binding_pattern c [concrete] // CHECK:STDOUT: %c.param_patt: %pattern_type.225 = value_param_pattern %c.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %c.param: %C.7db = value_param call_param0 // CHECK:STDOUT: %.loc32_22: type = splice_block %C [concrete = constants.%C.7db] { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: %I.facet: %I.type = facet_value bool, (constants.%I.impl_witness.c21) [concrete = constants.%I.facet.e8a] -// CHECK:STDOUT: %.loc32_18: %I.type = converted %bool.make_type, %I.facet [concrete = constants.%I.facet.e8a] +// CHECK:STDOUT: %.loc32_18: %I.type = converted %Bool.call, %I.facet [concrete = constants.%I.facet.e8a] // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%I.type, constants.%I.facet.e8a) [concrete = constants.%C.7db] // CHECK:STDOUT: } // CHECK:STDOUT: %c: %C.7db = bind_name c, %c.param @@ -180,12 +180,12 @@ impl i32 as I { // CHECK:STDOUT: !members: // CHECK:STDOUT: .C = // CHECK:STDOUT: .I = -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %bool.as.I.impl.F.decl // CHECK:STDOUT: witness = file.%I.impl_witness.loc28 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl.a9a: %i32 as %I.ref { -// CHECK:STDOUT: %F.decl.loc43_18.1: %F.type.066a53.1 = fn_decl @F.loc43_18.1 [concrete = constants.%F.9ec58f.1] { +// CHECK:STDOUT: impl @i32.as.I.impl: %i32 as %I.ref { +// CHECK:STDOUT: %i32.as.I.impl.F.decl.loc43_18.1: %i32.as.I.impl.F.type.066a53.1 = fn_decl @i32.as.I.impl.F.loc43_18.1 [concrete = constants.%i32.as.I.impl.F.9ec58f.1] { // CHECK:STDOUT: %c.patt: %pattern_type.52b = binding_pattern c [concrete] // CHECK:STDOUT: %c.param_patt: %pattern_type.52b = value_param_pattern %c.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -198,7 +198,7 @@ impl i32 as I { // CHECK:STDOUT: } // CHECK:STDOUT: %c: %C.6fb = bind_name c, %c.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl.loc43_18.2: %F.type.066a53.2 = fn_decl @F.loc43_18.2 [concrete = constants.%F.9ec58f.2] { +// CHECK:STDOUT: %i32.as.I.impl.F.decl.loc43_18.2: %i32.as.I.impl.F.type.066a53.2 = fn_decl @i32.as.I.impl.F.loc43_18.2 [concrete = constants.%i32.as.I.impl.F.9ec58f.2] { // CHECK:STDOUT: %c.patt: %pattern_type.c65 = binding_pattern c [concrete] // CHECK:STDOUT: %c.param_patt: %pattern_type.c65 = value_param_pattern %c.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -208,7 +208,7 @@ impl i32 as I { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .C = -// CHECK:STDOUT: .F = %F.decl.loc43_18.1 +// CHECK:STDOUT: .F = %i32.as.I.impl.F.decl.loc43_18.1 // CHECK:STDOUT: witness = file.%I.impl_witness.loc35 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -229,24 +229,24 @@ impl i32 as I { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc25(@I.%Self: %I.type) { +// CHECK:STDOUT: generic fn @I.F(@I.%Self: %I.type) { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.826)] -// CHECK:STDOUT: %C.loc25_17.2: type = class_type @C, @C(constants.%I.type, %Self) [symbolic = %C.loc25_17.2 (constants.%C.dbb)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %C.loc25_17.2 [symbolic = %pattern_type (constants.%pattern_type.4fb)] +// CHECK:STDOUT: %C.loc25_17.1: type = class_type @C, @C(constants.%I.type, %Self) [symbolic = %C.loc25_17.1 (constants.%C.dbb)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %C.loc25_17.1 [symbolic = %pattern_type (constants.%pattern_type.4fb)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%c.param: @F.loc25.%C.loc25_17.2 (%C.dbb)); +// CHECK:STDOUT: fn(%c.param: @I.F.%C.loc25_17.1 (%C.dbb)); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc32(%c.param: %C.7db); +// CHECK:STDOUT: fn @bool.as.I.impl.F(%c.param: %C.7db); // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc43_18.1(%c.param: %C.6fb); +// CHECK:STDOUT: fn @i32.as.I.impl.F.loc43_18.1(%c.param: %C.6fb); // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc43_18.2(%c.param: %C.d88) [thunk @I.impl.a9a.%F.decl.loc43_18.1] { +// CHECK:STDOUT: fn @i32.as.I.impl.F.loc43_18.2(%c.param: %C.d88) [thunk @i32.as.I.impl.%i32.as.I.impl.F.decl.loc43_18.1] { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %F.ref: %F.type.066a53.1 = name_ref F, @I.impl.a9a.%F.decl.loc43_18.1 [concrete = constants.%F.9ec58f.1] +// CHECK:STDOUT: %F.ref: %i32.as.I.impl.F.type.066a53.1 = name_ref F, @i32.as.I.impl.%i32.as.I.impl.F.decl.loc43_18.1 [concrete = constants.%i32.as.I.impl.F.9ec58f.1] // CHECK:STDOUT: %c.ref: %C.d88 = name_ref c, %c.param // CHECK:STDOUT: %.loc25: %C.6fb = converted %c.ref, [concrete = ] -// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.ref() +// CHECK:STDOUT: %i32.as.I.impl.F.call: init %empty_tuple.type = call %F.ref() // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -262,9 +262,9 @@ impl i32 as I { // CHECK:STDOUT: %pattern_type => constants.%pattern_type.2b5 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc25(constants.%Self.826) { +// CHECK:STDOUT: specific @I.F(constants.%Self.826) { // CHECK:STDOUT: %Self => constants.%Self.826 -// CHECK:STDOUT: %C.loc25_17.2 => constants.%C.dbb +// CHECK:STDOUT: %C.loc25_17.1 => constants.%C.dbb // CHECK:STDOUT: %pattern_type => constants.%pattern_type.4fb // CHECK:STDOUT: } // CHECK:STDOUT: @@ -274,9 +274,9 @@ impl i32 as I { // CHECK:STDOUT: %pattern_type => constants.%pattern_type.2b5 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc25(constants.%I.facet.e8a) { +// CHECK:STDOUT: specific @I.F(constants.%I.facet.e8a) { // CHECK:STDOUT: %Self => constants.%I.facet.e8a -// CHECK:STDOUT: %C.loc25_17.2 => constants.%C.7db +// CHECK:STDOUT: %C.loc25_17.1 => constants.%C.7db // CHECK:STDOUT: %pattern_type => constants.%pattern_type.225 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -288,9 +288,9 @@ impl i32 as I { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc25(constants.%I.facet.118) { +// CHECK:STDOUT: specific @I.F(constants.%I.facet.118) { // CHECK:STDOUT: %Self => constants.%I.facet.118 -// CHECK:STDOUT: %C.loc25_17.2 => constants.%C.d88 +// CHECK:STDOUT: %C.loc25_17.1 => constants.%C.d88 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.c65 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/fail_undefined_interface.carbon b/toolchain/check/testdata/impl/fail_undefined_interface.carbon index b8621fc82f60..83d087e90271 100644 --- a/toolchain/check/testdata/impl/fail_undefined_interface.carbon +++ b/toolchain/check/testdata/impl/fail_undefined_interface.carbon @@ -87,7 +87,7 @@ impl C as J where .Self impls Incomplete and .T = (); // CHECK:STDOUT: .I = %I.decl // CHECK:STDOUT: } // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @empty_struct_type.as.I.impl [concrete] {} { // CHECK:STDOUT: %.loc12_7.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc12_7.2: type = converted %.loc12_7.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] @@ -96,7 +96,7 @@ impl C as J where .Self impls Incomplete and .T = (); // CHECK:STDOUT: // CHECK:STDOUT: interface @I; // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: %.loc12_7.2 as %I.ref { +// CHECK:STDOUT: impl @empty_struct_type.as.I.impl: %.loc12_7.2 as %I.ref { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = // CHECK:STDOUT: } @@ -117,7 +117,7 @@ impl C as J where .Self impls Incomplete and .T = (); // CHECK:STDOUT: } // CHECK:STDOUT: %J.decl: type = interface_decl @J [concrete = constants.%J.type] {} {} // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} -// CHECK:STDOUT: impl_decl @J.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.J.impl [concrete] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: } @@ -125,7 +125,7 @@ impl C as J where .Self impls Incomplete and .T = (); // CHECK:STDOUT: // CHECK:STDOUT: interface @J; // CHECK:STDOUT: -// CHECK:STDOUT: impl @J.impl: %C.ref as %J.ref { +// CHECK:STDOUT: impl @C.as.J.impl: %C.ref as %J.ref { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = // CHECK:STDOUT: } @@ -162,7 +162,7 @@ impl C as J where .Self impls Incomplete and .T = (); // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} // CHECK:STDOUT: %Incomplete.decl: type = interface_decl @Incomplete [concrete = constants.%Incomplete.type] {} {} -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.I.impl [concrete] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: %.Self: %I.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] @@ -186,7 +186,7 @@ impl C as J where .Self impls Incomplete and .T = (); // CHECK:STDOUT: // CHECK:STDOUT: interface @Incomplete; // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: %C.ref as %.loc15_13 { +// CHECK:STDOUT: impl @C.as.I.impl: %C.ref as %.loc15_13 { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = // CHECK:STDOUT: } @@ -229,7 +229,7 @@ impl C as J where .Self impls Incomplete and .T = (); // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} // CHECK:STDOUT: %J.decl: type = interface_decl @J [concrete = constants.%J.type] {} {} // CHECK:STDOUT: %Incomplete.decl: type = interface_decl @Incomplete [concrete = constants.%Incomplete.type] {} {} -// CHECK:STDOUT: impl_decl @J.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.J.impl [concrete] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: %.Self: %J.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] @@ -269,7 +269,7 @@ impl C as J where .Self impls Incomplete and .T = (); // CHECK:STDOUT: assoc_const T:! type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @J.impl: %C.ref as %.loc15_13; +// CHECK:STDOUT: impl @C.as.J.impl: %C.ref as %.loc15_13; // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] diff --git a/toolchain/check/testdata/impl/forward_decls.carbon b/toolchain/check/testdata/impl/forward_decls.carbon index fbcc15bf7d6c..0f00f011ff47 100644 --- a/toolchain/check/testdata/impl/forward_decls.carbon +++ b/toolchain/check/testdata/impl/forward_decls.carbon @@ -302,15 +302,15 @@ interface I { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl.loc3: type = interface_decl @I [concrete = constants.%I.type] {} {} -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @empty_struct_type.as.I.impl [concrete] {} { // CHECK:STDOUT: %.loc4_7.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc4_7.2: type = converted %.loc4_7.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %I.ref.loc4: type = name_ref I, file.%I.decl.loc3 [concrete = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @I.impl [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @empty_struct_type.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness] // CHECK:STDOUT: %I.decl.loc6: type = interface_decl @I [concrete = constants.%I.type] {} {} -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @empty_struct_type.as.I.impl [concrete] {} { // CHECK:STDOUT: %.loc7_7.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc7_7.2: type = converted %.loc7_7.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %I.ref.loc7: type = name_ref I, file.%I.decl.loc3 [concrete = constants.%I.type] @@ -325,7 +325,7 @@ interface I { // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: %.loc4_7.2 as %I.ref.loc4 { +// CHECK:STDOUT: impl @empty_struct_type.as.I.impl: %.loc4_7.2 as %I.ref.loc4 { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%I.impl_witness // CHECK:STDOUT: } @@ -337,12 +337,12 @@ interface I { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table [concrete] // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %G.type.ccd: type = fn_type @G.loc7 [concrete] -// CHECK:STDOUT: %G.600: %G.type.ccd = struct_value () [concrete] +// CHECK:STDOUT: %I.G.type: type = fn_type @I.G [concrete] +// CHECK:STDOUT: %I.G: %I.G.type = struct_value () [concrete] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] -// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%G.decl [concrete] -// CHECK:STDOUT: %G.type.d6f: type = fn_type @G.loc10 [concrete] -// CHECK:STDOUT: %G.d07: %G.type.d6f = struct_value () [concrete] +// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%I.G.decl [concrete] +// CHECK:STDOUT: %empty_struct_type.as.I.impl.G.type: type = fn_type @empty_struct_type.as.I.impl.G [concrete] +// CHECK:STDOUT: %empty_struct_type.as.I.impl.G: %empty_struct_type.as.I.impl.G.type = struct_value () [concrete] // CHECK:STDOUT: %I.facet: %I.type = facet_value %empty_struct_type, (%I.impl_witness) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -360,15 +360,15 @@ interface I { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl.loc3: type = interface_decl @I [concrete = constants.%I.type] {} {} -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @empty_struct_type.as.I.impl [concrete] {} { // CHECK:STDOUT: %.loc4_7.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc4_7.2: type = converted %.loc4_7.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %I.ref.loc4: type = name_ref I, file.%I.decl.loc3 [concrete = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (@I.impl.%G.decl), @I.impl [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (@empty_struct_type.as.I.impl.%empty_struct_type.as.I.impl.G.decl), @empty_struct_type.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness] // CHECK:STDOUT: %I.decl.loc6: type = interface_decl @I [concrete = constants.%I.type] {} {} -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @empty_struct_type.as.I.impl [concrete] {} { // CHECK:STDOUT: %.loc9_7.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc9_7.2: type = converted %.loc9_7.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %I.ref.loc9: type = name_ref I, file.%I.decl.loc3 [concrete = constants.%I.type] @@ -377,35 +377,35 @@ interface I { // CHECK:STDOUT: // CHECK:STDOUT: interface @I { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %G.decl: %G.type.ccd = fn_decl @G.loc7 [concrete = constants.%G.600] {} {} -// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %G.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %I.G.decl: %I.G.type = fn_decl @I.G [concrete = constants.%I.G] {} {} +// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %I.G.decl [concrete = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .G = %assoc0 -// CHECK:STDOUT: witness = (%G.decl) +// CHECK:STDOUT: witness = (%I.G.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: %.loc4_7.2 as %I.ref.loc4 { -// CHECK:STDOUT: %G.decl: %G.type.d6f = fn_decl @G.loc10 [concrete = constants.%G.d07] {} {} +// CHECK:STDOUT: impl @empty_struct_type.as.I.impl: %.loc4_7.2 as %I.ref.loc4 { +// CHECK:STDOUT: %empty_struct_type.as.I.impl.G.decl: %empty_struct_type.as.I.impl.G.type = fn_decl @empty_struct_type.as.I.impl.G [concrete = constants.%empty_struct_type.as.I.impl.G] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .G = %empty_struct_type.as.I.impl.G.decl // CHECK:STDOUT: witness = file.%I.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @G.loc7(@I.%Self: %I.type) { +// CHECK:STDOUT: generic fn @I.G(@I.%Self: %I.type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G.loc10() { +// CHECK:STDOUT: fn @empty_struct_type.as.I.impl.G() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @G.loc7(constants.%Self) {} +// CHECK:STDOUT: specific @I.G(constants.%Self) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @G.loc7(constants.%I.facet) {} +// CHECK:STDOUT: specific @I.G(constants.%I.facet) {} // CHECK:STDOUT: // CHECK:STDOUT: --- combine.carbon // CHECK:STDOUT: @@ -415,13 +415,13 @@ interface I { // CHECK:STDOUT: %BitAndWith.type.f2e: type = generic_interface_type @BitAndWith [concrete] // CHECK:STDOUT: %BitAndWith.generic: %BitAndWith.type.f2e = struct_value () [concrete] // CHECK:STDOUT: %BitAndWith.type.e8c: type = facet_type <@BitAndWith, @BitAndWith(type)> [concrete] -// CHECK:STDOUT: %Op.type.9a3: type = fn_type @Op.1, @BitAndWith(type) [concrete] +// CHECK:STDOUT: %BitAndWith.Op.type.9a3: type = fn_type @BitAndWith.Op, @BitAndWith(type) [concrete] // CHECK:STDOUT: %BitAndWith.impl_witness: = impl_witness imports.%BitAndWith.impl_witness_table [concrete] // CHECK:STDOUT: %BitAndWith.facet: %BitAndWith.type.e8c = facet_value type, (%BitAndWith.impl_witness) [concrete] -// CHECK:STDOUT: %.2af: type = fn_type_with_self_type %Op.type.9a3, %BitAndWith.facet [concrete] -// CHECK:STDOUT: %Op.type.1cc: type = fn_type @Op.2 [concrete] -// CHECK:STDOUT: %Op.ff4: %Op.type.1cc = struct_value () [concrete] -// CHECK:STDOUT: %Op.bound: = bound_method %I.type, %Op.ff4 [concrete] +// CHECK:STDOUT: %.2af: type = fn_type_with_self_type %BitAndWith.Op.type.9a3, %BitAndWith.facet [concrete] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.type: type = fn_type @type.as.BitAndWith.impl.Op [concrete] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op: %type.as.BitAndWith.impl.Op.type = struct_value () [concrete] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.bound: = bound_method %I.type, %type.as.BitAndWith.impl.Op [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table [concrete] // CHECK:STDOUT: %Self.826: %I.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: } @@ -433,8 +433,8 @@ interface I { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.BitAndWith: %BitAndWith.type.f2e = import_ref Core//prelude, BitAndWith, loaded [concrete = constants.%BitAndWith.generic] -// CHECK:STDOUT: %Core.import_ref.012: %Op.type.1cc = import_ref Core//prelude, loc13_42, loaded [concrete = constants.%Op.ff4] -// CHECK:STDOUT: %BitAndWith.impl_witness_table = impl_witness_table (%Core.import_ref.012), @BitAndWith.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.012: %type.as.BitAndWith.impl.Op.type = import_ref Core//prelude, loc13_42, loaded [concrete = constants.%type.as.BitAndWith.impl.Op] +// CHECK:STDOUT: %BitAndWith.impl_witness_table = impl_witness_table (%Core.import_ref.012), @type.as.BitAndWith.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -444,30 +444,30 @@ interface I { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl.loc3: type = interface_decl @I [concrete = constants.%I.type] {} {} -// CHECK:STDOUT: %.loc4_14.1: type = value_of_initializer @I.impl.%type.and.loc4 [concrete = constants.%I.type] -// CHECK:STDOUT: %.loc4_14.2: type = converted @I.impl.%type.and.loc4, %.loc4_14.1 [concrete = constants.%I.type] -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: %.loc4_14.1: type = value_of_initializer @empty_struct_type.as.I.impl.%type.as.BitAndWith.impl.Op.call.loc4 [concrete = constants.%I.type] +// CHECK:STDOUT: %.loc4_14.2: type = converted @empty_struct_type.as.I.impl.%type.as.BitAndWith.impl.Op.call.loc4, %.loc4_14.1 [concrete = constants.%I.type] +// CHECK:STDOUT: impl_decl @empty_struct_type.as.I.impl [concrete] {} { // CHECK:STDOUT: %.loc4_7.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc4_7.2: type = converted %.loc4_7.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %I.ref.loc4_12: type = name_ref I, file.%I.decl.loc3 [concrete = constants.%I.type] // CHECK:STDOUT: %I.ref.loc4_16: type = name_ref I, file.%I.decl.loc3 [concrete = constants.%I.type] -// CHECK:STDOUT: %impl.elem0.loc4: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%Op.ff4] -// CHECK:STDOUT: %bound_method.loc4: = bound_method %I.ref.loc4_12, %impl.elem0.loc4 [concrete = constants.%Op.bound] -// CHECK:STDOUT: %type.and.loc4: init type = call %bound_method.loc4(%I.ref.loc4_12, %I.ref.loc4_16) [concrete = constants.%I.type] +// CHECK:STDOUT: %impl.elem0.loc4: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%type.as.BitAndWith.impl.Op] +// CHECK:STDOUT: %bound_method.loc4: = bound_method %I.ref.loc4_12, %impl.elem0.loc4 [concrete = constants.%type.as.BitAndWith.impl.Op.bound] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.call.loc4: init type = call %bound_method.loc4(%I.ref.loc4_12, %I.ref.loc4_16) [concrete = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @I.impl [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @empty_struct_type.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness] // CHECK:STDOUT: %I.decl.loc6: type = interface_decl @I [concrete = constants.%I.type] {} {} -// CHECK:STDOUT: %.loc7_14.1: type = value_of_initializer @I.impl.%type.and.loc7 [concrete = constants.%I.type] -// CHECK:STDOUT: %.loc7_14.2: type = converted @I.impl.%type.and.loc7, %.loc7_14.1 [concrete = constants.%I.type] -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: %.loc7_14.1: type = value_of_initializer @empty_struct_type.as.I.impl.%type.as.BitAndWith.impl.Op.call.loc7 [concrete = constants.%I.type] +// CHECK:STDOUT: %.loc7_14.2: type = converted @empty_struct_type.as.I.impl.%type.as.BitAndWith.impl.Op.call.loc7, %.loc7_14.1 [concrete = constants.%I.type] +// CHECK:STDOUT: impl_decl @empty_struct_type.as.I.impl [concrete] {} { // CHECK:STDOUT: %.loc7_7.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc7_7.2: type = converted %.loc7_7.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %I.ref.loc7_12: type = name_ref I, file.%I.decl.loc3 [concrete = constants.%I.type] // CHECK:STDOUT: %I.ref.loc7_16: type = name_ref I, file.%I.decl.loc3 [concrete = constants.%I.type] -// CHECK:STDOUT: %impl.elem0.loc7: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%Op.ff4] -// CHECK:STDOUT: %bound_method.loc7: = bound_method %I.ref.loc7_12, %impl.elem0.loc7 [concrete = constants.%Op.bound] -// CHECK:STDOUT: %type.and.loc7: init type = call %bound_method.loc7(%I.ref.loc7_12, %I.ref.loc7_16) [concrete = constants.%I.type] +// CHECK:STDOUT: %impl.elem0.loc7: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%type.as.BitAndWith.impl.Op] +// CHECK:STDOUT: %bound_method.loc7: = bound_method %I.ref.loc7_12, %impl.elem0.loc7 [concrete = constants.%type.as.BitAndWith.impl.Op.bound] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.call.loc7: init type = call %bound_method.loc7(%I.ref.loc7_12, %I.ref.loc7_16) [concrete = constants.%I.type] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -479,7 +479,7 @@ interface I { // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: %.loc4_7.2 as file.%.loc4_14.2 { +// CHECK:STDOUT: impl @empty_struct_type.as.I.impl: %.loc4_7.2 as file.%.loc4_14.2 { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%I.impl_witness // CHECK:STDOUT: } @@ -516,38 +516,38 @@ interface I { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @empty_struct_type.as.I.impl [concrete] {} { // CHECK:STDOUT: %.loc6_7.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc6_7.2: type = converted %.loc6_7.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %I.ref.loc6: type = name_ref I, file.%I.decl [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self.1: %I.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref.loc6: %I.type = name_ref .Self, %.Self.1 [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.2: %I.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.ref.loc6: %I.type = name_ref .Self, %.Self.2 [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.ref.loc6: %I.assoc_type = name_ref T, @T.%assoc0 [concrete = constants.%assoc0] // CHECK:STDOUT: %.Self.as_type.loc6: type = facet_access_type %.Self.ref.loc6 [symbolic_self = constants.%.Self.as_type] // CHECK:STDOUT: %.loc6_20: type = converted %.Self.ref.loc6, %.Self.as_type.loc6 [symbolic_self = constants.%.Self.as_type] // CHECK:STDOUT: %impl.elem0.loc6: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] // CHECK:STDOUT: %.loc6_26.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc6_26.2: type = converted %.loc6_26.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc6_14: type = where_expr %.Self.1 [concrete = constants.%I_where.type] { +// CHECK:STDOUT: %.loc6_14: type = where_expr %.Self.2 [concrete = constants.%I_where.type] { // CHECK:STDOUT: requirement_rewrite %impl.elem0.loc6, %.loc6_26.2 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @I.impl [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @empty_struct_type.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness] // CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @empty_struct_type.as.I.impl [concrete] {} { // CHECK:STDOUT: %.loc8_7.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc8_7.2: type = converted %.loc8_7.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %I.ref.loc8: type = name_ref I, file.%I.decl [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self.2: %I.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref.loc8: %I.type = name_ref .Self, %.Self.2 [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.1: %I.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.ref.loc8: %I.type = name_ref .Self, %.Self.1 [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.ref.loc8: %I.assoc_type = name_ref T, @T.%assoc0 [concrete = constants.%assoc0] // CHECK:STDOUT: %.Self.as_type.loc8: type = facet_access_type %.Self.ref.loc8 [symbolic_self = constants.%.Self.as_type] // CHECK:STDOUT: %.loc8_20: type = converted %.Self.ref.loc8, %.Self.as_type.loc8 [symbolic_self = constants.%.Self.as_type] // CHECK:STDOUT: %impl.elem0.loc8: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] // CHECK:STDOUT: %.loc8_26.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc8_26.2: type = converted %.loc8_26.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc8_14: type = where_expr %.Self.2 [concrete = constants.%I_where.type] { +// CHECK:STDOUT: %.loc8_14: type = where_expr %.Self.1 [concrete = constants.%I_where.type] { // CHECK:STDOUT: requirement_rewrite %impl.elem0.loc8, %.loc8_26.2 // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -569,7 +569,7 @@ interface I { // CHECK:STDOUT: assoc_const T:! type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: %.loc6_7.2 as %.loc6_14 { +// CHECK:STDOUT: impl @empty_struct_type.as.I.impl: %.loc6_7.2 as %.loc6_14 { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%I.impl_witness // CHECK:STDOUT: } @@ -618,22 +618,22 @@ interface I { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.I.impl [concrete] {} { // CHECK:STDOUT: %C.ref.loc7: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %I.ref.loc7: type = name_ref I, file.%I.decl [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self.1: %I.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref.loc7: %I.type = name_ref .Self, %.Self.1 [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.2: %I.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.ref.loc7: %I.type = name_ref .Self, %.Self.2 [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.ref.loc7: %I.assoc_type = name_ref T, @T.%assoc0 [concrete = constants.%assoc0] // CHECK:STDOUT: %.Self.as_type.loc7: type = facet_access_type %.Self.ref.loc7 [symbolic_self = constants.%.Self.as_type] // CHECK:STDOUT: %.loc7_19: type = converted %.Self.ref.loc7, %.Self.as_type.loc7 [symbolic_self = constants.%.Self.as_type] // CHECK:STDOUT: %impl.elem0.loc7: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] // CHECK:STDOUT: %.loc7_25.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc7_25.2: type = converted %.loc7_25.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc7_13: type = where_expr %.Self.1 [concrete = constants.%I_where.type] { +// CHECK:STDOUT: %.loc7_13: type = where_expr %.Self.2 [concrete = constants.%I_where.type] { // CHECK:STDOUT: requirement_rewrite %impl.elem0.loc7, %.loc7_25.2 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @I.impl [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @C.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness] // CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: name_binding_decl { @@ -650,18 +650,18 @@ interface I { // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_19: %empty_tuple.type = converted @__global_init.%.loc9, %empty_tuple [concrete = constants.%empty_tuple] // CHECK:STDOUT: %x: %empty_tuple.type = bind_name x, %.loc9_19 -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.I.impl [concrete] {} { // CHECK:STDOUT: %C.ref.loc11: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %I.ref.loc11: type = name_ref I, file.%I.decl [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self.2: %I.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref.loc11: %I.type = name_ref .Self, %.Self.2 [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.1: %I.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.ref.loc11: %I.type = name_ref .Self, %.Self.1 [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.ref.loc11: %I.assoc_type = name_ref T, @T.%assoc0 [concrete = constants.%assoc0] // CHECK:STDOUT: %.Self.as_type.loc11: type = facet_access_type %.Self.ref.loc11 [symbolic_self = constants.%.Self.as_type] // CHECK:STDOUT: %.loc11_19: type = converted %.Self.ref.loc11, %.Self.as_type.loc11 [symbolic_self = constants.%.Self.as_type] // CHECK:STDOUT: %impl.elem0.loc11: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] // CHECK:STDOUT: %.loc11_25.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc11_25.2: type = converted %.loc11_25.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc11_13: type = where_expr %.Self.2 [concrete = constants.%I_where.type] { +// CHECK:STDOUT: %.loc11_13: type = where_expr %.Self.1 [concrete = constants.%I_where.type] { // CHECK:STDOUT: requirement_rewrite %impl.elem0.loc11, %.loc11_25.2 // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -683,7 +683,7 @@ interface I { // CHECK:STDOUT: assoc_const T:! type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: %C.ref.loc7 as %.loc7_13 { +// CHECK:STDOUT: impl @C.as.I.impl: %C.ref.loc7 as %.loc7_13 { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%I.impl_witness // CHECK:STDOUT: } @@ -749,22 +749,22 @@ interface I { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.I.impl [concrete] {} { // CHECK:STDOUT: %C.ref.loc7: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %I.ref.loc7: type = name_ref I, file.%I.decl [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self.1: %I.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref.loc7: %I.type = name_ref .Self, %.Self.1 [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.2: %I.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.ref.loc7: %I.type = name_ref .Self, %.Self.2 [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.ref.loc7: %I.assoc_type = name_ref T, @T.%assoc0 [concrete = constants.%assoc0] // CHECK:STDOUT: %.Self.as_type.loc7: type = facet_access_type %.Self.ref.loc7 [symbolic_self = constants.%.Self.as_type] // CHECK:STDOUT: %.loc7_19: type = converted %.Self.ref.loc7, %.Self.as_type.loc7 [symbolic_self = constants.%.Self.as_type] // CHECK:STDOUT: %impl.elem0.loc7: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] // CHECK:STDOUT: %.loc7_25.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc7_25.2: type = converted %.loc7_25.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc7_13: type = where_expr %.Self.1 [concrete = constants.%I_where.type] { +// CHECK:STDOUT: %.loc7_13: type = where_expr %.Self.2 [concrete = constants.%I_where.type] { // CHECK:STDOUT: requirement_rewrite %impl.elem0.loc7, %.loc7_25.2 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @I.impl [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @C.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness] // CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: name_binding_decl { @@ -783,18 +783,18 @@ interface I { // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_22: %empty_tuple.type = converted @__global_init.%.loc9, %empty_tuple [concrete = constants.%empty_tuple] // CHECK:STDOUT: %x: %empty_tuple.type = bind_name x, %.loc9_22 -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.I.impl [concrete] {} { // CHECK:STDOUT: %C.ref.loc11: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %I.ref.loc11: type = name_ref I, file.%I.decl [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self.2: %I.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref.loc11: %I.type = name_ref .Self, %.Self.2 [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.1: %I.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.ref.loc11: %I.type = name_ref .Self, %.Self.1 [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.ref.loc11: %I.assoc_type = name_ref T, @T.%assoc0 [concrete = constants.%assoc0] // CHECK:STDOUT: %.Self.as_type.loc11: type = facet_access_type %.Self.ref.loc11 [symbolic_self = constants.%.Self.as_type] // CHECK:STDOUT: %.loc11_19: type = converted %.Self.ref.loc11, %.Self.as_type.loc11 [symbolic_self = constants.%.Self.as_type] // CHECK:STDOUT: %impl.elem0.loc11: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] // CHECK:STDOUT: %.loc11_25.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc11_25.2: type = converted %.loc11_25.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc11_13: type = where_expr %.Self.2 [concrete = constants.%I_where.type] { +// CHECK:STDOUT: %.loc11_13: type = where_expr %.Self.1 [concrete = constants.%I_where.type] { // CHECK:STDOUT: requirement_rewrite %impl.elem0.loc11, %.loc11_25.2 // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -816,7 +816,7 @@ interface I { // CHECK:STDOUT: assoc_const T:! type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: %C.ref.loc7 as %.loc7_13 { +// CHECK:STDOUT: impl @C.as.I.impl: %C.ref.loc7 as %.loc7_13 { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%I.impl_witness // CHECK:STDOUT: } @@ -874,11 +874,11 @@ interface I { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.I.impl [concrete] {} { // CHECK:STDOUT: %C.ref.loc7: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %I.ref.loc7: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @I.impl [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @C.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %x.patt: = binding_pattern x [concrete] @@ -894,7 +894,7 @@ interface I { // CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%I.impl_witness, element0 [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: %x: = bind_name x, [concrete = ] -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.I.impl [concrete] {} { // CHECK:STDOUT: %C.ref.loc22: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %I.ref.loc22: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } @@ -916,7 +916,7 @@ interface I { // CHECK:STDOUT: assoc_const T:! type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: %C.ref.loc7 as %I.ref.loc7 { +// CHECK:STDOUT: impl @C.as.I.impl: %C.ref.loc7 as %I.ref.loc7 { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%I.impl_witness // CHECK:STDOUT: } @@ -970,26 +970,26 @@ interface I { // CHECK:STDOUT: %I.decl.loc3: type = interface_decl @I [concrete = constants.%I.type] {} {} // CHECK:STDOUT: %C.decl.loc4: type = class_decl @C [concrete = constants.%C] {} {} // CHECK:STDOUT: %D.decl: type = class_decl @D [concrete = constants.%D] {} {} -// CHECK:STDOUT: impl_decl @impl [concrete] {} { +// CHECK:STDOUT: impl_decl @D.as..impl [concrete] {} { // CHECK:STDOUT: %D.ref.loc13: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %I.ref.loc13: type = name_ref I, file.%I.decl.loc3 [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self.1: %I.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref.loc13: %I.type = name_ref .Self, %.Self.1 [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.2: %I.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.ref.loc13: %I.type = name_ref .Self, %.Self.2 [symbolic_self = constants.%.Self] // CHECK:STDOUT: %C.ref.loc13: type = name_ref C, file.%C.decl.loc4 [concrete = constants.%C] -// CHECK:STDOUT: %.loc13: type = where_expr %.Self.1 [concrete = ] { +// CHECK:STDOUT: %.loc13: type = where_expr %.Self.2 [concrete = ] { // CHECK:STDOUT: requirement_rewrite , // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %I.decl.loc15: type = interface_decl @I [concrete = constants.%I.type] {} {} // CHECK:STDOUT: %C.decl.loc16: type = class_decl @C [concrete = constants.%C] {} {} -// CHECK:STDOUT: impl_decl @impl [concrete] {} { +// CHECK:STDOUT: impl_decl @D.as..impl [concrete] {} { // CHECK:STDOUT: %D.ref.loc21: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %I.ref.loc21: type = name_ref I, file.%I.decl.loc3 [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self.2: %I.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref.loc21: %I.type = name_ref .Self, %.Self.2 [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.1: %I.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.ref.loc21: %I.type = name_ref .Self, %.Self.1 [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.ref: = name_ref T, [concrete = ] // CHECK:STDOUT: %C.ref.loc21: type = name_ref C, file.%C.decl.loc4 [concrete = constants.%C] -// CHECK:STDOUT: %.loc21: type = where_expr %.Self.2 [concrete = ] { +// CHECK:STDOUT: %.loc21: type = where_expr %.Self.1 [concrete = ] { // CHECK:STDOUT: requirement_rewrite %T.ref, // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -1004,7 +1004,7 @@ interface I { // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl: %D.ref.loc13 as %.loc13 { +// CHECK:STDOUT: impl @D.as..impl: %D.ref.loc13 as %.loc13 { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = // CHECK:STDOUT: } @@ -1077,41 +1077,41 @@ interface I { // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl.loc6: type = class_decl @C [concrete = constants.%C] {} {} // CHECK:STDOUT: %D.decl: type = class_decl @D [concrete = constants.%D] {} {} -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @D.as.I.impl [concrete] {} { // CHECK:STDOUT: %D.ref.loc8: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %I.ref.loc8: %I.type.dac = name_ref I, file.%I.decl [concrete = constants.%I.generic] // CHECK:STDOUT: %C.ref.loc8_13: type = name_ref C, file.%C.decl.loc6 [concrete = constants.%C] // CHECK:STDOUT: %I.type.loc8: type = facet_type <@I, @I(constants.%C)> [concrete = constants.%I.type.e7a] -// CHECK:STDOUT: %.Self.1: %I.type.e7a = bind_symbolic_name .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref.loc8: %I.type.e7a = name_ref .Self, %.Self.1 [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.2: %I.type.e7a = bind_symbolic_name .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.ref.loc8: %I.type.e7a = name_ref .Self, %.Self.2 [symbolic_self = constants.%.Self] // CHECK:STDOUT: %.loc8_22.1: %I.assoc_type.b3c = specific_constant @T.%assoc0, @I(constants.%C) [concrete = constants.%assoc0.3e4] // CHECK:STDOUT: %T.ref.loc8: %I.assoc_type.b3c = name_ref T, %.loc8_22.1 [concrete = constants.%assoc0.3e4] // CHECK:STDOUT: %.Self.as_type.loc8: type = facet_access_type %.Self.ref.loc8 [symbolic_self = constants.%.Self.as_type] // CHECK:STDOUT: %.loc8_22.2: type = converted %.Self.ref.loc8, %.Self.as_type.loc8 [symbolic_self = constants.%.Self.as_type] // CHECK:STDOUT: %impl.elem0.loc8: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] // CHECK:STDOUT: %C.ref.loc8_27: type = name_ref C, file.%C.decl.loc6 [concrete = constants.%C] -// CHECK:STDOUT: %.loc8_16: type = where_expr %.Self.1 [concrete = constants.%I_where.type] { +// CHECK:STDOUT: %.loc8_16: type = where_expr %.Self.2 [concrete = constants.%I_where.type] { // CHECK:STDOUT: requirement_rewrite %impl.elem0.loc8, %C.ref.loc8_27 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @I.impl [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @D.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness] // CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%C [concrete = constants.%C] // CHECK:STDOUT: %C.decl.loc10: type = class_decl @C [concrete = constants.%C] {} {} -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @D.as.I.impl [concrete] {} { // CHECK:STDOUT: %D.ref.loc11: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %I.ref.loc11: %I.type.dac = name_ref I, file.%I.decl [concrete = constants.%I.generic] // CHECK:STDOUT: %C.ref.loc11_13: type = name_ref C, file.%C.decl.loc6 [concrete = constants.%C] // CHECK:STDOUT: %I.type.loc11: type = facet_type <@I, @I(constants.%C)> [concrete = constants.%I.type.e7a] -// CHECK:STDOUT: %.Self.2: %I.type.e7a = bind_symbolic_name .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref.loc11: %I.type.e7a = name_ref .Self, %.Self.2 [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.1: %I.type.e7a = bind_symbolic_name .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.ref.loc11: %I.type.e7a = name_ref .Self, %.Self.1 [symbolic_self = constants.%.Self] // CHECK:STDOUT: %.loc11_22.1: %I.assoc_type.b3c = specific_constant @T.%assoc0, @I(constants.%C) [concrete = constants.%assoc0.3e4] // CHECK:STDOUT: %T.ref.loc11: %I.assoc_type.b3c = name_ref T, %.loc11_22.1 [concrete = constants.%assoc0.3e4] // CHECK:STDOUT: %.Self.as_type.loc11: type = facet_access_type %.Self.ref.loc11 [symbolic_self = constants.%.Self.as_type] // CHECK:STDOUT: %.loc11_22.2: type = converted %.Self.ref.loc11, %.Self.as_type.loc11 [symbolic_self = constants.%.Self.as_type] // CHECK:STDOUT: %impl.elem0.loc11: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] // CHECK:STDOUT: %C.ref.loc11_27: type = name_ref C, file.%C.decl.loc6 [concrete = constants.%C] -// CHECK:STDOUT: %.loc11_16: type = where_expr %.Self.2 [concrete = constants.%I_where.type] { +// CHECK:STDOUT: %.loc11_16: type = where_expr %.Self.1 [concrete = constants.%I_where.type] { // CHECK:STDOUT: requirement_rewrite %impl.elem0.loc11, %C.ref.loc11_27 // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -1143,7 +1143,7 @@ interface I { // CHECK:STDOUT: assoc_const T:! type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: %D.ref.loc8 as %.loc8_16 { +// CHECK:STDOUT: impl @D.as.I.impl: %D.ref.loc8 as %.loc8_16 { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%I.impl_witness // CHECK:STDOUT: } @@ -1223,11 +1223,11 @@ interface I { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl.loc3: type = interface_decl @I [concrete = constants.%I.type] {} {} // CHECK:STDOUT: %D.decl: type = class_decl @D [concrete = constants.%D] {} {} -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @D.as.I.impl [concrete] {} { // CHECK:STDOUT: %D.ref.loc5: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %I.ref.loc5: type = name_ref I, file.%I.decl.loc3 [concrete = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @I.impl [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @D.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness] // CHECK:STDOUT: %C.decl.loc6: %C.type = class_decl @C [concrete = constants.%C.generic] { // CHECK:STDOUT: %T.patt: %pattern_type.2b5 = symbolic_binding_pattern T, 0 [concrete] @@ -1250,7 +1250,7 @@ interface I { // CHECK:STDOUT: %x.loc8: %C.8b1 = bind_name x, %x.param.loc8 // CHECK:STDOUT: } // CHECK:STDOUT: %I.decl.loc10: type = interface_decl @I [concrete = constants.%I.type] {} {} -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @D.as.I.impl [concrete] {} { // CHECK:STDOUT: %D.ref.loc11: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %I.ref.loc11: type = name_ref I, file.%I.decl.loc3 [concrete = constants.%I.type] // CHECK:STDOUT: } @@ -1284,7 +1284,7 @@ interface I { // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: %D.ref.loc5 as %I.ref.loc5 { +// CHECK:STDOUT: impl @D.as.I.impl: %D.ref.loc5 as %I.ref.loc5 { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%I.impl_witness // CHECK:STDOUT: } @@ -1337,13 +1337,13 @@ interface I { // CHECK:STDOUT: %BitAndWith.type.f2e: type = generic_interface_type @BitAndWith [concrete] // CHECK:STDOUT: %BitAndWith.generic: %BitAndWith.type.f2e = struct_value () [concrete] // CHECK:STDOUT: %BitAndWith.type.e8c: type = facet_type <@BitAndWith, @BitAndWith(type)> [concrete] -// CHECK:STDOUT: %Op.type.9a3: type = fn_type @Op.1, @BitAndWith(type) [concrete] +// CHECK:STDOUT: %BitAndWith.Op.type.9a3: type = fn_type @BitAndWith.Op, @BitAndWith(type) [concrete] // CHECK:STDOUT: %BitAndWith.impl_witness: = impl_witness imports.%BitAndWith.impl_witness_table [concrete] // CHECK:STDOUT: %BitAndWith.facet: %BitAndWith.type.e8c = facet_value type, (%BitAndWith.impl_witness) [concrete] -// CHECK:STDOUT: %.2af: type = fn_type_with_self_type %Op.type.9a3, %BitAndWith.facet [concrete] -// CHECK:STDOUT: %Op.type.1cc: type = fn_type @Op.2 [concrete] -// CHECK:STDOUT: %Op.ff4: %Op.type.1cc = struct_value () [concrete] -// CHECK:STDOUT: %Op.bound: = bound_method %I.type, %Op.ff4 [concrete] +// CHECK:STDOUT: %.2af: type = fn_type_with_self_type %BitAndWith.Op.type.9a3, %BitAndWith.facet [concrete] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.type: type = fn_type @type.as.BitAndWith.impl.Op [concrete] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op: %type.as.BitAndWith.impl.Op.type = struct_value () [concrete] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.bound: = bound_method %I.type, %type.as.BitAndWith.impl.Op [concrete] // CHECK:STDOUT: %facet_type: type = facet_type <@I & @J> [concrete] // CHECK:STDOUT: %Self.826: %I.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Self.ccd: %J.type = bind_symbolic_name Self, 0 [symbolic] @@ -1356,8 +1356,8 @@ interface I { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.BitAndWith: %BitAndWith.type.f2e = import_ref Core//prelude, BitAndWith, loaded [concrete = constants.%BitAndWith.generic] -// CHECK:STDOUT: %Core.import_ref.012: %Op.type.1cc = import_ref Core//prelude, loc13_42, loaded [concrete = constants.%Op.ff4] -// CHECK:STDOUT: %BitAndWith.impl_witness_table = impl_witness_table (%Core.import_ref.012), @BitAndWith.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.012: %type.as.BitAndWith.impl.Op.type = import_ref Core//prelude, loc13_42, loaded [concrete = constants.%type.as.BitAndWith.impl.Op] +// CHECK:STDOUT: %BitAndWith.impl_witness_table = impl_witness_table (%Core.import_ref.012), @type.as.BitAndWith.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1369,16 +1369,16 @@ interface I { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl.loc3: type = interface_decl @I [concrete = constants.%I.type] {} {} // CHECK:STDOUT: %J.decl.loc4: type = interface_decl @J [concrete = constants.%J.type] {} {} -// CHECK:STDOUT: %.loc10_14.1: type = value_of_initializer @impl.%type.and [concrete = constants.%facet_type] -// CHECK:STDOUT: %.loc10_14.2: type = converted @impl.%type.and, %.loc10_14.1 [concrete = constants.%facet_type] -// CHECK:STDOUT: impl_decl @impl [concrete] {} { +// CHECK:STDOUT: %.loc10_14.1: type = value_of_initializer @empty_struct_type.as..impl.%type.as.BitAndWith.impl.Op.call [concrete = constants.%facet_type] +// CHECK:STDOUT: %.loc10_14.2: type = converted @empty_struct_type.as..impl.%type.as.BitAndWith.impl.Op.call, %.loc10_14.1 [concrete = constants.%facet_type] +// CHECK:STDOUT: impl_decl @empty_struct_type.as..impl [concrete] {} { // CHECK:STDOUT: %.loc10_7.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc10_7.2: type = converted %.loc10_7.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl.loc3 [concrete = constants.%I.type] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl.loc4 [concrete = constants.%J.type] -// CHECK:STDOUT: %impl.elem0: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%Op.ff4] -// CHECK:STDOUT: %bound_method: = bound_method %I.ref, %impl.elem0 [concrete = constants.%Op.bound] -// CHECK:STDOUT: %type.and: init type = call %bound_method(%I.ref, %J.ref) [concrete = constants.%facet_type] +// CHECK:STDOUT: %impl.elem0: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%type.as.BitAndWith.impl.Op] +// CHECK:STDOUT: %bound_method: = bound_method %I.ref, %impl.elem0 [concrete = constants.%type.as.BitAndWith.impl.Op.bound] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.call: init type = call %bound_method(%I.ref, %J.ref) [concrete = constants.%facet_type] // CHECK:STDOUT: } // CHECK:STDOUT: %I.decl.loc12: type = interface_decl @I [concrete = constants.%I.type] {} {} // CHECK:STDOUT: %J.decl.loc13: type = interface_decl @J [concrete = constants.%J.type] {} {} @@ -1400,7 +1400,7 @@ interface I { // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl: %.loc10_7.2 as file.%.loc10_14.2; +// CHECK:STDOUT: impl @empty_struct_type.as..impl: %.loc10_7.2 as file.%.loc10_14.2; // CHECK:STDOUT: // CHECK:STDOUT: --- fail_never_assigned_associated_const.carbon // CHECK:STDOUT: @@ -1439,36 +1439,36 @@ interface I { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.I.impl [concrete] {} { // CHECK:STDOUT: %C.ref.loc9: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %I.ref.loc9: type = name_ref I, file.%I.decl [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self.1: %I.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref.loc9: %I.type = name_ref .Self, %.Self.1 [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.2: %I.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.ref.loc9: %I.type = name_ref .Self, %.Self.2 [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.ref.loc9: %I.assoc_type = name_ref T, @T.%assoc0 [concrete = constants.%assoc0] // CHECK:STDOUT: %.Self.as_type.loc9: type = facet_access_type %.Self.ref.loc9 [symbolic_self = constants.%.Self.as_type] // CHECK:STDOUT: %.loc9_19: type = converted %.Self.ref.loc9, %.Self.as_type.loc9 [symbolic_self = constants.%.Self.as_type] // CHECK:STDOUT: %impl.elem0.loc9: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] // CHECK:STDOUT: %.loc9_25.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc9_25.2: type = converted %.loc9_25.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc9_13: type = where_expr %.Self.1 [concrete = constants.%I_where.type] { +// CHECK:STDOUT: %.loc9_13: type = where_expr %.Self.2 [concrete = constants.%I_where.type] { // CHECK:STDOUT: requirement_rewrite %impl.elem0.loc9, %.loc9_25.2 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant, ), @I.impl [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant, ), @C.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness] // CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.I.impl [concrete] {} { // CHECK:STDOUT: %C.ref.loc18: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %I.ref.loc18: type = name_ref I, file.%I.decl [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self.2: %I.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref.loc18: %I.type = name_ref .Self, %.Self.2 [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.1: %I.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.ref.loc18: %I.type = name_ref .Self, %.Self.1 [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.ref.loc18: %I.assoc_type = name_ref T, @T.%assoc0 [concrete = constants.%assoc0] // CHECK:STDOUT: %.Self.as_type.loc18: type = facet_access_type %.Self.ref.loc18 [symbolic_self = constants.%.Self.as_type] // CHECK:STDOUT: %.loc18_19: type = converted %.Self.ref.loc18, %.Self.as_type.loc18 [symbolic_self = constants.%.Self.as_type] // CHECK:STDOUT: %impl.elem0.loc18: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] // CHECK:STDOUT: %.loc18_25.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc18_25.2: type = converted %.loc18_25.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc18_13: type = where_expr %.Self.2 [concrete = constants.%I_where.type] { +// CHECK:STDOUT: %.loc18_13: type = where_expr %.Self.1 [concrete = constants.%I_where.type] { // CHECK:STDOUT: requirement_rewrite %impl.elem0.loc18, %.loc18_25.2 // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -1498,7 +1498,7 @@ interface I { // CHECK:STDOUT: assoc_const U:! type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: %C.ref.loc9 as %.loc9_13 { +// CHECK:STDOUT: impl @C.as.I.impl: %C.ref.loc9 as %.loc9_13 { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%I.impl_witness // CHECK:STDOUT: } @@ -1589,11 +1589,11 @@ interface I { // CHECK:STDOUT: %u.loc7: @G.%U.as_type.loc7_16.1 (%U.as_type) = bind_name u, %u.param.loc7 // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl.loc9: type = class_decl @C [concrete = constants.%C] {} {} -// CHECK:STDOUT: impl_decl @X.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.X.impl [concrete] {} { // CHECK:STDOUT: %C.ref.loc12: type = name_ref C, file.%C.decl.loc9 [concrete = constants.%C] // CHECK:STDOUT: %X.ref.loc12: type = name_ref X, file.%X.decl.loc3 [concrete = constants.%X.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %X.impl_witness_table = impl_witness_table (), @X.impl [concrete] +// CHECK:STDOUT: %X.impl_witness_table = impl_witness_table (), @C.as.X.impl [concrete] // CHECK:STDOUT: %X.impl_witness: = impl_witness %X.impl_witness_table [concrete = constants.%X.impl_witness] // CHECK:STDOUT: %Y.decl.loc14: type = interface_decl @Y [concrete = constants.%Y.type] {} {} // CHECK:STDOUT: %X.decl.loc16: type = interface_decl @X [concrete = constants.%X.type] {} {} @@ -1628,17 +1628,17 @@ interface I { // CHECK:STDOUT: } // CHECK:STDOUT: %u.loc35: @G.%U.as_type.loc7_16.1 (%U.as_type) = bind_name u, %u.param.loc35 // CHECK:STDOUT: } -// CHECK:STDOUT: impl_decl @Y.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.Y.impl [concrete] {} { // CHECK:STDOUT: %C.ref.loc36: type = name_ref C, file.%C.decl.loc9 [concrete = constants.%C] // CHECK:STDOUT: %Y.ref.loc36: type = name_ref Y, file.%Y.decl.loc14 [concrete = constants.%Y.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %Y.impl_witness_table = impl_witness_table (), @Y.impl [concrete] +// CHECK:STDOUT: %Y.impl_witness_table = impl_witness_table (), @C.as.Y.impl [concrete] // CHECK:STDOUT: %Y.impl_witness: = impl_witness %Y.impl_witness_table [concrete = constants.%Y.impl_witness] -// CHECK:STDOUT: impl_decl @X.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.X.impl [concrete] {} { // CHECK:STDOUT: %C.ref.loc37: type = name_ref C, file.%C.decl.loc9 [concrete = constants.%C] // CHECK:STDOUT: %X.ref.loc37: type = name_ref X, file.%X.decl.loc3 [concrete = constants.%X.type] // CHECK:STDOUT: } -// CHECK:STDOUT: impl_decl @Y.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.Y.impl [concrete] {} { // CHECK:STDOUT: %C.ref.loc38: type = name_ref C, file.%C.decl.loc9 [concrete = constants.%C] // CHECK:STDOUT: %Y.ref.loc38: type = name_ref Y, file.%Y.decl.loc14 [concrete = constants.%Y.type] // CHECK:STDOUT: } @@ -1660,12 +1660,12 @@ interface I { // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @X.impl: %C.ref.loc12 as %X.ref.loc12 { +// CHECK:STDOUT: impl @C.as.X.impl: %C.ref.loc12 as %X.ref.loc12 { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%X.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Y.impl: %C.ref.loc36 as %Y.ref.loc36 { +// CHECK:STDOUT: impl @C.as.Y.impl: %C.ref.loc36 as %Y.ref.loc36 { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%Y.impl_witness // CHECK:STDOUT: } @@ -1753,14 +1753,14 @@ interface I { // CHECK:STDOUT: constants { // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %I.F.type: type = fn_type @I.F [concrete] +// CHECK:STDOUT: %I.F: %I.F.type = struct_value () [concrete] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] -// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%F.decl [concrete] +// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%I.F.decl [concrete] // CHECK:STDOUT: %C: type = class_type @C, @C(%Self) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] -// CHECK:STDOUT: %I.impl_witness: = impl_witness @F.%I.impl_witness_table, @I.impl(%Self) [symbolic] +// CHECK:STDOUT: %I.impl_witness: = impl_witness @I.F.%I.impl_witness_table, @C.as.I.impl(%Self) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -1781,27 +1781,27 @@ interface I { // CHECK:STDOUT: // CHECK:STDOUT: interface @I { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} -// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %I.F.decl: %I.F.type = fn_decl @I.F [concrete = constants.%I.F] {} {} +// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %I.F.decl [concrete = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F = %assoc0 // CHECK:STDOUT: .I = -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%I.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @I.impl(@I.%Self: %I.type) { +// CHECK:STDOUT: generic impl @C.as.I.impl(@I.%Self: %I.type) { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %C: type = class_type @C, @C(%Self) [symbolic = %C (constants.%C)] -// CHECK:STDOUT: %I.impl_witness: = impl_witness @F.%I.impl_witness_table, @I.impl(%Self) [symbolic = %I.impl_witness (constants.%I.impl_witness)] +// CHECK:STDOUT: %I.impl_witness: = impl_witness @I.F.%I.impl_witness_table, @C.as.I.impl(%Self) [symbolic = %I.impl_witness (constants.%I.impl_witness)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: impl: %C.ref.loc11 as %I.ref.loc11 { // CHECK:STDOUT: !members: // CHECK:STDOUT: .F = -// CHECK:STDOUT: witness = @F.%I.impl_witness +// CHECK:STDOUT: witness = @I.F.%I.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1818,33 +1818,33 @@ interface I { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(@I.%Self: %I.type) { +// CHECK:STDOUT: generic fn @I.F(@I.%Self: %I.type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %C: type = class_type @C, @C(%Self) [symbolic = %C (constants.%C)] // CHECK:STDOUT: // CHECK:STDOUT: fn() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %C.decl: type = class_decl @C [symbolic = @F.%C (constants.%C)] {} {} -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { -// CHECK:STDOUT: %C.ref.loc11: type = name_ref C, @F.%C.decl [symbolic = %C (constants.%C)] +// CHECK:STDOUT: %C.decl: type = class_decl @C [symbolic = @I.F.%C (constants.%C)] {} {} +// CHECK:STDOUT: impl_decl @C.as.I.impl [concrete] {} { +// CHECK:STDOUT: %C.ref.loc11: type = name_ref C, @I.F.%C.decl [symbolic = %C (constants.%C)] // CHECK:STDOUT: %I.ref.loc11: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @I.impl [concrete] -// CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table, @I.impl(constants.%Self) [symbolic = @I.impl.%I.impl_witness (constants.%I.impl_witness)] -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { -// CHECK:STDOUT: %C.ref.loc20: type = name_ref C, @F.%C.decl [symbolic = %C (constants.%C)] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @C.as.I.impl [concrete] +// CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table, @C.as.I.impl(constants.%Self) [symbolic = @C.as.I.impl.%I.impl_witness (constants.%I.impl_witness)] +// CHECK:STDOUT: impl_decl @C.as.I.impl [concrete] {} { +// CHECK:STDOUT: %C.ref.loc20: type = name_ref C, @I.F.%C.decl [symbolic = %C (constants.%C)] // CHECK:STDOUT: %I.ref.loc20: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%Self) {} +// CHECK:STDOUT: specific @I.F(constants.%Self) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @C(constants.%Self) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.impl(constants.%Self) { +// CHECK:STDOUT: specific @C.as.I.impl(constants.%Self) { // CHECK:STDOUT: %Self => constants.%Self // CHECK:STDOUT: %C => constants.%C // CHECK:STDOUT: %I.impl_witness => constants.%I.impl_witness @@ -1857,9 +1857,9 @@ interface I { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] // CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%U [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %assoc1: %I.assoc_type = assoc_entity element1, @I.%F.decl [concrete] +// CHECK:STDOUT: %I.F.type: type = fn_type @I.F [concrete] +// CHECK:STDOUT: %I.F: %I.F.type = struct_value () [concrete] +// CHECK:STDOUT: %assoc1: %I.assoc_type = assoc_entity element1, @I.%I.F.decl [concrete] // CHECK:STDOUT: %C: type = class_type @C, @C(%Self) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] @@ -1870,7 +1870,7 @@ interface I { // CHECK:STDOUT: %impl.elem0: type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic_self] // CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0 = %C> [symbolic] // CHECK:STDOUT: %require_complete: = require_complete_type %I_where.type [symbolic] -// CHECK:STDOUT: %I.impl_witness: = impl_witness @F.%I.impl_witness_table, @I.impl(%Self) [symbolic] +// CHECK:STDOUT: %I.impl_witness: = impl_witness @I.F.%I.impl_witness_table, @C.as.I.impl(%Self) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -1894,34 +1894,34 @@ interface I { // CHECK:STDOUT: %U: type = assoc_const_decl @U [concrete] { // CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%U [concrete = constants.%assoc0] // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} -// CHECK:STDOUT: %assoc1: %I.assoc_type = assoc_entity element1, %F.decl [concrete = constants.%assoc1] +// CHECK:STDOUT: %I.F.decl: %I.F.type = fn_decl @I.F [concrete = constants.%I.F] {} {} +// CHECK:STDOUT: %assoc1: %I.assoc_type = assoc_entity element1, %I.F.decl [concrete = constants.%assoc1] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .U = @U.%assoc0 // CHECK:STDOUT: .F = %assoc1 // CHECK:STDOUT: .I = -// CHECK:STDOUT: witness = (%U, %F.decl) +// CHECK:STDOUT: witness = (%U, %I.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic assoc_const @U(@I.%Self: %I.type) { // CHECK:STDOUT: assoc_const U:! type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @I.impl(@I.%Self: %I.type) { +// CHECK:STDOUT: generic impl @C.as.I.impl(@I.%Self: %I.type) { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %C: type = class_type @C, @C(%Self) [symbolic = %C (constants.%C)] // CHECK:STDOUT: %I_where.type: type = facet_type <@I where constants.%impl.elem0 = %C> [symbolic = %I_where.type (constants.%I_where.type)] // CHECK:STDOUT: %require_complete: = require_complete_type %I_where.type [symbolic = %require_complete (constants.%require_complete)] -// CHECK:STDOUT: %I.impl_witness: = impl_witness @F.%I.impl_witness_table, @I.impl(%Self) [symbolic = %I.impl_witness (constants.%I.impl_witness)] +// CHECK:STDOUT: %I.impl_witness: = impl_witness @I.F.%I.impl_witness_table, @C.as.I.impl(%Self) [symbolic = %I.impl_witness (constants.%I.impl_witness)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: impl: %C.ref.loc12_10 as %.loc12_17 { // CHECK:STDOUT: !members: // CHECK:STDOUT: .F = -// CHECK:STDOUT: witness = @F.%I.impl_witness +// CHECK:STDOUT: witness = @I.F.%I.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1938,42 +1938,42 @@ interface I { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(@I.%Self: %I.type) { +// CHECK:STDOUT: generic fn @I.F(@I.%Self: %I.type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %C: type = class_type @C, @C(%Self) [symbolic = %C (constants.%C)] // CHECK:STDOUT: // CHECK:STDOUT: fn() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %C.decl: type = class_decl @C [symbolic = @F.%C (constants.%C)] {} {} -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { -// CHECK:STDOUT: %C.ref.loc12_10: type = name_ref C, @F.%C.decl [symbolic = %C (constants.%C)] +// CHECK:STDOUT: %C.decl: type = class_decl @C [symbolic = @I.F.%C (constants.%C)] {} {} +// CHECK:STDOUT: impl_decl @C.as.I.impl [concrete] {} { +// CHECK:STDOUT: %C.ref.loc12_10: type = name_ref C, @I.F.%C.decl [symbolic = %C (constants.%C)] // CHECK:STDOUT: %I.ref.loc12: type = name_ref I, file.%I.decl [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self.1: %I.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref.loc12: %I.type = name_ref .Self, %.Self.1 [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.2: %I.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.ref.loc12: %I.type = name_ref .Self, %.Self.2 [symbolic_self = constants.%.Self] // CHECK:STDOUT: %U.ref.loc12: %I.assoc_type = name_ref U, @U.%assoc0 [concrete = constants.%assoc0] // CHECK:STDOUT: %.Self.as_type.loc12: type = facet_access_type %.Self.ref.loc12 [symbolic_self = constants.%.Self.as_type] // CHECK:STDOUT: %.loc12_23: type = converted %.Self.ref.loc12, %.Self.as_type.loc12 [symbolic_self = constants.%.Self.as_type] // CHECK:STDOUT: %impl.elem0.loc12: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %C.ref.loc12_28: type = name_ref C, @F.%C.decl [symbolic = %C (constants.%C)] -// CHECK:STDOUT: %.loc12_17: type = where_expr %.Self.1 [symbolic = %I_where.type (constants.%I_where.type)] { +// CHECK:STDOUT: %C.ref.loc12_28: type = name_ref C, @I.F.%C.decl [symbolic = %C (constants.%C)] +// CHECK:STDOUT: %.loc12_17: type = where_expr %.Self.2 [symbolic = %I_where.type (constants.%I_where.type)] { // CHECK:STDOUT: requirement_rewrite %impl.elem0.loc12, %C.ref.loc12_28 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant, ), @I.impl [concrete] -// CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table, @I.impl(constants.%Self) [symbolic = @I.impl.%I.impl_witness (constants.%I.impl_witness)] -// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%C [symbolic = @I.impl.%C (constants.%C)] -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { -// CHECK:STDOUT: %C.ref.loc21_10: type = name_ref C, @F.%C.decl [symbolic = %C (constants.%C)] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant, ), @C.as.I.impl [concrete] +// CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table, @C.as.I.impl(constants.%Self) [symbolic = @C.as.I.impl.%I.impl_witness (constants.%I.impl_witness)] +// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%C [symbolic = @C.as.I.impl.%C (constants.%C)] +// CHECK:STDOUT: impl_decl @C.as.I.impl [concrete] {} { +// CHECK:STDOUT: %C.ref.loc21_10: type = name_ref C, @I.F.%C.decl [symbolic = %C (constants.%C)] // CHECK:STDOUT: %I.ref.loc21: type = name_ref I, file.%I.decl [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self.2: %I.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref.loc21: %I.type = name_ref .Self, %.Self.2 [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.1: %I.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.ref.loc21: %I.type = name_ref .Self, %.Self.1 [symbolic_self = constants.%.Self] // CHECK:STDOUT: %U.ref.loc21: %I.assoc_type = name_ref U, @U.%assoc0 [concrete = constants.%assoc0] // CHECK:STDOUT: %.Self.as_type.loc21: type = facet_access_type %.Self.ref.loc21 [symbolic_self = constants.%.Self.as_type] // CHECK:STDOUT: %.loc21_23: type = converted %.Self.ref.loc21, %.Self.as_type.loc21 [symbolic_self = constants.%.Self.as_type] // CHECK:STDOUT: %impl.elem0.loc21: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %C.ref.loc21_28: type = name_ref C, @F.%C.decl [symbolic = %C (constants.%C)] -// CHECK:STDOUT: %.loc21_17: type = where_expr %.Self.2 [symbolic = %I_where.type (constants.%I_where.type)] { +// CHECK:STDOUT: %C.ref.loc21_28: type = name_ref C, @I.F.%C.decl [symbolic = %C (constants.%C)] +// CHECK:STDOUT: %.loc21_17: type = where_expr %.Self.1 [symbolic = %I_where.type (constants.%I_where.type)] { // CHECK:STDOUT: requirement_rewrite %impl.elem0.loc21, %C.ref.loc21_28 // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -1983,13 +1983,13 @@ interface I { // CHECK:STDOUT: // CHECK:STDOUT: specific @U(constants.%Self) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%Self) {} +// CHECK:STDOUT: specific @I.F(constants.%Self) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @C(constants.%Self) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @U(constants.%I.facet) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.impl(constants.%Self) { +// CHECK:STDOUT: specific @C.as.I.impl(constants.%Self) { // CHECK:STDOUT: %Self => constants.%Self // CHECK:STDOUT: %C => constants.%C // CHECK:STDOUT: %I_where.type => constants.%I_where.type diff --git a/toolchain/check/testdata/impl/generic_redeclaration.carbon b/toolchain/check/testdata/impl/generic_redeclaration.carbon index 0ec9ca6ed185..e7cbbf2ca814 100644 --- a/toolchain/check/testdata/impl/generic_redeclaration.carbon +++ b/toolchain/check/testdata/impl/generic_redeclaration.carbon @@ -134,19 +134,19 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: %T.826: %I.type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.2b5: type = pattern_type %I.type [concrete] // CHECK:STDOUT: %T.as_type.b70: type = facet_access_type %T.826 [symbolic] -// CHECK:STDOUT: %Interface.impl_witness.a14: = impl_witness file.%Interface.impl_witness_table.loc12, @Interface.impl.c3d(%T.826) [symbolic] +// CHECK:STDOUT: %Interface.impl_witness.a14: = impl_witness file.%Interface.impl_witness_table.loc12, @T.as_type.as.Interface.impl.c3d(%T.826) [symbolic] // CHECK:STDOUT: %T.ccd: %J.type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.28e: type = pattern_type %J.type [concrete] // CHECK:STDOUT: %T.as_type.3df: type = facet_access_type %T.ccd [symbolic] -// CHECK:STDOUT: %Interface.impl_witness.608: = impl_witness file.%Interface.impl_witness_table.loc13, @Interface.impl.793(%T.ccd) [symbolic] +// CHECK:STDOUT: %Interface.impl_witness.608: = impl_witness file.%Interface.impl_witness_table.loc13, @T.as_type.as.Interface.impl.793(%T.ccd) [symbolic] // CHECK:STDOUT: %T.09f: %K.type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.4a6: type = pattern_type %K.type [concrete] // CHECK:STDOUT: %T.as_type.037: type = facet_access_type %T.09f [symbolic] -// CHECK:STDOUT: %Interface.impl_witness.b9e: = impl_witness file.%Interface.impl_witness_table.loc14, @Interface.impl.c93(%T.09f) [symbolic] +// CHECK:STDOUT: %Interface.impl_witness.b9e: = impl_witness file.%Interface.impl_witness_table.loc14, @T.as_type.as.Interface.impl.c93(%T.09f) [symbolic] // CHECK:STDOUT: %T.1d2: %L.type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.86b: type = pattern_type %L.type [concrete] // CHECK:STDOUT: %T.as_type.0ed: type = facet_access_type %T.1d2 [symbolic] -// CHECK:STDOUT: %Interface.impl_witness.e9d: = impl_witness file.%Interface.impl_witness_table.loc15, @Interface.impl.9e6(%T.1d2) [symbolic] +// CHECK:STDOUT: %Interface.impl_witness.e9d: = impl_witness file.%Interface.impl_witness_table.loc15, @T.as_type.as.Interface.impl.9e6(%T.1d2) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -171,7 +171,7 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: %J.decl: type = interface_decl @J [concrete = constants.%J.type] {} {} // CHECK:STDOUT: %K.decl: type = interface_decl @K [concrete = constants.%K.type] {} {} // CHECK:STDOUT: %L.decl: type = interface_decl @L [concrete = constants.%L.type] {} {} -// CHECK:STDOUT: impl_decl @Interface.impl.c3d [concrete] { +// CHECK:STDOUT: impl_decl @T.as_type.as.Interface.impl.c3d [concrete] { // CHECK:STDOUT: %T.patt: %pattern_type.2b5 = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc12: %I.type = name_ref T, %T.loc12_14.1 [symbolic = %T.loc12_14.2 (constants.%T.826)] @@ -181,9 +181,9 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: %I.ref.loc12: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: %T.loc12_14.1: %I.type = bind_symbolic_name T, 0 [symbolic = %T.loc12_14.2 (constants.%T.826)] // CHECK:STDOUT: } -// CHECK:STDOUT: %Interface.impl_witness_table.loc12 = impl_witness_table (), @Interface.impl.c3d [concrete] -// CHECK:STDOUT: %Interface.impl_witness.loc12: = impl_witness %Interface.impl_witness_table.loc12, @Interface.impl.c3d(constants.%T.826) [symbolic = @Interface.impl.c3d.%Interface.impl_witness (constants.%Interface.impl_witness.a14)] -// CHECK:STDOUT: impl_decl @Interface.impl.793 [concrete] { +// CHECK:STDOUT: %Interface.impl_witness_table.loc12 = impl_witness_table (), @T.as_type.as.Interface.impl.c3d [concrete] +// CHECK:STDOUT: %Interface.impl_witness.loc12: = impl_witness %Interface.impl_witness_table.loc12, @T.as_type.as.Interface.impl.c3d(constants.%T.826) [symbolic = @T.as_type.as.Interface.impl.c3d.%Interface.impl_witness (constants.%Interface.impl_witness.a14)] +// CHECK:STDOUT: impl_decl @T.as_type.as.Interface.impl.793 [concrete] { // CHECK:STDOUT: %T.patt: %pattern_type.28e = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc13: %J.type = name_ref T, %T.loc13_14.1 [symbolic = %T.loc13_14.2 (constants.%T.ccd)] @@ -193,9 +193,9 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: %J.ref.loc13: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: %T.loc13_14.1: %J.type = bind_symbolic_name T, 0 [symbolic = %T.loc13_14.2 (constants.%T.ccd)] // CHECK:STDOUT: } -// CHECK:STDOUT: %Interface.impl_witness_table.loc13 = impl_witness_table (), @Interface.impl.793 [concrete] -// CHECK:STDOUT: %Interface.impl_witness.loc13: = impl_witness %Interface.impl_witness_table.loc13, @Interface.impl.793(constants.%T.ccd) [symbolic = @Interface.impl.793.%Interface.impl_witness (constants.%Interface.impl_witness.608)] -// CHECK:STDOUT: impl_decl @Interface.impl.c93 [concrete] { +// CHECK:STDOUT: %Interface.impl_witness_table.loc13 = impl_witness_table (), @T.as_type.as.Interface.impl.793 [concrete] +// CHECK:STDOUT: %Interface.impl_witness.loc13: = impl_witness %Interface.impl_witness_table.loc13, @T.as_type.as.Interface.impl.793(constants.%T.ccd) [symbolic = @T.as_type.as.Interface.impl.793.%Interface.impl_witness (constants.%Interface.impl_witness.608)] +// CHECK:STDOUT: impl_decl @T.as_type.as.Interface.impl.c93 [concrete] { // CHECK:STDOUT: %T.patt: %pattern_type.4a6 = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc14: %K.type = name_ref T, %T.loc14_14.1 [symbolic = %T.loc14_14.2 (constants.%T.09f)] @@ -205,9 +205,9 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: %K.ref.loc14: type = name_ref K, file.%K.decl [concrete = constants.%K.type] // CHECK:STDOUT: %T.loc14_14.1: %K.type = bind_symbolic_name T, 0 [symbolic = %T.loc14_14.2 (constants.%T.09f)] // CHECK:STDOUT: } -// CHECK:STDOUT: %Interface.impl_witness_table.loc14 = impl_witness_table (), @Interface.impl.c93 [concrete] -// CHECK:STDOUT: %Interface.impl_witness.loc14: = impl_witness %Interface.impl_witness_table.loc14, @Interface.impl.c93(constants.%T.09f) [symbolic = @Interface.impl.c93.%Interface.impl_witness (constants.%Interface.impl_witness.b9e)] -// CHECK:STDOUT: impl_decl @Interface.impl.9e6 [concrete] { +// CHECK:STDOUT: %Interface.impl_witness_table.loc14 = impl_witness_table (), @T.as_type.as.Interface.impl.c93 [concrete] +// CHECK:STDOUT: %Interface.impl_witness.loc14: = impl_witness %Interface.impl_witness_table.loc14, @T.as_type.as.Interface.impl.c93(constants.%T.09f) [symbolic = @T.as_type.as.Interface.impl.c93.%Interface.impl_witness (constants.%Interface.impl_witness.b9e)] +// CHECK:STDOUT: impl_decl @T.as_type.as.Interface.impl.9e6 [concrete] { // CHECK:STDOUT: %T.patt: %pattern_type.86b = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc15: %L.type = name_ref T, %T.loc15_14.1 [symbolic = %T.loc15_14.2 (constants.%T.1d2)] @@ -217,9 +217,9 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: %L.ref.loc15: type = name_ref L, file.%L.decl [concrete = constants.%L.type] // CHECK:STDOUT: %T.loc15_14.1: %L.type = bind_symbolic_name T, 0 [symbolic = %T.loc15_14.2 (constants.%T.1d2)] // CHECK:STDOUT: } -// CHECK:STDOUT: %Interface.impl_witness_table.loc15 = impl_witness_table (), @Interface.impl.9e6 [concrete] -// CHECK:STDOUT: %Interface.impl_witness.loc15: = impl_witness %Interface.impl_witness_table.loc15, @Interface.impl.9e6(constants.%T.1d2) [symbolic = @Interface.impl.9e6.%Interface.impl_witness (constants.%Interface.impl_witness.e9d)] -// CHECK:STDOUT: impl_decl @Interface.impl.c3d [concrete] { +// CHECK:STDOUT: %Interface.impl_witness_table.loc15 = impl_witness_table (), @T.as_type.as.Interface.impl.9e6 [concrete] +// CHECK:STDOUT: %Interface.impl_witness.loc15: = impl_witness %Interface.impl_witness_table.loc15, @T.as_type.as.Interface.impl.9e6(constants.%T.1d2) [symbolic = @T.as_type.as.Interface.impl.9e6.%Interface.impl_witness (constants.%Interface.impl_witness.e9d)] +// CHECK:STDOUT: impl_decl @T.as_type.as.Interface.impl.c3d [concrete] { // CHECK:STDOUT: %T.patt: %pattern_type.2b5 = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc19: %I.type = name_ref T, %T.loc19 [symbolic = %T.loc12_14.2 (constants.%T.826)] @@ -229,7 +229,7 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: %I.ref.loc19: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: %T.loc19: %I.type = bind_symbolic_name T, 0 [symbolic = %T.loc12_14.2 (constants.%T.826)] // CHECK:STDOUT: } -// CHECK:STDOUT: impl_decl @Interface.impl.793 [concrete] { +// CHECK:STDOUT: impl_decl @T.as_type.as.Interface.impl.793 [concrete] { // CHECK:STDOUT: %T.patt: %pattern_type.28e = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc27: %J.type = name_ref T, %T.loc27 [symbolic = %T.loc13_14.2 (constants.%T.ccd)] @@ -239,7 +239,7 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: %J.ref.loc27: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: %T.loc27: %J.type = bind_symbolic_name T, 0 [symbolic = %T.loc13_14.2 (constants.%T.ccd)] // CHECK:STDOUT: } -// CHECK:STDOUT: impl_decl @Interface.impl.c93 [concrete] { +// CHECK:STDOUT: impl_decl @T.as_type.as.Interface.impl.c93 [concrete] { // CHECK:STDOUT: %T.patt: %pattern_type.4a6 = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc35: %K.type = name_ref T, %T.loc35 [symbolic = %T.loc14_14.2 (constants.%T.09f)] @@ -249,7 +249,7 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: %K.ref.loc35: type = name_ref K, file.%K.decl [concrete = constants.%K.type] // CHECK:STDOUT: %T.loc35: %K.type = bind_symbolic_name T, 0 [symbolic = %T.loc14_14.2 (constants.%T.09f)] // CHECK:STDOUT: } -// CHECK:STDOUT: impl_decl @Interface.impl.9e6 [concrete] { +// CHECK:STDOUT: impl_decl @T.as_type.as.Interface.impl.9e6 [concrete] { // CHECK:STDOUT: %T.patt: %pattern_type.86b = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc43: %L.type = name_ref T, %T.loc43 [symbolic = %T.loc15_14.2 (constants.%T.1d2)] @@ -301,10 +301,10 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @Interface.impl.c3d(%T.loc12_14.1: %I.type) { +// CHECK:STDOUT: generic impl @T.as_type.as.Interface.impl.c3d(%T.loc12_14.1: %I.type) { // CHECK:STDOUT: %T.loc12_14.2: %I.type = bind_symbolic_name T, 0 [symbolic = %T.loc12_14.2 (constants.%T.826)] // CHECK:STDOUT: %T.as_type.loc12_21.2: type = facet_access_type %T.loc12_14.2 [symbolic = %T.as_type.loc12_21.2 (constants.%T.as_type.b70)] -// CHECK:STDOUT: %Interface.impl_witness: = impl_witness file.%Interface.impl_witness_table.loc12, @Interface.impl.c3d(%T.loc12_14.2) [symbolic = %Interface.impl_witness (constants.%Interface.impl_witness.a14)] +// CHECK:STDOUT: %Interface.impl_witness: = impl_witness file.%Interface.impl_witness_table.loc12, @T.as_type.as.Interface.impl.c3d(%T.loc12_14.2) [symbolic = %Interface.impl_witness (constants.%Interface.impl_witness.a14)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -314,10 +314,10 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @Interface.impl.793(%T.loc13_14.1: %J.type) { +// CHECK:STDOUT: generic impl @T.as_type.as.Interface.impl.793(%T.loc13_14.1: %J.type) { // CHECK:STDOUT: %T.loc13_14.2: %J.type = bind_symbolic_name T, 0 [symbolic = %T.loc13_14.2 (constants.%T.ccd)] // CHECK:STDOUT: %T.as_type.loc13_21.2: type = facet_access_type %T.loc13_14.2 [symbolic = %T.as_type.loc13_21.2 (constants.%T.as_type.3df)] -// CHECK:STDOUT: %Interface.impl_witness: = impl_witness file.%Interface.impl_witness_table.loc13, @Interface.impl.793(%T.loc13_14.2) [symbolic = %Interface.impl_witness (constants.%Interface.impl_witness.608)] +// CHECK:STDOUT: %Interface.impl_witness: = impl_witness file.%Interface.impl_witness_table.loc13, @T.as_type.as.Interface.impl.793(%T.loc13_14.2) [symbolic = %Interface.impl_witness (constants.%Interface.impl_witness.608)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -327,10 +327,10 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @Interface.impl.c93(%T.loc14_14.1: %K.type) { +// CHECK:STDOUT: generic impl @T.as_type.as.Interface.impl.c93(%T.loc14_14.1: %K.type) { // CHECK:STDOUT: %T.loc14_14.2: %K.type = bind_symbolic_name T, 0 [symbolic = %T.loc14_14.2 (constants.%T.09f)] // CHECK:STDOUT: %T.as_type.loc14_21.2: type = facet_access_type %T.loc14_14.2 [symbolic = %T.as_type.loc14_21.2 (constants.%T.as_type.037)] -// CHECK:STDOUT: %Interface.impl_witness: = impl_witness file.%Interface.impl_witness_table.loc14, @Interface.impl.c93(%T.loc14_14.2) [symbolic = %Interface.impl_witness (constants.%Interface.impl_witness.b9e)] +// CHECK:STDOUT: %Interface.impl_witness: = impl_witness file.%Interface.impl_witness_table.loc14, @T.as_type.as.Interface.impl.c93(%T.loc14_14.2) [symbolic = %Interface.impl_witness (constants.%Interface.impl_witness.b9e)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -340,10 +340,10 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @Interface.impl.9e6(%T.loc15_14.1: %L.type) { +// CHECK:STDOUT: generic impl @T.as_type.as.Interface.impl.9e6(%T.loc15_14.1: %L.type) { // CHECK:STDOUT: %T.loc15_14.2: %L.type = bind_symbolic_name T, 0 [symbolic = %T.loc15_14.2 (constants.%T.1d2)] // CHECK:STDOUT: %T.as_type.loc15_21.2: type = facet_access_type %T.loc15_14.2 [symbolic = %T.as_type.loc15_21.2 (constants.%T.as_type.0ed)] -// CHECK:STDOUT: %Interface.impl_witness: = impl_witness file.%Interface.impl_witness_table.loc15, @Interface.impl.9e6(%T.loc15_14.2) [symbolic = %Interface.impl_witness (constants.%Interface.impl_witness.e9d)] +// CHECK:STDOUT: %Interface.impl_witness: = impl_witness file.%Interface.impl_witness_table.loc15, @T.as_type.as.Interface.impl.9e6(%T.loc15_14.2) [symbolic = %Interface.impl_witness (constants.%Interface.impl_witness.e9d)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -353,25 +353,25 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Interface.impl.c3d(constants.%T.826) { +// CHECK:STDOUT: specific @T.as_type.as.Interface.impl.c3d(constants.%T.826) { // CHECK:STDOUT: %T.loc12_14.2 => constants.%T.826 // CHECK:STDOUT: %T.as_type.loc12_21.2 => constants.%T.as_type.b70 // CHECK:STDOUT: %Interface.impl_witness => constants.%Interface.impl_witness.a14 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Interface.impl.793(constants.%T.ccd) { +// CHECK:STDOUT: specific @T.as_type.as.Interface.impl.793(constants.%T.ccd) { // CHECK:STDOUT: %T.loc13_14.2 => constants.%T.ccd // CHECK:STDOUT: %T.as_type.loc13_21.2 => constants.%T.as_type.3df // CHECK:STDOUT: %Interface.impl_witness => constants.%Interface.impl_witness.608 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Interface.impl.c93(constants.%T.09f) { +// CHECK:STDOUT: specific @T.as_type.as.Interface.impl.c93(constants.%T.09f) { // CHECK:STDOUT: %T.loc14_14.2 => constants.%T.09f // CHECK:STDOUT: %T.as_type.loc14_21.2 => constants.%T.as_type.037 // CHECK:STDOUT: %Interface.impl_witness => constants.%Interface.impl_witness.b9e // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Interface.impl.9e6(constants.%T.1d2) { +// CHECK:STDOUT: specific @T.as_type.as.Interface.impl.9e6(constants.%T.1d2) { // CHECK:STDOUT: %T.loc15_14.2 => constants.%T.1d2 // CHECK:STDOUT: %T.as_type.loc15_21.2 => constants.%T.as_type.0ed // CHECK:STDOUT: %Interface.impl_witness => constants.%Interface.impl_witness.e9d @@ -387,7 +387,7 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: %T: %I.type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %pattern_type: type = pattern_type %I.type [concrete] // CHECK:STDOUT: %T.as_type: type = facet_access_type %T [symbolic] -// CHECK:STDOUT: %J.impl_witness: = impl_witness file.%J.impl_witness_table, @J.impl.bfd509.1(%T) [symbolic] +// CHECK:STDOUT: %J.impl_witness: = impl_witness file.%J.impl_witness_table, @T.as_type.as.J.impl.bfd509.1(%T) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -406,7 +406,7 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} // CHECK:STDOUT: %J.decl: type = interface_decl @J [concrete = constants.%J.type] {} {} -// CHECK:STDOUT: impl_decl @J.impl.bfd509.1 [concrete] { +// CHECK:STDOUT: impl_decl @T.as_type.as.J.impl.bfd509.1 [concrete] { // CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: %I.type = name_ref T, %T.loc7_14.1 [symbolic = %T.loc7_14.2 (constants.%T)] @@ -416,9 +416,9 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: %T.loc7_14.1: %I.type = bind_symbolic_name T, 0 [symbolic = %T.loc7_14.2 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %J.impl_witness_table = impl_witness_table (), @J.impl.bfd509.1 [concrete] -// CHECK:STDOUT: %J.impl_witness: = impl_witness %J.impl_witness_table, @J.impl.bfd509.1(constants.%T) [symbolic = @J.impl.bfd509.1.%J.impl_witness (constants.%J.impl_witness)] -// CHECK:STDOUT: impl_decl @J.impl.bfd509.2 [concrete] { +// CHECK:STDOUT: %J.impl_witness_table = impl_witness_table (), @T.as_type.as.J.impl.bfd509.1 [concrete] +// CHECK:STDOUT: %J.impl_witness: = impl_witness %J.impl_witness_table, @T.as_type.as.J.impl.bfd509.1(constants.%T) [symbolic = @T.as_type.as.J.impl.bfd509.1.%J.impl_witness (constants.%J.impl_witness)] +// CHECK:STDOUT: impl_decl @T.as_type.as.J.impl.bfd509.2 [concrete] { // CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: %I.type = name_ref T, %T.loc15_14.1 [symbolic = %T.loc15_14.2 (constants.%T)] @@ -446,10 +446,10 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @J.impl.bfd509.1(%T.loc7_14.1: %I.type) { +// CHECK:STDOUT: generic impl @T.as_type.as.J.impl.bfd509.1(%T.loc7_14.1: %I.type) { // CHECK:STDOUT: %T.loc7_14.2: %I.type = bind_symbolic_name T, 0 [symbolic = %T.loc7_14.2 (constants.%T)] // CHECK:STDOUT: %T.as_type.loc7_21.2: type = facet_access_type %T.loc7_14.2 [symbolic = %T.as_type.loc7_21.2 (constants.%T.as_type)] -// CHECK:STDOUT: %J.impl_witness: = impl_witness file.%J.impl_witness_table, @J.impl.bfd509.1(%T.loc7_14.2) [symbolic = %J.impl_witness (constants.%J.impl_witness)] +// CHECK:STDOUT: %J.impl_witness: = impl_witness file.%J.impl_witness_table, @T.as_type.as.J.impl.bfd509.1(%T.loc7_14.2) [symbolic = %J.impl_witness (constants.%J.impl_witness)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -459,7 +459,7 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @J.impl.bfd509.2(%T.loc15_14.1: %I.type) { +// CHECK:STDOUT: generic impl @T.as_type.as.J.impl.bfd509.2(%T.loc15_14.1: %I.type) { // CHECK:STDOUT: %T.loc15_14.2: %I.type = bind_symbolic_name T, 0 [symbolic = %T.loc15_14.2 (constants.%T)] // CHECK:STDOUT: %T.as_type.loc15_21.2: type = facet_access_type %T.loc15_14.2 [symbolic = %T.as_type.loc15_21.2 (constants.%T.as_type)] // CHECK:STDOUT: @@ -471,13 +471,13 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @J.impl.bfd509.1(constants.%T) { +// CHECK:STDOUT: specific @T.as_type.as.J.impl.bfd509.1(constants.%T) { // CHECK:STDOUT: %T.loc7_14.2 => constants.%T // CHECK:STDOUT: %T.as_type.loc7_21.2 => constants.%T.as_type // CHECK:STDOUT: %J.impl_witness => constants.%J.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @J.impl.bfd509.2(constants.%T) { +// CHECK:STDOUT: specific @T.as_type.as.J.impl.bfd509.2(constants.%T) { // CHECK:STDOUT: %T.loc15_14.2 => constants.%T // CHECK:STDOUT: %T.as_type.loc15_21.2 => constants.%T.as_type // CHECK:STDOUT: } @@ -511,13 +511,13 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} -// CHECK:STDOUT: impl_decl @I.impl.7704ae.1 [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.I.impl.7704ae.1 [concrete] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table.loc9 = impl_witness_table (), @I.impl.7704ae.1 [concrete] +// CHECK:STDOUT: %I.impl_witness_table.loc9 = impl_witness_table (), @C.as.I.impl.7704ae.1 [concrete] // CHECK:STDOUT: %I.impl_witness.loc9: = impl_witness %I.impl_witness_table.loc9 [concrete = constants.%I.impl_witness.215123.1] -// CHECK:STDOUT: impl_decl @I.impl.7704ae.2 [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.I.impl.7704ae.2 [concrete] {} { // CHECK:STDOUT: %C.ref.loc17_7: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %C.ref.loc17_10: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %.loc17_11.1: %tuple.type = tuple_literal (%C.ref.loc17_7, %C.ref.loc17_10) @@ -527,7 +527,7 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: %tuple.elem0: type = tuple_access %.loc17_11.2, element0 [concrete = constants.%C] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table.loc17 = impl_witness_table (), @I.impl.7704ae.2 [concrete] +// CHECK:STDOUT: %I.impl_witness_table.loc17 = impl_witness_table (), @C.as.I.impl.7704ae.2 [concrete] // CHECK:STDOUT: %I.impl_witness.loc17: = impl_witness %I.impl_witness_table.loc17 [concrete = constants.%I.impl_witness.215123.2] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -539,12 +539,12 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl.7704ae.1: %C.ref as %I.ref { +// CHECK:STDOUT: impl @C.as.I.impl.7704ae.1: %C.ref as %I.ref { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%I.impl_witness.loc9 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl.7704ae.2: %tuple.elem0 as %I.ref { +// CHECK:STDOUT: impl @C.as.I.impl.7704ae.2: %tuple.elem0 as %I.ref { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%I.impl_witness.loc17 // CHECK:STDOUT: } @@ -558,24 +558,24 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: %Self.826: %I.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] -// CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table, @I.impl.2caff2.1(%T) [symbolic] -// CHECK:STDOUT: %A.type: type = fn_type @A, @I.impl.2caff2.1(%T) [symbolic] +// CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table, @T.as.I.impl.2caff2.1(%T) [symbolic] +// CHECK:STDOUT: %T.as.I.impl.A.type: type = fn_type @T.as.I.impl.A, @T.as.I.impl.2caff2.1(%T) [symbolic] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %A: %A.type = struct_value () [symbolic] -// CHECK:STDOUT: %B.type: type = fn_type @B, @I.impl.2caff2.2(%T) [symbolic] -// CHECK:STDOUT: %B: %B.type = struct_value () [symbolic] +// CHECK:STDOUT: %T.as.I.impl.A: %T.as.I.impl.A.type = struct_value () [symbolic] +// CHECK:STDOUT: %T.as.I.impl.B.type: type = fn_type @T.as.I.impl.B, @T.as.I.impl.2caff2.2(%T) [symbolic] +// CHECK:STDOUT: %T.as.I.impl.B: %T.as.I.impl.B.type = struct_value () [symbolic] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] -// CHECK:STDOUT: %C.type: type = fn_type @C, @I.impl.2caff2.2(%T) [symbolic] -// CHECK:STDOUT: %C: %C.type = struct_value () [symbolic] -// CHECK:STDOUT: %D.type: type = fn_type @D, @I.impl.2caff2.2(%T) [symbolic] -// CHECK:STDOUT: %D: %D.type = struct_value () [symbolic] +// CHECK:STDOUT: %T.as.I.impl.C.type: type = fn_type @T.as.I.impl.C, @T.as.I.impl.2caff2.2(%T) [symbolic] +// CHECK:STDOUT: %T.as.I.impl.C: %T.as.I.impl.C.type = struct_value () [symbolic] +// CHECK:STDOUT: %T.as.I.impl.D.type: type = fn_type @T.as.I.impl.D, @T.as.I.impl.2caff2.2(%T) [symbolic] +// CHECK:STDOUT: %T.as.I.impl.D: %T.as.I.impl.D.type = struct_value () [symbolic] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] -// CHECK:STDOUT: %C.specific_fn: = specific_function %C, @C(%T) [symbolic] +// CHECK:STDOUT: %T.as.I.impl.C.specific_fn: = specific_function %T.as.I.impl.C, @T.as.I.impl.C(%T) [symbolic] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.1, @Destroy.impl(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a63: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ea3: %T.as.Destroy.impl.Op.type.a63 = struct_value () [concrete] // CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ea3, @Op.1(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(%empty_tuple.type) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -594,21 +594,21 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} -// CHECK:STDOUT: impl_decl @I.impl.2caff2.1 [concrete] { +// CHECK:STDOUT: impl_decl @T.as.I.impl.2caff2.1 [concrete] { // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4_14.1 [symbolic = %T.loc4_14.2 (constants.%T)] +// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4_14.2 [symbolic = %T.loc4_14.1 (constants.%T)] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] -// CHECK:STDOUT: %T.loc4_14.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_14.2 (constants.%T)] +// CHECK:STDOUT: %T.loc4_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_14.1 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @I.impl.2caff2.1 [concrete] -// CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table, @I.impl.2caff2.1(constants.%T) [symbolic = @I.impl.2caff2.1.%I.impl_witness (constants.%I.impl_witness)] -// CHECK:STDOUT: impl_decl @I.impl.2caff2.2 [concrete] { +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @T.as.I.impl.2caff2.1 [concrete] +// CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table, @T.as.I.impl.2caff2.1(constants.%T) [symbolic = @T.as.I.impl.2caff2.1.%I.impl_witness (constants.%I.impl_witness)] +// CHECK:STDOUT: impl_decl @T.as.I.impl.2caff2.2 [concrete] { // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc15_14.1 [symbolic = %T.loc15_14.2 (constants.%T)] +// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc15_14.2 [symbolic = %T.loc15_14.1 (constants.%T)] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] -// CHECK:STDOUT: %T.loc15_14.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc15_14.2 (constants.%T)] +// CHECK:STDOUT: %T.loc15_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc15_14.1 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -620,37 +620,37 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @I.impl.2caff2.1(%T.loc4_14.1: type) { -// CHECK:STDOUT: %T.loc4_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_14.2 (constants.%T)] -// CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table, @I.impl.2caff2.1(%T.loc4_14.2) [symbolic = %I.impl_witness (constants.%I.impl_witness)] +// CHECK:STDOUT: generic impl @T.as.I.impl.2caff2.1(%T.loc4_14.2: type) { +// CHECK:STDOUT: %T.loc4_14.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_14.1 (constants.%T)] +// CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table, @T.as.I.impl.2caff2.1(%T.loc4_14.1) [symbolic = %I.impl_witness (constants.%I.impl_witness)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %A.type: type = fn_type @A, @I.impl.2caff2.1(%T.loc4_14.2) [symbolic = %A.type (constants.%A.type)] -// CHECK:STDOUT: %A: @I.impl.2caff2.1.%A.type (%A.type) = struct_value () [symbolic = %A (constants.%A)] +// CHECK:STDOUT: %T.as.I.impl.A.type: type = fn_type @T.as.I.impl.A, @T.as.I.impl.2caff2.1(%T.loc4_14.1) [symbolic = %T.as.I.impl.A.type (constants.%T.as.I.impl.A.type)] +// CHECK:STDOUT: %T.as.I.impl.A: @T.as.I.impl.2caff2.1.%T.as.I.impl.A.type (%T.as.I.impl.A.type) = struct_value () [symbolic = %T.as.I.impl.A (constants.%T.as.I.impl.A)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %T.ref as %I.ref { -// CHECK:STDOUT: %A.decl: @I.impl.2caff2.1.%A.type (%A.type) = fn_decl @A [symbolic = @I.impl.2caff2.1.%A (constants.%A)] {} {} +// CHECK:STDOUT: %T.as.I.impl.A.decl: @T.as.I.impl.2caff2.1.%T.as.I.impl.A.type (%T.as.I.impl.A.type) = fn_decl @T.as.I.impl.A [symbolic = @T.as.I.impl.2caff2.1.%T.as.I.impl.A (constants.%T.as.I.impl.A)] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .A = %A.decl +// CHECK:STDOUT: .A = %T.as.I.impl.A.decl // CHECK:STDOUT: witness = file.%I.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @I.impl.2caff2.2(%T.loc15_14.1: type) { -// CHECK:STDOUT: %T.loc15_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc15_14.2 (constants.%T)] +// CHECK:STDOUT: generic impl @T.as.I.impl.2caff2.2(%T.loc15_14.2: type) { +// CHECK:STDOUT: %T.loc15_14.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc15_14.1 (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %B.type: type = fn_type @B, @I.impl.2caff2.2(%T.loc15_14.2) [symbolic = %B.type (constants.%B.type)] -// CHECK:STDOUT: %B: @I.impl.2caff2.2.%B.type (%B.type) = struct_value () [symbolic = %B (constants.%B)] -// CHECK:STDOUT: %C.type: type = fn_type @C, @I.impl.2caff2.2(%T.loc15_14.2) [symbolic = %C.type (constants.%C.type)] -// CHECK:STDOUT: %C: @I.impl.2caff2.2.%C.type (%C.type) = struct_value () [symbolic = %C (constants.%C)] -// CHECK:STDOUT: %D.type: type = fn_type @D, @I.impl.2caff2.2(%T.loc15_14.2) [symbolic = %D.type (constants.%D.type)] -// CHECK:STDOUT: %D: @I.impl.2caff2.2.%D.type (%D.type) = struct_value () [symbolic = %D (constants.%D)] +// CHECK:STDOUT: %T.as.I.impl.B.type: type = fn_type @T.as.I.impl.B, @T.as.I.impl.2caff2.2(%T.loc15_14.1) [symbolic = %T.as.I.impl.B.type (constants.%T.as.I.impl.B.type)] +// CHECK:STDOUT: %T.as.I.impl.B: @T.as.I.impl.2caff2.2.%T.as.I.impl.B.type (%T.as.I.impl.B.type) = struct_value () [symbolic = %T.as.I.impl.B (constants.%T.as.I.impl.B)] +// CHECK:STDOUT: %T.as.I.impl.C.type: type = fn_type @T.as.I.impl.C, @T.as.I.impl.2caff2.2(%T.loc15_14.1) [symbolic = %T.as.I.impl.C.type (constants.%T.as.I.impl.C.type)] +// CHECK:STDOUT: %T.as.I.impl.C: @T.as.I.impl.2caff2.2.%T.as.I.impl.C.type (%T.as.I.impl.C.type) = struct_value () [symbolic = %T.as.I.impl.C (constants.%T.as.I.impl.C)] +// CHECK:STDOUT: %T.as.I.impl.D.type: type = fn_type @T.as.I.impl.D, @T.as.I.impl.2caff2.2(%T.loc15_14.1) [symbolic = %T.as.I.impl.D.type (constants.%T.as.I.impl.D.type)] +// CHECK:STDOUT: %T.as.I.impl.D: @T.as.I.impl.2caff2.2.%T.as.I.impl.D.type (%T.as.I.impl.D.type) = struct_value () [symbolic = %T.as.I.impl.D (constants.%T.as.I.impl.D)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %T.ref as %I.ref { -// CHECK:STDOUT: %B.decl: @I.impl.2caff2.2.%B.type (%B.type) = fn_decl @B [symbolic = @I.impl.2caff2.2.%B (constants.%B)] {} {} -// CHECK:STDOUT: %C.decl: @I.impl.2caff2.2.%C.type (%C.type) = fn_decl @C [symbolic = @I.impl.2caff2.2.%C (constants.%C)] { +// CHECK:STDOUT: %T.as.I.impl.B.decl: @T.as.I.impl.2caff2.2.%T.as.I.impl.B.type (%T.as.I.impl.B.type) = fn_decl @T.as.I.impl.B [symbolic = @T.as.I.impl.2caff2.2.%T.as.I.impl.B (constants.%T.as.I.impl.B)] {} {} +// CHECK:STDOUT: %T.as.I.impl.C.decl: @T.as.I.impl.2caff2.2.%T.as.I.impl.C.type (%T.as.I.impl.C.type) = fn_decl @T.as.I.impl.C [symbolic = @T.as.I.impl.2caff2.2.%T.as.I.impl.C (constants.%T.as.I.impl.C)] { // CHECK:STDOUT: %return.patt: %pattern_type.cb1 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.cb1 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -659,7 +659,7 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param call_param0 // CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %D.decl: @I.impl.2caff2.2.%D.type (%D.type) = fn_decl @D [symbolic = @I.impl.2caff2.2.%D (constants.%D)] { +// CHECK:STDOUT: %T.as.I.impl.D.decl: @T.as.I.impl.2caff2.2.%T.as.I.impl.D.type (%T.as.I.impl.D.type) = fn_decl @T.as.I.impl.D [symbolic = @T.as.I.impl.2caff2.2.%T.as.I.impl.D (constants.%T.as.I.impl.D)] { // CHECK:STDOUT: %return.patt: %pattern_type.cb1 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.cb1 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -670,14 +670,14 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .B = %B.decl -// CHECK:STDOUT: .C = %C.decl -// CHECK:STDOUT: .D = %D.decl +// CHECK:STDOUT: .B = %T.as.I.impl.B.decl +// CHECK:STDOUT: .C = %T.as.I.impl.C.decl +// CHECK:STDOUT: .D = %T.as.I.impl.D.decl // CHECK:STDOUT: witness = // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @A(@I.impl.2caff2.1.%T.loc4_14.1: type) { +// CHECK:STDOUT: generic fn @T.as.I.impl.A(@T.as.I.impl.2caff2.1.%T.loc4_14.2: type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: fn() { @@ -686,7 +686,7 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @B(@I.impl.2caff2.2.%T.loc15_14.1: type) { +// CHECK:STDOUT: generic fn @T.as.I.impl.B(@T.as.I.impl.2caff2.2.%T.loc15_14.2: type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: fn() { @@ -695,7 +695,7 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @C(@I.impl.2caff2.2.%T.loc15_14.1: type) { +// CHECK:STDOUT: generic fn @T.as.I.impl.C(@T.as.I.impl.2caff2.2.%T.loc15_14.2: type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: fn() -> %empty_tuple.type { @@ -707,60 +707,60 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @D(@I.impl.2caff2.2.%T.loc15_14.1: type) { +// CHECK:STDOUT: generic fn @T.as.I.impl.D(@T.as.I.impl.2caff2.2.%T.loc15_14.2: type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %C.type: type = fn_type @C, @I.impl.2caff2.2(%T) [symbolic = %C.type (constants.%C.type)] -// CHECK:STDOUT: %C: @D.%C.type (%C.type) = struct_value () [symbolic = %C (constants.%C)] -// CHECK:STDOUT: %C.specific_fn.loc21_12.2: = specific_function %C, @C(%T) [symbolic = %C.specific_fn.loc21_12.2 (constants.%C.specific_fn)] +// CHECK:STDOUT: %T.as.I.impl.C.type: type = fn_type @T.as.I.impl.C, @T.as.I.impl.2caff2.2(%T) [symbolic = %T.as.I.impl.C.type (constants.%T.as.I.impl.C.type)] +// CHECK:STDOUT: %T.as.I.impl.C: @T.as.I.impl.D.%T.as.I.impl.C.type (%T.as.I.impl.C.type) = struct_value () [symbolic = %T.as.I.impl.C (constants.%T.as.I.impl.C)] +// CHECK:STDOUT: %T.as.I.impl.C.specific_fn.loc21_12.2: = specific_function %T.as.I.impl.C, @T.as.I.impl.C(%T) [symbolic = %T.as.I.impl.C.specific_fn.loc21_12.2 (constants.%T.as.I.impl.C.specific_fn)] // CHECK:STDOUT: // CHECK:STDOUT: fn() -> %empty_tuple.type { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc21_12: @D.%C.type (%C.type) = specific_constant @I.impl.2caff2.2.%C.decl, @I.impl.2caff2.2(constants.%T) [symbolic = %C (constants.%C)] -// CHECK:STDOUT: %C.ref: @D.%C.type (%C.type) = name_ref C, %.loc21_12 [symbolic = %C (constants.%C)] -// CHECK:STDOUT: %C.specific_fn.loc21_12.1: = specific_function %C.ref, @C(constants.%T) [symbolic = %C.specific_fn.loc21_12.2 (constants.%C.specific_fn)] -// CHECK:STDOUT: %C.call: init %empty_tuple.type = call %C.specific_fn.loc21_12.1() +// CHECK:STDOUT: %.loc21_12: @T.as.I.impl.D.%T.as.I.impl.C.type (%T.as.I.impl.C.type) = specific_constant @T.as.I.impl.2caff2.2.%T.as.I.impl.C.decl, @T.as.I.impl.2caff2.2(constants.%T) [symbolic = %T.as.I.impl.C (constants.%T.as.I.impl.C)] +// CHECK:STDOUT: %C.ref: @T.as.I.impl.D.%T.as.I.impl.C.type (%T.as.I.impl.C.type) = name_ref C, %.loc21_12 [symbolic = %T.as.I.impl.C (constants.%T.as.I.impl.C)] +// CHECK:STDOUT: %T.as.I.impl.C.specific_fn.loc21_12.1: = specific_function %C.ref, @T.as.I.impl.C(constants.%T) [symbolic = %T.as.I.impl.C.specific_fn.loc21_12.2 (constants.%T.as.I.impl.C.specific_fn)] +// CHECK:STDOUT: %T.as.I.impl.C.call: init %empty_tuple.type = call %T.as.I.impl.C.specific_fn.loc21_12.1() // CHECK:STDOUT: %.loc21_14.1: ref %empty_tuple.type = temporary_storage -// CHECK:STDOUT: %.loc21_14.2: ref %empty_tuple.type = temporary %.loc21_14.1, %C.call +// CHECK:STDOUT: %.loc21_14.2: ref %empty_tuple.type = temporary %.loc21_14.1, %T.as.I.impl.C.call // CHECK:STDOUT: %tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc21_15: %empty_tuple.type = converted %C.call, %tuple [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %Op.bound: = bound_method %.loc21_14.1, constants.%Op.ea3 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.ea3, @Op.1(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc21_14.1, %Op.specific_fn +// CHECK:STDOUT: %.loc21_15: %empty_tuple.type = converted %T.as.I.impl.C.call, %tuple [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc21_14.1, constants.%T.as.Destroy.impl.Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %.loc21_14.1, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.843 = addr_of %.loc21_14.1 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %.loc21_15 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.impl.2caff2.1(constants.%T) { -// CHECK:STDOUT: %T.loc4_14.2 => constants.%T +// CHECK:STDOUT: specific @T.as.I.impl.2caff2.1(constants.%T) { +// CHECK:STDOUT: %T.loc4_14.1 => constants.%T // CHECK:STDOUT: %I.impl_witness => constants.%I.impl_witness // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %A.type => constants.%A.type -// CHECK:STDOUT: %A => constants.%A +// CHECK:STDOUT: %T.as.I.impl.A.type => constants.%T.as.I.impl.A.type +// CHECK:STDOUT: %T.as.I.impl.A => constants.%T.as.I.impl.A // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @A(constants.%T) {} +// CHECK:STDOUT: specific @T.as.I.impl.A(constants.%T) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.impl.2caff2.2(constants.%T) { -// CHECK:STDOUT: %T.loc15_14.2 => constants.%T +// CHECK:STDOUT: specific @T.as.I.impl.2caff2.2(constants.%T) { +// CHECK:STDOUT: %T.loc15_14.1 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %B.type => constants.%B.type -// CHECK:STDOUT: %B => constants.%B -// CHECK:STDOUT: %C.type => constants.%C.type -// CHECK:STDOUT: %C => constants.%C -// CHECK:STDOUT: %D.type => constants.%D.type -// CHECK:STDOUT: %D => constants.%D +// CHECK:STDOUT: %T.as.I.impl.B.type => constants.%T.as.I.impl.B.type +// CHECK:STDOUT: %T.as.I.impl.B => constants.%T.as.I.impl.B +// CHECK:STDOUT: %T.as.I.impl.C.type => constants.%T.as.I.impl.C.type +// CHECK:STDOUT: %T.as.I.impl.C => constants.%T.as.I.impl.C +// CHECK:STDOUT: %T.as.I.impl.D.type => constants.%T.as.I.impl.D.type +// CHECK:STDOUT: %T.as.I.impl.D => constants.%T.as.I.impl.D // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @B(constants.%T) {} +// CHECK:STDOUT: specific @T.as.I.impl.B(constants.%T) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @C(constants.%T) { +// CHECK:STDOUT: specific @T.as.I.impl.C(constants.%T) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @D(constants.%T) {} +// CHECK:STDOUT: specific @T.as.I.impl.D(constants.%T) {} // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/impl_as.carbon b/toolchain/check/testdata/impl/impl_as.carbon index b626aa559845..29b4745dc493 100644 --- a/toolchain/check/testdata/impl/impl_as.carbon +++ b/toolchain/check/testdata/impl/impl_as.carbon @@ -30,25 +30,25 @@ class C { // CHECK:STDOUT: constants { // CHECK:STDOUT: %Simple.type: type = facet_type <@Simple> [concrete] // CHECK:STDOUT: %Self.3c9: %Simple.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.e2e: type = fn_type @F.loc16 [concrete] +// CHECK:STDOUT: %Simple.F.type: type = fn_type @Simple.F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F.df8: %F.type.e2e = struct_value () [concrete] +// CHECK:STDOUT: %Simple.F: %Simple.F.type = struct_value () [concrete] // CHECK:STDOUT: %Simple.assoc_type: type = assoc_entity_type @Simple [concrete] -// CHECK:STDOUT: %assoc0.d57: %Simple.assoc_type = assoc_entity element0, @Simple.%F.decl [concrete] +// CHECK:STDOUT: %assoc0.d57: %Simple.assoc_type = assoc_entity element0, @Simple.%Simple.F.decl [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %Simple.impl_witness: = impl_witness @C.%Simple.impl_witness_table [concrete] -// CHECK:STDOUT: %F.type.e4b: type = fn_type @F.loc21 [concrete] -// CHECK:STDOUT: %F.c94: %F.type.e4b = struct_value () [concrete] +// CHECK:STDOUT: %C.as.Simple.impl.F.type: type = fn_type @C.as.Simple.impl.F [concrete] +// CHECK:STDOUT: %C.as.Simple.impl.F: %C.as.Simple.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %Simple.facet: %Simple.type = facet_value %C, (%Simple.impl_witness) [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.153: type = fn_type @Op.1, @Destroy.impl(%C) [concrete] -// CHECK:STDOUT: %Op.5d7: %Op.type.153 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.153: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.5d7: %T.as.Destroy.impl.Op.type.153 = struct_value () [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.5d7, @Op.1(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(%C) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -73,30 +73,30 @@ class C { // CHECK:STDOUT: // CHECK:STDOUT: interface @Simple { // CHECK:STDOUT: %Self: %Simple.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.3c9] -// CHECK:STDOUT: %F.decl: %F.type.e2e = fn_decl @F.loc16 [concrete = constants.%F.df8] {} {} -// CHECK:STDOUT: %assoc0: %Simple.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0.d57] +// CHECK:STDOUT: %Simple.F.decl: %Simple.F.type = fn_decl @Simple.F [concrete = constants.%Simple.F] {} {} +// CHECK:STDOUT: %assoc0: %Simple.assoc_type = assoc_entity element0, %Simple.F.decl [concrete = constants.%assoc0.d57] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F = %assoc0 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%Simple.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Simple.impl: %Self.ref as %Simple.ref { -// CHECK:STDOUT: %F.decl: %F.type.e4b = fn_decl @F.loc21 [concrete = constants.%F.c94] {} {} +// CHECK:STDOUT: impl @C.as.Simple.impl: %Self.ref as %Simple.ref { +// CHECK:STDOUT: %C.as.Simple.impl.F.decl: %C.as.Simple.impl.F.type = fn_decl @C.as.Simple.impl.F [concrete = constants.%C.as.Simple.impl.F] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %C.as.Simple.impl.F.decl // CHECK:STDOUT: .C = // CHECK:STDOUT: witness = @C.%Simple.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: impl_decl @Simple.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.Simple.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] // CHECK:STDOUT: %Simple.ref: type = name_ref Simple, file.%Simple.decl [concrete = constants.%Simple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %Simple.impl_witness_table = impl_witness_table (@Simple.impl.%F.decl), @Simple.impl [concrete] +// CHECK:STDOUT: %Simple.impl_witness_table = impl_witness_table (@C.as.Simple.impl.%C.as.Simple.impl.F.decl), @C.as.Simple.impl [concrete] // CHECK:STDOUT: %Simple.impl_witness: = impl_witness %Simple.impl_witness_table [concrete = constants.%Simple.impl_witness] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] @@ -108,11 +108,11 @@ class C { // CHECK:STDOUT: .C = // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc16(@Simple.%Self: %Simple.type) { +// CHECK:STDOUT: generic fn @Simple.F(@Simple.%Self: %Simple.type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc21() { +// CHECK:STDOUT: fn @C.as.Simple.impl.F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %c.patt: %pattern_type.c48 = binding_pattern c [concrete] @@ -125,15 +125,15 @@ class C { // CHECK:STDOUT: assign %c.var, %.loc23_7 // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %c: ref %C = bind_name c, %c.var -// CHECK:STDOUT: %Op.bound: = bound_method %c.var, constants.%Op.5d7 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.5d7, @Op.1(constants.%C) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %c.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %c.var, constants.%T.as.Destroy.impl.Op.5d7 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(constants.%C) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %c.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.019 = addr_of %c.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc16(constants.%Self.3c9) {} +// CHECK:STDOUT: specific @Simple.F(constants.%Self.3c9) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc16(constants.%Simple.facet) {} +// CHECK:STDOUT: specific @Simple.F(constants.%Simple.facet) {} // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/impl_assoc_const.carbon b/toolchain/check/testdata/impl/impl_assoc_const.carbon index 5b9d00704acc..95edd988e16a 100644 --- a/toolchain/check/testdata/impl/impl_assoc_const.carbon +++ b/toolchain/check/testdata/impl/impl_assoc_const.carbon @@ -338,7 +338,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: impl_decl @impl [concrete] {} { +// CHECK:STDOUT: impl_decl @empty_tuple.type.as..impl [concrete] {} { // CHECK:STDOUT: %.loc13_7.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc13_7.2: type = converted %.loc13_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %L.ref: type = name_ref L, file.%L.decl [concrete = constants.%L.type] @@ -404,7 +404,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl: %.loc13_7.2 as %.loc13_14 { +// CHECK:STDOUT: impl @empty_tuple.type.as..impl: %.loc13_7.2 as %.loc13_14 { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = // CHECK:STDOUT: } @@ -427,7 +427,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: impl_decl @impl [concrete] {} { +// CHECK:STDOUT: impl_decl @empty_tuple.type.as..impl [concrete] {} { // CHECK:STDOUT: %.loc13_7.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc13_7.2: type = converted %.loc13_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %M.ref: type = name_ref M, file.%M.decl [concrete = constants.%M.type] @@ -467,7 +467,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl: %.loc13_7.2 as %.loc13_14 { +// CHECK:STDOUT: impl @empty_tuple.type.as..impl: %.loc13_7.2 as %.loc13_14 { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/impl_assoc_const_with_prelude.carbon b/toolchain/check/testdata/impl/impl_assoc_const_with_prelude.carbon index 24c3503ff136..02538ba55b30 100644 --- a/toolchain/check/testdata/impl/impl_assoc_const_with_prelude.carbon +++ b/toolchain/check/testdata/impl/impl_assoc_const_with_prelude.carbon @@ -61,29 +61,29 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To.c80: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.3, @ImplicitAs.impl.4f9(%To.c80) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To.c80) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] // CHECK:STDOUT: %DivWith.type.fc9: type = generic_interface_type @DivWith [concrete] // CHECK:STDOUT: %DivWith.generic: %DivWith.type.fc9 = struct_value () [concrete] // CHECK:STDOUT: %DivWith.type.f3e: type = facet_type <@DivWith, @DivWith(Core.IntLiteral)> [concrete] -// CHECK:STDOUT: %Op.type.c64: type = fn_type @Op.2, @DivWith(Core.IntLiteral) [concrete] +// CHECK:STDOUT: %DivWith.Op.type.c64: type = fn_type @DivWith.Op, @DivWith(Core.IntLiteral) [concrete] // CHECK:STDOUT: %SubWith.type.378: type = generic_interface_type @SubWith [concrete] // CHECK:STDOUT: %SubWith.generic: %SubWith.type.378 = struct_value () [concrete] // CHECK:STDOUT: %SubWith.type.039: type = facet_type <@SubWith, @SubWith(Core.IntLiteral)> [concrete] -// CHECK:STDOUT: %Op.type.95d: type = fn_type @Op.5, @SubWith(Core.IntLiteral) [concrete] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.3, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %SubWith.Op.type.95d: type = fn_type @SubWith.Op, @SubWith(Core.IntLiteral) [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet.921: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet.921 [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.3(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet.921 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %tuple: %tuple.type.d07 = tuple_value (%int_1.5d2, %int_2.ef8) [concrete] // CHECK:STDOUT: %struct: %struct_type.a.b.fe2 = struct_value (%true, %tuple) [concrete] @@ -91,17 +91,17 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete] // CHECK:STDOUT: %SubWith.impl_witness.72e: = impl_witness imports.%SubWith.impl_witness_table.ad5 [concrete] // CHECK:STDOUT: %SubWith.facet: %SubWith.type.039 = facet_value Core.IntLiteral, (%SubWith.impl_witness.72e) [concrete] -// CHECK:STDOUT: %.4ae: type = fn_type_with_self_type %Op.type.95d, %SubWith.facet [concrete] -// CHECK:STDOUT: %Op.type.ff7: type = fn_type @Op.95 [concrete] -// CHECK:STDOUT: %Op.9f1: %Op.type.ff7 = struct_value () [concrete] -// CHECK:STDOUT: %Op.bound.02a: = bound_method %int_3, %Op.9f1 [concrete] +// CHECK:STDOUT: %.4ae: type = fn_type_with_self_type %SubWith.Op.type.95d, %SubWith.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.SubWith.impl.Op.type: type = fn_type @Core.IntLiteral.as.SubWith.impl.Op [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.SubWith.impl.Op: %Core.IntLiteral.as.SubWith.impl.Op.type = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.SubWith.impl.Op.bound: = bound_method %int_3, %Core.IntLiteral.as.SubWith.impl.Op [concrete] // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete] // CHECK:STDOUT: %DivWith.impl_witness.130: = impl_witness imports.%DivWith.impl_witness_table.cc4 [concrete] // CHECK:STDOUT: %DivWith.facet: %DivWith.type.f3e = facet_value Core.IntLiteral, (%DivWith.impl_witness.130) [concrete] -// CHECK:STDOUT: %.f62: type = fn_type_with_self_type %Op.type.c64, %DivWith.facet [concrete] -// CHECK:STDOUT: %Op.type.c21: type = fn_type @Op.96 [concrete] -// CHECK:STDOUT: %Op.32d: %Op.type.c21 = struct_value () [concrete] -// CHECK:STDOUT: %Op.bound.997: = bound_method %int_4, %Op.32d [concrete] +// CHECK:STDOUT: %.f62: type = fn_type_with_self_type %DivWith.Op.type.c64, %DivWith.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.DivWith.impl.Op.type: type = fn_type @Core.IntLiteral.as.DivWith.impl.Op [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.DivWith.impl.Op: %Core.IntLiteral.as.DivWith.impl.Op.type = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.DivWith.impl.Op.bound: = bound_method %int_4, %Core.IntLiteral.as.DivWith.impl.Op [concrete] // CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0.74b = %struct> [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table [concrete] // CHECK:STDOUT: } @@ -119,16 +119,16 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: %Core.Bool: %Bool.type = import_ref Core//prelude/types/bool, Bool, loaded [concrete = constants.%Bool] // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.SubWith: %SubWith.type.378 = import_ref Core//prelude/operators/arithmetic, SubWith, loaded [concrete = constants.%SubWith.generic] // CHECK:STDOUT: %Core.import_ref.abd97d.1 = import_ref Core//prelude/operators/arithmetic, loc115_57, unloaded -// CHECK:STDOUT: %Core.import_ref.252: %Op.type.ff7 = import_ref Core//prelude/operators/arithmetic, loc116_42, loaded [concrete = constants.%Op.9f1] -// CHECK:STDOUT: %SubWith.impl_witness_table.ad5 = impl_witness_table (%Core.import_ref.abd97d.1, %Core.import_ref.252), @SubWith.impl.e41 [concrete] +// CHECK:STDOUT: %Core.import_ref.252: %Core.IntLiteral.as.SubWith.impl.Op.type = import_ref Core//prelude/operators/arithmetic, loc116_42, loaded [concrete = constants.%Core.IntLiteral.as.SubWith.impl.Op] +// CHECK:STDOUT: %SubWith.impl_witness_table.ad5 = impl_witness_table (%Core.import_ref.abd97d.1, %Core.import_ref.252), @Core.IntLiteral.as.SubWith.impl [concrete] // CHECK:STDOUT: %Core.DivWith: %DivWith.type.fc9 = import_ref Core//prelude/operators/arithmetic, DivWith, loaded [concrete = constants.%DivWith.generic] // CHECK:STDOUT: %Core.import_ref.abd97d.2 = import_ref Core//prelude/operators/arithmetic, loc99_57, unloaded -// CHECK:STDOUT: %Core.import_ref.0316: %Op.type.c21 = import_ref Core//prelude/operators/arithmetic, loc100_42, loaded [concrete = constants.%Op.32d] -// CHECK:STDOUT: %DivWith.impl_witness_table.cc4 = impl_witness_table (%Core.import_ref.abd97d.2, %Core.import_ref.0316), @DivWith.impl.ba5 [concrete] +// CHECK:STDOUT: %Core.import_ref.0316: %Core.IntLiteral.as.DivWith.impl.Op.type = import_ref Core//prelude/operators/arithmetic, loc100_42, loaded [concrete = constants.%Core.IntLiteral.as.DivWith.impl.Op] +// CHECK:STDOUT: %DivWith.impl_witness_table.cc4 = impl_witness_table (%Core.import_ref.abd97d.2, %Core.import_ref.0316), @Core.IntLiteral.as.DivWith.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -138,7 +138,7 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @empty_tuple.type.as.I.impl [concrete] {} { // CHECK:STDOUT: %.loc6_7.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc6_7.2: type = converted %.loc6_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] @@ -153,19 +153,19 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: %int_2.loc6_46: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %.loc6_47.1: %tuple.type.f94 = tuple_literal (%int_1, %int_2.loc6_46) // CHECK:STDOUT: %.loc6_48.1: %struct_type.a.b.aa4 = struct_literal (%true, %.loc6_47.1) -// CHECK:STDOUT: %impl.elem0.loc6_47.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc6_47.1: = bound_method %int_1, %impl.elem0.loc6_47.1 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc6_47.1: = specific_function %impl.elem0.loc6_47.1, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc6_47.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc6_47.1: = bound_method %int_1, %impl.elem0.loc6_47.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc6_47.1: = specific_function %impl.elem0.loc6_47.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc6_47.2: = bound_method %int_1, %specific_fn.loc6_47.1 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc6_47.1: init %i32 = call %bound_method.loc6_47.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc6_47.2: %i32 = value_of_initializer %int.convert_checked.loc6_47.1 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6_47.1: init %i32 = call %bound_method.loc6_47.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc6_47.2: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6_47.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc6_47.3: %i32 = converted %int_1, %.loc6_47.2 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %impl.elem0.loc6_47.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc6_47.3: = bound_method %int_2.loc6_46, %impl.elem0.loc6_47.2 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc6_47.2: = specific_function %impl.elem0.loc6_47.2, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc6_47.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc6_47.3: = bound_method %int_2.loc6_46, %impl.elem0.loc6_47.2 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc6_47.2: = specific_function %impl.elem0.loc6_47.2, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc6_47.4: = bound_method %int_2.loc6_46, %specific_fn.loc6_47.2 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc6_47.2: init %i32 = call %bound_method.loc6_47.4(%int_2.loc6_46) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc6_47.4: %i32 = value_of_initializer %int.convert_checked.loc6_47.2 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6_47.2: init %i32 = call %bound_method.loc6_47.4(%int_2.loc6_46) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc6_47.4: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6_47.2 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc6_47.5: %i32 = converted %int_2.loc6_46, %.loc6_47.4 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %tuple.loc6_47: %tuple.type.d07 = tuple_value (%.loc6_47.3, %.loc6_47.5) [concrete = constants.%tuple] // CHECK:STDOUT: %.loc6_48.2: %tuple.type.d07 = converted %.loc6_47.1, %tuple.loc6_47 [concrete = constants.%tuple] @@ -180,34 +180,34 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: %.loc6_65: bool = not %false [concrete = constants.%true] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3] // CHECK:STDOUT: %int_2.loc6_86: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %impl.elem1.loc6_84: %.4ae = impl_witness_access constants.%SubWith.impl_witness.72e, element1 [concrete = constants.%Op.9f1] -// CHECK:STDOUT: %bound_method.loc6_84: = bound_method %int_3, %impl.elem1.loc6_84 [concrete = constants.%Op.bound.02a] -// CHECK:STDOUT: %int.ssub: init Core.IntLiteral = call %bound_method.loc6_84(%int_3, %int_2.loc6_86) [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem1.loc6_84: %.4ae = impl_witness_access constants.%SubWith.impl_witness.72e, element1 [concrete = constants.%Core.IntLiteral.as.SubWith.impl.Op] +// CHECK:STDOUT: %bound_method.loc6_84: = bound_method %int_3, %impl.elem1.loc6_84 [concrete = constants.%Core.IntLiteral.as.SubWith.impl.Op.bound] +// CHECK:STDOUT: %Core.IntLiteral.as.SubWith.impl.Op.call: init Core.IntLiteral = call %bound_method.loc6_84(%int_3, %int_2.loc6_86) [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete = constants.%int_4] // CHECK:STDOUT: %int_2.loc6_93: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %impl.elem1.loc6_91: %.f62 = impl_witness_access constants.%DivWith.impl_witness.130, element1 [concrete = constants.%Op.32d] -// CHECK:STDOUT: %bound_method.loc6_91: = bound_method %int_4, %impl.elem1.loc6_91 [concrete = constants.%Op.bound.997] -// CHECK:STDOUT: %int.sdiv: init Core.IntLiteral = call %bound_method.loc6_91(%int_4, %int_2.loc6_93) [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %.loc6_94.1: %tuple.type.f94 = tuple_literal (%int.ssub, %int.sdiv) +// CHECK:STDOUT: %impl.elem1.loc6_91: %.f62 = impl_witness_access constants.%DivWith.impl_witness.130, element1 [concrete = constants.%Core.IntLiteral.as.DivWith.impl.Op] +// CHECK:STDOUT: %bound_method.loc6_91: = bound_method %int_4, %impl.elem1.loc6_91 [concrete = constants.%Core.IntLiteral.as.DivWith.impl.Op.bound] +// CHECK:STDOUT: %Core.IntLiteral.as.DivWith.impl.Op.call: init Core.IntLiteral = call %bound_method.loc6_91(%int_4, %int_2.loc6_93) [concrete = constants.%int_2.ecc] +// CHECK:STDOUT: %.loc6_94.1: %tuple.type.f94 = tuple_literal (%Core.IntLiteral.as.SubWith.impl.Op.call, %Core.IntLiteral.as.DivWith.impl.Op.call) // CHECK:STDOUT: %.loc6_95.1: %struct_type.a.b.aa4 = struct_literal (%.loc6_65, %.loc6_94.1) -// CHECK:STDOUT: %impl.elem0.loc6_94.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc6_94.1: = bound_method %int.ssub, %impl.elem0.loc6_94.1 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc6_94.1: = specific_function %impl.elem0.loc6_94.1, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc6_94.2: = bound_method %int.ssub, %specific_fn.loc6_94.1 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %.loc6_84.1: Core.IntLiteral = value_of_initializer %int.ssub [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %.loc6_84.2: Core.IntLiteral = converted %int.ssub, %.loc6_84.1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %int.convert_checked.loc6_94.1: init %i32 = call %bound_method.loc6_94.2(%.loc6_84.2) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc6_94.2: %i32 = value_of_initializer %int.convert_checked.loc6_94.1 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc6_94.3: %i32 = converted %int.ssub, %.loc6_94.2 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %impl.elem0.loc6_94.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc6_94.3: = bound_method %int.sdiv, %impl.elem0.loc6_94.2 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc6_94.2: = specific_function %impl.elem0.loc6_94.2, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc6_94.4: = bound_method %int.sdiv, %specific_fn.loc6_94.2 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %.loc6_91.1: Core.IntLiteral = value_of_initializer %int.sdiv [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %.loc6_91.2: Core.IntLiteral = converted %int.sdiv, %.loc6_91.1 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %int.convert_checked.loc6_94.2: init %i32 = call %bound_method.loc6_94.4(%.loc6_91.2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc6_94.4: %i32 = value_of_initializer %int.convert_checked.loc6_94.2 [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc6_94.5: %i32 = converted %int.sdiv, %.loc6_94.4 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %impl.elem0.loc6_94.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc6_94.1: = bound_method %Core.IntLiteral.as.SubWith.impl.Op.call, %impl.elem0.loc6_94.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc6_94.1: = specific_function %impl.elem0.loc6_94.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc6_94.2: = bound_method %Core.IntLiteral.as.SubWith.impl.Op.call, %specific_fn.loc6_94.1 [concrete = constants.%bound_method.9a1] +// CHECK:STDOUT: %.loc6_84.1: Core.IntLiteral = value_of_initializer %Core.IntLiteral.as.SubWith.impl.Op.call [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %.loc6_84.2: Core.IntLiteral = converted %Core.IntLiteral.as.SubWith.impl.Op.call, %.loc6_84.1 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6_94.1: init %i32 = call %bound_method.loc6_94.2(%.loc6_84.2) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc6_94.2: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6_94.1 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc6_94.3: %i32 = converted %Core.IntLiteral.as.SubWith.impl.Op.call, %.loc6_94.2 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %impl.elem0.loc6_94.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc6_94.3: = bound_method %Core.IntLiteral.as.DivWith.impl.Op.call, %impl.elem0.loc6_94.2 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc6_94.2: = specific_function %impl.elem0.loc6_94.2, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc6_94.4: = bound_method %Core.IntLiteral.as.DivWith.impl.Op.call, %specific_fn.loc6_94.2 [concrete = constants.%bound_method.b92] +// CHECK:STDOUT: %.loc6_91.1: Core.IntLiteral = value_of_initializer %Core.IntLiteral.as.DivWith.impl.Op.call [concrete = constants.%int_2.ecc] +// CHECK:STDOUT: %.loc6_91.2: Core.IntLiteral = converted %Core.IntLiteral.as.DivWith.impl.Op.call, %.loc6_91.1 [concrete = constants.%int_2.ecc] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6_94.2: init %i32 = call %bound_method.loc6_94.4(%.loc6_91.2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc6_94.4: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6_94.2 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc6_94.5: %i32 = converted %Core.IntLiteral.as.DivWith.impl.Op.call, %.loc6_94.4 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %tuple.loc6_94: %tuple.type.d07 = tuple_value (%.loc6_94.3, %.loc6_94.5) [concrete = constants.%tuple] // CHECK:STDOUT: %.loc6_95.2: %tuple.type.d07 = converted %.loc6_94.1, %tuple.loc6_94 [concrete = constants.%tuple] // CHECK:STDOUT: %struct.loc6_95: %struct_type.a.b.fe2 = struct_value (%.loc6_65, %.loc6_95.2) [concrete = constants.%struct] @@ -217,7 +217,7 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: requirement_rewrite %impl.elem0.loc6_54, %.loc6_95.3 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @I.impl [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @empty_tuple.type.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness] // CHECK:STDOUT: %impl_witness_assoc_constant: %struct_type.a.b.fe2 = impl_witness_assoc_constant constants.%struct [concrete = constants.%struct] // CHECK:STDOUT: } @@ -238,7 +238,7 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: assoc_const X:! %struct_type.a.b.fe2; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: %.loc6_7.2 as %.loc6_14 { +// CHECK:STDOUT: impl @empty_tuple.type.as.I.impl: %.loc6_7.2 as %.loc6_14 { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%I.impl_witness // CHECK:STDOUT: } @@ -276,32 +276,32 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To.c80: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.3, @ImplicitAs.impl.4f9(%To.c80) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.3, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To.c80) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet.921: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet.921 [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.3(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet.921 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %tuple.21c: %tuple.type.d07 = tuple_value (%int_1.5d2, %int_2.ef8) [concrete] // CHECK:STDOUT: %struct.682: %struct_type.a.b.fe2 = struct_value (%true, %tuple.21c) [concrete] // CHECK:STDOUT: %false: bool = bool_literal false [concrete] // CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [concrete] // CHECK:STDOUT: %int_4.0c1: Core.IntLiteral = int_value 4 [concrete] -// CHECK:STDOUT: %Convert.bound.b30: = bound_method %int_3.1ba, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.047: = bound_method %int_3.1ba, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.b30: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.047: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_3.822: %i32 = int_value 3 [concrete] -// CHECK:STDOUT: %Convert.bound.ac3: = bound_method %int_4.0c1, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.1da: = bound_method %int_4.0c1, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ac3: = bound_method %int_4.0c1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.1da: = bound_method %int_4.0c1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_4.940: %i32 = int_value 4 [concrete] // CHECK:STDOUT: %tuple.ffd: %tuple.type.d07 = tuple_value (%int_3.822, %int_4.940) [concrete] // CHECK:STDOUT: %struct.68c: %struct_type.a.b.fe2 = struct_value (%false, %tuple.ffd) [concrete] @@ -318,8 +318,8 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: %Core.Bool: %Bool.type = import_ref Core//prelude/types/bool, Bool, loaded [concrete = constants.%Bool] // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -329,7 +329,7 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} -// CHECK:STDOUT: impl_decl @impl [concrete] {} { +// CHECK:STDOUT: impl_decl @empty_tuple.type.as..impl [concrete] {} { // CHECK:STDOUT: %.loc10_7.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc10_7.2: type = converted %.loc10_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] @@ -344,19 +344,19 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %.loc10_47.1: %tuple.type.f94 = tuple_literal (%int_1, %int_2) // CHECK:STDOUT: %.loc10_48.1: %struct_type.a.b.aa4 = struct_literal (%true, %.loc10_47.1) -// CHECK:STDOUT: %impl.elem0.loc10_47.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc10_47.1: = bound_method %int_1, %impl.elem0.loc10_47.1 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc10_47.1: = specific_function %impl.elem0.loc10_47.1, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc10_47.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc10_47.1: = bound_method %int_1, %impl.elem0.loc10_47.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc10_47.1: = specific_function %impl.elem0.loc10_47.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc10_47.2: = bound_method %int_1, %specific_fn.loc10_47.1 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc10_47.1: init %i32 = call %bound_method.loc10_47.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc10_47.2: %i32 = value_of_initializer %int.convert_checked.loc10_47.1 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10_47.1: init %i32 = call %bound_method.loc10_47.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc10_47.2: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10_47.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc10_47.3: %i32 = converted %int_1, %.loc10_47.2 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %impl.elem0.loc10_47.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc10_47.3: = bound_method %int_2, %impl.elem0.loc10_47.2 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc10_47.2: = specific_function %impl.elem0.loc10_47.2, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc10_47.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc10_47.3: = bound_method %int_2, %impl.elem0.loc10_47.2 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc10_47.2: = specific_function %impl.elem0.loc10_47.2, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc10_47.4: = bound_method %int_2, %specific_fn.loc10_47.2 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc10_47.2: init %i32 = call %bound_method.loc10_47.4(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc10_47.4: %i32 = value_of_initializer %int.convert_checked.loc10_47.2 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10_47.2: init %i32 = call %bound_method.loc10_47.4(%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc10_47.4: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10_47.2 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc10_47.5: %i32 = converted %int_2, %.loc10_47.4 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %tuple.loc10_47: %tuple.type.d07 = tuple_value (%.loc10_47.3, %.loc10_47.5) [concrete = constants.%tuple.21c] // CHECK:STDOUT: %.loc10_48.2: %tuple.type.d07 = converted %.loc10_47.1, %tuple.loc10_47 [concrete = constants.%tuple.21c] @@ -372,19 +372,19 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete = constants.%int_4.0c1] // CHECK:STDOUT: %.loc10_82.1: %tuple.type.f94 = tuple_literal (%int_3, %int_4) // CHECK:STDOUT: %.loc10_83.1: %struct_type.a.b.aa4 = struct_literal (%false, %.loc10_82.1) -// CHECK:STDOUT: %impl.elem0.loc10_82.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc10_82.1: = bound_method %int_3, %impl.elem0.loc10_82.1 [concrete = constants.%Convert.bound.b30] -// CHECK:STDOUT: %specific_fn.loc10_82.1: = specific_function %impl.elem0.loc10_82.1, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc10_82.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc10_82.1: = bound_method %int_3, %impl.elem0.loc10_82.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.b30] +// CHECK:STDOUT: %specific_fn.loc10_82.1: = specific_function %impl.elem0.loc10_82.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc10_82.2: = bound_method %int_3, %specific_fn.loc10_82.1 [concrete = constants.%bound_method.047] -// CHECK:STDOUT: %int.convert_checked.loc10_82.1: init %i32 = call %bound_method.loc10_82.2(%int_3) [concrete = constants.%int_3.822] -// CHECK:STDOUT: %.loc10_82.2: %i32 = value_of_initializer %int.convert_checked.loc10_82.1 [concrete = constants.%int_3.822] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10_82.1: init %i32 = call %bound_method.loc10_82.2(%int_3) [concrete = constants.%int_3.822] +// CHECK:STDOUT: %.loc10_82.2: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10_82.1 [concrete = constants.%int_3.822] // CHECK:STDOUT: %.loc10_82.3: %i32 = converted %int_3, %.loc10_82.2 [concrete = constants.%int_3.822] -// CHECK:STDOUT: %impl.elem0.loc10_82.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc10_82.3: = bound_method %int_4, %impl.elem0.loc10_82.2 [concrete = constants.%Convert.bound.ac3] -// CHECK:STDOUT: %specific_fn.loc10_82.2: = specific_function %impl.elem0.loc10_82.2, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc10_82.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc10_82.3: = bound_method %int_4, %impl.elem0.loc10_82.2 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ac3] +// CHECK:STDOUT: %specific_fn.loc10_82.2: = specific_function %impl.elem0.loc10_82.2, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc10_82.4: = bound_method %int_4, %specific_fn.loc10_82.2 [concrete = constants.%bound_method.1da] -// CHECK:STDOUT: %int.convert_checked.loc10_82.2: init %i32 = call %bound_method.loc10_82.4(%int_4) [concrete = constants.%int_4.940] -// CHECK:STDOUT: %.loc10_82.4: %i32 = value_of_initializer %int.convert_checked.loc10_82.2 [concrete = constants.%int_4.940] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10_82.2: init %i32 = call %bound_method.loc10_82.4(%int_4) [concrete = constants.%int_4.940] +// CHECK:STDOUT: %.loc10_82.4: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10_82.2 [concrete = constants.%int_4.940] // CHECK:STDOUT: %.loc10_82.5: %i32 = converted %int_4, %.loc10_82.4 [concrete = constants.%int_4.940] // CHECK:STDOUT: %tuple.loc10_82: %tuple.type.d07 = tuple_value (%.loc10_82.3, %.loc10_82.5) [concrete = constants.%tuple.ffd] // CHECK:STDOUT: %.loc10_83.2: %tuple.type.d07 = converted %.loc10_82.1, %tuple.loc10_82 [concrete = constants.%tuple.ffd] @@ -413,7 +413,7 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: assoc_const X:! %struct_type.a.b.fe2; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl: %.loc10_7.2 as %.loc10_14 { +// CHECK:STDOUT: impl @empty_tuple.type.as..impl: %.loc10_7.2 as %.loc10_14 { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/impl_forall.carbon b/toolchain/check/testdata/impl/impl_forall.carbon index 5a5d858ba11f..789024cd823c 100644 --- a/toolchain/check/testdata/impl/impl_forall.carbon +++ b/toolchain/check/testdata/impl/impl_forall.carbon @@ -25,15 +25,15 @@ impl forall [T:! type] T as Simple { // CHECK:STDOUT: constants { // CHECK:STDOUT: %Simple.type: type = facet_type <@Simple> [concrete] // CHECK:STDOUT: %Self: %Simple.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.e2e: type = fn_type @F.loc16 [concrete] -// CHECK:STDOUT: %F.df8: %F.type.e2e = struct_value () [concrete] +// CHECK:STDOUT: %Simple.F.type: type = fn_type @Simple.F [concrete] +// CHECK:STDOUT: %Simple.F: %Simple.F.type = struct_value () [concrete] // CHECK:STDOUT: %Simple.assoc_type: type = assoc_entity_type @Simple [concrete] -// CHECK:STDOUT: %assoc0: %Simple.assoc_type = assoc_entity element0, @Simple.%F.decl [concrete] +// CHECK:STDOUT: %assoc0: %Simple.assoc_type = assoc_entity element0, @Simple.%Simple.F.decl [concrete] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %pattern_type: type = pattern_type type [concrete] -// CHECK:STDOUT: %Simple.impl_witness: = impl_witness file.%Simple.impl_witness_table, @Simple.impl(%T) [symbolic] -// CHECK:STDOUT: %F.type.1e1: type = fn_type @F.loc20, @Simple.impl(%T) [symbolic] -// CHECK:STDOUT: %F.4c3: %F.type.1e1 = struct_value () [symbolic] +// CHECK:STDOUT: %Simple.impl_witness: = impl_witness file.%Simple.impl_witness_table, @T.as.Simple.impl(%T) [symbolic] +// CHECK:STDOUT: %T.as.Simple.impl.F.type: type = fn_type @T.as.Simple.impl.F, @T.as.Simple.impl(%T) [symbolic] +// CHECK:STDOUT: %T.as.Simple.impl.F: %T.as.Simple.impl.F.type = struct_value () [symbolic] // CHECK:STDOUT: %Simple.facet: %Simple.type = facet_value %T, (%Simple.impl_witness) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -42,50 +42,50 @@ impl forall [T:! type] T as Simple { // CHECK:STDOUT: .Simple = %Simple.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Simple.decl: type = interface_decl @Simple [concrete = constants.%Simple.type] {} {} -// CHECK:STDOUT: impl_decl @Simple.impl [concrete] { +// CHECK:STDOUT: impl_decl @T.as.Simple.impl [concrete] { // CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc19_14.1 [symbolic = %T.loc19_14.2 (constants.%T)] +// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc19_14.2 [symbolic = %T.loc19_14.1 (constants.%T)] // CHECK:STDOUT: %Simple.ref: type = name_ref Simple, file.%Simple.decl [concrete = constants.%Simple.type] -// CHECK:STDOUT: %T.loc19_14.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc19_14.2 (constants.%T)] +// CHECK:STDOUT: %T.loc19_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc19_14.1 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %Simple.impl_witness_table = impl_witness_table (@Simple.impl.%F.decl), @Simple.impl [concrete] -// CHECK:STDOUT: %Simple.impl_witness: = impl_witness %Simple.impl_witness_table, @Simple.impl(constants.%T) [symbolic = @Simple.impl.%Simple.impl_witness (constants.%Simple.impl_witness)] +// CHECK:STDOUT: %Simple.impl_witness_table = impl_witness_table (@T.as.Simple.impl.%T.as.Simple.impl.F.decl), @T.as.Simple.impl [concrete] +// CHECK:STDOUT: %Simple.impl_witness: = impl_witness %Simple.impl_witness_table, @T.as.Simple.impl(constants.%T) [symbolic = @T.as.Simple.impl.%Simple.impl_witness (constants.%Simple.impl_witness)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Simple { // CHECK:STDOUT: %Self: %Simple.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %F.decl: %F.type.e2e = fn_decl @F.loc16 [concrete = constants.%F.df8] {} {} -// CHECK:STDOUT: %assoc0: %Simple.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %Simple.F.decl: %Simple.F.type = fn_decl @Simple.F [concrete = constants.%Simple.F] {} {} +// CHECK:STDOUT: %assoc0: %Simple.assoc_type = assoc_entity element0, %Simple.F.decl [concrete = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F = %assoc0 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%Simple.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @Simple.impl(%T.loc19_14.1: type) { -// CHECK:STDOUT: %T.loc19_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc19_14.2 (constants.%T)] -// CHECK:STDOUT: %Simple.impl_witness: = impl_witness file.%Simple.impl_witness_table, @Simple.impl(%T.loc19_14.2) [symbolic = %Simple.impl_witness (constants.%Simple.impl_witness)] +// CHECK:STDOUT: generic impl @T.as.Simple.impl(%T.loc19_14.2: type) { +// CHECK:STDOUT: %T.loc19_14.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc19_14.1 (constants.%T)] +// CHECK:STDOUT: %Simple.impl_witness: = impl_witness file.%Simple.impl_witness_table, @T.as.Simple.impl(%T.loc19_14.1) [symbolic = %Simple.impl_witness (constants.%Simple.impl_witness)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type: type = fn_type @F.loc20, @Simple.impl(%T.loc19_14.2) [symbolic = %F.type (constants.%F.type.1e1)] -// CHECK:STDOUT: %F: @Simple.impl.%F.type (%F.type.1e1) = struct_value () [symbolic = %F (constants.%F.4c3)] +// CHECK:STDOUT: %T.as.Simple.impl.F.type: type = fn_type @T.as.Simple.impl.F, @T.as.Simple.impl(%T.loc19_14.1) [symbolic = %T.as.Simple.impl.F.type (constants.%T.as.Simple.impl.F.type)] +// CHECK:STDOUT: %T.as.Simple.impl.F: @T.as.Simple.impl.%T.as.Simple.impl.F.type (%T.as.Simple.impl.F.type) = struct_value () [symbolic = %T.as.Simple.impl.F (constants.%T.as.Simple.impl.F)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %T.ref as %Simple.ref { -// CHECK:STDOUT: %F.decl: @Simple.impl.%F.type (%F.type.1e1) = fn_decl @F.loc20 [symbolic = @Simple.impl.%F (constants.%F.4c3)] {} {} +// CHECK:STDOUT: %T.as.Simple.impl.F.decl: @T.as.Simple.impl.%T.as.Simple.impl.F.type (%T.as.Simple.impl.F.type) = fn_decl @T.as.Simple.impl.F [symbolic = @T.as.Simple.impl.%T.as.Simple.impl.F (constants.%T.as.Simple.impl.F)] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %T.as.Simple.impl.F.decl // CHECK:STDOUT: witness = file.%Simple.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc16(@Simple.%Self: %Simple.type) { +// CHECK:STDOUT: generic fn @Simple.F(@Simple.%Self: %Simple.type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc20(@Simple.impl.%T.loc19_14.1: type) { +// CHECK:STDOUT: generic fn @T.as.Simple.impl.F(@T.as.Simple.impl.%T.loc19_14.2: type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: fn() { @@ -94,18 +94,18 @@ impl forall [T:! type] T as Simple { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc16(constants.%Self) {} +// CHECK:STDOUT: specific @Simple.F(constants.%Self) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @Simple.impl(constants.%T) { -// CHECK:STDOUT: %T.loc19_14.2 => constants.%T +// CHECK:STDOUT: specific @T.as.Simple.impl(constants.%T) { +// CHECK:STDOUT: %T.loc19_14.1 => constants.%T // CHECK:STDOUT: %Simple.impl_witness => constants.%Simple.impl_witness // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.1e1 -// CHECK:STDOUT: %F => constants.%F.4c3 +// CHECK:STDOUT: %T.as.Simple.impl.F.type => constants.%T.as.Simple.impl.F.type +// CHECK:STDOUT: %T.as.Simple.impl.F => constants.%T.as.Simple.impl.F // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc20(constants.%T) {} +// CHECK:STDOUT: specific @T.as.Simple.impl.F(constants.%T) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc16(constants.%Simple.facet) {} +// CHECK:STDOUT: specific @Simple.F(constants.%Simple.facet) {} // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/impl_thunk.carbon b/toolchain/check/testdata/impl/impl_thunk.carbon index a1fc4100660e..4433e79fbc44 100644 --- a/toolchain/check/testdata/impl/impl_thunk.carbon +++ b/toolchain/check/testdata/impl/impl_thunk.carbon @@ -322,23 +322,23 @@ impl () as I({}) { // CHECK:STDOUT: %pattern_type.231: type = pattern_type %struct_type.b.a.40c [concrete] // CHECK:STDOUT: %struct_type.d.c.b36: type = struct_type {.d: %empty_struct_type, .c: %empty_tuple.type} [concrete] // CHECK:STDOUT: %pattern_type.844: type = pattern_type %struct_type.d.c.b36 [concrete] -// CHECK:STDOUT: %F.type.39e918.1: type = fn_type @F.loc10_48.1 [concrete] -// CHECK:STDOUT: %F.c04b92.1: %F.type.39e918.1 = struct_value () [concrete] -// CHECK:STDOUT: %F.type.39e918.2: type = fn_type @F.loc10_48.2 [concrete] -// CHECK:STDOUT: %F.c04b92.2: %F.type.39e918.2 = struct_value () [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.type.39e918.1: type = fn_type @empty_tuple.type.as.I.impl.F.loc10_48.1 [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.c04b92.1: %empty_tuple.type.as.I.impl.F.type.39e918.1 = struct_value () [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.type.39e918.2: type = fn_type @empty_tuple.type.as.I.impl.F.loc10_48.2 [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.c04b92.2: %empty_tuple.type.as.I.impl.F.type.39e918.2 = struct_value () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %struct: %struct_type.c.d.15a = struct_value (%empty_tuple, %empty_struct) [concrete] -// CHECK:STDOUT: %Op.type.afe: type = fn_type @Op.1, @Destroy.impl(%struct_type.d.c.b36) [concrete] -// CHECK:STDOUT: %Op.742: %Op.type.afe = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.afe: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%struct_type.d.c.b36) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.742: %T.as.Destroy.impl.Op.type.afe = struct_value () [concrete] // CHECK:STDOUT: %ptr.eab: type = ptr_type %struct_type.d.c.b36 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: %.loc8_7.2 as %I.ref { -// CHECK:STDOUT: %F.decl.loc10_48.1: %F.type.39e918.1 = fn_decl @F.loc10_48.1 [concrete = constants.%F.c04b92.1] { +// CHECK:STDOUT: impl @empty_tuple.type.as.I.impl: %.loc8_7.2 as %I.ref { +// CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.decl.loc10_48.1: %empty_tuple.type.as.I.impl.F.type.39e918.1 = fn_decl @empty_tuple.type.as.I.impl.F.loc10_48.1 [concrete = constants.%empty_tuple.type.as.I.impl.F.c04b92.1] { // CHECK:STDOUT: %y.patt: %pattern_type.231 = binding_pattern y [concrete] // CHECK:STDOUT: %y.param_patt: %pattern_type.231 = value_param_pattern %y.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.844 = return_slot_pattern [concrete] @@ -361,27 +361,27 @@ impl () as I({}) { // CHECK:STDOUT: %return.param: ref %struct_type.d.c.b36 = out_param call_param1 // CHECK:STDOUT: %return: ref %struct_type.d.c.b36 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl.loc10_48.2: %F.type.39e918.2 = fn_decl @F.loc10_48.2 [concrete = constants.%F.c04b92.2] { +// CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.decl.loc10_48.2: %empty_tuple.type.as.I.impl.F.type.39e918.2 = fn_decl @empty_tuple.type.as.I.impl.F.loc10_48.2 [concrete = constants.%empty_tuple.type.as.I.impl.F.c04b92.2] { // CHECK:STDOUT: // CHECK:STDOUT: } { // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl.loc10_48.1 +// CHECK:STDOUT: .F = %empty_tuple.type.as.I.impl.F.decl.loc10_48.1 // CHECK:STDOUT: witness = file.%I.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc10_48.1(%y.param: %struct_type.b.a.40c) -> %return.param: %struct_type.d.c.b36; +// CHECK:STDOUT: fn @empty_tuple.type.as.I.impl.F.loc10_48.1(%y.param: %struct_type.b.a.40c) -> %return.param: %struct_type.d.c.b36; // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc10_48.2(%x.param: %struct_type.a.b.391) -> %return.param: %struct_type.c.d.15a [thunk @I.impl.%F.decl.loc10_48.1] { +// CHECK:STDOUT: fn @empty_tuple.type.as.I.impl.F.loc10_48.2(%x.param: %struct_type.a.b.391) -> %return.param: %struct_type.c.d.15a [thunk @empty_tuple.type.as.I.impl.%empty_tuple.type.as.I.impl.F.decl.loc10_48.1] { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %F.ref: %F.type.39e918.1 = name_ref F, @I.impl.%F.decl.loc10_48.1 [concrete = constants.%F.c04b92.1] +// CHECK:STDOUT: %F.ref: %empty_tuple.type.as.I.impl.F.type.39e918.1 = name_ref F, @empty_tuple.type.as.I.impl.%empty_tuple.type.as.I.impl.F.decl.loc10_48.1 [concrete = constants.%empty_tuple.type.as.I.impl.F.c04b92.1] // CHECK:STDOUT: // CHECK:STDOUT: %.loc10_48.1: ref %struct_type.d.c.b36 = temporary_storage // CHECK:STDOUT: -// CHECK:STDOUT: %F.call: init %struct_type.d.c.b36 = call %F.ref(%.loc5_9.3) to %.loc10_48.1 -// CHECK:STDOUT: %.loc10_48.2: ref %struct_type.d.c.b36 = temporary %.loc10_48.1, %F.call +// CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.call: init %struct_type.d.c.b36 = call %F.ref(%.loc5_9.3) to %.loc10_48.1 +// CHECK:STDOUT: %.loc10_48.2: ref %struct_type.d.c.b36 = temporary %.loc10_48.1, %empty_tuple.type.as.I.impl.F.call // CHECK:STDOUT: %.loc10_48.3: ref %empty_tuple.type = struct_access %.loc10_48.2, element1 // CHECK:STDOUT: %.loc10_48.4: ref %empty_tuple.type = struct_access %return, element1 // CHECK:STDOUT: %.loc10_48.5: init %empty_tuple.type = tuple_init () to %.loc10_48.4 [concrete = constants.%empty_tuple] @@ -391,12 +391,12 @@ impl () as I({}) { // CHECK:STDOUT: %.loc10_48.9: init %empty_struct_type = struct_init () to %.loc10_48.8 [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc10_48.10: init %empty_struct_type = converted %.loc10_48.7, %.loc10_48.9 [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc10_48.11: init %struct_type.c.d.15a = struct_init (%.loc10_48.6, %.loc10_48.10) to %return [concrete = constants.%struct] -// CHECK:STDOUT: %.loc10_48.12: init %struct_type.c.d.15a = converted %F.call, %.loc10_48.11 [concrete = constants.%struct] -// CHECK:STDOUT: %Op.bound: = bound_method %.loc10_48.1, constants.%Op.742 +// CHECK:STDOUT: %.loc10_48.12: init %struct_type.c.d.15a = converted %empty_tuple.type.as.I.impl.F.call, %.loc10_48.11 [concrete = constants.%struct] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc10_48.1, constants.%T.as.Destroy.impl.Op.742 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc10_48.1, %Op.specific_fn +// CHECK:STDOUT: %bound_method: = bound_method %.loc10_48.1, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.eab = addr_of %.loc10_48.1 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %.loc10_48.12 to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -411,18 +411,18 @@ impl () as I({}) { // CHECK:STDOUT: %pattern_type.5f8: type = pattern_type %ptr.6db [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] // CHECK:STDOUT: %pattern_type.44a: type = pattern_type %ptr.019 [concrete] -// CHECK:STDOUT: %F.type.f1b0b1.1: type = fn_type @F.loc14_39.1 [concrete] -// CHECK:STDOUT: %F.5161e9.1: %F.type.f1b0b1.1 = struct_value () [concrete] +// CHECK:STDOUT: %B.as.X.impl.F.type.f1b0b1.1: type = fn_type @B.as.X.impl.F.loc14_39.1 [concrete] +// CHECK:STDOUT: %B.as.X.impl.F.5161e9.1: %B.as.X.impl.F.type.f1b0b1.1 = struct_value () [concrete] // CHECK:STDOUT: %ptr.e79: type = ptr_type %B [concrete] -// CHECK:STDOUT: %F.type.f1b0b1.2: type = fn_type @F.loc14_39.2 [concrete] -// CHECK:STDOUT: %F.5161e9.2: %F.type.f1b0b1.2 = struct_value () [concrete] +// CHECK:STDOUT: %B.as.X.impl.F.type.f1b0b1.2: type = fn_type @B.as.X.impl.F.loc14_39.2 [concrete] +// CHECK:STDOUT: %B.as.X.impl.F.5161e9.2: %B.as.X.impl.F.type.f1b0b1.2 = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @X.impl: %B.ref as %X.ref { -// CHECK:STDOUT: %F.decl.loc14_39.1: %F.type.f1b0b1.1 = fn_decl @F.loc14_39.1 [concrete = constants.%F.5161e9.1] { +// CHECK:STDOUT: impl @B.as.X.impl: %B.ref as %X.ref { +// CHECK:STDOUT: %B.as.X.impl.F.decl.loc14_39.1: %B.as.X.impl.F.type.f1b0b1.1 = fn_decl @B.as.X.impl.F.loc14_39.1 [concrete = constants.%B.as.X.impl.F.5161e9.1] { // CHECK:STDOUT: %self.patt: %pattern_type.5f8 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.5f8 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %.loc14_8: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] @@ -448,7 +448,7 @@ impl () as I({}) { // CHECK:STDOUT: %return.param: ref %ptr.019 = out_param call_param2 // CHECK:STDOUT: %return: ref %ptr.019 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl.loc14_39.2: %F.type.f1b0b1.2 = fn_decl @F.loc14_39.2 [concrete = constants.%F.5161e9.2] { +// CHECK:STDOUT: %B.as.X.impl.F.decl.loc14_39.2: %B.as.X.impl.F.type.f1b0b1.2 = fn_decl @B.as.X.impl.F.loc14_39.2 [concrete = constants.%B.as.X.impl.F.5161e9.2] { // CHECK:STDOUT: // CHECK:STDOUT: } { // CHECK:STDOUT: @@ -457,25 +457,25 @@ impl () as I({}) { // CHECK:STDOUT: !members: // CHECK:STDOUT: .A = // CHECK:STDOUT: .C = -// CHECK:STDOUT: .F = %F.decl.loc14_39.1 +// CHECK:STDOUT: .F = %B.as.X.impl.F.decl.loc14_39.1 // CHECK:STDOUT: witness = file.%X.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc14_39.1(%self.param: %ptr.6db, %other.param: %ptr.6db) -> %ptr.019; +// CHECK:STDOUT: fn @B.as.X.impl.F.loc14_39.1(%self.param: %ptr.6db, %other.param: %ptr.6db) -> %ptr.019; // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc14_39.2(%self.param: %ptr.e79, %other.param: %ptr.e79) -> %ptr.e79 [thunk @X.impl.%F.decl.loc14_39.1] { +// CHECK:STDOUT: fn @B.as.X.impl.F.loc14_39.2(%self.param: %ptr.e79, %other.param: %ptr.e79) -> %ptr.e79 [thunk @B.as.X.impl.%B.as.X.impl.F.decl.loc14_39.1] { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %F.ref: %F.type.f1b0b1.1 = name_ref F, @X.impl.%F.decl.loc14_39.1 [concrete = constants.%F.5161e9.1] +// CHECK:STDOUT: %F.ref: %B.as.X.impl.F.type.f1b0b1.1 = name_ref F, @B.as.X.impl.%B.as.X.impl.F.decl.loc14_39.1 [concrete = constants.%B.as.X.impl.F.5161e9.1] // CHECK:STDOUT: -// CHECK:STDOUT: %F.bound: = bound_method %.loc9_17.1, %F.ref +// CHECK:STDOUT: %B.as.X.impl.F.bound: = bound_method %.loc9_17.1, %F.ref // CHECK:STDOUT: -// CHECK:STDOUT: %F.call: init %ptr.019 = call %F.bound(%.loc9_17.4, %.loc9_31.3) -// CHECK:STDOUT: %.loc14_39.1: %ptr.019 = value_of_initializer %F.call -// CHECK:STDOUT: %.loc14_39.2: %ptr.019 = converted %F.call, %.loc14_39.1 +// CHECK:STDOUT: %B.as.X.impl.F.call: init %ptr.019 = call %B.as.X.impl.F.bound(%.loc9_17.4, %.loc9_31.3) +// CHECK:STDOUT: %.loc14_39.1: %ptr.019 = value_of_initializer %B.as.X.impl.F.call +// CHECK:STDOUT: %.loc14_39.2: %ptr.019 = converted %B.as.X.impl.F.call, %.loc14_39.1 // CHECK:STDOUT: %.loc14_39.3: ref %C = deref %.loc14_39.2 // CHECK:STDOUT: %.loc14_39.4: ref %B = class_element_access %.loc14_39.3, element0 // CHECK:STDOUT: %addr.loc14: %ptr.e79 = addr_of %.loc14_39.4 -// CHECK:STDOUT: %.loc14_39.5: %ptr.e79 = converted %F.call, %addr.loc14 +// CHECK:STDOUT: %.loc14_39.5: %ptr.e79 = converted %B.as.X.impl.F.call, %addr.loc14 // CHECK:STDOUT: return %.loc14_39.5 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -486,17 +486,17 @@ impl () as I({}) { // CHECK:STDOUT: %B: type = class_type @B [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %pattern_type.c10: type = pattern_type %A [concrete] -// CHECK:STDOUT: %F.type.f1b0b1.1: type = fn_type @F.loc13_26.1 [concrete] -// CHECK:STDOUT: %F.5161e9.1: %F.type.f1b0b1.1 = struct_value () [concrete] -// CHECK:STDOUT: %F.type.f1b0b1.2: type = fn_type @F.loc13_26.2 [concrete] -// CHECK:STDOUT: %F.5161e9.2: %F.type.f1b0b1.2 = struct_value () [concrete] +// CHECK:STDOUT: %B.as.X.impl.F.type.f1b0b1.1: type = fn_type @B.as.X.impl.F.loc13_26.1 [concrete] +// CHECK:STDOUT: %B.as.X.impl.F.5161e9.1: %B.as.X.impl.F.type.f1b0b1.1 = struct_value () [concrete] +// CHECK:STDOUT: %B.as.X.impl.F.type.f1b0b1.2: type = fn_type @B.as.X.impl.F.loc13_26.2 [concrete] +// CHECK:STDOUT: %B.as.X.impl.F.5161e9.2: %B.as.X.impl.F.type.f1b0b1.2 = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @X.impl: %B.ref as %X.ref { -// CHECK:STDOUT: %F.decl.loc13_26.1: %F.type.f1b0b1.1 = fn_decl @F.loc13_26.1 [concrete = constants.%F.5161e9.1] { +// CHECK:STDOUT: impl @B.as.X.impl: %B.ref as %X.ref { +// CHECK:STDOUT: %B.as.X.impl.F.decl.loc13_26.1: %B.as.X.impl.F.type.f1b0b1.1 = fn_decl @B.as.X.impl.F.loc13_26.1 [concrete = constants.%B.as.X.impl.F.5161e9.1] { // CHECK:STDOUT: %self.patt: %pattern_type.c10 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.c10 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %other.patt: %pattern_type.c10 = binding_pattern other [concrete] @@ -509,7 +509,7 @@ impl () as I({}) { // CHECK:STDOUT: %A.ref.loc13_24: type = name_ref A, file.%A.decl [concrete = constants.%A] // CHECK:STDOUT: %other: %A = bind_name other, %other.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl.loc13_26.2: %F.type.f1b0b1.2 = fn_decl @F.loc13_26.2 [concrete = constants.%F.5161e9.2] { +// CHECK:STDOUT: %B.as.X.impl.F.decl.loc13_26.2: %B.as.X.impl.F.type.f1b0b1.2 = fn_decl @B.as.X.impl.F.loc13_26.2 [concrete = constants.%B.as.X.impl.F.5161e9.2] { // CHECK:STDOUT: // CHECK:STDOUT: } { // CHECK:STDOUT: @@ -517,19 +517,19 @@ impl () as I({}) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .A = -// CHECK:STDOUT: .F = %F.decl.loc13_26.1 +// CHECK:STDOUT: .F = %B.as.X.impl.F.decl.loc13_26.1 // CHECK:STDOUT: witness = file.%X.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc13_26.1(%self.param: %A, %other.param: %A); +// CHECK:STDOUT: fn @B.as.X.impl.F.loc13_26.1(%self.param: %A, %other.param: %A); // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc13_26.2(%self.param: %B, %other.param: %B) [thunk @X.impl.%F.decl.loc13_26.1] { +// CHECK:STDOUT: fn @B.as.X.impl.F.loc13_26.2(%self.param: %B, %other.param: %B) [thunk @B.as.X.impl.%B.as.X.impl.F.decl.loc13_26.1] { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %F.ref: %F.type.f1b0b1.1 = name_ref F, @X.impl.%F.decl.loc13_26.1 [concrete = constants.%F.5161e9.1] +// CHECK:STDOUT: %F.ref: %B.as.X.impl.F.type.f1b0b1.1 = name_ref F, @B.as.X.impl.%B.as.X.impl.F.decl.loc13_26.1 [concrete = constants.%B.as.X.impl.F.5161e9.1] // CHECK:STDOUT: -// CHECK:STDOUT: %F.bound: = bound_method %self.ref, %F.ref +// CHECK:STDOUT: %B.as.X.impl.F.bound: = bound_method %self.ref, %F.ref // CHECK:STDOUT: -// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.bound(%.loc8_12.3, %.loc8_25.3) +// CHECK:STDOUT: %B.as.X.impl.F.call: init %empty_tuple.type = call %B.as.X.impl.F.bound(%.loc8_12.3, %.loc8_25.3) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -544,18 +544,18 @@ impl () as I({}) { // CHECK:STDOUT: %pattern_type.5f8: type = pattern_type %ptr.6db [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] // CHECK:STDOUT: %pattern_type.44a: type = pattern_type %ptr.019 [concrete] -// CHECK:STDOUT: %F.type.f1b0b1.1: type = fn_type @F.loc14_39.1 [concrete] -// CHECK:STDOUT: %F.5161e9.1: %F.type.f1b0b1.1 = struct_value () [concrete] +// CHECK:STDOUT: %B.as.X.impl.F.type.f1b0b1.1: type = fn_type @B.as.X.impl.F.loc14_39.1 [concrete] +// CHECK:STDOUT: %B.as.X.impl.F.5161e9.1: %B.as.X.impl.F.type.f1b0b1.1 = struct_value () [concrete] // CHECK:STDOUT: %ptr.e79: type = ptr_type %B [concrete] -// CHECK:STDOUT: %F.type.f1b0b1.2: type = fn_type @F.loc14_39.2 [concrete] -// CHECK:STDOUT: %F.5161e9.2: %F.type.f1b0b1.2 = struct_value () [concrete] +// CHECK:STDOUT: %B.as.X.impl.F.type.f1b0b1.2: type = fn_type @B.as.X.impl.F.loc14_39.2 [concrete] +// CHECK:STDOUT: %B.as.X.impl.F.5161e9.2: %B.as.X.impl.F.type.f1b0b1.2 = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @X.impl: %B.ref as %X.ref { -// CHECK:STDOUT: %F.decl.loc14_39.1: %F.type.f1b0b1.1 = fn_decl @F.loc14_39.1 [concrete = constants.%F.5161e9.1] { +// CHECK:STDOUT: impl @B.as.X.impl: %B.ref as %X.ref { +// CHECK:STDOUT: %B.as.X.impl.F.decl.loc14_39.1: %B.as.X.impl.F.type.f1b0b1.1 = fn_decl @B.as.X.impl.F.loc14_39.1 [concrete = constants.%B.as.X.impl.F.5161e9.1] { // CHECK:STDOUT: %self.patt: %pattern_type.5f8 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.5f8 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %.loc14_8: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] @@ -581,7 +581,7 @@ impl () as I({}) { // CHECK:STDOUT: %return.param: ref %ptr.019 = out_param call_param2 // CHECK:STDOUT: %return: ref %ptr.019 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl.loc14_39.2: %F.type.f1b0b1.2 = fn_decl @F.loc14_39.2 [concrete = constants.%F.5161e9.2] { +// CHECK:STDOUT: %B.as.X.impl.F.decl.loc14_39.2: %B.as.X.impl.F.type.f1b0b1.2 = fn_decl @B.as.X.impl.F.loc14_39.2 [concrete = constants.%B.as.X.impl.F.5161e9.2] { // CHECK:STDOUT: // CHECK:STDOUT: } { // CHECK:STDOUT: @@ -590,25 +590,25 @@ impl () as I({}) { // CHECK:STDOUT: !members: // CHECK:STDOUT: .A = // CHECK:STDOUT: .C = -// CHECK:STDOUT: .F = %F.decl.loc14_39.1 +// CHECK:STDOUT: .F = %B.as.X.impl.F.decl.loc14_39.1 // CHECK:STDOUT: witness = file.%X.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc14_39.1(%self.param: %ptr.6db, %other.param: %ptr.6db) -> %ptr.019; +// CHECK:STDOUT: fn @B.as.X.impl.F.loc14_39.1(%self.param: %ptr.6db, %other.param: %ptr.6db) -> %ptr.019; // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc14_39.2(%self.param: %ptr.e79, %other.param: %ptr.e79) -> %ptr.e79 [thunk @X.impl.%F.decl.loc14_39.1] { +// CHECK:STDOUT: fn @B.as.X.impl.F.loc14_39.2(%self.param: %ptr.e79, %other.param: %ptr.e79) -> %ptr.e79 [thunk @B.as.X.impl.%B.as.X.impl.F.decl.loc14_39.1] { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %F.ref: %F.type.f1b0b1.1 = name_ref F, @X.impl.%F.decl.loc14_39.1 [concrete = constants.%F.5161e9.1] +// CHECK:STDOUT: %F.ref: %B.as.X.impl.F.type.f1b0b1.1 = name_ref F, @B.as.X.impl.%B.as.X.impl.F.decl.loc14_39.1 [concrete = constants.%B.as.X.impl.F.5161e9.1] // CHECK:STDOUT: -// CHECK:STDOUT: %F.bound: = bound_method %.loc9_17.1, %F.ref +// CHECK:STDOUT: %B.as.X.impl.F.bound: = bound_method %.loc9_17.1, %F.ref // CHECK:STDOUT: -// CHECK:STDOUT: %F.call: init %ptr.019 = call %F.bound(%.loc9_17.4, %.loc9_31.3) -// CHECK:STDOUT: %.loc14_39.1: %ptr.019 = value_of_initializer %F.call -// CHECK:STDOUT: %.loc14_39.2: %ptr.019 = converted %F.call, %.loc14_39.1 +// CHECK:STDOUT: %B.as.X.impl.F.call: init %ptr.019 = call %B.as.X.impl.F.bound(%.loc9_17.4, %.loc9_31.3) +// CHECK:STDOUT: %.loc14_39.1: %ptr.019 = value_of_initializer %B.as.X.impl.F.call +// CHECK:STDOUT: %.loc14_39.2: %ptr.019 = converted %B.as.X.impl.F.call, %.loc14_39.1 // CHECK:STDOUT: %.loc14_39.3: ref %C = deref %.loc14_39.2 // CHECK:STDOUT: %.loc14_39.4: ref %B = class_element_access %.loc14_39.3, element0 // CHECK:STDOUT: %addr.loc14: %ptr.e79 = addr_of %.loc14_39.4 -// CHECK:STDOUT: %.loc14_39.5: %ptr.e79 = converted %F.call, %addr.loc14 +// CHECK:STDOUT: %.loc14_39.5: %ptr.e79 = converted %B.as.X.impl.F.call, %addr.loc14 // CHECK:STDOUT: return %.loc14_39.5 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -619,20 +619,20 @@ impl () as I({}) { // CHECK:STDOUT: %B: type = class_type @B [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %pattern_type.049: type = pattern_type %B [concrete] -// CHECK:STDOUT: %F.type.b24d6f.1: type = fn_type @F.loc20_14.1 [concrete] -// CHECK:STDOUT: %F.77e9d5.1: %F.type.b24d6f.1 = struct_value () [concrete] -// CHECK:STDOUT: %F.type.b24d6f.2: type = fn_type @F.loc20_14.2 [concrete] -// CHECK:STDOUT: %F.77e9d5.2: %F.type.b24d6f.2 = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.1a6: type = fn_type @Op.1, @Destroy.impl(%B) [concrete] -// CHECK:STDOUT: %Op.3c2: %Op.type.1a6 = struct_value () [concrete] +// CHECK:STDOUT: %A.as.X.impl.F.type.b24d6f.1: type = fn_type @A.as.X.impl.F.loc20_14.1 [concrete] +// CHECK:STDOUT: %A.as.X.impl.F.77e9d5.1: %A.as.X.impl.F.type.b24d6f.1 = struct_value () [concrete] +// CHECK:STDOUT: %A.as.X.impl.F.type.b24d6f.2: type = fn_type @A.as.X.impl.F.loc20_14.2 [concrete] +// CHECK:STDOUT: %A.as.X.impl.F.77e9d5.2: %A.as.X.impl.F.type.b24d6f.2 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.1a6: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%B) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.3c2: %T.as.Destroy.impl.Op.type.1a6 = struct_value () [concrete] // CHECK:STDOUT: %ptr.e79: type = ptr_type %B [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @X.impl: %A.ref as %X.ref { -// CHECK:STDOUT: %F.decl.loc20_14.1: %F.type.b24d6f.1 = fn_decl @F.loc20_14.1 [concrete = constants.%F.77e9d5.1] { +// CHECK:STDOUT: impl @A.as.X.impl: %A.ref as %X.ref { +// CHECK:STDOUT: %A.as.X.impl.F.decl.loc20_14.1: %A.as.X.impl.F.type.b24d6f.1 = fn_decl @A.as.X.impl.F.loc20_14.1 [concrete = constants.%A.as.X.impl.F.77e9d5.1] { // CHECK:STDOUT: %return.patt: %pattern_type.049 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.049 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -640,7 +640,7 @@ impl () as I({}) { // CHECK:STDOUT: %return.param: ref %B = out_param call_param0 // CHECK:STDOUT: %return: ref %B = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl.loc20_14.2: %F.type.b24d6f.2 = fn_decl @F.loc20_14.2 [concrete = constants.%F.77e9d5.2] { +// CHECK:STDOUT: %A.as.X.impl.F.decl.loc20_14.2: %A.as.X.impl.F.type.b24d6f.2 = fn_decl @A.as.X.impl.F.loc20_14.2 [concrete = constants.%A.as.X.impl.F.77e9d5.2] { // CHECK:STDOUT: // CHECK:STDOUT: } { // CHECK:STDOUT: @@ -648,27 +648,27 @@ impl () as I({}) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .B = -// CHECK:STDOUT: .F = %F.decl.loc20_14.1 +// CHECK:STDOUT: .F = %A.as.X.impl.F.decl.loc20_14.1 // CHECK:STDOUT: witness = file.%X.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc20_14.1() -> %return.param: %B; +// CHECK:STDOUT: fn @A.as.X.impl.F.loc20_14.1() -> %return.param: %B; // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc20_14.2() -> %return.param: %A [thunk @X.impl.%F.decl.loc20_14.1] { +// CHECK:STDOUT: fn @A.as.X.impl.F.loc20_14.2() -> %return.param: %A [thunk @A.as.X.impl.%A.as.X.impl.F.decl.loc20_14.1] { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %F.ref: %F.type.b24d6f.1 = name_ref F, @X.impl.%F.decl.loc20_14.1 [concrete = constants.%F.77e9d5.1] +// CHECK:STDOUT: %F.ref: %A.as.X.impl.F.type.b24d6f.1 = name_ref F, @A.as.X.impl.%A.as.X.impl.F.decl.loc20_14.1 [concrete = constants.%A.as.X.impl.F.77e9d5.1] // CHECK:STDOUT: // CHECK:STDOUT: %.loc20_14.1: ref %B = temporary_storage -// CHECK:STDOUT: %F.call: init %B = call %F.ref() to %.loc20_14.1 -// CHECK:STDOUT: %.loc20_14.2: ref %B = temporary %.loc20_14.1, %F.call +// CHECK:STDOUT: %A.as.X.impl.F.call: init %B = call %F.ref() to %.loc20_14.1 +// CHECK:STDOUT: %.loc20_14.2: ref %B = temporary %.loc20_14.1, %A.as.X.impl.F.call // CHECK:STDOUT: %.loc20_14.3: ref %A = class_element_access %.loc20_14.2, element0 -// CHECK:STDOUT: %.loc20_14.4: ref %A = converted %F.call, %.loc20_14.3 +// CHECK:STDOUT: %.loc20_14.4: ref %A = converted %A.as.X.impl.F.call, %.loc20_14.3 // CHECK:STDOUT: %.loc20_14.5: %A = bind_value %.loc20_14.4 -// CHECK:STDOUT: %Op.bound: = bound_method %.loc20_14.1, constants.%Op.3c2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc20_14.1, constants.%T.as.Destroy.impl.Op.3c2 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc20_14.1, %Op.specific_fn +// CHECK:STDOUT: %bound_method: = bound_method %.loc20_14.1, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.e79 = addr_of %.loc20_14.1 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -678,93 +678,93 @@ impl () as I({}) { // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %U: type = bind_symbolic_name U, 0 [symbolic] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %U [symbolic] -// CHECK:STDOUT: %F.type.39e918.1: type = fn_type @F.loc10_29.1 [concrete] -// CHECK:STDOUT: %F.c04b92.1: %F.type.39e918.1 = struct_value () [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.type.39e918.1: type = fn_type @empty_tuple.type.as.I.impl.F.loc10_29.1 [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.c04b92.1: %empty_tuple.type.as.I.impl.F.type.39e918.1 = struct_value () [concrete] // CHECK:STDOUT: %T.8b3: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %ptr.79f: type = ptr_type %T.8b3 [symbolic] // CHECK:STDOUT: %pattern_type.afe: type = pattern_type %ptr.79f [symbolic] -// CHECK:STDOUT: %F.type.39e918.2: type = fn_type @F.loc10_29.2 [concrete] -// CHECK:STDOUT: %F.c04b92.2: %F.type.39e918.2 = struct_value () [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.type.39e918.2: type = fn_type @empty_tuple.type.as.I.impl.F.loc10_29.2 [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.c04b92.2: %empty_tuple.type.as.I.impl.F.type.39e918.2 = struct_value () [concrete] // CHECK:STDOUT: %require_complete.4ae: = require_complete_type %U [symbolic] // CHECK:STDOUT: %require_complete.6e5: = require_complete_type %ptr.79f [symbolic] -// CHECK:STDOUT: %F.specific_fn: = specific_function %F.c04b92.1, @F.loc10_29.1(%ptr.79f) [symbolic] +// CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.specific_fn: = specific_function %empty_tuple.type.as.I.impl.F.c04b92.1, @empty_tuple.type.as.I.impl.F.loc10_29.1(%ptr.79f) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: %.loc8_7.2 as %I.ref { -// CHECK:STDOUT: %F.decl.loc10_29.1: %F.type.39e918.1 = fn_decl @F.loc10_29.1 [concrete = constants.%F.c04b92.1] { +// CHECK:STDOUT: impl @empty_tuple.type.as.I.impl: %.loc8_7.2 as %I.ref { +// CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.decl.loc10_29.1: %empty_tuple.type.as.I.impl.F.type.39e918.1 = fn_decl @empty_tuple.type.as.I.impl.F.loc10_29.1 [concrete = constants.%empty_tuple.type.as.I.impl.F.c04b92.1] { // CHECK:STDOUT: %U.patt: %pattern_type.98f = symbolic_binding_pattern U, 0 [concrete] -// CHECK:STDOUT: %x.patt: @F.loc10_29.1.%pattern_type (%pattern_type.7dc) = binding_pattern x [concrete] -// CHECK:STDOUT: %x.param_patt: @F.loc10_29.1.%pattern_type (%pattern_type.7dc) = value_param_pattern %x.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: @F.loc10_29.1.%pattern_type (%pattern_type.7dc) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @F.loc10_29.1.%pattern_type (%pattern_type.7dc) = out_param_pattern %return.patt, call_param1 [concrete] +// CHECK:STDOUT: %x.patt: @empty_tuple.type.as.I.impl.F.loc10_29.1.%pattern_type (%pattern_type.7dc) = binding_pattern x [concrete] +// CHECK:STDOUT: %x.param_patt: @empty_tuple.type.as.I.impl.F.loc10_29.1.%pattern_type (%pattern_type.7dc) = value_param_pattern %x.patt, call_param0 [concrete] +// CHECK:STDOUT: %return.patt: @empty_tuple.type.as.I.impl.F.loc10_29.1.%pattern_type (%pattern_type.7dc) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @empty_tuple.type.as.I.impl.F.loc10_29.1.%pattern_type (%pattern_type.7dc) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %U.ref.loc10_27: type = name_ref U, %U.loc10_8.2 [symbolic = %U.loc10_8.1 (constants.%U)] // CHECK:STDOUT: %U.loc10_8.2: type = bind_symbolic_name U, 0 [symbolic = %U.loc10_8.1 (constants.%U)] -// CHECK:STDOUT: %x.param: @F.loc10_29.1.%U.loc10_8.1 (%U) = value_param call_param0 +// CHECK:STDOUT: %x.param: @empty_tuple.type.as.I.impl.F.loc10_29.1.%U.loc10_8.1 (%U) = value_param call_param0 // CHECK:STDOUT: %U.ref.loc10_21: type = name_ref U, %U.loc10_8.2 [symbolic = %U.loc10_8.1 (constants.%U)] -// CHECK:STDOUT: %x: @F.loc10_29.1.%U.loc10_8.1 (%U) = bind_name x, %x.param -// CHECK:STDOUT: %return.param: ref @F.loc10_29.1.%U.loc10_8.1 (%U) = out_param call_param1 -// CHECK:STDOUT: %return: ref @F.loc10_29.1.%U.loc10_8.1 (%U) = return_slot %return.param +// CHECK:STDOUT: %x: @empty_tuple.type.as.I.impl.F.loc10_29.1.%U.loc10_8.1 (%U) = bind_name x, %x.param +// CHECK:STDOUT: %return.param: ref @empty_tuple.type.as.I.impl.F.loc10_29.1.%U.loc10_8.1 (%U) = out_param call_param1 +// CHECK:STDOUT: %return: ref @empty_tuple.type.as.I.impl.F.loc10_29.1.%U.loc10_8.1 (%U) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl.loc10_29.2: %F.type.39e918.2 = fn_decl @F.loc10_29.2 [concrete = constants.%F.c04b92.2] { +// CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.decl.loc10_29.2: %empty_tuple.type.as.I.impl.F.type.39e918.2 = fn_decl @empty_tuple.type.as.I.impl.F.loc10_29.2 [concrete = constants.%empty_tuple.type.as.I.impl.F.c04b92.2] { // CHECK:STDOUT: // CHECK:STDOUT: } { // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl.loc10_29.1 +// CHECK:STDOUT: .F = %empty_tuple.type.as.I.impl.F.decl.loc10_29.1 // CHECK:STDOUT: witness = file.%I.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc10_29.1(%U.loc10_8.2: type) { +// CHECK:STDOUT: generic fn @empty_tuple.type.as.I.impl.F.loc10_29.1(%U.loc10_8.2: type) { // CHECK:STDOUT: %U.loc10_8.1: type = bind_symbolic_name U, 0 [symbolic = %U.loc10_8.1 (constants.%U)] // CHECK:STDOUT: %pattern_type: type = pattern_type %U.loc10_8.1 [symbolic = %pattern_type (constants.%pattern_type.7dc)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %U.loc10_8.1 [symbolic = %require_complete (constants.%require_complete.4ae)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%x.param: @F.loc10_29.1.%U.loc10_8.1 (%U)) -> @F.loc10_29.1.%U.loc10_8.1 (%U) { +// CHECK:STDOUT: fn(%x.param: @empty_tuple.type.as.I.impl.F.loc10_29.1.%U.loc10_8.1 (%U)) -> @empty_tuple.type.as.I.impl.F.loc10_29.1.%U.loc10_8.1 (%U) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %x.ref: @F.loc10_29.1.%U.loc10_8.1 (%U) = name_ref x, %x +// CHECK:STDOUT: %x.ref: @empty_tuple.type.as.I.impl.F.loc10_29.1.%U.loc10_8.1 (%U) = name_ref x, %x // CHECK:STDOUT: return %x.ref // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc10_29.2(%T.loc5_8.2: type) { +// CHECK:STDOUT: generic fn @empty_tuple.type.as.I.impl.F.loc10_29.2(%T.loc5_8.2: type) { // CHECK:STDOUT: // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.specific_fn.loc10_29.2: = specific_function constants.%F.c04b92.1, @F.loc10_29.1(%ptr) [symbolic = %F.specific_fn.loc10_29.2 (constants.%F.specific_fn)] +// CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.specific_fn.loc10_29.2: = specific_function constants.%empty_tuple.type.as.I.impl.F.c04b92.1, @empty_tuple.type.as.I.impl.F.loc10_29.1(%ptr) [symbolic = %empty_tuple.type.as.I.impl.F.specific_fn.loc10_29.2 (constants.%empty_tuple.type.as.I.impl.F.specific_fn)] // CHECK:STDOUT: // CHECK:STDOUT: -// CHECK:STDOUT: fn(%x.param: @F.loc10_29.2.%ptr (%ptr.79f)) -> @F.loc10_29.2.%ptr (%ptr.79f) [thunk @I.impl.%F.decl.loc10_29.1] { +// CHECK:STDOUT: fn(%x.param: @empty_tuple.type.as.I.impl.F.loc10_29.2.%ptr (%ptr.79f)) -> @empty_tuple.type.as.I.impl.F.loc10_29.2.%ptr (%ptr.79f) [thunk @empty_tuple.type.as.I.impl.%empty_tuple.type.as.I.impl.F.decl.loc10_29.1] { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %F.ref: %F.type.39e918.1 = name_ref F, @I.impl.%F.decl.loc10_29.1 [concrete = constants.%F.c04b92.1] +// CHECK:STDOUT: %F.ref: %empty_tuple.type.as.I.impl.F.type.39e918.1 = name_ref F, @empty_tuple.type.as.I.impl.%empty_tuple.type.as.I.impl.F.decl.loc10_29.1 [concrete = constants.%empty_tuple.type.as.I.impl.F.c04b92.1] // CHECK:STDOUT: -// CHECK:STDOUT: %F.specific_fn.loc10_29.1: = specific_function %F.ref, @F.loc10_29.1(constants.%ptr.79f) [symbolic = %F.specific_fn.loc10_29.2 (constants.%F.specific_fn)] -// CHECK:STDOUT: %F.call: init @F.loc10_29.2.%ptr (%ptr.79f) = call %F.specific_fn.loc10_29.1(%x.ref) -// CHECK:STDOUT: %.loc10_29.1: @F.loc10_29.2.%ptr (%ptr.79f) = value_of_initializer %F.call -// CHECK:STDOUT: %.loc10_29.2: @F.loc10_29.2.%ptr (%ptr.79f) = converted %F.call, %.loc10_29.1 +// CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.specific_fn.loc10_29.1: = specific_function %F.ref, @empty_tuple.type.as.I.impl.F.loc10_29.1(constants.%ptr.79f) [symbolic = %empty_tuple.type.as.I.impl.F.specific_fn.loc10_29.2 (constants.%empty_tuple.type.as.I.impl.F.specific_fn)] +// CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.call: init @empty_tuple.type.as.I.impl.F.loc10_29.2.%ptr (%ptr.79f) = call %empty_tuple.type.as.I.impl.F.specific_fn.loc10_29.1(%x.ref) +// CHECK:STDOUT: %.loc10_29.1: @empty_tuple.type.as.I.impl.F.loc10_29.2.%ptr (%ptr.79f) = value_of_initializer %empty_tuple.type.as.I.impl.F.call +// CHECK:STDOUT: %.loc10_29.2: @empty_tuple.type.as.I.impl.F.loc10_29.2.%ptr (%ptr.79f) = converted %empty_tuple.type.as.I.impl.F.call, %.loc10_29.1 // CHECK:STDOUT: return %.loc10_29.2 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc10_29.1(constants.%U) { +// CHECK:STDOUT: specific @empty_tuple.type.as.I.impl.F.loc10_29.1(constants.%U) { // CHECK:STDOUT: %U.loc10_8.1 => constants.%U // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7dc // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc10_29.2(constants.%T.8b3) { +// CHECK:STDOUT: specific @empty_tuple.type.as.I.impl.F.loc10_29.2(constants.%T.8b3) { // CHECK:STDOUT: %T.loc5_8.1 => constants.%T.8b3 // CHECK:STDOUT: %ptr => constants.%ptr.79f // CHECK:STDOUT: %pattern_type => constants.%pattern_type.afe // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc10_29.1(constants.%ptr.79f) { +// CHECK:STDOUT: specific @empty_tuple.type.as.I.impl.F.loc10_29.1(constants.%ptr.79f) { // CHECK:STDOUT: %U.loc10_8.1 => constants.%ptr.79f // CHECK:STDOUT: %pattern_type => constants.%pattern_type.afe // CHECK:STDOUT: @@ -780,28 +780,28 @@ impl () as I({}) { // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %U: type = bind_symbolic_name U, 0 [symbolic] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %U [symbolic] -// CHECK:STDOUT: %F.type.39e918.1: type = fn_type @F.loc19_39.1 [concrete] -// CHECK:STDOUT: %F.c04b92.1: %F.type.39e918.1 = struct_value () [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.type.39e918.1: type = fn_type @empty_tuple.type.as.I.impl.F.loc19_39.1 [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.c04b92.1: %empty_tuple.type.as.I.impl.F.type.39e918.1 = struct_value () [concrete] // CHECK:STDOUT: %T.8b3: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %ptr.79f: type = ptr_type %T.8b3 [symbolic] // CHECK:STDOUT: %pattern_type.afe: type = pattern_type %ptr.79f [symbolic] -// CHECK:STDOUT: %F.type.39e918.2: type = fn_type @F.loc19_39.2 [concrete] -// CHECK:STDOUT: %F.c04b92.2: %F.type.39e918.2 = struct_value () [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.type.39e918.2: type = fn_type @empty_tuple.type.as.I.impl.F.loc19_39.2 [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.c04b92.2: %empty_tuple.type.as.I.impl.F.type.39e918.2 = struct_value () [concrete] // CHECK:STDOUT: %require_complete.4ae: = require_complete_type %U [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: %.loc10_7.2 as %I.ref { -// CHECK:STDOUT: %F.decl.loc19_39.1: %F.type.39e918.1 = fn_decl @F.loc19_39.1 [concrete = constants.%F.c04b92.1] { +// CHECK:STDOUT: impl @empty_tuple.type.as.I.impl: %.loc10_7.2 as %I.ref { +// CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.decl.loc19_39.1: %empty_tuple.type.as.I.impl.F.type.39e918.1 = fn_decl @empty_tuple.type.as.I.impl.F.loc19_39.1 [concrete = constants.%empty_tuple.type.as.I.impl.F.c04b92.1] { // CHECK:STDOUT: %self.patt: %pattern_type.cb1 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.cb1 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %U.patt: %pattern_type.98f = symbolic_binding_pattern U, 0 [concrete] -// CHECK:STDOUT: %x.patt: @F.loc19_39.1.%pattern_type (%pattern_type.7dc) = binding_pattern x [concrete] -// CHECK:STDOUT: %x.param_patt: @F.loc19_39.1.%pattern_type (%pattern_type.7dc) = value_param_pattern %x.patt, call_param1 [concrete] -// CHECK:STDOUT: %return.patt: @F.loc19_39.1.%pattern_type (%pattern_type.7dc) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @F.loc19_39.1.%pattern_type (%pattern_type.7dc) = out_param_pattern %return.patt, call_param2 [concrete] +// CHECK:STDOUT: %x.patt: @empty_tuple.type.as.I.impl.F.loc19_39.1.%pattern_type (%pattern_type.7dc) = binding_pattern x [concrete] +// CHECK:STDOUT: %x.param_patt: @empty_tuple.type.as.I.impl.F.loc19_39.1.%pattern_type (%pattern_type.7dc) = value_param_pattern %x.patt, call_param1 [concrete] +// CHECK:STDOUT: %return.patt: @empty_tuple.type.as.I.impl.F.loc19_39.1.%pattern_type (%pattern_type.7dc) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @empty_tuple.type.as.I.impl.F.loc19_39.1.%pattern_type (%pattern_type.7dc) = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %U.ref.loc19_37: type = name_ref U, %U.loc19_18.2 [symbolic = %U.loc19_18.1 (constants.%U)] // CHECK:STDOUT: %self.param: %empty_tuple.type = value_param call_param0 @@ -811,56 +811,56 @@ impl () as I({}) { // CHECK:STDOUT: } // CHECK:STDOUT: %self: %empty_tuple.type = bind_name self, %self.param // CHECK:STDOUT: %U.loc19_18.2: type = bind_symbolic_name U, 0 [symbolic = %U.loc19_18.1 (constants.%U)] -// CHECK:STDOUT: %x.param: @F.loc19_39.1.%U.loc19_18.1 (%U) = value_param call_param1 +// CHECK:STDOUT: %x.param: @empty_tuple.type.as.I.impl.F.loc19_39.1.%U.loc19_18.1 (%U) = value_param call_param1 // CHECK:STDOUT: %U.ref.loc19_31: type = name_ref U, %U.loc19_18.2 [symbolic = %U.loc19_18.1 (constants.%U)] -// CHECK:STDOUT: %x: @F.loc19_39.1.%U.loc19_18.1 (%U) = bind_name x, %x.param -// CHECK:STDOUT: %return.param: ref @F.loc19_39.1.%U.loc19_18.1 (%U) = out_param call_param2 -// CHECK:STDOUT: %return: ref @F.loc19_39.1.%U.loc19_18.1 (%U) = return_slot %return.param +// CHECK:STDOUT: %x: @empty_tuple.type.as.I.impl.F.loc19_39.1.%U.loc19_18.1 (%U) = bind_name x, %x.param +// CHECK:STDOUT: %return.param: ref @empty_tuple.type.as.I.impl.F.loc19_39.1.%U.loc19_18.1 (%U) = out_param call_param2 +// CHECK:STDOUT: %return: ref @empty_tuple.type.as.I.impl.F.loc19_39.1.%U.loc19_18.1 (%U) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl.loc19_39.2: %F.type.39e918.2 = fn_decl @F.loc19_39.2 [concrete = constants.%F.c04b92.2] { +// CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.decl.loc19_39.2: %empty_tuple.type.as.I.impl.F.type.39e918.2 = fn_decl @empty_tuple.type.as.I.impl.F.loc19_39.2 [concrete = constants.%empty_tuple.type.as.I.impl.F.c04b92.2] { // CHECK:STDOUT: // CHECK:STDOUT: } { // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl.loc19_39.1 +// CHECK:STDOUT: .F = %empty_tuple.type.as.I.impl.F.decl.loc19_39.1 // CHECK:STDOUT: witness = file.%I.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc19_39.1(%U.loc19_18.2: type) { +// CHECK:STDOUT: generic fn @empty_tuple.type.as.I.impl.F.loc19_39.1(%U.loc19_18.2: type) { // CHECK:STDOUT: %U.loc19_18.1: type = bind_symbolic_name U, 0 [symbolic = %U.loc19_18.1 (constants.%U)] // CHECK:STDOUT: %pattern_type: type = pattern_type %U.loc19_18.1 [symbolic = %pattern_type (constants.%pattern_type.7dc)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %U.loc19_18.1 [symbolic = %require_complete (constants.%require_complete.4ae)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: %empty_tuple.type, %x.param: @F.loc19_39.1.%U.loc19_18.1 (%U)) -> @F.loc19_39.1.%U.loc19_18.1 (%U) { +// CHECK:STDOUT: fn(%self.param: %empty_tuple.type, %x.param: @empty_tuple.type.as.I.impl.F.loc19_39.1.%U.loc19_18.1 (%U)) -> @empty_tuple.type.as.I.impl.F.loc19_39.1.%U.loc19_18.1 (%U) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %x.ref: @F.loc19_39.1.%U.loc19_18.1 (%U) = name_ref x, %x +// CHECK:STDOUT: %x.ref: @empty_tuple.type.as.I.impl.F.loc19_39.1.%U.loc19_18.1 (%U) = name_ref x, %x // CHECK:STDOUT: return %x.ref // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc19_39.2(%T.loc5_20.2: type) { +// CHECK:STDOUT: generic fn @empty_tuple.type.as.I.impl.F.loc19_39.2(%T.loc5_20.2: type) { // CHECK:STDOUT: // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: %empty_tuple.type, %x.param: @F.loc19_39.2.%ptr (%ptr.79f)) -> @F.loc19_39.2.%ptr (%ptr.79f) [thunk @I.impl.%F.decl.loc19_39.1] { +// CHECK:STDOUT: fn(%self.param: %empty_tuple.type, %x.param: @empty_tuple.type.as.I.impl.F.loc19_39.2.%ptr (%ptr.79f)) -> @empty_tuple.type.as.I.impl.F.loc19_39.2.%ptr (%ptr.79f) [thunk @empty_tuple.type.as.I.impl.%empty_tuple.type.as.I.impl.F.decl.loc19_39.1] { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %F.ref: %F.type.39e918.1 = name_ref F, @I.impl.%F.decl.loc19_39.1 [concrete = constants.%F.c04b92.1] +// CHECK:STDOUT: %F.ref: %empty_tuple.type.as.I.impl.F.type.39e918.1 = name_ref F, @empty_tuple.type.as.I.impl.%empty_tuple.type.as.I.impl.F.decl.loc19_39.1 [concrete = constants.%empty_tuple.type.as.I.impl.F.c04b92.1] // CHECK:STDOUT: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc19_39.1(constants.%U) { +// CHECK:STDOUT: specific @empty_tuple.type.as.I.impl.F.loc19_39.1(constants.%U) { // CHECK:STDOUT: %U.loc19_18.1 => constants.%U // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7dc // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc19_39.2(constants.%T.8b3) { +// CHECK:STDOUT: specific @empty_tuple.type.as.I.impl.F.loc19_39.2(constants.%T.8b3) { // CHECK:STDOUT: %T.loc5_20.1 => constants.%T.8b3 // CHECK:STDOUT: %ptr => constants.%ptr.79f // CHECK:STDOUT: %pattern_type => constants.%pattern_type.afe @@ -873,23 +873,23 @@ impl () as I({}) { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %struct_type.b.a.1b0: type = struct_type {.b: %empty_struct_type, .a: %empty_struct_type} [concrete] // CHECK:STDOUT: %pattern_type.914: type = pattern_type %struct_type.b.a.1b0 [concrete] -// CHECK:STDOUT: %F.type.29ab63.1: type = fn_type @F.loc10_29.1 [concrete] -// CHECK:STDOUT: %F.975709.1: %F.type.29ab63.1 = struct_value () [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.type.29ab63.1: type = fn_type @empty_tuple.type.as.I.impl.F.loc10_29.1 [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.975709.1: %empty_tuple.type.as.I.impl.F.type.29ab63.1 = struct_value () [concrete] // CHECK:STDOUT: %struct_type.a.b.f95: type = struct_type {.a: %empty_struct_type, .b: %empty_struct_type} [concrete] -// CHECK:STDOUT: %F.type.29ab63.2: type = fn_type @F.loc10_29.2 [concrete] -// CHECK:STDOUT: %F.975709.2: %F.type.29ab63.2 = struct_value () [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.type.29ab63.2: type = fn_type @empty_tuple.type.as.I.impl.F.loc10_29.2 [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.975709.2: %empty_tuple.type.as.I.impl.F.type.29ab63.2 = struct_value () [concrete] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %struct: %struct_type.a.b.f95 = struct_value (%empty_struct, %empty_struct) [concrete] -// CHECK:STDOUT: %Op.type.f20: type = fn_type @Op.1, @Destroy.impl(%struct_type.b.a.1b0) [concrete] -// CHECK:STDOUT: %Op.eab: %Op.type.f20 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.f20: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%struct_type.b.a.1b0) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.eab: %T.as.Destroy.impl.Op.type.f20 = struct_value () [concrete] // CHECK:STDOUT: %ptr.30d: type = ptr_type %struct_type.b.a.1b0 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: %.loc8_7.2 as %I.type { -// CHECK:STDOUT: %F.decl.loc10_29.1: %F.type.29ab63.1 = fn_decl @F.loc10_29.1 [concrete = constants.%F.975709.1] { +// CHECK:STDOUT: impl @empty_tuple.type.as.I.impl: %.loc8_7.2 as %I.type { +// CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.decl.loc10_29.1: %empty_tuple.type.as.I.impl.F.type.29ab63.1 = fn_decl @empty_tuple.type.as.I.impl.F.loc10_29.1 [concrete = constants.%empty_tuple.type.as.I.impl.F.975709.1] { // CHECK:STDOUT: %return.patt: %pattern_type.914 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.914 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -901,26 +901,26 @@ impl () as I({}) { // CHECK:STDOUT: %return.param: ref %struct_type.b.a.1b0 = out_param call_param0 // CHECK:STDOUT: %return: ref %struct_type.b.a.1b0 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl.loc10_29.2: %F.type.29ab63.2 = fn_decl @F.loc10_29.2 [concrete = constants.%F.975709.2] { +// CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.decl.loc10_29.2: %empty_tuple.type.as.I.impl.F.type.29ab63.2 = fn_decl @empty_tuple.type.as.I.impl.F.loc10_29.2 [concrete = constants.%empty_tuple.type.as.I.impl.F.975709.2] { // CHECK:STDOUT: // CHECK:STDOUT: } { // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl.loc10_29.1 +// CHECK:STDOUT: .F = %empty_tuple.type.as.I.impl.F.decl.loc10_29.1 // CHECK:STDOUT: witness = file.%I.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc10_29.1() -> %return.param: %struct_type.b.a.1b0; +// CHECK:STDOUT: fn @empty_tuple.type.as.I.impl.F.loc10_29.1() -> %return.param: %struct_type.b.a.1b0; // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc10_29.2() -> %return.param: %struct_type.a.b.f95 [thunk @I.impl.%F.decl.loc10_29.1] { +// CHECK:STDOUT: fn @empty_tuple.type.as.I.impl.F.loc10_29.2() -> %return.param: %struct_type.a.b.f95 [thunk @empty_tuple.type.as.I.impl.%empty_tuple.type.as.I.impl.F.decl.loc10_29.1] { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %F.ref: %F.type.29ab63.1 = name_ref F, @I.impl.%F.decl.loc10_29.1 [concrete = constants.%F.975709.1] +// CHECK:STDOUT: %F.ref: %empty_tuple.type.as.I.impl.F.type.29ab63.1 = name_ref F, @empty_tuple.type.as.I.impl.%empty_tuple.type.as.I.impl.F.decl.loc10_29.1 [concrete = constants.%empty_tuple.type.as.I.impl.F.975709.1] // CHECK:STDOUT: // CHECK:STDOUT: %.loc10_29.1: ref %struct_type.b.a.1b0 = temporary_storage -// CHECK:STDOUT: %F.call: init %struct_type.b.a.1b0 = call %F.ref() to %.loc10_29.1 -// CHECK:STDOUT: %.loc10_29.2: ref %struct_type.b.a.1b0 = temporary %.loc10_29.1, %F.call +// CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.call: init %struct_type.b.a.1b0 = call %F.ref() to %.loc10_29.1 +// CHECK:STDOUT: %.loc10_29.2: ref %struct_type.b.a.1b0 = temporary %.loc10_29.1, %empty_tuple.type.as.I.impl.F.call // CHECK:STDOUT: %.loc10_29.3: ref %empty_struct_type = struct_access %.loc10_29.2, element1 // CHECK:STDOUT: %.loc10_29.4: ref %empty_struct_type = struct_access %return, element1 // CHECK:STDOUT: %.loc10_29.5: init %empty_struct_type = struct_init () to %.loc10_29.4 [concrete = constants.%empty_struct] @@ -930,12 +930,12 @@ impl () as I({}) { // CHECK:STDOUT: %.loc10_29.9: init %empty_struct_type = struct_init () to %.loc10_29.8 [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc10_29.10: init %empty_struct_type = converted %.loc10_29.7, %.loc10_29.9 [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc10_29.11: init %struct_type.a.b.f95 = struct_init (%.loc10_29.6, %.loc10_29.10) to %return [concrete = constants.%struct] -// CHECK:STDOUT: %.loc10_29.12: init %struct_type.a.b.f95 = converted %F.call, %.loc10_29.11 [concrete = constants.%struct] -// CHECK:STDOUT: %Op.bound: = bound_method %.loc10_29.1, constants.%Op.eab +// CHECK:STDOUT: %.loc10_29.12: init %struct_type.a.b.f95 = converted %empty_tuple.type.as.I.impl.F.call, %.loc10_29.11 [concrete = constants.%struct] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc10_29.1, constants.%T.as.Destroy.impl.Op.eab // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc10_29.1, %Op.specific_fn +// CHECK:STDOUT: %bound_method: = bound_method %.loc10_29.1, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.30d = addr_of %.loc10_29.1 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %.loc10_29.12 to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/impl_thunk_min_prelude.carbon b/toolchain/check/testdata/impl/impl_thunk_min_prelude.carbon index 24bde85800fb..bbfc2b8f7303 100644 --- a/toolchain/check/testdata/impl/impl_thunk_min_prelude.carbon +++ b/toolchain/check/testdata/impl/impl_thunk_min_prelude.carbon @@ -115,18 +115,18 @@ fn Call() -> Int(32) { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [concrete] // CHECK:STDOUT: %ImplicitAs.type.61e: type = facet_type <@ImplicitAs, @ImplicitAs(%i32.builtin)> [concrete] -// CHECK:STDOUT: %Convert.type.059: type = fn_type @Convert.1, @ImplicitAs(%i32.builtin) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.059: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32.builtin) [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness: = impl_witness file.%ImplicitAs.impl_witness_table [concrete] -// CHECK:STDOUT: %Convert.type.1dd: type = fn_type @Convert.loc8 [concrete] -// CHECK:STDOUT: %Convert.52c: %Convert.type.1dd = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet.54f: %ImplicitAs.type.61e = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness) [concrete] -// CHECK:STDOUT: %.f22: type = fn_type_with_self_type %Convert.type.059, %ImplicitAs.facet.54f [concrete] -// CHECK:STDOUT: %Op.type.049d3a.1: type = fn_type @Op.loc15_35.1, @Add.impl(%ImplicitAs.facet.54f) [concrete] -// CHECK:STDOUT: %Op.1fb3b5.1: %Op.type.049d3a.1 = struct_value () [concrete] +// CHECK:STDOUT: %.f22: type = fn_type_with_self_type %ImplicitAs.Convert.type.059, %ImplicitAs.facet.54f [concrete] +// CHECK:STDOUT: %i32.builtin.as.Add.impl.Op.type.049d3a.1: type = fn_type @i32.builtin.as.Add.impl.Op.loc15_35.1, @i32.builtin.as.Add.impl(%ImplicitAs.facet.54f) [concrete] +// CHECK:STDOUT: %i32.builtin.as.Add.impl.Op.1fb3b5.1: %i32.builtin.as.Add.impl.Op.type.049d3a.1 = struct_value () [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] -// CHECK:STDOUT: %Convert.bound.713: = bound_method %int_2.ecc, %Convert.52c [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.713: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert [concrete] // CHECK:STDOUT: %int_2.5a1: %i32.builtin = int_value 2 [concrete] -// CHECK:STDOUT: %Op.specific_fn.01379b.2: = specific_function %Op.1fb3b5.1, @Op.loc15_35.1(%ImplicitAs.facet.54f) [concrete] +// CHECK:STDOUT: %i32.builtin.as.Add.impl.Op.specific_fn.01379b.2: = specific_function %i32.builtin.as.Add.impl.Op.1fb3b5.1, @i32.builtin.as.Add.impl.Op.loc15_35.1(%ImplicitAs.facet.54f) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -142,20 +142,20 @@ fn Call() -> Int(32) { // CHECK:STDOUT: %ImplicitAs.facet.loc25_14.2: %ImplicitAs.type.61e = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness) [concrete = constants.%ImplicitAs.facet.54f] // CHECK:STDOUT: %.loc25_14.2: %ImplicitAs.type.61e = converted Core.IntLiteral, %ImplicitAs.facet.loc25_14.2 [concrete = constants.%ImplicitAs.facet.54f] // CHECK:STDOUT: -// CHECK:STDOUT: %.loc25_14.3: %Op.type.049d3a.1 = specific_constant @Add.impl.%Op.decl.loc15_35.1, @Add.impl(constants.%ImplicitAs.facet.54f) [concrete = constants.%Op.1fb3b5.1] -// CHECK:STDOUT: %Op.ref.loc25: %Op.type.049d3a.1 = name_ref Op, %.loc25_14.3 [concrete = constants.%Op.1fb3b5.1] -// CHECK:STDOUT: %impl.elem0.loc25_14: %.f22 = impl_witness_access constants.%ImplicitAs.impl_witness, element0 [concrete = constants.%Convert.52c] -// CHECK:STDOUT: %bound_method.loc25_14: = bound_method %int_2, %impl.elem0.loc25_14 [concrete = constants.%Convert.bound.713] -// CHECK:STDOUT: %int.convert_checked.loc25_14: init %i32.builtin = call %bound_method.loc25_14(%int_2) [concrete = constants.%int_2.5a1] -// CHECK:STDOUT: %.loc25_14.4: %i32.builtin = value_of_initializer %int.convert_checked.loc25_14 [concrete = constants.%int_2.5a1] +// CHECK:STDOUT: %.loc25_14.3: %i32.builtin.as.Add.impl.Op.type.049d3a.1 = specific_constant @i32.builtin.as.Add.impl.%i32.builtin.as.Add.impl.Op.decl.loc15_35.1, @i32.builtin.as.Add.impl(constants.%ImplicitAs.facet.54f) [concrete = constants.%i32.builtin.as.Add.impl.Op.1fb3b5.1] +// CHECK:STDOUT: %Op.ref.loc25: %i32.builtin.as.Add.impl.Op.type.049d3a.1 = name_ref Op, %.loc25_14.3 [concrete = constants.%i32.builtin.as.Add.impl.Op.1fb3b5.1] +// CHECK:STDOUT: %impl.elem0.loc25_14: %.f22 = impl_witness_access constants.%ImplicitAs.impl_witness, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %bound_method.loc25_14: = bound_method %int_2, %impl.elem0.loc25_14 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.713] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc25_14: init %i32.builtin = call %bound_method.loc25_14(%int_2) [concrete = constants.%int_2.5a1] +// CHECK:STDOUT: %.loc25_14.4: %i32.builtin = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc25_14 [concrete = constants.%int_2.5a1] // CHECK:STDOUT: %.loc25_14.5: %i32.builtin = converted %int_2, %.loc25_14.4 [concrete = constants.%int_2.5a1] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ref.loc25, @Op.loc15_35.1(constants.%ImplicitAs.facet.54f) [concrete = constants.%Op.specific_fn.01379b.2] -// CHECK:STDOUT: %impl.elem0.loc25_13: %.f22 = impl_witness_access constants.%ImplicitAs.impl_witness, element0 [concrete = constants.%Convert.52c] -// CHECK:STDOUT: %bound_method.loc25_13: = bound_method %int_2, %impl.elem0.loc25_13 [concrete = constants.%Convert.bound.713] -// CHECK:STDOUT: %int.convert_checked.loc25_13: init %i32.builtin = call %bound_method.loc25_13(%int_2) [concrete = constants.%int_2.5a1] -// CHECK:STDOUT: %.loc25_13.1: %i32.builtin = value_of_initializer %int.convert_checked.loc25_13 [concrete = constants.%int_2.5a1] +// CHECK:STDOUT: %i32.builtin.as.Add.impl.Op.specific_fn: = specific_function %Op.ref.loc25, @i32.builtin.as.Add.impl.Op.loc15_35.1(constants.%ImplicitAs.facet.54f) [concrete = constants.%i32.builtin.as.Add.impl.Op.specific_fn.01379b.2] +// CHECK:STDOUT: %impl.elem0.loc25_13: %.f22 = impl_witness_access constants.%ImplicitAs.impl_witness, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %bound_method.loc25_13: = bound_method %int_2, %impl.elem0.loc25_13 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.713] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc25_13: init %i32.builtin = call %bound_method.loc25_13(%int_2) [concrete = constants.%int_2.5a1] +// CHECK:STDOUT: %.loc25_13.1: %i32.builtin = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc25_13 [concrete = constants.%int_2.5a1] // CHECK:STDOUT: %.loc25_13.2: %i32.builtin = converted %int_2, %.loc25_13.1 [concrete = constants.%int_2.5a1] -// CHECK:STDOUT: %int.sadd: init %i32.builtin = call %Op.specific_fn(%a.ref, %.loc25_13.2) +// CHECK:STDOUT: %i32.builtin.as.Add.impl.Op.call: init %i32.builtin = call %i32.builtin.as.Add.impl.Op.specific_fn(%a.ref, %.loc25_13.2) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/import_builtin_call.carbon b/toolchain/check/testdata/impl/import_builtin_call.carbon index 246be12abf7e..352c6644ad77 100644 --- a/toolchain/check/testdata/impl/import_builtin_call.carbon +++ b/toolchain/check/testdata/impl/import_builtin_call.carbon @@ -87,10 +87,10 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %Self: %Add.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic] // CHECK:STDOUT: %pattern_type.8f9: type = pattern_type %Self.as_type [symbolic] -// CHECK:STDOUT: %Op.type.31b: type = fn_type @Op.loc5 [concrete] -// CHECK:STDOUT: %Op.d59: %Op.type.31b = struct_value () [concrete] +// CHECK:STDOUT: %Add.Op.type: type = fn_type @Add.Op [concrete] +// CHECK:STDOUT: %Add.Op: %Add.Op.type = struct_value () [concrete] // CHECK:STDOUT: %Add.assoc_type: type = assoc_entity_type @Add [concrete] -// CHECK:STDOUT: %assoc0: %Add.assoc_type = assoc_entity element0, @Add.%Op.decl [concrete] +// CHECK:STDOUT: %assoc0: %Add.assoc_type = assoc_entity element0, @Add.%Add.Op.decl [concrete] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %IntLiteral.type: type = fn_type @IntLiteral [concrete] // CHECK:STDOUT: %IntLiteral: %IntLiteral.type = struct_value () [concrete] @@ -104,19 +104,19 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %iN.builtin: type = int_type signed, %N [symbolic] // CHECK:STDOUT: %require_complete.f1b: = require_complete_type %iN.builtin [symbolic] // CHECK:STDOUT: %complete_type: = complete_type_witness %iN.builtin [symbolic] -// CHECK:STDOUT: %Add.impl_witness: = impl_witness file.%Add.impl_witness_table, @Add.impl(%N) [symbolic] +// CHECK:STDOUT: %Add.impl_witness: = impl_witness file.%Add.impl_witness_table, @MyInt.as.Add.impl(%N) [symbolic] // CHECK:STDOUT: %pattern_type.a71: type = pattern_type %MyInt [symbolic] -// CHECK:STDOUT: %Op.type.883: type = fn_type @Op.loc16, @Add.impl(%N) [symbolic] -// CHECK:STDOUT: %Op.8bc: %Op.type.883 = struct_value () [symbolic] +// CHECK:STDOUT: %MyInt.as.Add.impl.Op.type: type = fn_type @MyInt.as.Add.impl.Op, @MyInt.as.Add.impl(%N) [symbolic] +// CHECK:STDOUT: %MyInt.as.Add.impl.Op: %MyInt.as.Add.impl.Op.type = struct_value () [symbolic] // CHECK:STDOUT: %require_complete.fc7: = require_complete_type %MyInt [symbolic] // CHECK:STDOUT: %Add.facet.0e5: %Add.type = facet_value %MyInt, (%Add.impl_witness) [symbolic] // CHECK:STDOUT: %Double.type: type = fn_type @Double [concrete] // CHECK:STDOUT: %Double: %Double.type = struct_value () [concrete] // CHECK:STDOUT: %Add.lookup_impl_witness: = lookup_impl_witness %MyInt, @Add [symbolic] // CHECK:STDOUT: %Add.facet.5a7: %Add.type = facet_value %MyInt, (%Add.lookup_impl_witness) [symbolic] -// CHECK:STDOUT: %.0a6: type = fn_type_with_self_type %Op.type.31b, %Add.facet.5a7 [symbolic] +// CHECK:STDOUT: %.0a6: type = fn_type_with_self_type %Add.Op.type, %Add.facet.5a7 [symbolic] // CHECK:STDOUT: %impl.elem0: %.0a6 = impl_witness_access %Add.lookup_impl_witness, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Op.loc5(%Add.facet.5a7) [symbolic] +// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Add.Op(%Add.facet.5a7) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -144,9 +144,9 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %n.param: Core.IntLiteral = value_param call_param0 // CHECK:STDOUT: %.loc9_22.1: type = splice_block %.loc9_22.3 [concrete = Core.IntLiteral] { // CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [concrete = constants.%IntLiteral] -// CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc9_22.2: type = value_of_initializer %int_literal.make_type [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc9_22.3: type = converted %int_literal.make_type, %.loc9_22.2 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %IntLiteral.call: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc9_22.2: type = value_of_initializer %IntLiteral.call [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc9_22.3: type = converted %IntLiteral.call, %.loc9_22.2 [concrete = Core.IntLiteral] // CHECK:STDOUT: } // CHECK:STDOUT: %n: Core.IntLiteral = bind_name n, %n.param // CHECK:STDOUT: %return.param: ref type = out_param call_param1 @@ -157,29 +157,29 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc11_28.1: type = splice_block %.loc11_28.3 [concrete = Core.IntLiteral] { // CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [concrete = constants.%IntLiteral] -// CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc11_28.2: type = value_of_initializer %int_literal.make_type [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc11_28.3: type = converted %int_literal.make_type, %.loc11_28.2 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %IntLiteral.call: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc11_28.2: type = value_of_initializer %IntLiteral.call [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc11_28.3: type = converted %IntLiteral.call, %.loc11_28.2 [concrete = Core.IntLiteral] // CHECK:STDOUT: } // CHECK:STDOUT: %N.loc11_13.2: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N.loc11_13.1 (constants.%N)] // CHECK:STDOUT: } -// CHECK:STDOUT: impl_decl @Add.impl [concrete] { +// CHECK:STDOUT: impl_decl @MyInt.as.Add.impl [concrete] { // CHECK:STDOUT: %N.patt: %pattern_type.dc0 = symbolic_binding_pattern N, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %MyInt.ref: %MyInt.type = name_ref MyInt, file.%MyInt.decl [concrete = constants.%MyInt.generic] -// CHECK:STDOUT: %N.ref: Core.IntLiteral = name_ref N, %N.loc15_14.1 [symbolic = %N.loc15_14.2 (constants.%N)] -// CHECK:STDOUT: %MyInt.loc15_39.1: type = class_type @MyInt, @MyInt(constants.%N) [symbolic = %MyInt.loc15_39.2 (constants.%MyInt)] +// CHECK:STDOUT: %N.ref: Core.IntLiteral = name_ref N, %N.loc15_14.2 [symbolic = %N.loc15_14.1 (constants.%N)] +// CHECK:STDOUT: %MyInt.loc15_39.2: type = class_type @MyInt, @MyInt(constants.%N) [symbolic = %MyInt.loc15_39.1 (constants.%MyInt)] // CHECK:STDOUT: %Add.ref: type = name_ref Add, file.%Add.decl [concrete = constants.%Add.type] // CHECK:STDOUT: %.loc15_29.1: type = splice_block %.loc15_29.3 [concrete = Core.IntLiteral] { // CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [concrete = constants.%IntLiteral] -// CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc15_29.2: type = value_of_initializer %int_literal.make_type [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc15_29.3: type = converted %int_literal.make_type, %.loc15_29.2 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %IntLiteral.call: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc15_29.2: type = value_of_initializer %IntLiteral.call [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc15_29.3: type = converted %IntLiteral.call, %.loc15_29.2 [concrete = Core.IntLiteral] // CHECK:STDOUT: } -// CHECK:STDOUT: %N.loc15_14.1: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N.loc15_14.2 (constants.%N)] +// CHECK:STDOUT: %N.loc15_14.2: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N.loc15_14.1 (constants.%N)] // CHECK:STDOUT: } -// CHECK:STDOUT: %Add.impl_witness_table = impl_witness_table (@Add.impl.%Op.decl), @Add.impl [concrete] -// CHECK:STDOUT: %Add.impl_witness: = impl_witness %Add.impl_witness_table, @Add.impl(constants.%N) [symbolic = @Add.impl.%Add.impl_witness (constants.%Add.impl_witness)] +// CHECK:STDOUT: %Add.impl_witness_table = impl_witness_table (@MyInt.as.Add.impl.%MyInt.as.Add.impl.Op.decl), @MyInt.as.Add.impl [concrete] +// CHECK:STDOUT: %Add.impl_witness: = impl_witness %Add.impl_witness_table, @MyInt.as.Add.impl(constants.%N) [symbolic = @MyInt.as.Add.impl.%Add.impl_witness (constants.%Add.impl_witness)] // CHECK:STDOUT: %Double.decl: %Double.type = fn_decl @Double [concrete = constants.%Double] { // CHECK:STDOUT: %N.patt: %pattern_type.dc0 = symbolic_binding_pattern N, 0 [concrete] // CHECK:STDOUT: %x.patt: @Double.%pattern_type (%pattern_type.a71) = binding_pattern x [concrete] @@ -192,9 +192,9 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %MyInt.loc19_52: type = class_type @MyInt, @MyInt(constants.%N) [symbolic = %MyInt.loc19_39.1 (constants.%MyInt)] // CHECK:STDOUT: %.loc19_26.1: type = splice_block %.loc19_26.3 [concrete = Core.IntLiteral] { // CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [concrete = constants.%IntLiteral] -// CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc19_26.2: type = value_of_initializer %int_literal.make_type [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc19_26.3: type = converted %int_literal.make_type, %.loc19_26.2 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %IntLiteral.call: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc19_26.2: type = value_of_initializer %IntLiteral.call [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc19_26.3: type = converted %IntLiteral.call, %.loc19_26.2 [concrete = Core.IntLiteral] // CHECK:STDOUT: } // CHECK:STDOUT: %N.loc19_11.2: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N.loc19_11.1 (constants.%N)] // CHECK:STDOUT: %x.param: @Double.%MyInt.loc19_39.1 (%MyInt) = value_param call_param0 @@ -211,74 +211,74 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: // CHECK:STDOUT: interface @Add { // CHECK:STDOUT: %Self: %Add.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %Op.decl: %Op.type.31b = fn_decl @Op.loc5 [concrete = constants.%Op.d59] { -// CHECK:STDOUT: %self.patt: @Op.loc5.%pattern_type (%pattern_type.8f9) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @Op.loc5.%pattern_type (%pattern_type.8f9) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %other.patt: @Op.loc5.%pattern_type (%pattern_type.8f9) = binding_pattern other [concrete] -// CHECK:STDOUT: %other.param_patt: @Op.loc5.%pattern_type (%pattern_type.8f9) = value_param_pattern %other.patt, call_param1 [concrete] -// CHECK:STDOUT: %return.patt: @Op.loc5.%pattern_type (%pattern_type.8f9) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @Op.loc5.%pattern_type (%pattern_type.8f9) = out_param_pattern %return.patt, call_param2 [concrete] +// CHECK:STDOUT: %Add.Op.decl: %Add.Op.type = fn_decl @Add.Op [concrete = constants.%Add.Op] { +// CHECK:STDOUT: %self.patt: @Add.Op.%pattern_type (%pattern_type.8f9) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @Add.Op.%pattern_type (%pattern_type.8f9) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %other.patt: @Add.Op.%pattern_type (%pattern_type.8f9) = binding_pattern other [concrete] +// CHECK:STDOUT: %other.param_patt: @Add.Op.%pattern_type (%pattern_type.8f9) = value_param_pattern %other.patt, call_param1 [concrete] +// CHECK:STDOUT: %return.patt: @Add.Op.%pattern_type (%pattern_type.8f9) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @Add.Op.%pattern_type (%pattern_type.8f9) = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc5_37: %Add.type = name_ref Self, @Add.%Self [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc5_37: type = facet_access_type %Self.ref.loc5_37 [symbolic = %Self.as_type.loc5_15.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc5_37: type = converted %Self.ref.loc5_37, %Self.as_type.loc5_37 [symbolic = %Self.as_type.loc5_15.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %self.param: @Op.loc5.%Self.as_type.loc5_15.2 (%Self.as_type) = value_param call_param0 -// CHECK:STDOUT: %.loc5_15.1: type = splice_block %.loc5_15.2 [symbolic = %Self.as_type.loc5_15.2 (constants.%Self.as_type)] { +// CHECK:STDOUT: %Self.as_type.loc5_37: type = facet_access_type %Self.ref.loc5_37 [symbolic = %Self.as_type.loc5_15.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc5_37: type = converted %Self.ref.loc5_37, %Self.as_type.loc5_37 [symbolic = %Self.as_type.loc5_15.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %self.param: @Add.Op.%Self.as_type.loc5_15.1 (%Self.as_type) = value_param call_param0 +// CHECK:STDOUT: %.loc5_15.1: type = splice_block %.loc5_15.2 [symbolic = %Self.as_type.loc5_15.1 (constants.%Self.as_type)] { // CHECK:STDOUT: %Self.ref.loc5_15: %Add.type = name_ref Self, @Add.%Self [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc5_15.1: type = facet_access_type %Self.ref.loc5_15 [symbolic = %Self.as_type.loc5_15.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc5_15.2: type = converted %Self.ref.loc5_15, %Self.as_type.loc5_15.1 [symbolic = %Self.as_type.loc5_15.2 (constants.%Self.as_type)] +// CHECK:STDOUT: %Self.as_type.loc5_15.2: type = facet_access_type %Self.ref.loc5_15 [symbolic = %Self.as_type.loc5_15.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc5_15.2: type = converted %Self.ref.loc5_15, %Self.as_type.loc5_15.2 [symbolic = %Self.as_type.loc5_15.1 (constants.%Self.as_type)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @Op.loc5.%Self.as_type.loc5_15.2 (%Self.as_type) = bind_name self, %self.param -// CHECK:STDOUT: %other.param: @Op.loc5.%Self.as_type.loc5_15.2 (%Self.as_type) = value_param call_param1 -// CHECK:STDOUT: %.loc5_28.1: type = splice_block %.loc5_28.2 [symbolic = %Self.as_type.loc5_15.2 (constants.%Self.as_type)] { +// CHECK:STDOUT: %self: @Add.Op.%Self.as_type.loc5_15.1 (%Self.as_type) = bind_name self, %self.param +// CHECK:STDOUT: %other.param: @Add.Op.%Self.as_type.loc5_15.1 (%Self.as_type) = value_param call_param1 +// CHECK:STDOUT: %.loc5_28.1: type = splice_block %.loc5_28.2 [symbolic = %Self.as_type.loc5_15.1 (constants.%Self.as_type)] { // CHECK:STDOUT: %Self.ref.loc5_28: %Add.type = name_ref Self, @Add.%Self [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc5_28: type = facet_access_type %Self.ref.loc5_28 [symbolic = %Self.as_type.loc5_15.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc5_28.2: type = converted %Self.ref.loc5_28, %Self.as_type.loc5_28 [symbolic = %Self.as_type.loc5_15.2 (constants.%Self.as_type)] +// CHECK:STDOUT: %Self.as_type.loc5_28: type = facet_access_type %Self.ref.loc5_28 [symbolic = %Self.as_type.loc5_15.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc5_28.2: type = converted %Self.ref.loc5_28, %Self.as_type.loc5_28 [symbolic = %Self.as_type.loc5_15.1 (constants.%Self.as_type)] // CHECK:STDOUT: } -// CHECK:STDOUT: %other: @Op.loc5.%Self.as_type.loc5_15.2 (%Self.as_type) = bind_name other, %other.param -// CHECK:STDOUT: %return.param: ref @Op.loc5.%Self.as_type.loc5_15.2 (%Self.as_type) = out_param call_param2 -// CHECK:STDOUT: %return: ref @Op.loc5.%Self.as_type.loc5_15.2 (%Self.as_type) = return_slot %return.param +// CHECK:STDOUT: %other: @Add.Op.%Self.as_type.loc5_15.1 (%Self.as_type) = bind_name other, %other.param +// CHECK:STDOUT: %return.param: ref @Add.Op.%Self.as_type.loc5_15.1 (%Self.as_type) = out_param call_param2 +// CHECK:STDOUT: %return: ref @Add.Op.%Self.as_type.loc5_15.1 (%Self.as_type) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %Add.assoc_type = assoc_entity element0, %Op.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %assoc0: %Add.assoc_type = assoc_entity element0, %Add.Op.decl [concrete = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .Op = %assoc0 -// CHECK:STDOUT: witness = (%Op.decl) +// CHECK:STDOUT: witness = (%Add.Op.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @Add.impl(%N.loc15_14.1: Core.IntLiteral) { -// CHECK:STDOUT: %N.loc15_14.2: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N.loc15_14.2 (constants.%N)] -// CHECK:STDOUT: %MyInt.loc15_39.2: type = class_type @MyInt, @MyInt(%N.loc15_14.2) [symbolic = %MyInt.loc15_39.2 (constants.%MyInt)] -// CHECK:STDOUT: %Add.impl_witness: = impl_witness file.%Add.impl_witness_table, @Add.impl(%N.loc15_14.2) [symbolic = %Add.impl_witness (constants.%Add.impl_witness)] +// CHECK:STDOUT: generic impl @MyInt.as.Add.impl(%N.loc15_14.2: Core.IntLiteral) { +// CHECK:STDOUT: %N.loc15_14.1: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N.loc15_14.1 (constants.%N)] +// CHECK:STDOUT: %MyInt.loc15_39.1: type = class_type @MyInt, @MyInt(%N.loc15_14.1) [symbolic = %MyInt.loc15_39.1 (constants.%MyInt)] +// CHECK:STDOUT: %Add.impl_witness: = impl_witness file.%Add.impl_witness_table, @MyInt.as.Add.impl(%N.loc15_14.1) [symbolic = %Add.impl_witness (constants.%Add.impl_witness)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Op.type: type = fn_type @Op.loc16, @Add.impl(%N.loc15_14.2) [symbolic = %Op.type (constants.%Op.type.883)] -// CHECK:STDOUT: %Op: @Add.impl.%Op.type (%Op.type.883) = struct_value () [symbolic = %Op (constants.%Op.8bc)] -// CHECK:STDOUT: %require_complete: = require_complete_type %MyInt.loc15_39.2 [symbolic = %require_complete (constants.%require_complete.fc7)] +// CHECK:STDOUT: %MyInt.as.Add.impl.Op.type: type = fn_type @MyInt.as.Add.impl.Op, @MyInt.as.Add.impl(%N.loc15_14.1) [symbolic = %MyInt.as.Add.impl.Op.type (constants.%MyInt.as.Add.impl.Op.type)] +// CHECK:STDOUT: %MyInt.as.Add.impl.Op: @MyInt.as.Add.impl.%MyInt.as.Add.impl.Op.type (%MyInt.as.Add.impl.Op.type) = struct_value () [symbolic = %MyInt.as.Add.impl.Op (constants.%MyInt.as.Add.impl.Op)] +// CHECK:STDOUT: %require_complete: = require_complete_type %MyInt.loc15_39.1 [symbolic = %require_complete (constants.%require_complete.fc7)] // CHECK:STDOUT: -// CHECK:STDOUT: impl: %MyInt.loc15_39.1 as %Add.ref { -// CHECK:STDOUT: %Op.decl: @Add.impl.%Op.type (%Op.type.883) = fn_decl @Op.loc16 [symbolic = @Add.impl.%Op (constants.%Op.8bc)] { -// CHECK:STDOUT: %self.patt: @Op.loc16.%pattern_type (%pattern_type.a71) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @Op.loc16.%pattern_type (%pattern_type.a71) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %other.patt: @Op.loc16.%pattern_type (%pattern_type.a71) = binding_pattern other [concrete] -// CHECK:STDOUT: %other.param_patt: @Op.loc16.%pattern_type (%pattern_type.a71) = value_param_pattern %other.patt, call_param1 [concrete] -// CHECK:STDOUT: %return.patt: @Op.loc16.%pattern_type (%pattern_type.a71) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @Op.loc16.%pattern_type (%pattern_type.a71) = out_param_pattern %return.patt, call_param2 [concrete] +// CHECK:STDOUT: impl: %MyInt.loc15_39.2 as %Add.ref { +// CHECK:STDOUT: %MyInt.as.Add.impl.Op.decl: @MyInt.as.Add.impl.%MyInt.as.Add.impl.Op.type (%MyInt.as.Add.impl.Op.type) = fn_decl @MyInt.as.Add.impl.Op [symbolic = @MyInt.as.Add.impl.%MyInt.as.Add.impl.Op (constants.%MyInt.as.Add.impl.Op)] { +// CHECK:STDOUT: %self.patt: @MyInt.as.Add.impl.Op.%pattern_type (%pattern_type.a71) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @MyInt.as.Add.impl.Op.%pattern_type (%pattern_type.a71) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %other.patt: @MyInt.as.Add.impl.Op.%pattern_type (%pattern_type.a71) = binding_pattern other [concrete] +// CHECK:STDOUT: %other.param_patt: @MyInt.as.Add.impl.Op.%pattern_type (%pattern_type.a71) = value_param_pattern %other.patt, call_param1 [concrete] +// CHECK:STDOUT: %return.patt: @MyInt.as.Add.impl.Op.%pattern_type (%pattern_type.a71) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @MyInt.as.Add.impl.Op.%pattern_type (%pattern_type.a71) = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %Self.ref.loc16_37: type = name_ref Self, @Add.impl.%MyInt.loc15_39.1 [symbolic = %MyInt (constants.%MyInt)] -// CHECK:STDOUT: %self.param: @Op.loc16.%MyInt (%MyInt) = value_param call_param0 -// CHECK:STDOUT: %Self.ref.loc16_15: type = name_ref Self, @Add.impl.%MyInt.loc15_39.1 [symbolic = %MyInt (constants.%MyInt)] -// CHECK:STDOUT: %self: @Op.loc16.%MyInt (%MyInt) = bind_name self, %self.param -// CHECK:STDOUT: %other.param: @Op.loc16.%MyInt (%MyInt) = value_param call_param1 -// CHECK:STDOUT: %Self.ref.loc16_28: type = name_ref Self, @Add.impl.%MyInt.loc15_39.1 [symbolic = %MyInt (constants.%MyInt)] -// CHECK:STDOUT: %other: @Op.loc16.%MyInt (%MyInt) = bind_name other, %other.param -// CHECK:STDOUT: %return.param: ref @Op.loc16.%MyInt (%MyInt) = out_param call_param2 -// CHECK:STDOUT: %return: ref @Op.loc16.%MyInt (%MyInt) = return_slot %return.param +// CHECK:STDOUT: %Self.ref.loc16_37: type = name_ref Self, @MyInt.as.Add.impl.%MyInt.loc15_39.2 [symbolic = %MyInt (constants.%MyInt)] +// CHECK:STDOUT: %self.param: @MyInt.as.Add.impl.Op.%MyInt (%MyInt) = value_param call_param0 +// CHECK:STDOUT: %Self.ref.loc16_15: type = name_ref Self, @MyInt.as.Add.impl.%MyInt.loc15_39.2 [symbolic = %MyInt (constants.%MyInt)] +// CHECK:STDOUT: %self: @MyInt.as.Add.impl.Op.%MyInt (%MyInt) = bind_name self, %self.param +// CHECK:STDOUT: %other.param: @MyInt.as.Add.impl.Op.%MyInt (%MyInt) = value_param call_param1 +// CHECK:STDOUT: %Self.ref.loc16_28: type = name_ref Self, @MyInt.as.Add.impl.%MyInt.loc15_39.2 [symbolic = %MyInt (constants.%MyInt)] +// CHECK:STDOUT: %other: @MyInt.as.Add.impl.Op.%MyInt (%MyInt) = bind_name other, %other.param +// CHECK:STDOUT: %return.param: ref @MyInt.as.Add.impl.Op.%MyInt (%MyInt) = out_param call_param2 +// CHECK:STDOUT: %return: ref @MyInt.as.Add.impl.Op.%MyInt (%MyInt) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Op = %Op.decl +// CHECK:STDOUT: .Op = %MyInt.as.Add.impl.Op.decl // CHECK:STDOUT: witness = file.%Add.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -294,9 +294,9 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: class { // CHECK:STDOUT: %Int.ref: %Int.type = name_ref Int, file.%Int.decl [concrete = constants.%Int] // CHECK:STDOUT: %N.ref: Core.IntLiteral = name_ref N, %N.loc11_13.2 [symbolic = %N.loc11_13.1 (constants.%N)] -// CHECK:STDOUT: %int.make_type_signed: init type = call %Int.ref(%N.ref) [symbolic = %iN.builtin (constants.%iN.builtin)] -// CHECK:STDOUT: %.loc12_15.1: type = value_of_initializer %int.make_type_signed [symbolic = %iN.builtin (constants.%iN.builtin)] -// CHECK:STDOUT: %.loc12_15.2: type = converted %int.make_type_signed, %.loc12_15.1 [symbolic = %iN.builtin (constants.%iN.builtin)] +// CHECK:STDOUT: %Int.call: init type = call %Int.ref(%N.ref) [symbolic = %iN.builtin (constants.%iN.builtin)] +// CHECK:STDOUT: %.loc12_15.1: type = value_of_initializer %Int.call [symbolic = %iN.builtin (constants.%iN.builtin)] +// CHECK:STDOUT: %.loc12_15.2: type = converted %Int.call, %.loc12_15.1 [symbolic = %iN.builtin (constants.%iN.builtin)] // CHECK:STDOUT: adapt_decl %.loc12_15.2 [concrete] // CHECK:STDOUT: %complete_type.loc13_1.1: = complete_type_witness constants.%iN.builtin [symbolic = %complete_type.loc13_1.2 (constants.%complete_type)] // CHECK:STDOUT: complete_type_witness = %complete_type.loc13_1.1 @@ -308,26 +308,26 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Op.loc5(@Add.%Self: %Add.type) { +// CHECK:STDOUT: generic fn @Add.Op(@Add.%Self: %Add.type) { // CHECK:STDOUT: %Self: %Add.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc5_15.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc5_15.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc5_15.2 [symbolic = %pattern_type (constants.%pattern_type.8f9)] +// CHECK:STDOUT: %Self.as_type.loc5_15.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc5_15.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc5_15.1 [symbolic = %pattern_type (constants.%pattern_type.8f9)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @Op.loc5.%Self.as_type.loc5_15.2 (%Self.as_type), %other.param: @Op.loc5.%Self.as_type.loc5_15.2 (%Self.as_type)) -> @Op.loc5.%Self.as_type.loc5_15.2 (%Self.as_type); +// CHECK:STDOUT: fn(%self.param: @Add.Op.%Self.as_type.loc5_15.1 (%Self.as_type), %other.param: @Add.Op.%Self.as_type.loc5_15.1 (%Self.as_type)) -> @Add.Op.%Self.as_type.loc5_15.1 (%Self.as_type); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @IntLiteral() -> type = "int_literal.make_type"; // CHECK:STDOUT: // CHECK:STDOUT: fn @Int(%n.param: Core.IntLiteral) -> type = "int.make_type_signed"; // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Op.loc16(@Add.impl.%N.loc15_14.1: Core.IntLiteral) { +// CHECK:STDOUT: generic fn @MyInt.as.Add.impl.Op(@MyInt.as.Add.impl.%N.loc15_14.2: Core.IntLiteral) { // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)] // CHECK:STDOUT: %MyInt: type = class_type @MyInt, @MyInt(%N) [symbolic = %MyInt (constants.%MyInt)] // CHECK:STDOUT: %pattern_type: type = pattern_type %MyInt [symbolic = %pattern_type (constants.%pattern_type.a71)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @Op.loc16.%MyInt (%MyInt), %other.param: @Op.loc16.%MyInt (%MyInt)) -> @Op.loc16.%MyInt (%MyInt) = "int.sadd"; +// CHECK:STDOUT: fn(%self.param: @MyInt.as.Add.impl.Op.%MyInt (%MyInt), %other.param: @MyInt.as.Add.impl.Op.%MyInt (%MyInt)) -> @MyInt.as.Add.impl.Op.%MyInt (%MyInt) = "int.sadd"; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @Double(%N.loc19_11.2: Core.IntLiteral) { @@ -339,9 +339,9 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %require_complete: = require_complete_type %MyInt.loc19_39.1 [symbolic = %require_complete (constants.%require_complete.fc7)] // CHECK:STDOUT: %Add.lookup_impl_witness: = lookup_impl_witness %MyInt.loc19_39.1, @Add [symbolic = %Add.lookup_impl_witness (constants.%Add.lookup_impl_witness)] // CHECK:STDOUT: %Add.facet.loc20_11: %Add.type = facet_value %MyInt.loc19_39.1, (%Add.lookup_impl_witness) [symbolic = %Add.facet.loc20_11 (constants.%Add.facet.5a7)] -// CHECK:STDOUT: %.loc20_11: type = fn_type_with_self_type constants.%Op.type.31b, %Add.facet.loc20_11 [symbolic = %.loc20_11 (constants.%.0a6)] +// CHECK:STDOUT: %.loc20_11: type = fn_type_with_self_type constants.%Add.Op.type, %Add.facet.loc20_11 [symbolic = %.loc20_11 (constants.%.0a6)] // CHECK:STDOUT: %impl.elem0.loc20_11.2: @Double.%.loc20_11 (%.0a6) = impl_witness_access %Add.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc20_11.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %specific_impl_fn.loc20_11.2: = specific_impl_function %impl.elem0.loc20_11.2, @Op.loc5(%Add.facet.loc20_11) [symbolic = %specific_impl_fn.loc20_11.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc20_11.2: = specific_impl_function %impl.elem0.loc20_11.2, @Add.Op(%Add.facet.loc20_11) [symbolic = %specific_impl_fn.loc20_11.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%x.param: @Double.%MyInt.loc19_39.1 (%MyInt)) -> @Double.%MyInt.loc19_39.1 (%MyInt) { // CHECK:STDOUT: !entry: @@ -355,7 +355,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %.loc20_22.1: %Add.type = converted constants.%MyInt, %Add.facet.loc20_22.1 [symbolic = %Add.facet.loc20_11 (constants.%Add.facet.5a7)] // CHECK:STDOUT: %Add.facet.loc20_22.2: %Add.type = facet_value constants.%MyInt, (constants.%Add.lookup_impl_witness) [symbolic = %Add.facet.loc20_11 (constants.%Add.facet.5a7)] // CHECK:STDOUT: %.loc20_22.2: %Add.type = converted constants.%MyInt, %Add.facet.loc20_22.2 [symbolic = %Add.facet.loc20_11 (constants.%Add.facet.5a7)] -// CHECK:STDOUT: %specific_impl_fn.loc20_11.1: = specific_impl_function %impl.elem0.loc20_11.1, @Op.loc5(constants.%Add.facet.5a7) [symbolic = %specific_impl_fn.loc20_11.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc20_11.1: = specific_impl_function %impl.elem0.loc20_11.1, @Add.Op(constants.%Add.facet.5a7) [symbolic = %specific_impl_fn.loc20_11.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %bound_method.loc20_22: = bound_method %x.ref.loc20_10, %specific_impl_fn.loc20_11.1 // CHECK:STDOUT: %.loc20_22.3: init @Double.%MyInt.loc19_39.1 (%MyInt) = call %bound_method.loc20_22(%x.ref.loc20_10, %x.ref.loc20_21) // CHECK:STDOUT: %.loc20_23.1: @Double.%MyInt.loc19_39.1 (%MyInt) = value_of_initializer %.loc20_22.3 @@ -364,9 +364,9 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Op.loc5(constants.%Self) { +// CHECK:STDOUT: specific @Add.Op(constants.%Self) { // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %Self.as_type.loc5_15.2 => constants.%Self.as_type +// CHECK:STDOUT: %Self.as_type.loc5_15.1 => constants.%Self.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.8f9 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -379,26 +379,26 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %complete_type.loc13_1.2 => constants.%complete_type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Add.impl(constants.%N) { -// CHECK:STDOUT: %N.loc15_14.2 => constants.%N -// CHECK:STDOUT: %MyInt.loc15_39.2 => constants.%MyInt +// CHECK:STDOUT: specific @MyInt.as.Add.impl(constants.%N) { +// CHECK:STDOUT: %N.loc15_14.1 => constants.%N +// CHECK:STDOUT: %MyInt.loc15_39.1 => constants.%MyInt // CHECK:STDOUT: %Add.impl_witness => constants.%Add.impl_witness // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Op.type => constants.%Op.type.883 -// CHECK:STDOUT: %Op => constants.%Op.8bc +// CHECK:STDOUT: %MyInt.as.Add.impl.Op.type => constants.%MyInt.as.Add.impl.Op.type +// CHECK:STDOUT: %MyInt.as.Add.impl.Op => constants.%MyInt.as.Add.impl.Op // CHECK:STDOUT: %require_complete => constants.%require_complete.fc7 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Op.loc16(constants.%N) { +// CHECK:STDOUT: specific @MyInt.as.Add.impl.Op(constants.%N) { // CHECK:STDOUT: %N => constants.%N // CHECK:STDOUT: %MyInt => constants.%MyInt // CHECK:STDOUT: %pattern_type => constants.%pattern_type.a71 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Op.loc5(constants.%Add.facet.0e5) { +// CHECK:STDOUT: specific @Add.Op(constants.%Add.facet.0e5) { // CHECK:STDOUT: %Self => constants.%Add.facet.0e5 -// CHECK:STDOUT: %Self.as_type.loc5_15.2 => constants.%MyInt +// CHECK:STDOUT: %Self.as_type.loc5_15.1 => constants.%MyInt // CHECK:STDOUT: %pattern_type => constants.%pattern_type.a71 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -408,9 +408,9 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %pattern_type => constants.%pattern_type.a71 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Op.loc5(constants.%Add.facet.5a7) { +// CHECK:STDOUT: specific @Add.Op(constants.%Add.facet.5a7) { // CHECK:STDOUT: %Self => constants.%Add.facet.5a7 -// CHECK:STDOUT: %Self.as_type.loc5_15.2 => constants.%MyInt +// CHECK:STDOUT: %Self.as_type.loc5_15.1 => constants.%MyInt // CHECK:STDOUT: %pattern_type => constants.%pattern_type.a71 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -435,30 +435,30 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %Self: %Add.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Add.assoc_type: type = assoc_entity_type @Add [concrete] // CHECK:STDOUT: %assoc0: %Add.assoc_type = assoc_entity element0, imports.%Main.import_ref.5a3 [concrete] -// CHECK:STDOUT: %Op.type.31b: type = fn_type @Op.2 [concrete] -// CHECK:STDOUT: %Op.d59: %Op.type.31b = struct_value () [concrete] +// CHECK:STDOUT: %Add.Op.type: type = fn_type @Add.Op [concrete] +// CHECK:STDOUT: %Add.Op: %Add.Op.type = struct_value () [concrete] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic] // CHECK:STDOUT: %pattern_type.8f9: type = pattern_type %Self.as_type [symbolic] -// CHECK:STDOUT: %Add.impl_witness.e7c: = impl_witness imports.%Add.impl_witness_table, @Add.impl(%N) [symbolic] -// CHECK:STDOUT: %Op.type.883: type = fn_type @Op.1, @Add.impl(%N) [symbolic] -// CHECK:STDOUT: %Op.8bc: %Op.type.883 = struct_value () [symbolic] +// CHECK:STDOUT: %Add.impl_witness.e7c: = impl_witness imports.%Add.impl_witness_table, @MyInt.as.Add.impl(%N) [symbolic] +// CHECK:STDOUT: %MyInt.as.Add.impl.Op.type.883: type = fn_type @MyInt.as.Add.impl.Op, @MyInt.as.Add.impl(%N) [symbolic] +// CHECK:STDOUT: %MyInt.as.Add.impl.Op.8bc: %MyInt.as.Add.impl.Op.type.883 = struct_value () [symbolic] // CHECK:STDOUT: %pattern_type.a71: type = pattern_type %MyInt.09f [symbolic] // CHECK:STDOUT: %require_complete.fc7: = require_complete_type %MyInt.09f [symbolic] -// CHECK:STDOUT: %Add.impl_witness.976: = impl_witness imports.%Add.impl_witness_table, @Add.impl(%int_64) [concrete] -// CHECK:STDOUT: %Op.type.5a6: type = fn_type @Op.1, @Add.impl(%int_64) [concrete] -// CHECK:STDOUT: %Op.cf9: %Op.type.5a6 = struct_value () [concrete] +// CHECK:STDOUT: %Add.impl_witness.976: = impl_witness imports.%Add.impl_witness_table, @MyInt.as.Add.impl(%int_64) [concrete] +// CHECK:STDOUT: %MyInt.as.Add.impl.Op.type.5a6: type = fn_type @MyInt.as.Add.impl.Op, @MyInt.as.Add.impl(%int_64) [concrete] +// CHECK:STDOUT: %MyInt.as.Add.impl.Op.cf9: %MyInt.as.Add.impl.Op.type.5a6 = struct_value () [concrete] // CHECK:STDOUT: %Add.facet.434: %Add.type = facet_value %MyInt.f30, (%Add.impl_witness.976) [concrete] -// CHECK:STDOUT: %.39b: type = fn_type_with_self_type %Op.type.31b, %Add.facet.434 [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.cf9, @Op.1(%int_64) [concrete] +// CHECK:STDOUT: %.39b: type = fn_type_with_self_type %Add.Op.type, %Add.facet.434 [concrete] +// CHECK:STDOUT: %MyInt.as.Add.impl.Op.specific_fn: = specific_function %MyInt.as.Add.impl.Op.cf9, @MyInt.as.Add.impl.Op(%int_64) [concrete] // CHECK:STDOUT: %CallImportedDouble.type: type = fn_type @CallImportedDouble [concrete] // CHECK:STDOUT: %CallImportedDouble: %CallImportedDouble.type = struct_value () [concrete] // CHECK:STDOUT: %Double.type: type = fn_type @Double [concrete] // CHECK:STDOUT: %Double: %Double.type = struct_value () [concrete] // CHECK:STDOUT: %Add.lookup_impl_witness: = lookup_impl_witness %MyInt.09f, @Add [symbolic] // CHECK:STDOUT: %Add.facet.5a7: %Add.type = facet_value %MyInt.09f, (%Add.lookup_impl_witness) [symbolic] -// CHECK:STDOUT: %.0a6: type = fn_type_with_self_type %Op.type.31b, %Add.facet.5a7 [symbolic] +// CHECK:STDOUT: %.0a6: type = fn_type_with_self_type %Add.Op.type, %Add.facet.5a7 [symbolic] // CHECK:STDOUT: %impl.elem0: %.0a6 = impl_witness_access %Add.lookup_impl_witness, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Op.2(%Add.facet.5a7) [symbolic] +// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Add.Op(%Add.facet.5a7) [symbolic] // CHECK:STDOUT: %Double.specific_fn: = specific_function %Double, @Double(%int_64) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -474,15 +474,15 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %Main.import_ref.07c = import_ref Main//generic_impl, inst17 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.f99: %Add.assoc_type = import_ref Main//generic_impl, loc5_41, loaded [concrete = constants.%assoc0] // CHECK:STDOUT: %Main.Op = import_ref Main//generic_impl, Op, unloaded -// CHECK:STDOUT: %Main.import_ref.5a3: %Op.type.31b = import_ref Main//generic_impl, loc5_41, loaded [concrete = constants.%Op.d59] +// CHECK:STDOUT: %Main.import_ref.5a3: %Add.Op.type = import_ref Main//generic_impl, loc5_41, loaded [concrete = constants.%Add.Op] // CHECK:STDOUT: %Main.import_ref.e5e: %Add.type = import_ref Main//generic_impl, inst17 [no loc], loaded [symbolic = constants.%Self] -// CHECK:STDOUT: %Main.import_ref.9fe: = import_ref Main//generic_impl, loc15_48, loaded [symbolic = @Add.impl.%Add.impl_witness (constants.%Add.impl_witness.e7c)] -// CHECK:STDOUT: %Main.import_ref.f1e294.2: Core.IntLiteral = import_ref Main//generic_impl, loc15_14, loaded [symbolic = @Add.impl.%N (constants.%N)] -// CHECK:STDOUT: %Main.import_ref.719: type = import_ref Main//generic_impl, loc15_39, loaded [symbolic = @Add.impl.%MyInt (constants.%MyInt.09f)] +// CHECK:STDOUT: %Main.import_ref.9fe: = import_ref Main//generic_impl, loc15_48, loaded [symbolic = @MyInt.as.Add.impl.%Add.impl_witness (constants.%Add.impl_witness.e7c)] +// CHECK:STDOUT: %Main.import_ref.f1e294.2: Core.IntLiteral = import_ref Main//generic_impl, loc15_14, loaded [symbolic = @MyInt.as.Add.impl.%N (constants.%N)] +// CHECK:STDOUT: %Main.import_ref.719: type = import_ref Main//generic_impl, loc15_39, loaded [symbolic = @MyInt.as.Add.impl.%MyInt (constants.%MyInt.09f)] // CHECK:STDOUT: %Main.import_ref.bf0: type = import_ref Main//generic_impl, loc15_44, loaded [concrete = constants.%Add.type] -// CHECK:STDOUT: %Main.import_ref.19b: @Add.impl.%Op.type (%Op.type.883) = import_ref Main//generic_impl, loc16_42, loaded [symbolic = @Add.impl.%Op (constants.%Op.8bc)] -// CHECK:STDOUT: %Add.impl_witness_table = impl_witness_table (%Main.import_ref.19b), @Add.impl [concrete] -// CHECK:STDOUT: %Main.import_ref.f1e294.3: Core.IntLiteral = import_ref Main//generic_impl, loc15_14, loaded [symbolic = @Add.impl.%N (constants.%N)] +// CHECK:STDOUT: %Main.import_ref.19b: @MyInt.as.Add.impl.%MyInt.as.Add.impl.Op.type (%MyInt.as.Add.impl.Op.type.883) = import_ref Main//generic_impl, loc16_42, loaded [symbolic = @MyInt.as.Add.impl.%MyInt.as.Add.impl.Op (constants.%MyInt.as.Add.impl.Op.8bc)] +// CHECK:STDOUT: %Add.impl_witness_table = impl_witness_table (%Main.import_ref.19b), @MyInt.as.Add.impl [concrete] +// CHECK:STDOUT: %Main.import_ref.f1e294.3: Core.IntLiteral = import_ref Main//generic_impl, loc15_14, loaded [symbolic = @MyInt.as.Add.impl.%N (constants.%N)] // CHECK:STDOUT: %Main.import_ref.f1e294.4: Core.IntLiteral = import_ref Main//generic_impl, loc19_11, loaded [symbolic = @Double.%N (constants.%N)] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -544,14 +544,14 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: witness = (imports.%Main.Op) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @Add.impl(imports.%Main.import_ref.f1e294.2: Core.IntLiteral) [from "generic_impl.carbon"] { +// CHECK:STDOUT: generic impl @MyInt.as.Add.impl(imports.%Main.import_ref.f1e294.2: Core.IntLiteral) [from "generic_impl.carbon"] { // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)] // CHECK:STDOUT: %MyInt: type = class_type @MyInt, @MyInt(%N) [symbolic = %MyInt (constants.%MyInt.09f)] -// CHECK:STDOUT: %Add.impl_witness: = impl_witness imports.%Add.impl_witness_table, @Add.impl(%N) [symbolic = %Add.impl_witness (constants.%Add.impl_witness.e7c)] +// CHECK:STDOUT: %Add.impl_witness: = impl_witness imports.%Add.impl_witness_table, @MyInt.as.Add.impl(%N) [symbolic = %Add.impl_witness (constants.%Add.impl_witness.e7c)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Op.type: type = fn_type @Op.1, @Add.impl(%N) [symbolic = %Op.type (constants.%Op.type.883)] -// CHECK:STDOUT: %Op: @Add.impl.%Op.type (%Op.type.883) = struct_value () [symbolic = %Op (constants.%Op.8bc)] +// CHECK:STDOUT: %MyInt.as.Add.impl.Op.type: type = fn_type @MyInt.as.Add.impl.Op, @MyInt.as.Add.impl(%N) [symbolic = %MyInt.as.Add.impl.Op.type (constants.%MyInt.as.Add.impl.Op.type.883)] +// CHECK:STDOUT: %MyInt.as.Add.impl.Op: @MyInt.as.Add.impl.%MyInt.as.Add.impl.Op.type (%MyInt.as.Add.impl.Op.type.883) = struct_value () [symbolic = %MyInt.as.Add.impl.Op (constants.%MyInt.as.Add.impl.Op.8bc)] // CHECK:STDOUT: %require_complete: = require_complete_type %MyInt [symbolic = %require_complete (constants.%require_complete.fc7)] // CHECK:STDOUT: // CHECK:STDOUT: impl: imports.%Main.import_ref.719 as imports.%Main.import_ref.bf0 { @@ -581,18 +581,18 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %x.ref.loc9_10: %MyInt.f30 = name_ref x, %x // CHECK:STDOUT: %Add.ref: type = name_ref Add, imports.%Main.Add [concrete = constants.%Add.type] // CHECK:STDOUT: %Op.ref: %Add.assoc_type = name_ref Op, imports.%Main.import_ref.f99 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: %.39b = impl_witness_access constants.%Add.impl_witness.976, element0 [concrete = constants.%Op.cf9] +// CHECK:STDOUT: %impl.elem0: %.39b = impl_witness_access constants.%Add.impl_witness.976, element0 [concrete = constants.%MyInt.as.Add.impl.Op.cf9] // CHECK:STDOUT: %bound_method.loc9_11: = bound_method %x.ref.loc9_10, %impl.elem0 // CHECK:STDOUT: %x.ref.loc9_21: %MyInt.f30 = name_ref x, %x -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.1(constants.%int_64) [concrete = constants.%Op.specific_fn] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @MyInt.as.Add.impl.Op(constants.%int_64) [concrete = constants.%MyInt.as.Add.impl.Op.specific_fn] // CHECK:STDOUT: %bound_method.loc9_22: = bound_method %x.ref.loc9_10, %specific_fn -// CHECK:STDOUT: %int.sadd: init %MyInt.f30 = call %bound_method.loc9_22(%x.ref.loc9_10, %x.ref.loc9_21) -// CHECK:STDOUT: %.loc9_23.1: %MyInt.f30 = value_of_initializer %int.sadd -// CHECK:STDOUT: %.loc9_23.2: %MyInt.f30 = converted %int.sadd, %.loc9_23.1 +// CHECK:STDOUT: %MyInt.as.Add.impl.Op.call: init %MyInt.f30 = call %bound_method.loc9_22(%x.ref.loc9_10, %x.ref.loc9_21) +// CHECK:STDOUT: %.loc9_23.1: %MyInt.f30 = value_of_initializer %MyInt.as.Add.impl.Op.call +// CHECK:STDOUT: %.loc9_23.2: %MyInt.f30 = converted %MyInt.as.Add.impl.Op.call, %.loc9_23.1 // CHECK:STDOUT: return %.loc9_23.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Op.2(imports.%Main.import_ref.e5e: %Add.type) [from "generic_impl.carbon"] { +// CHECK:STDOUT: generic fn @Add.Op(imports.%Main.import_ref.e5e: %Add.type) [from "generic_impl.carbon"] { // CHECK:STDOUT: %Self: %Add.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic = %Self.as_type (constants.%Self.as_type)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type [symbolic = %pattern_type (constants.%pattern_type.8f9)] @@ -600,7 +600,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Op.1(imports.%Main.import_ref.f1e294.3: Core.IntLiteral) [from "generic_impl.carbon"] { +// CHECK:STDOUT: generic fn @MyInt.as.Add.impl.Op(imports.%Main.import_ref.f1e294.3: Core.IntLiteral) [from "generic_impl.carbon"] { // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)] // CHECK:STDOUT: %MyInt: type = class_type @MyInt, @MyInt(%N) [symbolic = %MyInt (constants.%MyInt.09f)] // CHECK:STDOUT: %pattern_type: type = pattern_type %MyInt [symbolic = %pattern_type (constants.%pattern_type.a71)] @@ -630,9 +630,9 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %require_complete: = require_complete_type %MyInt [symbolic = %require_complete (constants.%require_complete.fc7)] // CHECK:STDOUT: %Add.lookup_impl_witness: = lookup_impl_witness %MyInt, @Add [symbolic = %Add.lookup_impl_witness (constants.%Add.lookup_impl_witness)] // CHECK:STDOUT: %Add.facet: %Add.type = facet_value %MyInt, (%Add.lookup_impl_witness) [symbolic = %Add.facet (constants.%Add.facet.5a7)] -// CHECK:STDOUT: %.1: type = fn_type_with_self_type constants.%Op.type.31b, %Add.facet [symbolic = %.1 (constants.%.0a6)] +// CHECK:STDOUT: %.1: type = fn_type_with_self_type constants.%Add.Op.type, %Add.facet [symbolic = %.1 (constants.%.0a6)] // CHECK:STDOUT: %impl.elem0: @Double.%.1 (%.0a6) = impl_witness_access %Add.lookup_impl_witness, element0 [symbolic = %impl.elem0 (constants.%impl.elem0)] -// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Op.2(%Add.facet) [symbolic = %specific_impl_fn (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Add.Op(%Add.facet) [symbolic = %specific_impl_fn (constants.%specific_impl_fn)] // CHECK:STDOUT: // CHECK:STDOUT: fn; // CHECK:STDOUT: } @@ -655,41 +655,41 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %complete_type => constants.%complete_type.4a1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Op.2(constants.%Self) { +// CHECK:STDOUT: specific @Add.Op(constants.%Self) { // CHECK:STDOUT: %Self => constants.%Self // CHECK:STDOUT: %Self.as_type => constants.%Self.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.8f9 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Add.impl(constants.%N) { +// CHECK:STDOUT: specific @MyInt.as.Add.impl(constants.%N) { // CHECK:STDOUT: %N => constants.%N // CHECK:STDOUT: %MyInt => constants.%MyInt.09f // CHECK:STDOUT: %Add.impl_witness => constants.%Add.impl_witness.e7c // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Op.type => constants.%Op.type.883 -// CHECK:STDOUT: %Op => constants.%Op.8bc +// CHECK:STDOUT: %MyInt.as.Add.impl.Op.type => constants.%MyInt.as.Add.impl.Op.type.883 +// CHECK:STDOUT: %MyInt.as.Add.impl.Op => constants.%MyInt.as.Add.impl.Op.8bc // CHECK:STDOUT: %require_complete => constants.%require_complete.fc7 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Op.1(constants.%N) { +// CHECK:STDOUT: specific @MyInt.as.Add.impl.Op(constants.%N) { // CHECK:STDOUT: %N => constants.%N // CHECK:STDOUT: %MyInt => constants.%MyInt.09f // CHECK:STDOUT: %pattern_type => constants.%pattern_type.a71 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Add.impl(constants.%int_64) { +// CHECK:STDOUT: specific @MyInt.as.Add.impl(constants.%int_64) { // CHECK:STDOUT: %N => constants.%int_64 // CHECK:STDOUT: %MyInt => constants.%MyInt.f30 // CHECK:STDOUT: %Add.impl_witness => constants.%Add.impl_witness.976 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Op.type => constants.%Op.type.5a6 -// CHECK:STDOUT: %Op => constants.%Op.cf9 +// CHECK:STDOUT: %MyInt.as.Add.impl.Op.type => constants.%MyInt.as.Add.impl.Op.type.5a6 +// CHECK:STDOUT: %MyInt.as.Add.impl.Op => constants.%MyInt.as.Add.impl.Op.cf9 // CHECK:STDOUT: %require_complete => constants.%complete_type.4a1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Op.1(constants.%int_64) { +// CHECK:STDOUT: specific @MyInt.as.Add.impl.Op(constants.%int_64) { // CHECK:STDOUT: %N => constants.%int_64 // CHECK:STDOUT: %MyInt => constants.%MyInt.f30 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.e50 @@ -713,11 +713,11 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %Add.lookup_impl_witness => constants.%Add.impl_witness.976 // CHECK:STDOUT: %Add.facet => constants.%Add.facet.434 // CHECK:STDOUT: %.1 => constants.%.39b -// CHECK:STDOUT: %impl.elem0 => constants.%Op.cf9 -// CHECK:STDOUT: %specific_impl_fn => constants.%Op.specific_fn +// CHECK:STDOUT: %impl.elem0 => constants.%MyInt.as.Add.impl.Op.cf9 +// CHECK:STDOUT: %specific_impl_fn => constants.%MyInt.as.Add.impl.Op.specific_fn // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Op.2(constants.%Add.facet.434) { +// CHECK:STDOUT: specific @Add.Op(constants.%Add.facet.434) { // CHECK:STDOUT: %Self => constants.%Add.facet.434 // CHECK:STDOUT: %Self.as_type => constants.%MyInt.f30 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.e50 @@ -735,13 +735,13 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [concrete] // CHECK:STDOUT: %pattern_type.956: type = pattern_type %i32.builtin [concrete] -// CHECK:STDOUT: %ToLiteral.type.e7c: type = fn_type @ToLiteral.loc6 [concrete] -// CHECK:STDOUT: %ToLiteral.cf3: %ToLiteral.type.e7c = struct_value () [concrete] +// CHECK:STDOUT: %ToLiteral.type: type = fn_type @ToLiteral [concrete] +// CHECK:STDOUT: %ToLiteral: %ToLiteral.type = struct_value () [concrete] // CHECK:STDOUT: %FromLiteral.type: type = fn_type @FromLiteral [concrete] // CHECK:STDOUT: %FromLiteral: %FromLiteral.type = struct_value () [concrete] // CHECK:STDOUT: %N.987: %i32.builtin = bind_symbolic_name N, 0 [symbolic] -// CHECK:STDOUT: %int.convert_checked.346: init Core.IntLiteral = call %ToLiteral.cf3(%N.987) [symbolic] -// CHECK:STDOUT: %iN.builtin.016: type = int_type signed, %int.convert_checked.346 [symbolic] +// CHECK:STDOUT: %ToLiteral.call: init Core.IntLiteral = call %ToLiteral(%N.987) [symbolic] +// CHECK:STDOUT: %iN.builtin.016: type = int_type signed, %ToLiteral.call [symbolic] // CHECK:STDOUT: %pattern_type.bd6: type = pattern_type %iN.builtin.016 [symbolic] // CHECK:STDOUT: %Make.type: type = fn_type @Make [concrete] // CHECK:STDOUT: %Make: %Make.type = struct_value () [concrete] @@ -749,13 +749,13 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %Make.specific_fn: = specific_function %Make, @Make(%N.987) [symbolic] // CHECK:STDOUT: %OtherInt: type = class_type @OtherInt [concrete] // CHECK:STDOUT: %pattern_type.710: type = pattern_type %OtherInt [concrete] -// CHECK:STDOUT: %ToLiteral.type.67d: type = fn_type @ToLiteral.loc16 [concrete] -// CHECK:STDOUT: %ToLiteral.ec2: %ToLiteral.type.67d = struct_value () [concrete] +// CHECK:STDOUT: %OtherInt.ToLiteral.type: type = fn_type @OtherInt.ToLiteral [concrete] +// CHECK:STDOUT: %OtherInt.ToLiteral: %OtherInt.ToLiteral.type = struct_value () [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %i32.builtin [concrete] // CHECK:STDOUT: %N.335: %OtherInt = bind_symbolic_name N, 0 [symbolic] -// CHECK:STDOUT: %ToLiteral.bound: = bound_method %N.335, %ToLiteral.ec2 [symbolic] -// CHECK:STDOUT: %int.convert_checked.b6b: init Core.IntLiteral = call %ToLiteral.bound(%N.335) [symbolic] -// CHECK:STDOUT: %iN.builtin.9ef: type = int_type signed, %int.convert_checked.b6b [symbolic] +// CHECK:STDOUT: %OtherInt.ToLiteral.bound: = bound_method %N.335, %OtherInt.ToLiteral [symbolic] +// CHECK:STDOUT: %OtherInt.ToLiteral.call: init Core.IntLiteral = call %OtherInt.ToLiteral.bound(%N.335) [symbolic] +// CHECK:STDOUT: %iN.builtin.9ef: type = int_type signed, %OtherInt.ToLiteral.call [symbolic] // CHECK:STDOUT: %pattern_type.9eb: type = pattern_type %iN.builtin.9ef [symbolic] // CHECK:STDOUT: %MakeFromClass.type: type = fn_type @MakeFromClass [concrete] // CHECK:STDOUT: %MakeFromClass: %MakeFromClass.type = struct_value () [concrete] @@ -767,7 +767,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: package: = namespace [concrete] { // CHECK:STDOUT: .IntLiteral = %IntLiteral.decl // CHECK:STDOUT: .Int = %Int.decl -// CHECK:STDOUT: .ToLiteral = %ToLiteral.decl.loc6 +// CHECK:STDOUT: .ToLiteral = %ToLiteral.decl // CHECK:STDOUT: .FromLiteral = %FromLiteral.decl // CHECK:STDOUT: .Make = %Make.decl // CHECK:STDOUT: .OtherInt = %OtherInt.decl @@ -789,31 +789,31 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %n.param: Core.IntLiteral = value_param call_param0 // CHECK:STDOUT: %.loc5_22.1: type = splice_block %.loc5_22.3 [concrete = Core.IntLiteral] { // CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [concrete = constants.%IntLiteral] -// CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc5_22.2: type = value_of_initializer %int_literal.make_type [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc5_22.3: type = converted %int_literal.make_type, %.loc5_22.2 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %IntLiteral.call: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc5_22.2: type = value_of_initializer %IntLiteral.call [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc5_22.3: type = converted %IntLiteral.call, %.loc5_22.2 [concrete = Core.IntLiteral] // CHECK:STDOUT: } // CHECK:STDOUT: %n: Core.IntLiteral = bind_name n, %n.param // CHECK:STDOUT: %return.param: ref type = out_param call_param1 // CHECK:STDOUT: %return: ref type = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %ToLiteral.decl.loc6: %ToLiteral.type.e7c = fn_decl @ToLiteral.loc6 [concrete = constants.%ToLiteral.cf3] { +// CHECK:STDOUT: %ToLiteral.decl: %ToLiteral.type = fn_decl @ToLiteral [concrete = constants.%ToLiteral] { // CHECK:STDOUT: %n.patt: %pattern_type.956 = binding_pattern n [concrete] // CHECK:STDOUT: %n.param_patt: %pattern_type.956 = value_param_pattern %n.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.dc0 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.dc0 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [concrete = constants.%IntLiteral] -// CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc6_40.1: type = value_of_initializer %int_literal.make_type [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc6_40.2: type = converted %int_literal.make_type, %.loc6_40.1 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %IntLiteral.call: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc6_40.1: type = value_of_initializer %IntLiteral.call [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc6_40.2: type = converted %IntLiteral.call, %.loc6_40.1 [concrete = Core.IntLiteral] // CHECK:STDOUT: %n.param: %i32.builtin = value_param call_param0 // CHECK:STDOUT: %.loc6_23.1: type = splice_block %.loc6_23.3 [concrete = constants.%i32.builtin] { // CHECK:STDOUT: %Int.ref: %Int.type = name_ref Int, file.%Int.decl [concrete = constants.%Int] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %int.make_type_signed: init type = call %Int.ref(%int_32) [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc6_23.2: type = value_of_initializer %int.make_type_signed [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc6_23.3: type = converted %int.make_type_signed, %.loc6_23.2 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %Int.call: init type = call %Int.ref(%int_32) [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc6_23.2: type = value_of_initializer %Int.call [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc6_23.3: type = converted %Int.call, %.loc6_23.2 [concrete = constants.%i32.builtin] // CHECK:STDOUT: } // CHECK:STDOUT: %n: %i32.builtin = bind_name n, %n.param // CHECK:STDOUT: %return.param: ref Core.IntLiteral = out_param call_param1 @@ -827,15 +827,15 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: } { // CHECK:STDOUT: %Int.ref: %Int.type = name_ref Int, file.%Int.decl [concrete = constants.%Int] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %int.make_type_signed: init type = call %Int.ref(%int_32) [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc7_42.1: type = value_of_initializer %int.make_type_signed [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc7_42.2: type = converted %int.make_type_signed, %.loc7_42.1 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %Int.call: init type = call %Int.ref(%int_32) [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc7_42.1: type = value_of_initializer %Int.call [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc7_42.2: type = converted %Int.call, %.loc7_42.1 [concrete = constants.%i32.builtin] // CHECK:STDOUT: %n.param: Core.IntLiteral = value_param call_param0 // CHECK:STDOUT: %.loc7_30.1: type = splice_block %.loc7_30.3 [concrete = Core.IntLiteral] { // CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [concrete = constants.%IntLiteral] -// CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc7_30.2: type = value_of_initializer %int_literal.make_type [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc7_30.3: type = converted %int_literal.make_type, %.loc7_30.2 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %IntLiteral.call: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc7_30.2: type = value_of_initializer %IntLiteral.call [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc7_30.3: type = converted %IntLiteral.call, %.loc7_30.2 [concrete = Core.IntLiteral] // CHECK:STDOUT: } // CHECK:STDOUT: %n: Core.IntLiteral = bind_name n, %n.param // CHECK:STDOUT: %return.param: ref %i32.builtin = out_param call_param1 @@ -847,36 +847,36 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %return.param_patt: @Make.%pattern_type (%pattern_type.bd6) = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Int.ref.loc9_25: %Int.type = name_ref Int, file.%Int.decl [concrete = constants.%Int] -// CHECK:STDOUT: %ToLiteral.ref: %ToLiteral.type.e7c = name_ref ToLiteral, file.%ToLiteral.decl.loc6 [concrete = constants.%ToLiteral.cf3] +// CHECK:STDOUT: %ToLiteral.ref: %ToLiteral.type = name_ref ToLiteral, file.%ToLiteral.decl [concrete = constants.%ToLiteral] // CHECK:STDOUT: %N.ref.loc9_39: %i32.builtin = name_ref N, %N.loc9_9.2 [symbolic = %N.loc9_9.1 (constants.%N.987)] -// CHECK:STDOUT: %int.convert_checked.loc9_40.2: init Core.IntLiteral = call %ToLiteral.ref(%N.ref.loc9_39) [symbolic = %int.convert_checked.loc9_40.1 (constants.%int.convert_checked.346)] -// CHECK:STDOUT: %.loc9_40.1: Core.IntLiteral = value_of_initializer %int.convert_checked.loc9_40.2 [symbolic = %int.convert_checked.loc9_40.1 (constants.%int.convert_checked.346)] -// CHECK:STDOUT: %.loc9_40.2: Core.IntLiteral = converted %int.convert_checked.loc9_40.2, %.loc9_40.1 [symbolic = %int.convert_checked.loc9_40.1 (constants.%int.convert_checked.346)] -// CHECK:STDOUT: %int.make_type_signed.loc9_41: init type = call %Int.ref.loc9_25(%.loc9_40.2) [symbolic = %iN.builtin (constants.%iN.builtin.016)] -// CHECK:STDOUT: %.loc9_41.1: type = value_of_initializer %int.make_type_signed.loc9_41 [symbolic = %iN.builtin (constants.%iN.builtin.016)] -// CHECK:STDOUT: %.loc9_41.2: type = converted %int.make_type_signed.loc9_41, %.loc9_41.1 [symbolic = %iN.builtin (constants.%iN.builtin.016)] +// CHECK:STDOUT: %ToLiteral.call.loc9_40.2: init Core.IntLiteral = call %ToLiteral.ref(%N.ref.loc9_39) [symbolic = %ToLiteral.call.loc9_40.1 (constants.%ToLiteral.call)] +// CHECK:STDOUT: %.loc9_40.1: Core.IntLiteral = value_of_initializer %ToLiteral.call.loc9_40.2 [symbolic = %ToLiteral.call.loc9_40.1 (constants.%ToLiteral.call)] +// CHECK:STDOUT: %.loc9_40.2: Core.IntLiteral = converted %ToLiteral.call.loc9_40.2, %.loc9_40.1 [symbolic = %ToLiteral.call.loc9_40.1 (constants.%ToLiteral.call)] +// CHECK:STDOUT: %Int.call.loc9_41: init type = call %Int.ref.loc9_25(%.loc9_40.2) [symbolic = %iN.builtin (constants.%iN.builtin.016)] +// CHECK:STDOUT: %.loc9_41.1: type = value_of_initializer %Int.call.loc9_41 [symbolic = %iN.builtin (constants.%iN.builtin.016)] +// CHECK:STDOUT: %.loc9_41.2: type = converted %Int.call.loc9_41, %.loc9_41.1 [symbolic = %iN.builtin (constants.%iN.builtin.016)] // CHECK:STDOUT: %.loc9_19.1: type = splice_block %.loc9_19.3 [concrete = constants.%i32.builtin] { // CHECK:STDOUT: %Int.ref.loc9_13: %Int.type = name_ref Int, file.%Int.decl [concrete = constants.%Int] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %int.make_type_signed.loc9_19: init type = call %Int.ref.loc9_13(%int_32) [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc9_19.2: type = value_of_initializer %int.make_type_signed.loc9_19 [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc9_19.3: type = converted %int.make_type_signed.loc9_19, %.loc9_19.2 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %Int.call.loc9_19: init type = call %Int.ref.loc9_13(%int_32) [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc9_19.2: type = value_of_initializer %Int.call.loc9_19 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc9_19.3: type = converted %Int.call.loc9_19, %.loc9_19.2 [concrete = constants.%i32.builtin] // CHECK:STDOUT: } // CHECK:STDOUT: %N.loc9_9.2: %i32.builtin = bind_symbolic_name N, 0 [symbolic = %N.loc9_9.1 (constants.%N.987)] // CHECK:STDOUT: %return.param: ref @Make.%iN.builtin (%iN.builtin.016) = out_param call_param0 // CHECK:STDOUT: %return: ref @Make.%iN.builtin (%iN.builtin.016) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %OtherInt.decl: type = class_decl @OtherInt [concrete = constants.%OtherInt] {} {} -// CHECK:STDOUT: %ToLiteral.decl.loc16: %ToLiteral.type.67d = fn_decl @ToLiteral.loc16 [concrete = constants.%ToLiteral.ec2] { +// CHECK:STDOUT: %OtherInt.ToLiteral.decl: %OtherInt.ToLiteral.type = fn_decl @OtherInt.ToLiteral [concrete = constants.%OtherInt.ToLiteral] { // CHECK:STDOUT: %self.patt: %pattern_type.710 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.710 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.dc0 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.dc0 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %IntLiteral.ref.loc16: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [concrete = constants.%IntLiteral] -// CHECK:STDOUT: %int_literal.make_type.loc16: init type = call %IntLiteral.ref.loc16() [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc16_51.1: type = value_of_initializer %int_literal.make_type.loc16 [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc16_51.2: type = converted %int_literal.make_type.loc16, %.loc16_51.1 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %IntLiteral.call.loc16: init type = call %IntLiteral.ref.loc16() [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc16_51.1: type = value_of_initializer %IntLiteral.call.loc16 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc16_51.2: type = converted %IntLiteral.call.loc16, %.loc16_51.1 [concrete = Core.IntLiteral] // CHECK:STDOUT: %self.param.loc16: %OtherInt = value_param call_param0 // CHECK:STDOUT: %Self.ref.loc16: type = name_ref Self, constants.%OtherInt [concrete = constants.%OtherInt] // CHECK:STDOUT: %self.loc16: %OtherInt = bind_name self, %self.param.loc16 @@ -890,14 +890,14 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: } { // CHECK:STDOUT: %Int.ref: %Int.type = name_ref Int, file.%Int.decl [concrete = constants.%Int] // CHECK:STDOUT: %N.ref.loc18_39: %OtherInt = name_ref N, %N.loc18_18.2 [symbolic = %N.loc18_18.1 (constants.%N.335)] -// CHECK:STDOUT: %ToLiteral.ref: %ToLiteral.type.67d = name_ref ToLiteral, @OtherInt.%ToLiteral.decl [concrete = constants.%ToLiteral.ec2] -// CHECK:STDOUT: %ToLiteral.bound.loc18_40.2: = bound_method %N.ref.loc18_39, %ToLiteral.ref [symbolic = %ToLiteral.bound.loc18_40.1 (constants.%ToLiteral.bound)] -// CHECK:STDOUT: %int.convert_checked.loc18_51.2: init Core.IntLiteral = call %ToLiteral.bound.loc18_40.2(%N.ref.loc18_39) [symbolic = %int.convert_checked.loc18_51.1 (constants.%int.convert_checked.b6b)] -// CHECK:STDOUT: %.loc18_51.1: Core.IntLiteral = value_of_initializer %int.convert_checked.loc18_51.2 [symbolic = %int.convert_checked.loc18_51.1 (constants.%int.convert_checked.b6b)] -// CHECK:STDOUT: %.loc18_51.2: Core.IntLiteral = converted %int.convert_checked.loc18_51.2, %.loc18_51.1 [symbolic = %int.convert_checked.loc18_51.1 (constants.%int.convert_checked.b6b)] -// CHECK:STDOUT: %int.make_type_signed: init type = call %Int.ref(%.loc18_51.2) [symbolic = %iN.builtin (constants.%iN.builtin.9ef)] -// CHECK:STDOUT: %.loc18_52.1: type = value_of_initializer %int.make_type_signed [symbolic = %iN.builtin (constants.%iN.builtin.9ef)] -// CHECK:STDOUT: %.loc18_52.2: type = converted %int.make_type_signed, %.loc18_52.1 [symbolic = %iN.builtin (constants.%iN.builtin.9ef)] +// CHECK:STDOUT: %ToLiteral.ref: %OtherInt.ToLiteral.type = name_ref ToLiteral, @OtherInt.%OtherInt.ToLiteral.decl [concrete = constants.%OtherInt.ToLiteral] +// CHECK:STDOUT: %OtherInt.ToLiteral.bound.loc18_40.2: = bound_method %N.ref.loc18_39, %ToLiteral.ref [symbolic = %OtherInt.ToLiteral.bound.loc18_40.1 (constants.%OtherInt.ToLiteral.bound)] +// CHECK:STDOUT: %OtherInt.ToLiteral.call.loc18_51.2: init Core.IntLiteral = call %OtherInt.ToLiteral.bound.loc18_40.2(%N.ref.loc18_39) [symbolic = %OtherInt.ToLiteral.call.loc18_51.1 (constants.%OtherInt.ToLiteral.call)] +// CHECK:STDOUT: %.loc18_51.1: Core.IntLiteral = value_of_initializer %OtherInt.ToLiteral.call.loc18_51.2 [symbolic = %OtherInt.ToLiteral.call.loc18_51.1 (constants.%OtherInt.ToLiteral.call)] +// CHECK:STDOUT: %.loc18_51.2: Core.IntLiteral = converted %OtherInt.ToLiteral.call.loc18_51.2, %.loc18_51.1 [symbolic = %OtherInt.ToLiteral.call.loc18_51.1 (constants.%OtherInt.ToLiteral.call)] +// CHECK:STDOUT: %Int.call: init type = call %Int.ref(%.loc18_51.2) [symbolic = %iN.builtin (constants.%iN.builtin.9ef)] +// CHECK:STDOUT: %.loc18_52.1: type = value_of_initializer %Int.call [symbolic = %iN.builtin (constants.%iN.builtin.9ef)] +// CHECK:STDOUT: %.loc18_52.2: type = converted %Int.call, %.loc18_52.1 [symbolic = %iN.builtin (constants.%iN.builtin.9ef)] // CHECK:STDOUT: %OtherInt.ref: type = name_ref OtherInt, file.%OtherInt.decl [concrete = constants.%OtherInt] // CHECK:STDOUT: %N.loc18_18.2: %OtherInt = bind_symbolic_name N, 0 [symbolic = %N.loc18_18.1 (constants.%N.335)] // CHECK:STDOUT: %return.param: ref @MakeFromClass.%iN.builtin (%iN.builtin.9ef) = out_param call_param0 @@ -908,20 +908,20 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: class @OtherInt { // CHECK:STDOUT: %Int.ref: %Int.type = name_ref Int, file.%Int.decl [concrete = constants.%Int] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %int.make_type_signed: init type = call %Int.ref(%int_32) [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc12_16.1: type = value_of_initializer %int.make_type_signed [concrete = constants.%i32.builtin] -// CHECK:STDOUT: %.loc12_16.2: type = converted %int.make_type_signed, %.loc12_16.1 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %Int.call: init type = call %Int.ref(%int_32) [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc12_16.1: type = value_of_initializer %Int.call [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc12_16.2: type = converted %Int.call, %.loc12_16.1 [concrete = constants.%i32.builtin] // CHECK:STDOUT: adapt_decl %.loc12_16.2 [concrete] -// CHECK:STDOUT: %ToLiteral.decl: %ToLiteral.type.67d = fn_decl @ToLiteral.loc16 [concrete = constants.%ToLiteral.ec2] { +// CHECK:STDOUT: %OtherInt.ToLiteral.decl: %OtherInt.ToLiteral.type = fn_decl @OtherInt.ToLiteral [concrete = constants.%OtherInt.ToLiteral] { // CHECK:STDOUT: %self.patt: %pattern_type.710 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.710 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.dc0 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.dc0 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %IntLiteral.ref.loc13: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [concrete = constants.%IntLiteral] -// CHECK:STDOUT: %int_literal.make_type.loc13: init type = call %IntLiteral.ref.loc13() [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc13_44.1: type = value_of_initializer %int_literal.make_type.loc13 [concrete = Core.IntLiteral] -// CHECK:STDOUT: %.loc13_44.2: type = converted %int_literal.make_type.loc13, %.loc13_44.1 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %IntLiteral.call.loc13: init type = call %IntLiteral.ref.loc13() [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc13_44.1: type = value_of_initializer %IntLiteral.call.loc13 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc13_44.2: type = converted %IntLiteral.call.loc13, %.loc13_44.1 [concrete = Core.IntLiteral] // CHECK:STDOUT: %self.param.loc13: %OtherInt = value_param call_param0 // CHECK:STDOUT: %Self.ref.loc13: type = name_ref Self, constants.%OtherInt [concrete = constants.%OtherInt] // CHECK:STDOUT: %self.loc13: %OtherInt = bind_name self, %self.param.loc13 @@ -935,21 +935,21 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: .Self = constants.%OtherInt // CHECK:STDOUT: .Int = // CHECK:STDOUT: .IntLiteral = -// CHECK:STDOUT: .ToLiteral = %ToLiteral.decl +// CHECK:STDOUT: .ToLiteral = %OtherInt.ToLiteral.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @IntLiteral() -> type = "int_literal.make_type"; // CHECK:STDOUT: // CHECK:STDOUT: fn @Int(%n.param: Core.IntLiteral) -> type = "int.make_type_signed"; // CHECK:STDOUT: -// CHECK:STDOUT: fn @ToLiteral.loc6(%n.param: %i32.builtin) -> Core.IntLiteral = "int.convert_checked"; +// CHECK:STDOUT: fn @ToLiteral(%n.param: %i32.builtin) -> Core.IntLiteral = "int.convert_checked"; // CHECK:STDOUT: // CHECK:STDOUT: fn @FromLiteral(%n.param: Core.IntLiteral) -> %i32.builtin = "int.convert_checked"; // CHECK:STDOUT: // CHECK:STDOUT: generic fn @Make(%N.loc9_9.2: %i32.builtin) { // CHECK:STDOUT: %N.loc9_9.1: %i32.builtin = bind_symbolic_name N, 0 [symbolic = %N.loc9_9.1 (constants.%N.987)] -// CHECK:STDOUT: %int.convert_checked.loc9_40.1: init Core.IntLiteral = call constants.%ToLiteral.cf3(%N.loc9_9.1) [symbolic = %int.convert_checked.loc9_40.1 (constants.%int.convert_checked.346)] -// CHECK:STDOUT: %iN.builtin: type = int_type signed, %int.convert_checked.loc9_40.1 [symbolic = %iN.builtin (constants.%iN.builtin.016)] +// CHECK:STDOUT: %ToLiteral.call.loc9_40.1: init Core.IntLiteral = call constants.%ToLiteral(%N.loc9_9.1) [symbolic = %ToLiteral.call.loc9_40.1 (constants.%ToLiteral.call)] +// CHECK:STDOUT: %iN.builtin: type = int_type signed, %ToLiteral.call.loc9_40.1 [symbolic = %iN.builtin (constants.%iN.builtin.016)] // CHECK:STDOUT: %pattern_type: type = pattern_type %iN.builtin [symbolic = %pattern_type (constants.%pattern_type.bd6)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -968,13 +968,13 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @ToLiteral.loc16(%self.param.loc16: %OtherInt) -> Core.IntLiteral = "int.convert_checked"; +// CHECK:STDOUT: fn @OtherInt.ToLiteral(%self.param.loc16: %OtherInt) -> Core.IntLiteral = "int.convert_checked"; // CHECK:STDOUT: // CHECK:STDOUT: generic fn @MakeFromClass(%N.loc18_18.2: %OtherInt) { // CHECK:STDOUT: %N.loc18_18.1: %OtherInt = bind_symbolic_name N, 0 [symbolic = %N.loc18_18.1 (constants.%N.335)] -// CHECK:STDOUT: %ToLiteral.bound.loc18_40.1: = bound_method %N.loc18_18.1, constants.%ToLiteral.ec2 [symbolic = %ToLiteral.bound.loc18_40.1 (constants.%ToLiteral.bound)] -// CHECK:STDOUT: %int.convert_checked.loc18_51.1: init Core.IntLiteral = call %ToLiteral.bound.loc18_40.1(%N.loc18_18.1) [symbolic = %int.convert_checked.loc18_51.1 (constants.%int.convert_checked.b6b)] -// CHECK:STDOUT: %iN.builtin: type = int_type signed, %int.convert_checked.loc18_51.1 [symbolic = %iN.builtin (constants.%iN.builtin.9ef)] +// CHECK:STDOUT: %OtherInt.ToLiteral.bound.loc18_40.1: = bound_method %N.loc18_18.1, constants.%OtherInt.ToLiteral [symbolic = %OtherInt.ToLiteral.bound.loc18_40.1 (constants.%OtherInt.ToLiteral.bound)] +// CHECK:STDOUT: %OtherInt.ToLiteral.call.loc18_51.1: init Core.IntLiteral = call %OtherInt.ToLiteral.bound.loc18_40.1(%N.loc18_18.1) [symbolic = %OtherInt.ToLiteral.call.loc18_51.1 (constants.%OtherInt.ToLiteral.call)] +// CHECK:STDOUT: %iN.builtin: type = int_type signed, %OtherInt.ToLiteral.call.loc18_51.1 [symbolic = %iN.builtin (constants.%iN.builtin.9ef)] // CHECK:STDOUT: %pattern_type: type = pattern_type %iN.builtin [symbolic = %pattern_type (constants.%pattern_type.9eb)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -995,7 +995,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: // CHECK:STDOUT: specific @Make(constants.%N.987) { // CHECK:STDOUT: %N.loc9_9.1 => constants.%N.987 -// CHECK:STDOUT: %int.convert_checked.loc9_40.1 => constants.%int.convert_checked.346 +// CHECK:STDOUT: %ToLiteral.call.loc9_40.1 => constants.%ToLiteral.call // CHECK:STDOUT: %iN.builtin => constants.%iN.builtin.016 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.bd6 // CHECK:STDOUT: @@ -1006,8 +1006,8 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: // CHECK:STDOUT: specific @MakeFromClass(constants.%N.335) { // CHECK:STDOUT: %N.loc18_18.1 => constants.%N.335 -// CHECK:STDOUT: %ToLiteral.bound.loc18_40.1 => constants.%ToLiteral.bound -// CHECK:STDOUT: %int.convert_checked.loc18_51.1 => constants.%int.convert_checked.b6b +// CHECK:STDOUT: %OtherInt.ToLiteral.bound.loc18_40.1 => constants.%OtherInt.ToLiteral.bound +// CHECK:STDOUT: %OtherInt.ToLiteral.call.loc18_51.1 => constants.%OtherInt.ToLiteral.call // CHECK:STDOUT: %iN.builtin => constants.%iN.builtin.9ef // CHECK:STDOUT: %pattern_type => constants.%pattern_type.9eb // CHECK:STDOUT: @@ -1029,10 +1029,10 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [concrete] // CHECK:STDOUT: %N.987: %i32.builtin = bind_symbolic_name N, 0 [symbolic] -// CHECK:STDOUT: %ToLiteral.type.e7c: type = fn_type @ToLiteral.1 [concrete] -// CHECK:STDOUT: %ToLiteral.cf3: %ToLiteral.type.e7c = struct_value () [concrete] -// CHECK:STDOUT: %int.convert_checked.346: init Core.IntLiteral = call %ToLiteral.cf3(%N.987) [symbolic] -// CHECK:STDOUT: %iN.builtin.016: type = int_type signed, %int.convert_checked.346 [symbolic] +// CHECK:STDOUT: %ToLiteral.type: type = fn_type @ToLiteral [concrete] +// CHECK:STDOUT: %ToLiteral: %ToLiteral.type = struct_value () [concrete] +// CHECK:STDOUT: %ToLiteral.call: init Core.IntLiteral = call %ToLiteral(%N.987) [symbolic] +// CHECK:STDOUT: %iN.builtin.016: type = int_type signed, %ToLiteral.call [symbolic] // CHECK:STDOUT: %pattern_type.bd6: type = pattern_type %iN.builtin.016 [symbolic] // CHECK:STDOUT: %require_complete.88f: = require_complete_type %iN.builtin.016 [symbolic] // CHECK:STDOUT: %Make.specific_fn.8ec: = specific_function %Make, @Make(%N.987) [symbolic] @@ -1045,16 +1045,16 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %OtherInt: type = class_type @OtherInt [concrete] // CHECK:STDOUT: %complete_type.f8a: = complete_type_witness %i32.builtin [concrete] // CHECK:STDOUT: %N.335: %OtherInt = bind_symbolic_name N, 0 [symbolic] -// CHECK:STDOUT: %ToLiteral.type.67d: type = fn_type @ToLiteral.2 [concrete] -// CHECK:STDOUT: %ToLiteral.ec2: %ToLiteral.type.67d = struct_value () [concrete] -// CHECK:STDOUT: %ToLiteral.bound.8e3: = bound_method %N.335, %ToLiteral.ec2 [symbolic] -// CHECK:STDOUT: %int.convert_checked.b6b: init Core.IntLiteral = call %ToLiteral.bound.8e3(%N.335) [symbolic] -// CHECK:STDOUT: %iN.builtin.9ef: type = int_type signed, %int.convert_checked.b6b [symbolic] +// CHECK:STDOUT: %OtherInt.ToLiteral.type: type = fn_type @OtherInt.ToLiteral [concrete] +// CHECK:STDOUT: %OtherInt.ToLiteral: %OtherInt.ToLiteral.type = struct_value () [concrete] +// CHECK:STDOUT: %OtherInt.ToLiteral.bound.8e3: = bound_method %N.335, %OtherInt.ToLiteral [symbolic] +// CHECK:STDOUT: %OtherInt.ToLiteral.call: init Core.IntLiteral = call %OtherInt.ToLiteral.bound.8e3(%N.335) [symbolic] +// CHECK:STDOUT: %iN.builtin.9ef: type = int_type signed, %OtherInt.ToLiteral.call [symbolic] // CHECK:STDOUT: %pattern_type.9eb: type = pattern_type %iN.builtin.9ef [symbolic] // CHECK:STDOUT: %require_complete.c7d: = require_complete_type %iN.builtin.9ef [symbolic] // CHECK:STDOUT: %MakeFromClass.specific_fn.004: = specific_function %MakeFromClass, @MakeFromClass(%N.335) [symbolic] // CHECK:STDOUT: %int_64.06b: %OtherInt = int_value 64 [concrete] -// CHECK:STDOUT: %ToLiteral.bound.735: = bound_method %int_64.06b, %ToLiteral.ec2 [concrete] +// CHECK:STDOUT: %OtherInt.ToLiteral.bound.735: = bound_method %int_64.06b, %OtherInt.ToLiteral [concrete] // CHECK:STDOUT: %MakeFromClass.specific_fn.61b: = specific_function %MakeFromClass, @MakeFromClass(%int_64.06b) [concrete] // CHECK:STDOUT: %complete_type.4a1: = complete_type_witness %i64.builtin [concrete] // CHECK:STDOUT: } @@ -1095,9 +1095,9 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %.loc6_14.1: type = splice_block %.loc6_14.3 [concrete = constants.%i64.builtin] { // CHECK:STDOUT: %Int.ref.loc6: %Int.type = name_ref Int, imports.%Main.Int [concrete = constants.%Int] // CHECK:STDOUT: %int_64.loc6: Core.IntLiteral = int_value 64 [concrete = constants.%int_64.fab] -// CHECK:STDOUT: %int.make_type_signed.loc6: init type = call %Int.ref.loc6(%int_64.loc6) [concrete = constants.%i64.builtin] -// CHECK:STDOUT: %.loc6_14.2: type = value_of_initializer %int.make_type_signed.loc6 [concrete = constants.%i64.builtin] -// CHECK:STDOUT: %.loc6_14.3: type = converted %int.make_type_signed.loc6, %.loc6_14.2 [concrete = constants.%i64.builtin] +// CHECK:STDOUT: %Int.call.loc6: init type = call %Int.ref.loc6(%int_64.loc6) [concrete = constants.%i64.builtin] +// CHECK:STDOUT: %.loc6_14.2: type = value_of_initializer %Int.call.loc6 [concrete = constants.%i64.builtin] +// CHECK:STDOUT: %.loc6_14.3: type = converted %Int.call.loc6, %.loc6_14.2 [concrete = constants.%i64.builtin] // CHECK:STDOUT: } // CHECK:STDOUT: %m: ref %i64.builtin = bind_name m, %m.var [concrete = %m.var] // CHECK:STDOUT: name_binding_decl { @@ -1108,9 +1108,9 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %.loc7_14.1: type = splice_block %.loc7_14.3 [concrete = constants.%i64.builtin] { // CHECK:STDOUT: %Int.ref.loc7: %Int.type = name_ref Int, imports.%Main.Int [concrete = constants.%Int] // CHECK:STDOUT: %int_64.loc7: Core.IntLiteral = int_value 64 [concrete = constants.%int_64.fab] -// CHECK:STDOUT: %int.make_type_signed.loc7: init type = call %Int.ref.loc7(%int_64.loc7) [concrete = constants.%i64.builtin] -// CHECK:STDOUT: %.loc7_14.2: type = value_of_initializer %int.make_type_signed.loc7 [concrete = constants.%i64.builtin] -// CHECK:STDOUT: %.loc7_14.3: type = converted %int.make_type_signed.loc7, %.loc7_14.2 [concrete = constants.%i64.builtin] +// CHECK:STDOUT: %Int.call.loc7: init type = call %Int.ref.loc7(%int_64.loc7) [concrete = constants.%i64.builtin] +// CHECK:STDOUT: %.loc7_14.2: type = value_of_initializer %Int.call.loc7 [concrete = constants.%i64.builtin] +// CHECK:STDOUT: %.loc7_14.3: type = converted %Int.call.loc7, %.loc7_14.2 [concrete = constants.%i64.builtin] // CHECK:STDOUT: } // CHECK:STDOUT: %n: ref %i64.builtin = bind_name n, %n.var [concrete = %n.var] // CHECK:STDOUT: } @@ -1127,8 +1127,8 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: // CHECK:STDOUT: generic fn @Make(imports.%Main.import_ref.85e: %i32.builtin) [from "convert_symbolic.carbon"] { // CHECK:STDOUT: %N: %i32.builtin = bind_symbolic_name N, 0 [symbolic = %N (constants.%N.987)] -// CHECK:STDOUT: %int.convert_checked: init Core.IntLiteral = call constants.%ToLiteral.cf3(%N) [symbolic = %int.convert_checked (constants.%int.convert_checked.346)] -// CHECK:STDOUT: %iN.builtin: type = int_type signed, %int.convert_checked [symbolic = %iN.builtin (constants.%iN.builtin.016)] +// CHECK:STDOUT: %ToLiteral.call: init Core.IntLiteral = call constants.%ToLiteral(%N) [symbolic = %ToLiteral.call (constants.%ToLiteral.call)] +// CHECK:STDOUT: %iN.builtin: type = int_type signed, %ToLiteral.call [symbolic = %iN.builtin (constants.%iN.builtin.016)] // CHECK:STDOUT: %pattern_type: type = pattern_type %iN.builtin [symbolic = %pattern_type (constants.%pattern_type.bd6)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -1138,15 +1138,15 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @ToLiteral.1 = "int.convert_checked" [from "convert_symbolic.carbon"]; +// CHECK:STDOUT: fn @ToLiteral = "int.convert_checked" [from "convert_symbolic.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: fn @FromLiteral = "int.convert_checked" [from "convert_symbolic.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: generic fn @MakeFromClass(imports.%Main.import_ref.77d: %OtherInt) [from "convert_symbolic.carbon"] { // CHECK:STDOUT: %N: %OtherInt = bind_symbolic_name N, 0 [symbolic = %N (constants.%N.335)] -// CHECK:STDOUT: %ToLiteral.bound: = bound_method %N, constants.%ToLiteral.ec2 [symbolic = %ToLiteral.bound (constants.%ToLiteral.bound.8e3)] -// CHECK:STDOUT: %int.convert_checked: init Core.IntLiteral = call %ToLiteral.bound(%N) [symbolic = %int.convert_checked (constants.%int.convert_checked.b6b)] -// CHECK:STDOUT: %iN.builtin: type = int_type signed, %int.convert_checked [symbolic = %iN.builtin (constants.%iN.builtin.9ef)] +// CHECK:STDOUT: %OtherInt.ToLiteral.bound: = bound_method %N, constants.%OtherInt.ToLiteral [symbolic = %OtherInt.ToLiteral.bound (constants.%OtherInt.ToLiteral.bound.8e3)] +// CHECK:STDOUT: %OtherInt.ToLiteral.call: init Core.IntLiteral = call %OtherInt.ToLiteral.bound(%N) [symbolic = %OtherInt.ToLiteral.call (constants.%OtherInt.ToLiteral.call)] +// CHECK:STDOUT: %iN.builtin: type = int_type signed, %OtherInt.ToLiteral.call [symbolic = %iN.builtin (constants.%iN.builtin.9ef)] // CHECK:STDOUT: %pattern_type: type = pattern_type %iN.builtin [symbolic = %pattern_type (constants.%pattern_type.9eb)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -1156,26 +1156,26 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @ToLiteral.2 = "int.convert_checked" [from "convert_symbolic.carbon"]; +// CHECK:STDOUT: fn @OtherInt.ToLiteral = "int.convert_checked" [from "convert_symbolic.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, imports.%Main.Make [concrete = constants.%Make] // CHECK:STDOUT: %FromLiteral.ref.loc6: %FromLiteral.type = name_ref FromLiteral, imports.%Main.FromLiteral [concrete = constants.%FromLiteral] // CHECK:STDOUT: %int_64.loc6: Core.IntLiteral = int_value 64 [concrete = constants.%int_64.fab] -// CHECK:STDOUT: %int.convert_checked.loc6: init %i32.builtin = call %FromLiteral.ref.loc6(%int_64.loc6) [concrete = constants.%int_64.f82] -// CHECK:STDOUT: %.loc6_38.1: %i32.builtin = value_of_initializer %int.convert_checked.loc6 [concrete = constants.%int_64.f82] -// CHECK:STDOUT: %.loc6_38.2: %i32.builtin = converted %int.convert_checked.loc6, %.loc6_38.1 [concrete = constants.%int_64.f82] +// CHECK:STDOUT: %FromLiteral.call.loc6: init %i32.builtin = call %FromLiteral.ref.loc6(%int_64.loc6) [concrete = constants.%int_64.f82] +// CHECK:STDOUT: %.loc6_38.1: %i32.builtin = value_of_initializer %FromLiteral.call.loc6 [concrete = constants.%int_64.f82] +// CHECK:STDOUT: %.loc6_38.2: %i32.builtin = converted %FromLiteral.call.loc6, %.loc6_38.1 [concrete = constants.%int_64.f82] // CHECK:STDOUT: %Make.specific_fn: = specific_function %Make.ref, @Make(constants.%int_64.f82) [concrete = constants.%Make.specific_fn.02d] // CHECK:STDOUT: %Make.call: init %i64.builtin = call %Make.specific_fn() // CHECK:STDOUT: assign file.%m.var, %Make.call // CHECK:STDOUT: %MakeFromClass.ref: %MakeFromClass.type = name_ref MakeFromClass, imports.%Main.MakeFromClass [concrete = constants.%MakeFromClass] // CHECK:STDOUT: %FromLiteral.ref.loc7: %FromLiteral.type = name_ref FromLiteral, imports.%Main.FromLiteral [concrete = constants.%FromLiteral] // CHECK:STDOUT: %int_64.loc7: Core.IntLiteral = int_value 64 [concrete = constants.%int_64.fab] -// CHECK:STDOUT: %int.convert_checked.loc7: init %i32.builtin = call %FromLiteral.ref.loc7(%int_64.loc7) [concrete = constants.%int_64.f82] +// CHECK:STDOUT: %FromLiteral.call.loc7: init %i32.builtin = call %FromLiteral.ref.loc7(%int_64.loc7) [concrete = constants.%int_64.f82] // CHECK:STDOUT: %OtherInt.ref: type = name_ref OtherInt, imports.%Main.OtherInt [concrete = constants.%OtherInt] -// CHECK:STDOUT: %.loc7_48.1: init %OtherInt = as_compatible %int.convert_checked.loc7 [concrete = constants.%int_64.06b] -// CHECK:STDOUT: %.loc7_48.2: init %OtherInt = converted %int.convert_checked.loc7, %.loc7_48.1 [concrete = constants.%int_64.06b] +// CHECK:STDOUT: %.loc7_48.1: init %OtherInt = as_compatible %FromLiteral.call.loc7 [concrete = constants.%int_64.06b] +// CHECK:STDOUT: %.loc7_48.2: init %OtherInt = converted %FromLiteral.call.loc7, %.loc7_48.1 [concrete = constants.%int_64.06b] // CHECK:STDOUT: %.loc7_59.1: %OtherInt = value_of_initializer %.loc7_48.2 [concrete = constants.%int_64.06b] // CHECK:STDOUT: %.loc7_59.2: %OtherInt = converted %.loc7_48.2, %.loc7_59.1 [concrete = constants.%int_64.06b] // CHECK:STDOUT: %MakeFromClass.specific_fn: = specific_function %MakeFromClass.ref, @MakeFromClass(constants.%int_64.06b) [concrete = constants.%MakeFromClass.specific_fn.61b] @@ -1186,7 +1186,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: // CHECK:STDOUT: specific @Make(constants.%N.987) { // CHECK:STDOUT: %N => constants.%N.987 -// CHECK:STDOUT: %int.convert_checked => constants.%int.convert_checked.346 +// CHECK:STDOUT: %ToLiteral.call => constants.%ToLiteral.call // CHECK:STDOUT: %iN.builtin => constants.%iN.builtin.016 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.bd6 // CHECK:STDOUT: @@ -1197,7 +1197,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: // CHECK:STDOUT: specific @Make(constants.%int_64.f82) { // CHECK:STDOUT: %N => constants.%int_64.f82 -// CHECK:STDOUT: %int.convert_checked => constants.%int_64.fab +// CHECK:STDOUT: %ToLiteral.call => constants.%int_64.fab // CHECK:STDOUT: %iN.builtin => constants.%i64.builtin // CHECK:STDOUT: %pattern_type => constants.%pattern_type.e13 // CHECK:STDOUT: @@ -1208,8 +1208,8 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: // CHECK:STDOUT: specific @MakeFromClass(constants.%N.335) { // CHECK:STDOUT: %N => constants.%N.335 -// CHECK:STDOUT: %ToLiteral.bound => constants.%ToLiteral.bound.8e3 -// CHECK:STDOUT: %int.convert_checked => constants.%int.convert_checked.b6b +// CHECK:STDOUT: %OtherInt.ToLiteral.bound => constants.%OtherInt.ToLiteral.bound.8e3 +// CHECK:STDOUT: %OtherInt.ToLiteral.call => constants.%OtherInt.ToLiteral.call // CHECK:STDOUT: %iN.builtin => constants.%iN.builtin.9ef // CHECK:STDOUT: %pattern_type => constants.%pattern_type.9eb // CHECK:STDOUT: @@ -1220,8 +1220,8 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: // CHECK:STDOUT: specific @MakeFromClass(constants.%int_64.06b) { // CHECK:STDOUT: %N => constants.%int_64.06b -// CHECK:STDOUT: %ToLiteral.bound => constants.%ToLiteral.bound.735 -// CHECK:STDOUT: %int.convert_checked => constants.%int_64.fab +// CHECK:STDOUT: %OtherInt.ToLiteral.bound => constants.%OtherInt.ToLiteral.bound.735 +// CHECK:STDOUT: %OtherInt.ToLiteral.call => constants.%int_64.fab // CHECK:STDOUT: %iN.builtin => constants.%i64.builtin // CHECK:STDOUT: %pattern_type => constants.%pattern_type.e13 // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/import_compound.carbon b/toolchain/check/testdata/impl/import_compound.carbon index 9b9b0f316c84..da4364e92141 100644 --- a/toolchain/check/testdata/impl/import_compound.carbon +++ b/toolchain/check/testdata/impl/import_compound.carbon @@ -103,28 +103,28 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: constants { // CHECK:STDOUT: %NonInstance.type: type = facet_type <@NonInstance> [concrete] // CHECK:STDOUT: %Self.73c: %NonInstance.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.9e5: type = fn_type @F.loc4 [concrete] +// CHECK:STDOUT: %NonInstance.F.type: type = fn_type @NonInstance.F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F.4e4: %F.type.9e5 = struct_value () [concrete] +// CHECK:STDOUT: %NonInstance.F: %NonInstance.F.type = struct_value () [concrete] // CHECK:STDOUT: %NonInstance.assoc_type: type = assoc_entity_type @NonInstance [concrete] -// CHECK:STDOUT: %assoc0.525: %NonInstance.assoc_type = assoc_entity element0, @NonInstance.%F.decl [concrete] +// CHECK:STDOUT: %assoc0.525: %NonInstance.assoc_type = assoc_entity element0, @NonInstance.%NonInstance.F.decl [concrete] // CHECK:STDOUT: %struct_type.i: type = struct_type {.i: %empty_tuple.type} [concrete] // CHECK:STDOUT: %NonInstance.impl_witness: = impl_witness file.%NonInstance.impl_witness_table [concrete] -// CHECK:STDOUT: %F.type.042: type = fn_type @F.loc8 [concrete] -// CHECK:STDOUT: %F.db4: %F.type.042 = struct_value () [concrete] +// CHECK:STDOUT: %struct_type.i.as.NonInstance.impl.F.type: type = fn_type @struct_type.i.as.NonInstance.impl.F [concrete] +// CHECK:STDOUT: %struct_type.i.as.NonInstance.impl.F: %struct_type.i.as.NonInstance.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %NonInstance.facet: %NonInstance.type = facet_value %struct_type.i, (%NonInstance.impl_witness) [concrete] // CHECK:STDOUT: %Instance.type: type = facet_type <@Instance> [concrete] // CHECK:STDOUT: %Self.cf8: %Instance.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self.cf8 [symbolic] // CHECK:STDOUT: %pattern_type.4e4: type = pattern_type %Self.as_type [symbolic] -// CHECK:STDOUT: %G.type.1e1: type = fn_type @G.loc12 [concrete] -// CHECK:STDOUT: %G.449: %G.type.1e1 = struct_value () [concrete] +// CHECK:STDOUT: %Instance.G.type: type = fn_type @Instance.G [concrete] +// CHECK:STDOUT: %Instance.G: %Instance.G.type = struct_value () [concrete] // CHECK:STDOUT: %Instance.assoc_type: type = assoc_entity_type @Instance [concrete] -// CHECK:STDOUT: %assoc0.ab8: %Instance.assoc_type = assoc_entity element0, @Instance.%G.decl [concrete] +// CHECK:STDOUT: %assoc0.ab8: %Instance.assoc_type = assoc_entity element0, @Instance.%Instance.G.decl [concrete] // CHECK:STDOUT: %Instance.impl_witness: = impl_witness file.%Instance.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.9b2: type = pattern_type %struct_type.i [concrete] -// CHECK:STDOUT: %G.type.0c0: type = fn_type @G.loc16 [concrete] -// CHECK:STDOUT: %G.484: %G.type.0c0 = struct_value () [concrete] +// CHECK:STDOUT: %struct_type.i.as.Instance.impl.G.type: type = fn_type @struct_type.i.as.Instance.impl.G [concrete] +// CHECK:STDOUT: %struct_type.i.as.Instance.impl.G: %struct_type.i.as.Instance.impl.G.type = struct_value () [concrete] // CHECK:STDOUT: %Instance.facet: %Instance.type = facet_value %struct_type.i, (%Instance.impl_witness) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -143,116 +143,116 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %NonInstance.decl: type = interface_decl @NonInstance [concrete = constants.%NonInstance.type] {} {} -// CHECK:STDOUT: impl_decl @NonInstance.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @struct_type.i.as.NonInstance.impl [concrete] {} { // CHECK:STDOUT: %.loc7_12.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc7_12.2: type = converted %.loc7_12.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.i: type = struct_type {.i: %empty_tuple.type} [concrete = constants.%struct_type.i] // CHECK:STDOUT: %NonInstance.ref: type = name_ref NonInstance, file.%NonInstance.decl [concrete = constants.%NonInstance.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %NonInstance.impl_witness_table = impl_witness_table (@NonInstance.impl.%F.decl), @NonInstance.impl [concrete] +// CHECK:STDOUT: %NonInstance.impl_witness_table = impl_witness_table (@struct_type.i.as.NonInstance.impl.%struct_type.i.as.NonInstance.impl.F.decl), @struct_type.i.as.NonInstance.impl [concrete] // CHECK:STDOUT: %NonInstance.impl_witness: = impl_witness %NonInstance.impl_witness_table [concrete = constants.%NonInstance.impl_witness] // CHECK:STDOUT: %Instance.decl: type = interface_decl @Instance [concrete = constants.%Instance.type] {} {} -// CHECK:STDOUT: impl_decl @Instance.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @struct_type.i.as.Instance.impl [concrete] {} { // CHECK:STDOUT: %.loc15_12.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc15_12.2: type = converted %.loc15_12.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.i: type = struct_type {.i: %empty_tuple.type} [concrete = constants.%struct_type.i] // CHECK:STDOUT: %Instance.ref: type = name_ref Instance, file.%Instance.decl [concrete = constants.%Instance.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %Instance.impl_witness_table = impl_witness_table (@Instance.impl.%G.decl), @Instance.impl [concrete] +// CHECK:STDOUT: %Instance.impl_witness_table = impl_witness_table (@struct_type.i.as.Instance.impl.%struct_type.i.as.Instance.impl.G.decl), @struct_type.i.as.Instance.impl [concrete] // CHECK:STDOUT: %Instance.impl_witness: = impl_witness %Instance.impl_witness_table [concrete = constants.%Instance.impl_witness] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @NonInstance { // CHECK:STDOUT: %Self: %NonInstance.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.73c] -// CHECK:STDOUT: %F.decl: %F.type.9e5 = fn_decl @F.loc4 [concrete = constants.%F.4e4] {} {} -// CHECK:STDOUT: %assoc0: %NonInstance.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0.525] +// CHECK:STDOUT: %NonInstance.F.decl: %NonInstance.F.type = fn_decl @NonInstance.F [concrete = constants.%NonInstance.F] {} {} +// CHECK:STDOUT: %assoc0: %NonInstance.assoc_type = assoc_entity element0, %NonInstance.F.decl [concrete = constants.%assoc0.525] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F = %assoc0 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%NonInstance.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Instance { // CHECK:STDOUT: %Self: %Instance.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.cf8] -// CHECK:STDOUT: %G.decl: %G.type.1e1 = fn_decl @G.loc12 [concrete = constants.%G.449] { -// CHECK:STDOUT: %self.patt: @G.loc12.%pattern_type (%pattern_type.4e4) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @G.loc12.%pattern_type (%pattern_type.4e4) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %Instance.G.decl: %Instance.G.type = fn_decl @Instance.G [concrete = constants.%Instance.G] { +// CHECK:STDOUT: %self.patt: @Instance.G.%pattern_type (%pattern_type.4e4) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @Instance.G.%pattern_type (%pattern_type.4e4) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @G.loc12.%Self.as_type.loc12_14.2 (%Self.as_type) = value_param call_param0 -// CHECK:STDOUT: %.loc12_14.1: type = splice_block %.loc12_14.2 [symbolic = %Self.as_type.loc12_14.2 (constants.%Self.as_type)] { +// CHECK:STDOUT: %self.param: @Instance.G.%Self.as_type.loc12_14.1 (%Self.as_type) = value_param call_param0 +// CHECK:STDOUT: %.loc12_14.1: type = splice_block %.loc12_14.2 [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type)] { // CHECK:STDOUT: %Self.ref: %Instance.type = name_ref Self, @Instance.%Self [symbolic = %Self (constants.%Self.cf8)] -// CHECK:STDOUT: %Self.as_type.loc12_14.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc12_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc12_14.2: type = converted %Self.ref, %Self.as_type.loc12_14.1 [symbolic = %Self.as_type.loc12_14.2 (constants.%Self.as_type)] +// CHECK:STDOUT: %Self.as_type.loc12_14.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc12_14.2: type = converted %Self.ref, %Self.as_type.loc12_14.2 [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @G.loc12.%Self.as_type.loc12_14.2 (%Self.as_type) = bind_name self, %self.param +// CHECK:STDOUT: %self: @Instance.G.%Self.as_type.loc12_14.1 (%Self.as_type) = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %Instance.assoc_type = assoc_entity element0, %G.decl [concrete = constants.%assoc0.ab8] +// CHECK:STDOUT: %assoc0: %Instance.assoc_type = assoc_entity element0, %Instance.G.decl [concrete = constants.%assoc0.ab8] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .G = %assoc0 -// CHECK:STDOUT: witness = (%G.decl) +// CHECK:STDOUT: witness = (%Instance.G.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @NonInstance.impl: %struct_type.i as %NonInstance.ref { -// CHECK:STDOUT: %F.decl: %F.type.042 = fn_decl @F.loc8 [concrete = constants.%F.db4] {} {} +// CHECK:STDOUT: impl @struct_type.i.as.NonInstance.impl: %struct_type.i as %NonInstance.ref { +// CHECK:STDOUT: %struct_type.i.as.NonInstance.impl.F.decl: %struct_type.i.as.NonInstance.impl.F.type = fn_decl @struct_type.i.as.NonInstance.impl.F [concrete = constants.%struct_type.i.as.NonInstance.impl.F] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %struct_type.i.as.NonInstance.impl.F.decl // CHECK:STDOUT: witness = file.%NonInstance.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Instance.impl: %struct_type.i as %Instance.ref { -// CHECK:STDOUT: %G.decl: %G.type.0c0 = fn_decl @G.loc16 [concrete = constants.%G.484] { +// CHECK:STDOUT: impl @struct_type.i.as.Instance.impl: %struct_type.i as %Instance.ref { +// CHECK:STDOUT: %struct_type.i.as.Instance.impl.G.decl: %struct_type.i.as.Instance.impl.G.type = fn_decl @struct_type.i.as.Instance.impl.G [concrete = constants.%struct_type.i.as.Instance.impl.G] { // CHECK:STDOUT: %self.patt: %pattern_type.9b2 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.9b2 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %self.param: %struct_type.i = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @Instance.impl.%struct_type.i [concrete = constants.%struct_type.i] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @struct_type.i.as.Instance.impl.%struct_type.i [concrete = constants.%struct_type.i] // CHECK:STDOUT: %self: %struct_type.i = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .G = %struct_type.i.as.Instance.impl.G.decl // CHECK:STDOUT: witness = file.%Instance.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc4(@NonInstance.%Self: %NonInstance.type) { +// CHECK:STDOUT: generic fn @NonInstance.F(@NonInstance.%Self: %NonInstance.type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc8() { +// CHECK:STDOUT: fn @struct_type.i.as.NonInstance.impl.F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @G.loc12(@Instance.%Self: %Instance.type) { +// CHECK:STDOUT: generic fn @Instance.G(@Instance.%Self: %Instance.type) { // CHECK:STDOUT: %Self: %Instance.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.cf8)] -// CHECK:STDOUT: %Self.as_type.loc12_14.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc12_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc12_14.2 [symbolic = %pattern_type (constants.%pattern_type.4e4)] +// CHECK:STDOUT: %Self.as_type.loc12_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc12_14.1 [symbolic = %pattern_type (constants.%pattern_type.4e4)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @G.loc12.%Self.as_type.loc12_14.2 (%Self.as_type)); +// CHECK:STDOUT: fn(%self.param: @Instance.G.%Self.as_type.loc12_14.1 (%Self.as_type)); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G.loc16(%self.param: %struct_type.i) { +// CHECK:STDOUT: fn @struct_type.i.as.Instance.impl.G(%self.param: %struct_type.i) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc4(constants.%Self.73c) {} +// CHECK:STDOUT: specific @NonInstance.F(constants.%Self.73c) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc4(constants.%NonInstance.facet) {} +// CHECK:STDOUT: specific @NonInstance.F(constants.%NonInstance.facet) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @G.loc12(constants.%Self.cf8) { +// CHECK:STDOUT: specific @Instance.G(constants.%Self.cf8) { // CHECK:STDOUT: %Self => constants.%Self.cf8 -// CHECK:STDOUT: %Self.as_type.loc12_14.2 => constants.%Self.as_type +// CHECK:STDOUT: %Self.as_type.loc12_14.1 => constants.%Self.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.4e4 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @G.loc12(constants.%Instance.facet) { +// CHECK:STDOUT: specific @Instance.G(constants.%Instance.facet) { // CHECK:STDOUT: %Self => constants.%Instance.facet -// CHECK:STDOUT: %Self.as_type.loc12_14.2 => constants.%struct_type.i +// CHECK:STDOUT: %Self.as_type.loc12_14.1 => constants.%struct_type.i // CHECK:STDOUT: %pattern_type => constants.%pattern_type.9b2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -267,14 +267,14 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: %Self.73c: %NonInstance.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %NonInstance.assoc_type: type = assoc_entity_type @NonInstance [concrete] // CHECK:STDOUT: %assoc0: %NonInstance.assoc_type = assoc_entity element0, imports.%Main.import_ref.474 [concrete] -// CHECK:STDOUT: %F.type.9e5: type = fn_type @F.2 [concrete] -// CHECK:STDOUT: %F.4e4: %F.type.9e5 = struct_value () [concrete] +// CHECK:STDOUT: %NonInstance.F.type: type = fn_type @NonInstance.F [concrete] +// CHECK:STDOUT: %NonInstance.F: %NonInstance.F.type = struct_value () [concrete] // CHECK:STDOUT: %Instance.type: type = facet_type <@Instance> [concrete] // CHECK:STDOUT: %NonInstance.impl_witness: = impl_witness imports.%NonInstance.impl_witness_table [concrete] // CHECK:STDOUT: %NonInstance.facet: %NonInstance.type = facet_value %struct_type.i, (%NonInstance.impl_witness) [concrete] -// CHECK:STDOUT: %.923: type = fn_type_with_self_type %F.type.9e5, %NonInstance.facet [concrete] -// CHECK:STDOUT: %F.type.042: type = fn_type @F.1 [concrete] -// CHECK:STDOUT: %F.db4: %F.type.042 = struct_value () [concrete] +// CHECK:STDOUT: %.923: type = fn_type_with_self_type %NonInstance.F.type, %NonInstance.facet [concrete] +// CHECK:STDOUT: %struct_type.i.as.NonInstance.impl.F.type: type = fn_type @struct_type.i.as.NonInstance.impl.F [concrete] +// CHECK:STDOUT: %struct_type.i.as.NonInstance.impl.F: %struct_type.i.as.NonInstance.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -287,7 +287,7 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: %Main.import_ref.c55 = import_ref Main//lib, inst19 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.e3c: %NonInstance.assoc_type = import_ref Main//lib, loc4_9, loaded [concrete = constants.%assoc0] // CHECK:STDOUT: %Main.F = import_ref Main//lib, F, unloaded -// CHECK:STDOUT: %Main.import_ref.474: %F.type.9e5 = import_ref Main//lib, loc4_9, loaded [concrete = constants.%F.4e4] +// CHECK:STDOUT: %Main.import_ref.474: %NonInstance.F.type = import_ref Main//lib, loc4_9, loaded [concrete = constants.%NonInstance.F] // CHECK:STDOUT: %Main.import_ref.f85: %NonInstance.type = import_ref Main//lib, inst19 [no loc], loaded [symbolic = constants.%Self.73c] // CHECK:STDOUT: %Main.import_ref.a26: = import_ref Main//lib, loc7_30, loaded [concrete = constants.%NonInstance.impl_witness] // CHECK:STDOUT: %Main.import_ref.c9a3b6.1: type = import_ref Main//lib, loc7_13, loaded [concrete = constants.%struct_type.i] @@ -298,8 +298,8 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: %Main.import_ref.a9f = import_ref Main//lib, loc15_27, unloaded // CHECK:STDOUT: %Main.import_ref.c9a3b6.2: type = import_ref Main//lib, loc15_13, loaded [concrete = constants.%struct_type.i] // CHECK:STDOUT: %Main.import_ref.b49: type = import_ref Main//lib, loc15_18, loaded [concrete = constants.%Instance.type] -// CHECK:STDOUT: %Main.import_ref.2d7: %F.type.042 = import_ref Main//lib, loc8_10, loaded [concrete = constants.%F.db4] -// CHECK:STDOUT: %NonInstance.impl_witness_table = impl_witness_table (%Main.import_ref.2d7), @NonInstance.impl [concrete] +// CHECK:STDOUT: %Main.import_ref.2d7: %struct_type.i.as.NonInstance.impl.F.type = import_ref Main//lib, loc8_10, loaded [concrete = constants.%struct_type.i.as.NonInstance.impl.F] +// CHECK:STDOUT: %NonInstance.impl_witness_table = impl_witness_table (%Main.import_ref.2d7), @struct_type.i.as.NonInstance.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -328,12 +328,12 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: witness = (imports.%Main.G) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @NonInstance.impl: imports.%Main.import_ref.c9a3b6.1 as imports.%Main.import_ref.ef5 [from "lib.carbon"] { +// CHECK:STDOUT: impl @struct_type.i.as.NonInstance.impl: imports.%Main.import_ref.c9a3b6.1 as imports.%Main.import_ref.ef5 [from "lib.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = imports.%Main.import_ref.a26 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Instance.impl: imports.%Main.import_ref.c9a3b6.2 as imports.%Main.import_ref.b49 [from "lib.carbon"] { +// CHECK:STDOUT: impl @struct_type.i.as.Instance.impl: imports.%Main.import_ref.c9a3b6.2 as imports.%Main.import_ref.b49 [from "lib.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = imports.%Main.import_ref.a9f // CHECK:STDOUT: } @@ -347,18 +347,18 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: %F.ref: %NonInstance.assoc_type = name_ref F, imports.%Main.import_ref.e3c [concrete = constants.%assoc0] // CHECK:STDOUT: %NonInstance.facet: %NonInstance.type = facet_value constants.%struct_type.i, (constants.%NonInstance.impl_witness) [concrete = constants.%NonInstance.facet] // CHECK:STDOUT: %.loc6_11: %NonInstance.type = converted %struct_type.i, %NonInstance.facet [concrete = constants.%NonInstance.facet] -// CHECK:STDOUT: %impl.elem0: %.923 = impl_witness_access constants.%NonInstance.impl_witness, element0 [concrete = constants.%F.db4] -// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %impl.elem0() +// CHECK:STDOUT: %impl.elem0: %.923 = impl_witness_access constants.%NonInstance.impl_witness, element0 [concrete = constants.%struct_type.i.as.NonInstance.impl.F] +// CHECK:STDOUT: %struct_type.i.as.NonInstance.impl.F.call: init %empty_tuple.type = call %impl.elem0() // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.2(imports.%Main.import_ref.f85: %NonInstance.type) [from "lib.carbon"] { +// CHECK:STDOUT: generic fn @NonInstance.F(imports.%Main.import_ref.f85: %NonInstance.type) [from "lib.carbon"] { // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.1 [from "lib.carbon"]; +// CHECK:STDOUT: fn @struct_type.i.as.NonInstance.impl.F [from "lib.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.2(constants.%Self.73c) {} +// CHECK:STDOUT: specific @NonInstance.F(constants.%Self.73c) {} // CHECK:STDOUT: // CHECK:STDOUT: --- fail_import_non-instance.carbon // CHECK:STDOUT: @@ -372,8 +372,8 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: %Self.73c: %NonInstance.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %NonInstance.assoc_type: type = assoc_entity_type @NonInstance [concrete] // CHECK:STDOUT: %assoc0.8ce: %NonInstance.assoc_type = assoc_entity element0, imports.%Main.import_ref.474 [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %NonInstance.F.type: type = fn_type @NonInstance.F [concrete] +// CHECK:STDOUT: %NonInstance.F: %NonInstance.F.type = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %Instance.type: type = facet_type <@Instance> [concrete] @@ -390,7 +390,7 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: %Main.import_ref.c55 = import_ref Main//lib, inst19 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.e3c: %NonInstance.assoc_type = import_ref Main//lib, loc4_9, loaded [concrete = constants.%assoc0.8ce] // CHECK:STDOUT: %Main.F = import_ref Main//lib, F, unloaded -// CHECK:STDOUT: %Main.import_ref.474: %F.type = import_ref Main//lib, loc4_9, loaded [concrete = constants.%F] +// CHECK:STDOUT: %Main.import_ref.474: %NonInstance.F.type = import_ref Main//lib, loc4_9, loaded [concrete = constants.%NonInstance.F] // CHECK:STDOUT: %Main.import_ref.f85: %NonInstance.type = import_ref Main//lib, inst19 [no loc], loaded [symbolic = constants.%Self.73c] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] // CHECK:STDOUT: %Main.import_ref.eb8 = import_ref Main//lib, loc7_30, unloaded @@ -441,12 +441,12 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: witness = (imports.%Main.G) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @NonInstance.impl: imports.%Main.import_ref.c9a3b6.1 as imports.%Main.import_ref.ef5 [from "lib.carbon"] { +// CHECK:STDOUT: impl @struct_type.i.as.NonInstance.impl: imports.%Main.import_ref.c9a3b6.1 as imports.%Main.import_ref.ef5 [from "lib.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = imports.%Main.import_ref.eb8 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Instance.impl: imports.%Main.import_ref.c9a3b6.2 as imports.%Main.import_ref.b49 [from "lib.carbon"] { +// CHECK:STDOUT: impl @struct_type.i.as.Instance.impl: imports.%Main.import_ref.c9a3b6.2 as imports.%Main.import_ref.b49 [from "lib.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = imports.%Main.import_ref.a9f // CHECK:STDOUT: } @@ -460,11 +460,11 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(imports.%Main.import_ref.f85: %NonInstance.type) [from "lib.carbon"] { +// CHECK:STDOUT: generic fn @NonInstance.F(imports.%Main.import_ref.f85: %NonInstance.type) [from "lib.carbon"] { // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%Self.73c) {} +// CHECK:STDOUT: specific @NonInstance.F(constants.%Self.73c) {} // CHECK:STDOUT: // CHECK:STDOUT: --- fail_import_non-instance_indirect.carbon // CHECK:STDOUT: @@ -479,8 +479,8 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: %Self.73c: %NonInstance.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %NonInstance.assoc_type: type = assoc_entity_type @NonInstance [concrete] // CHECK:STDOUT: %assoc0.8ce: %NonInstance.assoc_type = assoc_entity element0, imports.%Main.import_ref.474 [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %NonInstance.F.type: type = fn_type @NonInstance.F [concrete] +// CHECK:STDOUT: %NonInstance.F: %NonInstance.F.type = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %Instance.type: type = facet_type <@Instance> [concrete] @@ -497,7 +497,7 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: %Main.import_ref.c55 = import_ref Main//lib, inst19 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.e3c: %NonInstance.assoc_type = import_ref Main//lib, loc4_9, loaded [concrete = constants.%assoc0.8ce] // CHECK:STDOUT: %Main.F = import_ref Main//lib, F, unloaded -// CHECK:STDOUT: %Main.import_ref.474: %F.type = import_ref Main//lib, loc4_9, loaded [concrete = constants.%F] +// CHECK:STDOUT: %Main.import_ref.474: %NonInstance.F.type = import_ref Main//lib, loc4_9, loaded [concrete = constants.%NonInstance.F] // CHECK:STDOUT: %Main.import_ref.f85: %NonInstance.type = import_ref Main//lib, inst19 [no loc], loaded [symbolic = constants.%Self.73c] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] // CHECK:STDOUT: %Main.import_ref.eb8 = import_ref Main//lib, loc7_30, unloaded @@ -549,12 +549,12 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: witness = (imports.%Main.G) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @NonInstance.impl: imports.%Main.import_ref.c9a3b6.1 as imports.%Main.import_ref.ef5 [from "lib.carbon"] { +// CHECK:STDOUT: impl @struct_type.i.as.NonInstance.impl: imports.%Main.import_ref.c9a3b6.1 as imports.%Main.import_ref.ef5 [from "lib.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = imports.%Main.import_ref.eb8 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Instance.impl: imports.%Main.import_ref.c9a3b6.2 as imports.%Main.import_ref.b49 [from "lib.carbon"] { +// CHECK:STDOUT: impl @struct_type.i.as.Instance.impl: imports.%Main.import_ref.c9a3b6.2 as imports.%Main.import_ref.b49 [from "lib.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = imports.%Main.import_ref.a9f // CHECK:STDOUT: } @@ -569,11 +569,11 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(imports.%Main.import_ref.f85: %NonInstance.type) [from "lib.carbon"] { +// CHECK:STDOUT: generic fn @NonInstance.F(imports.%Main.import_ref.f85: %NonInstance.type) [from "lib.carbon"] { // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%Self.73c) {} +// CHECK:STDOUT: specific @NonInstance.F(constants.%Self.73c) {} // CHECK:STDOUT: // CHECK:STDOUT: --- import_instance_success.carbon // CHECK:STDOUT: @@ -587,16 +587,16 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: %Self.cf8: %Instance.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Instance.assoc_type: type = assoc_entity_type @Instance [concrete] // CHECK:STDOUT: %assoc0: %Instance.assoc_type = assoc_entity element0, imports.%Main.import_ref.b4d [concrete] -// CHECK:STDOUT: %G.type.1e1: type = fn_type @G.2 [concrete] -// CHECK:STDOUT: %G.449: %G.type.1e1 = struct_value () [concrete] +// CHECK:STDOUT: %Instance.G.type: type = fn_type @Instance.G [concrete] +// CHECK:STDOUT: %Instance.G: %Instance.G.type = struct_value () [concrete] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self.cf8 [symbolic] // CHECK:STDOUT: %pattern_type.4e4: type = pattern_type %Self.as_type [symbolic] // CHECK:STDOUT: %NonInstance.type: type = facet_type <@NonInstance> [concrete] // CHECK:STDOUT: %Instance.impl_witness: = impl_witness imports.%Instance.impl_witness_table [concrete] // CHECK:STDOUT: %Instance.facet: %Instance.type = facet_value %struct_type.i, (%Instance.impl_witness) [concrete] -// CHECK:STDOUT: %.efa: type = fn_type_with_self_type %G.type.1e1, %Instance.facet [concrete] -// CHECK:STDOUT: %G.type.0c0: type = fn_type @G.1 [concrete] -// CHECK:STDOUT: %G.484: %G.type.0c0 = struct_value () [concrete] +// CHECK:STDOUT: %.efa: type = fn_type_with_self_type %Instance.G.type, %Instance.facet [concrete] +// CHECK:STDOUT: %struct_type.i.as.Instance.impl.G.type: type = fn_type @struct_type.i.as.Instance.impl.G [concrete] +// CHECK:STDOUT: %struct_type.i.as.Instance.impl.G: %struct_type.i.as.Instance.impl.G.type = struct_value () [concrete] // CHECK:STDOUT: %ptr: type = ptr_type %struct_type.i [concrete] // CHECK:STDOUT: %pattern_type.72c: type = pattern_type %ptr [concrete] // CHECK:STDOUT: %InstanceCallIndirectImport.type: type = fn_type @InstanceCallIndirectImport [concrete] @@ -615,7 +615,7 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: %Main.import_ref.dcd = import_ref Main//lib, inst45 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.124: %Instance.assoc_type = import_ref Main//lib, loc12_21, loaded [concrete = constants.%assoc0] // CHECK:STDOUT: %Main.G = import_ref Main//lib, G, unloaded -// CHECK:STDOUT: %Main.import_ref.b4d: %G.type.1e1 = import_ref Main//lib, loc12_21, loaded [concrete = constants.%G.449] +// CHECK:STDOUT: %Main.import_ref.b4d: %Instance.G.type = import_ref Main//lib, loc12_21, loaded [concrete = constants.%Instance.G] // CHECK:STDOUT: %Main.import_ref.0d8: %Instance.type = import_ref Main//lib, inst45 [no loc], loaded [symbolic = constants.%Self.cf8] // CHECK:STDOUT: %Main.import_ref.c55 = import_ref Main//lib, inst19 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.49c = import_ref Main//lib, loc4_9, unloaded @@ -626,8 +626,8 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: %Main.import_ref.97f: = import_ref Main//lib, loc15_27, loaded [concrete = constants.%Instance.impl_witness] // CHECK:STDOUT: %Main.import_ref.c9a3b6.2: type = import_ref Main//lib, loc15_13, loaded [concrete = constants.%struct_type.i] // CHECK:STDOUT: %Main.import_ref.b49: type = import_ref Main//lib, loc15_18, loaded [concrete = constants.%Instance.type] -// CHECK:STDOUT: %Main.import_ref.373: %G.type.0c0 = import_ref Main//lib, loc16_22, loaded [concrete = constants.%G.484] -// CHECK:STDOUT: %Instance.impl_witness_table = impl_witness_table (%Main.import_ref.373), @Instance.impl [concrete] +// CHECK:STDOUT: %Main.import_ref.373: %struct_type.i.as.Instance.impl.G.type = import_ref Main//lib, loc16_22, loaded [concrete = constants.%struct_type.i.as.Instance.impl.G] +// CHECK:STDOUT: %Instance.impl_witness_table = impl_witness_table (%Main.import_ref.373), @struct_type.i.as.Instance.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -681,12 +681,12 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: witness = (imports.%Main.F) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @NonInstance.impl: imports.%Main.import_ref.c9a3b6.1 as imports.%Main.import_ref.ef5 [from "lib.carbon"] { +// CHECK:STDOUT: impl @struct_type.i.as.NonInstance.impl: imports.%Main.import_ref.c9a3b6.1 as imports.%Main.import_ref.ef5 [from "lib.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = imports.%Main.import_ref.eb8 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Instance.impl: imports.%Main.import_ref.c9a3b6.2 as imports.%Main.import_ref.b49 [from "lib.carbon"] { +// CHECK:STDOUT: impl @struct_type.i.as.Instance.impl: imports.%Main.import_ref.c9a3b6.2 as imports.%Main.import_ref.b49 [from "lib.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = imports.%Main.import_ref.97f // CHECK:STDOUT: } @@ -696,13 +696,13 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: %n.ref: %struct_type.i = name_ref n, %n // CHECK:STDOUT: %Instance.ref: type = name_ref Instance, imports.%Main.Instance [concrete = constants.%Instance.type] // CHECK:STDOUT: %G.ref: %Instance.assoc_type = name_ref G, imports.%Main.import_ref.124 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: %.efa = impl_witness_access constants.%Instance.impl_witness, element0 [concrete = constants.%G.484] +// CHECK:STDOUT: %impl.elem0: %.efa = impl_witness_access constants.%Instance.impl_witness, element0 [concrete = constants.%struct_type.i.as.Instance.impl.G] // CHECK:STDOUT: %bound_method: = bound_method %n.ref, %impl.elem0 -// CHECK:STDOUT: %G.call: init %empty_tuple.type = call %bound_method(%n.ref) +// CHECK:STDOUT: %struct_type.i.as.Instance.impl.G.call: init %empty_tuple.type = call %bound_method(%n.ref) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @G.2(imports.%Main.import_ref.0d8: %Instance.type) [from "lib.carbon"] { +// CHECK:STDOUT: generic fn @Instance.G(imports.%Main.import_ref.0d8: %Instance.type) [from "lib.carbon"] { // CHECK:STDOUT: %Self: %Instance.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.cf8)] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic = %Self.as_type (constants.%Self.as_type)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type [symbolic = %pattern_type (constants.%pattern_type.4e4)] @@ -710,7 +710,7 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G.1 [from "lib.carbon"]; +// CHECK:STDOUT: fn @struct_type.i.as.Instance.impl.G [from "lib.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: fn @InstanceCallIndirectImport(%p.param: %ptr) { // CHECK:STDOUT: !entry: @@ -718,18 +718,18 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: %Instance.ref: type = name_ref Instance, imports.%Main.Instance [concrete = constants.%Instance.type] // CHECK:STDOUT: %G.ref: %Instance.assoc_type = name_ref G, imports.%Main.import_ref.124 [concrete = constants.%assoc0] // CHECK:STDOUT: %.loc10_4.1: ref %struct_type.i = deref %p.ref -// CHECK:STDOUT: %impl.elem0: %.efa = impl_witness_access constants.%Instance.impl_witness, element0 [concrete = constants.%G.484] +// CHECK:STDOUT: %impl.elem0: %.efa = impl_witness_access constants.%Instance.impl_witness, element0 [concrete = constants.%struct_type.i.as.Instance.impl.G] // CHECK:STDOUT: %bound_method: = bound_method %.loc10_4.1, %impl.elem0 // CHECK:STDOUT: %.loc10_4.2: ref %empty_tuple.type = struct_access %.loc10_4.1, element0 // CHECK:STDOUT: %tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_4.3: %empty_tuple.type = converted %.loc10_4.2, %tuple [concrete = constants.%empty_tuple] // CHECK:STDOUT: %struct: %struct_type.i = struct_value (%.loc10_4.3) [concrete = constants.%struct] // CHECK:STDOUT: %.loc10_4.4: %struct_type.i = converted %.loc10_4.1, %struct [concrete = constants.%struct] -// CHECK:STDOUT: %G.call: init %empty_tuple.type = call %bound_method(%.loc10_4.4) +// CHECK:STDOUT: %struct_type.i.as.Instance.impl.G.call: init %empty_tuple.type = call %bound_method(%.loc10_4.4) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @G.2(constants.%Self.cf8) { +// CHECK:STDOUT: specific @Instance.G(constants.%Self.cf8) { // CHECK:STDOUT: %Self => constants.%Self.cf8 // CHECK:STDOUT: %Self.as_type => constants.%Self.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.4e4 @@ -746,8 +746,8 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: %Self.cf8: %Instance.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Instance.assoc_type: type = assoc_entity_type @Instance [concrete] // CHECK:STDOUT: %assoc0: %Instance.assoc_type = assoc_entity element0, imports.%Main.import_ref.b4d [concrete] -// CHECK:STDOUT: %G.type: type = fn_type @G [concrete] -// CHECK:STDOUT: %G: %G.type = struct_value () [concrete] +// CHECK:STDOUT: %Instance.G.type: type = fn_type @Instance.G [concrete] +// CHECK:STDOUT: %Instance.G: %Instance.G.type = struct_value () [concrete] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self.cf8 [symbolic] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type [symbolic] // CHECK:STDOUT: %NonInstance.type: type = facet_type <@NonInstance> [concrete] @@ -763,7 +763,7 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: %Main.import_ref.dcd = import_ref Main//lib, inst45 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.124: %Instance.assoc_type = import_ref Main//lib, loc12_21, loaded [concrete = constants.%assoc0] // CHECK:STDOUT: %Main.G = import_ref Main//lib, G, unloaded -// CHECK:STDOUT: %Main.import_ref.b4d: %G.type = import_ref Main//lib, loc12_21, loaded [concrete = constants.%G] +// CHECK:STDOUT: %Main.import_ref.b4d: %Instance.G.type = import_ref Main//lib, loc12_21, loaded [concrete = constants.%Instance.G] // CHECK:STDOUT: %Main.import_ref.0d8: %Instance.type = import_ref Main//lib, inst45 [no loc], loaded [symbolic = constants.%Self.cf8] // CHECK:STDOUT: %Main.import_ref.c55 = import_ref Main//lib, inst19 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.49c = import_ref Main//lib, loc4_9, unloaded @@ -802,12 +802,12 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: witness = (imports.%Main.F) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @NonInstance.impl: imports.%Main.import_ref.c9a3b6.1 as imports.%Main.import_ref.ef5 [from "lib.carbon"] { +// CHECK:STDOUT: impl @struct_type.i.as.NonInstance.impl: imports.%Main.import_ref.c9a3b6.1 as imports.%Main.import_ref.ef5 [from "lib.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = imports.%Main.import_ref.eb8 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Instance.impl: imports.%Main.import_ref.c9a3b6.2 as imports.%Main.import_ref.b49 [from "lib.carbon"] { +// CHECK:STDOUT: impl @struct_type.i.as.Instance.impl: imports.%Main.import_ref.c9a3b6.2 as imports.%Main.import_ref.b49 [from "lib.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = imports.%Main.import_ref.a9f // CHECK:STDOUT: } @@ -822,7 +822,7 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @G(imports.%Main.import_ref.0d8: %Instance.type) [from "lib.carbon"] { +// CHECK:STDOUT: generic fn @Instance.G(imports.%Main.import_ref.0d8: %Instance.type) [from "lib.carbon"] { // CHECK:STDOUT: %Self: %Instance.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.cf8)] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic = %Self.as_type (constants.%Self.as_type)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type [symbolic = %pattern_type (constants.%pattern_type)] @@ -830,7 +830,7 @@ fn InstanceCallImportFail() { // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @G(constants.%Self.cf8) { +// CHECK:STDOUT: specific @Instance.G(constants.%Self.cf8) { // CHECK:STDOUT: %Self => constants.%Self.cf8 // CHECK:STDOUT: %Self.as_type => constants.%Self.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type diff --git a/toolchain/check/testdata/impl/import_extend_impl.carbon b/toolchain/check/testdata/impl/import_extend_impl.carbon index aab92c01b97f..ff4f82fe2358 100644 --- a/toolchain/check/testdata/impl/import_extend_impl.carbon +++ b/toolchain/check/testdata/impl/import_extend_impl.carbon @@ -42,14 +42,14 @@ fn G(c: C) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.cf0: type = fn_type @F.loc5 [concrete] -// CHECK:STDOUT: %F.bc6: %F.type.cf0 = struct_value () [concrete] +// CHECK:STDOUT: %I.F.type: type = fn_type @I.F [concrete] +// CHECK:STDOUT: %I.F: %I.F.type = struct_value () [concrete] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] -// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%F.decl [concrete] +// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%I.F.decl [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @C.%I.impl_witness_table [concrete] -// CHECK:STDOUT: %F.type.f36: type = fn_type @F.loc10 [concrete] -// CHECK:STDOUT: %F.4c3: %F.type.f36 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.I.impl.F.type: type = fn_type @C.as.I.impl.F [concrete] +// CHECK:STDOUT: %C.as.I.impl.F: %C.as.I.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %I.facet: %I.type = facet_value %C, (%I.impl_witness) [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] @@ -66,29 +66,29 @@ fn G(c: C) { // CHECK:STDOUT: // CHECK:STDOUT: interface @I { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %F.decl: %F.type.cf0 = fn_decl @F.loc5 [concrete = constants.%F.bc6] {} {} -// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %I.F.decl: %I.F.type = fn_decl @I.F [concrete = constants.%I.F] {} {} +// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %I.F.decl [concrete = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F = %assoc0 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%I.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: %Self.ref as %I.ref { -// CHECK:STDOUT: %F.decl: %F.type.f36 = fn_decl @F.loc10 [concrete = constants.%F.4c3] {} {} +// CHECK:STDOUT: impl @C.as.I.impl: %Self.ref as %I.ref { +// CHECK:STDOUT: %C.as.I.impl.F.decl: %C.as.I.impl.F.type = fn_decl @C.as.I.impl.F [concrete = constants.%C.as.I.impl.F] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %C.as.I.impl.F.decl // CHECK:STDOUT: witness = @C.%I.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.I.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (@I.impl.%F.decl), @I.impl [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (@C.as.I.impl.%C.as.I.impl.F.decl), @C.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] @@ -97,21 +97,21 @@ fn G(c: C) { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .I = -// CHECK:STDOUT: extend @I.impl.%I.ref +// CHECK:STDOUT: extend @C.as.I.impl.%I.ref // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc5(@I.%Self: %I.type) { +// CHECK:STDOUT: generic fn @I.F(@I.%Self: %I.type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc10() { +// CHECK:STDOUT: fn @C.as.I.impl.F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%Self) {} +// CHECK:STDOUT: specific @I.F(constants.%Self) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%I.facet) {} +// CHECK:STDOUT: specific @I.F(constants.%I.facet) {} // CHECK:STDOUT: // CHECK:STDOUT: --- use_imported_class_extend_impl.carbon // CHECK:STDOUT: @@ -128,12 +128,12 @@ fn G(c: C) { // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] // CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, imports.%Main.import_ref.e03 [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness imports.%I.impl_witness_table [concrete] -// CHECK:STDOUT: %F.type.cf0: type = fn_type @F.2 [concrete] -// CHECK:STDOUT: %F.bc6: %F.type.cf0 = struct_value () [concrete] +// CHECK:STDOUT: %I.F.type: type = fn_type @I.F [concrete] +// CHECK:STDOUT: %I.F: %I.F.type = struct_value () [concrete] // CHECK:STDOUT: %I.facet: %I.type = facet_value %C, (%I.impl_witness) [concrete] -// CHECK:STDOUT: %.038: type = fn_type_with_self_type %F.type.cf0, %I.facet [concrete] -// CHECK:STDOUT: %F.type.f36: type = fn_type @F.1 [concrete] -// CHECK:STDOUT: %F.4c3: %F.type.f36 = struct_value () [concrete] +// CHECK:STDOUT: %.038: type = fn_type_with_self_type %I.F.type, %I.facet [concrete] +// CHECK:STDOUT: %C.as.I.impl.F.type: type = fn_type @C.as.I.impl.F [concrete] +// CHECK:STDOUT: %C.as.I.impl.F: %C.as.I.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -145,12 +145,12 @@ fn G(c: C) { // CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//extend_impl_library, inst17 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.c44: %I.assoc_type = import_ref Main//extend_impl_library, loc5_9, loaded [concrete = constants.%assoc0] // CHECK:STDOUT: %Main.F = import_ref Main//extend_impl_library, F, unloaded -// CHECK:STDOUT: %Main.import_ref.e03: %F.type.cf0 = import_ref Main//extend_impl_library, loc5_9, loaded [concrete = constants.%F.bc6] +// CHECK:STDOUT: %Main.import_ref.e03: %I.F.type = import_ref Main//extend_impl_library, loc5_9, loaded [concrete = constants.%I.F] // CHECK:STDOUT: %Main.import_ref.9d1: = import_ref Main//extend_impl_library, loc9_20, loaded [concrete = constants.%I.impl_witness] // CHECK:STDOUT: %Main.import_ref.0ed: type = import_ref Main//extend_impl_library, loc9_15, loaded [concrete = constants.%C] // CHECK:STDOUT: %Main.import_ref.3019d1.2: type = import_ref Main//extend_impl_library, loc9_18, loaded [concrete = constants.%I.type] -// CHECK:STDOUT: %Main.import_ref.f6d: %F.type.f36 = import_ref Main//extend_impl_library, loc10_12, loaded [concrete = constants.%F.4c3] -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%Main.import_ref.f6d), @I.impl [concrete] +// CHECK:STDOUT: %Main.import_ref.f6d: %C.as.I.impl.F.type = import_ref Main//extend_impl_library, loc10_12, loaded [concrete = constants.%C.as.I.impl.F] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%Main.import_ref.f6d), @C.as.I.impl [concrete] // CHECK:STDOUT: %Main.import_ref.5dd: %I.type = import_ref Main//extend_impl_library, inst17 [no loc], loaded [symbolic = constants.%Self] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -178,7 +178,7 @@ fn G(c: C) { // CHECK:STDOUT: witness = (imports.%Main.F) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: imports.%Main.import_ref.0ed as imports.%Main.import_ref.3019d1.2 [from "extend_impl_library.carbon"] { +// CHECK:STDOUT: impl @C.as.I.impl: imports.%Main.import_ref.0ed as imports.%Main.import_ref.3019d1.2 [from "extend_impl_library.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = imports.%Main.import_ref.9d1 // CHECK:STDOUT: } @@ -196,20 +196,20 @@ fn G(c: C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %C.ref.loc7: type = name_ref C, imports.%Main.C [concrete = constants.%C] // CHECK:STDOUT: %F.ref.loc7: %I.assoc_type = name_ref F, imports.%Main.import_ref.c44 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc7: %.038 = impl_witness_access constants.%I.impl_witness, element0 [concrete = constants.%F.4c3] -// CHECK:STDOUT: %F.call.loc7: init %empty_tuple.type = call %impl.elem0.loc7() +// CHECK:STDOUT: %impl.elem0.loc7: %.038 = impl_witness_access constants.%I.impl_witness, element0 [concrete = constants.%C.as.I.impl.F] +// CHECK:STDOUT: %C.as.I.impl.F.call.loc7: init %empty_tuple.type = call %impl.elem0.loc7() // CHECK:STDOUT: %c.ref: %C = name_ref c, %c // CHECK:STDOUT: %F.ref.loc8: %I.assoc_type = name_ref F, imports.%Main.import_ref.c44 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc8: %.038 = impl_witness_access constants.%I.impl_witness, element0 [concrete = constants.%F.4c3] -// CHECK:STDOUT: %F.call.loc8: init %empty_tuple.type = call %impl.elem0.loc8() +// CHECK:STDOUT: %impl.elem0.loc8: %.038 = impl_witness_access constants.%I.impl_witness, element0 [concrete = constants.%C.as.I.impl.F] +// CHECK:STDOUT: %C.as.I.impl.F.call.loc8: init %empty_tuple.type = call %impl.elem0.loc8() // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.2(imports.%Main.import_ref.5dd: %I.type) [from "extend_impl_library.carbon"] { +// CHECK:STDOUT: generic fn @I.F(imports.%Main.import_ref.5dd: %I.type) [from "extend_impl_library.carbon"] { // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.1 [from "extend_impl_library.carbon"]; +// CHECK:STDOUT: fn @C.as.I.impl.F [from "extend_impl_library.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.2(constants.%Self) {} +// CHECK:STDOUT: specific @I.F(constants.%Self) {} // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/import_generic.carbon b/toolchain/check/testdata/impl/import_generic.carbon index e77103aa54e0..94099bc57065 100644 --- a/toolchain/check/testdata/impl/import_generic.carbon +++ b/toolchain/check/testdata/impl/import_generic.carbon @@ -113,13 +113,13 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %I.generic: %I.type.dac = struct_value () [concrete] // CHECK:STDOUT: %I.type.325: type = facet_type <@I, @I(%T)> [symbolic] // CHECK:STDOUT: %Self.209: %I.type.325 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %I.impl_witness.1a9: = impl_witness file.%I.impl_witness_table.loc8, @I.impl.084(%T) [symbolic] +// CHECK:STDOUT: %I.impl_witness.1a9: = impl_witness file.%I.impl_witness_table.loc8, @C.as.I.impl.084(%T) [symbolic] // CHECK:STDOUT: %require_complete.cfe: = require_complete_type %I.type.325 [symbolic] // CHECK:STDOUT: %ptr: type = ptr_type %T [symbolic] // CHECK:STDOUT: %I.type.0e2: type = facet_type <@I, @I(%ptr)> [symbolic] // CHECK:STDOUT: %Self.fb4: %I.type.0e2 = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %require_complete.0e6: = require_complete_type %I.type.0e2 [symbolic] -// CHECK:STDOUT: %I.impl_witness.6ad: = impl_witness file.%I.impl_witness_table.loc12, @I.impl.cd2(%T) [symbolic] +// CHECK:STDOUT: %I.impl_witness.6ad: = impl_witness file.%I.impl_witness_table.loc12, @C.as.I.impl.cd2(%T) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -133,7 +133,7 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: } { // CHECK:STDOUT: %T.loc5_13.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc5_13.1 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: impl_decl @I.impl.084 [concrete] { +// CHECK:STDOUT: impl_decl @C.as.I.impl.084 [concrete] { // CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc8: type = name_ref C, file.%C.decl [concrete = constants.%C] @@ -142,9 +142,9 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %I.type.loc8_32.1: type = facet_type <@I, @I(constants.%T)> [symbolic = %I.type.loc8_32.2 (constants.%I.type.325)] // CHECK:STDOUT: %T.loc8_14.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc8_14.2 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table.loc8 = impl_witness_table (), @I.impl.084 [concrete] -// CHECK:STDOUT: %I.impl_witness.loc8: = impl_witness %I.impl_witness_table.loc8, @I.impl.084(constants.%T) [symbolic = @I.impl.084.%I.impl_witness (constants.%I.impl_witness.1a9)] -// CHECK:STDOUT: impl_decl @I.impl.084 [concrete] { +// CHECK:STDOUT: %I.impl_witness_table.loc8 = impl_witness_table (), @C.as.I.impl.084 [concrete] +// CHECK:STDOUT: %I.impl_witness.loc8: = impl_witness %I.impl_witness_table.loc8, @C.as.I.impl.084(constants.%T) [symbolic = @C.as.I.impl.084.%I.impl_witness (constants.%I.impl_witness.1a9)] +// CHECK:STDOUT: impl_decl @C.as.I.impl.084 [concrete] { // CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc9: type = name_ref C, file.%C.decl [concrete = constants.%C] @@ -153,7 +153,7 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %I.type.loc9: type = facet_type <@I, @I(constants.%T)> [symbolic = %I.type.loc8_32.2 (constants.%I.type.325)] // CHECK:STDOUT: %T.loc9: type = bind_symbolic_name T, 0 [symbolic = %T.loc8_14.2 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: impl_decl @I.impl.cd2 [concrete] { +// CHECK:STDOUT: impl_decl @C.as.I.impl.cd2 [concrete] { // CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] @@ -163,8 +163,8 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %I.type.loc12_33.1: type = facet_type <@I, @I(constants.%ptr)> [symbolic = %I.type.loc12_33.2 (constants.%I.type.0e2)] // CHECK:STDOUT: %T.loc12_14.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc12_14.2 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table.loc12 = impl_witness_table (), @I.impl.cd2 [concrete] -// CHECK:STDOUT: %I.impl_witness.loc12: = impl_witness %I.impl_witness_table.loc12, @I.impl.cd2(constants.%T) [symbolic = @I.impl.cd2.%I.impl_witness (constants.%I.impl_witness.6ad)] +// CHECK:STDOUT: %I.impl_witness_table.loc12 = impl_witness_table (), @C.as.I.impl.cd2 [concrete] +// CHECK:STDOUT: %I.impl_witness.loc12: = impl_witness %I.impl_witness_table.loc12, @C.as.I.impl.cd2(constants.%T) [symbolic = @C.as.I.impl.cd2.%I.impl_witness (constants.%I.impl_witness.6ad)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic interface @I(%T.loc5_13.2: type) { @@ -183,10 +183,10 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @I.impl.084(%T.loc8_14.1: type) { +// CHECK:STDOUT: generic impl @C.as.I.impl.084(%T.loc8_14.1: type) { // CHECK:STDOUT: %T.loc8_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc8_14.2 (constants.%T)] // CHECK:STDOUT: %I.type.loc8_32.2: type = facet_type <@I, @I(%T.loc8_14.2)> [symbolic = %I.type.loc8_32.2 (constants.%I.type.325)] -// CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table.loc8, @I.impl.084(%T.loc8_14.2) [symbolic = %I.impl_witness (constants.%I.impl_witness.1a9)] +// CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table.loc8, @C.as.I.impl.084(%T.loc8_14.2) [symbolic = %I.impl_witness (constants.%I.impl_witness.1a9)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %I.type.loc8_32.2 [symbolic = %require_complete (constants.%require_complete.cfe)] @@ -197,12 +197,12 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @I.impl.cd2(%T.loc12_14.1: type) { +// CHECK:STDOUT: generic impl @C.as.I.impl.cd2(%T.loc12_14.1: type) { // CHECK:STDOUT: %T.loc12_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc12_14.2 (constants.%T)] // CHECK:STDOUT: %ptr.loc12_32.2: type = ptr_type %T.loc12_14.2 [symbolic = %ptr.loc12_32.2 (constants.%ptr)] // CHECK:STDOUT: %I.type.loc12_33.2: type = facet_type <@I, @I(%ptr.loc12_32.2)> [symbolic = %I.type.loc12_33.2 (constants.%I.type.0e2)] // CHECK:STDOUT: %require_complete: = require_complete_type %I.type.loc12_33.2 [symbolic = %require_complete (constants.%require_complete.0e6)] -// CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table.loc12, @I.impl.cd2(%T.loc12_14.2) [symbolic = %I.impl_witness (constants.%I.impl_witness.6ad)] +// CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table.loc12, @C.as.I.impl.cd2(%T.loc12_14.2) [symbolic = %I.impl_witness (constants.%I.impl_witness.6ad)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -229,7 +229,7 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %Self.2 => constants.%Self.209 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.impl.084(constants.%T) { +// CHECK:STDOUT: specific @C.as.I.impl.084(constants.%T) { // CHECK:STDOUT: %T.loc8_14.2 => constants.%T // CHECK:STDOUT: %I.type.loc8_32.2 => constants.%I.type.325 // CHECK:STDOUT: %I.impl_witness => constants.%I.impl_witness.1a9 @@ -243,7 +243,7 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %Self.2 => constants.%Self.fb4 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.impl.cd2(constants.%T) { +// CHECK:STDOUT: specific @C.as.I.impl.cd2(constants.%T) { // CHECK:STDOUT: %T.loc12_14.2 => constants.%T // CHECK:STDOUT: %ptr.loc12_32.2 => constants.%ptr // CHECK:STDOUT: %I.type.loc12_33.2 => constants.%I.type.0e2 @@ -263,12 +263,12 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] -// CHECK:STDOUT: %I.impl_witness.1a9: = impl_witness imports.%I.impl_witness_table.028, @I.impl.08450a.1(%T) [symbolic] +// CHECK:STDOUT: %I.impl_witness.1a9: = impl_witness imports.%I.impl_witness_table.028, @C.as.I.impl.08450a.1(%T) [symbolic] // CHECK:STDOUT: %require_complete.cfe: = require_complete_type %I.type.325 [symbolic] // CHECK:STDOUT: %ptr: type = ptr_type %T [symbolic] // CHECK:STDOUT: %I.type.0e2: type = facet_type <@I, @I(%ptr)> [symbolic] // CHECK:STDOUT: %require_complete.0e6: = require_complete_type %I.type.0e2 [symbolic] -// CHECK:STDOUT: %I.impl_witness.6ad: = impl_witness imports.%I.impl_witness_table.e14, @I.impl.cd2fdc.1(%T) [symbolic] +// CHECK:STDOUT: %I.impl_witness.6ad: = impl_witness imports.%I.impl_witness_table.e14, @C.as.I.impl.cd2fdc.1(%T) [symbolic] // CHECK:STDOUT: %Self.fb4: %I.type.0e2 = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -280,15 +280,15 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %Main.import_ref.cc6 = import_ref Main//import_generic, loc8_33, unloaded // CHECK:STDOUT: %Main.import_ref.8f2: = import_ref Main//import_generic, loc4_10, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//import_generic, inst16 [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.5ab3ec.2: type = import_ref Main//import_generic, loc8_14, loaded [symbolic = @I.impl.08450a.1.%T (constants.%T)] +// CHECK:STDOUT: %Main.import_ref.5ab3ec.2: type = import_ref Main//import_generic, loc8_14, loaded [symbolic = @C.as.I.impl.08450a.1.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.29aca8.1: type = import_ref Main//import_generic, loc8_24, loaded [concrete = constants.%C] -// CHECK:STDOUT: %Main.import_ref.4be: type = import_ref Main//import_generic, loc8_32, loaded [symbolic = @I.impl.08450a.1.%I.type (constants.%I.type.325)] -// CHECK:STDOUT: %I.impl_witness_table.028 = impl_witness_table (), @I.impl.08450a.1 [concrete] +// CHECK:STDOUT: %Main.import_ref.4be: type = import_ref Main//import_generic, loc8_32, loaded [symbolic = @C.as.I.impl.08450a.1.%I.type (constants.%I.type.325)] +// CHECK:STDOUT: %I.impl_witness_table.028 = impl_witness_table (), @C.as.I.impl.08450a.1 [concrete] // CHECK:STDOUT: %Main.import_ref.fc2 = import_ref Main//import_generic, loc12_35, unloaded -// CHECK:STDOUT: %Main.import_ref.5ab3ec.3: type = import_ref Main//import_generic, loc12_14, loaded [symbolic = @I.impl.cd2fdc.1.%T (constants.%T)] +// CHECK:STDOUT: %Main.import_ref.5ab3ec.3: type = import_ref Main//import_generic, loc12_14, loaded [symbolic = @C.as.I.impl.cd2fdc.1.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.29aca8.2: type = import_ref Main//import_generic, loc12_24, loaded [concrete = constants.%C] -// CHECK:STDOUT: %Main.import_ref.3e2: type = import_ref Main//import_generic, loc12_33, loaded [symbolic = @I.impl.cd2fdc.1.%I.type (constants.%I.type.0e2)] -// CHECK:STDOUT: %I.impl_witness_table.e14 = impl_witness_table (), @I.impl.cd2fdc.1 [concrete] +// CHECK:STDOUT: %Main.import_ref.3e2: type = import_ref Main//import_generic, loc12_33, loaded [symbolic = @C.as.I.impl.cd2fdc.1.%I.type (constants.%I.type.0e2)] +// CHECK:STDOUT: %I.impl_witness_table.e14 = impl_witness_table (), @C.as.I.impl.cd2fdc.1 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -298,7 +298,7 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: } // CHECK:STDOUT: %default.import.loc2_30.1 = import // CHECK:STDOUT: %default.import.loc2_30.2 = import -// CHECK:STDOUT: impl_decl @I.impl.08450a.2 [concrete] { +// CHECK:STDOUT: impl_decl @C.as.I.impl.08450a.2 [concrete] { // CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C] @@ -307,7 +307,7 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %I.type.loc8_32.1: type = facet_type <@I, @I(constants.%T)> [symbolic = %I.type.loc8_32.2 (constants.%I.type.325)] // CHECK:STDOUT: %T.loc8_14.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc8_14.2 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: impl_decl @I.impl.08450a.3 [concrete] { +// CHECK:STDOUT: impl_decl @C.as.I.impl.08450a.3 [concrete] { // CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C] @@ -316,7 +316,7 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %I.type.loc14_32.1: type = facet_type <@I, @I(constants.%T)> [symbolic = %I.type.loc14_32.2 (constants.%I.type.325)] // CHECK:STDOUT: %T.loc14_14.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc14_14.2 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: impl_decl @I.impl.cd2fdc.2 [concrete] { +// CHECK:STDOUT: impl_decl @C.as.I.impl.cd2fdc.2 [concrete] { // CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C] @@ -326,7 +326,7 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %I.type.loc20_33.1: type = facet_type <@I, @I(constants.%ptr)> [symbolic = %I.type.loc20_33.2 (constants.%I.type.0e2)] // CHECK:STDOUT: %T.loc20_14.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc20_14.2 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: impl_decl @I.impl.cd2fdc.3 [concrete] { +// CHECK:STDOUT: impl_decl @C.as.I.impl.cd2fdc.3 [concrete] { // CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C] @@ -352,10 +352,10 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @I.impl.08450a.1(imports.%Main.import_ref.5ab3ec.2: type) [from "import_generic.carbon"] { +// CHECK:STDOUT: generic impl @C.as.I.impl.08450a.1(imports.%Main.import_ref.5ab3ec.2: type) [from "import_generic.carbon"] { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T)> [symbolic = %I.type (constants.%I.type.325)] -// CHECK:STDOUT: %I.impl_witness: = impl_witness imports.%I.impl_witness_table.028, @I.impl.08450a.1(%T) [symbolic = %I.impl_witness (constants.%I.impl_witness.1a9)] +// CHECK:STDOUT: %I.impl_witness: = impl_witness imports.%I.impl_witness_table.028, @C.as.I.impl.08450a.1(%T) [symbolic = %I.impl_witness (constants.%I.impl_witness.1a9)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %I.type [symbolic = %require_complete (constants.%require_complete.cfe)] @@ -366,12 +366,12 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @I.impl.cd2fdc.1(imports.%Main.import_ref.5ab3ec.3: type) [from "import_generic.carbon"] { +// CHECK:STDOUT: generic impl @C.as.I.impl.cd2fdc.1(imports.%Main.import_ref.5ab3ec.3: type) [from "import_generic.carbon"] { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %ptr: type = ptr_type %T [symbolic = %ptr (constants.%ptr)] // CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%ptr)> [symbolic = %I.type (constants.%I.type.0e2)] // CHECK:STDOUT: %require_complete: = require_complete_type %I.type [symbolic = %require_complete (constants.%require_complete.0e6)] -// CHECK:STDOUT: %I.impl_witness: = impl_witness imports.%I.impl_witness_table.e14, @I.impl.cd2fdc.1(%T) [symbolic = %I.impl_witness (constants.%I.impl_witness.6ad)] +// CHECK:STDOUT: %I.impl_witness: = impl_witness imports.%I.impl_witness_table.e14, @C.as.I.impl.cd2fdc.1(%T) [symbolic = %I.impl_witness (constants.%I.impl_witness.6ad)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -381,14 +381,14 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @I.impl.08450a.2(%T.loc8_14.1: type) { +// CHECK:STDOUT: generic impl @C.as.I.impl.08450a.2(%T.loc8_14.1: type) { // CHECK:STDOUT: %T.loc8_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc8_14.2 (constants.%T)] // CHECK:STDOUT: %I.type.loc8_32.2: type = facet_type <@I, @I(%T.loc8_14.2)> [symbolic = %I.type.loc8_32.2 (constants.%I.type.325)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %C.ref as %I.type.loc8_32.1; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @I.impl.08450a.3(%T.loc14_14.1: type) { +// CHECK:STDOUT: generic impl @C.as.I.impl.08450a.3(%T.loc14_14.1: type) { // CHECK:STDOUT: %T.loc14_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc14_14.2 (constants.%T)] // CHECK:STDOUT: %I.type.loc14_32.2: type = facet_type <@I, @I(%T.loc14_14.2)> [symbolic = %I.type.loc14_32.2 (constants.%I.type.325)] // CHECK:STDOUT: @@ -400,7 +400,7 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @I.impl.cd2fdc.2(%T.loc20_14.1: type) { +// CHECK:STDOUT: generic impl @C.as.I.impl.cd2fdc.2(%T.loc20_14.1: type) { // CHECK:STDOUT: %T.loc20_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc20_14.2 (constants.%T)] // CHECK:STDOUT: %ptr.loc20_32.2: type = ptr_type %T.loc20_14.2 [symbolic = %ptr.loc20_32.2 (constants.%ptr)] // CHECK:STDOUT: %I.type.loc20_33.2: type = facet_type <@I, @I(%ptr.loc20_32.2)> [symbolic = %I.type.loc20_33.2 (constants.%I.type.0e2)] @@ -408,7 +408,7 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: impl: %C.ref as %I.type.loc20_33.1; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @I.impl.cd2fdc.3(%T.loc26_14.1: type) { +// CHECK:STDOUT: generic impl @C.as.I.impl.cd2fdc.3(%T.loc26_14.1: type) { // CHECK:STDOUT: %T.loc26_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc26_14.2 (constants.%T)] // CHECK:STDOUT: %ptr.loc26_32.2: type = ptr_type %T.loc26_14.2 [symbolic = %ptr.loc26_32.2 (constants.%ptr)] // CHECK:STDOUT: %I.type.loc26_33.2: type = facet_type <@I, @I(%ptr.loc26_32.2)> [symbolic = %I.type.loc26_33.2 (constants.%I.type.0e2)] @@ -436,7 +436,7 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %Self => constants.%Self.209 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.impl.08450a.1(constants.%T) { +// CHECK:STDOUT: specific @C.as.I.impl.08450a.1(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %I.type => constants.%I.type.325 // CHECK:STDOUT: %I.impl_witness => constants.%I.impl_witness.1a9 @@ -450,7 +450,7 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %Self => constants.%Self.fb4 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.impl.cd2fdc.1(constants.%T) { +// CHECK:STDOUT: specific @C.as.I.impl.cd2fdc.1(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %ptr => constants.%ptr // CHECK:STDOUT: %I.type => constants.%I.type.0e2 @@ -458,23 +458,23 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %I.impl_witness => constants.%I.impl_witness.6ad // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.impl.08450a.2(constants.%T) { +// CHECK:STDOUT: specific @C.as.I.impl.08450a.2(constants.%T) { // CHECK:STDOUT: %T.loc8_14.2 => constants.%T // CHECK:STDOUT: %I.type.loc8_32.2 => constants.%I.type.325 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.impl.08450a.3(constants.%T) { +// CHECK:STDOUT: specific @C.as.I.impl.08450a.3(constants.%T) { // CHECK:STDOUT: %T.loc14_14.2 => constants.%T // CHECK:STDOUT: %I.type.loc14_32.2 => constants.%I.type.325 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.impl.cd2fdc.2(constants.%T) { +// CHECK:STDOUT: specific @C.as.I.impl.cd2fdc.2(constants.%T) { // CHECK:STDOUT: %T.loc20_14.2 => constants.%T // CHECK:STDOUT: %ptr.loc20_32.2 => constants.%ptr // CHECK:STDOUT: %I.type.loc20_33.2 => constants.%I.type.0e2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.impl.cd2fdc.3(constants.%T) { +// CHECK:STDOUT: specific @C.as.I.impl.cd2fdc.3(constants.%T) { // CHECK:STDOUT: %T.loc26_14.2 => constants.%T // CHECK:STDOUT: %ptr.loc26_32.2 => constants.%ptr // CHECK:STDOUT: %I.type.loc26_33.2 => constants.%I.type.0e2 @@ -492,10 +492,10 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %J.generic: %J.type.2b8 = struct_value () [concrete] // CHECK:STDOUT: %J.type.b72: type = facet_type <@J, @J(%T)> [symbolic] // CHECK:STDOUT: %Self: %J.type.b72 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %J.impl_witness.809: = impl_witness file.%J.impl_witness_table.loc11, @J.impl.199(%T) [symbolic] +// CHECK:STDOUT: %J.impl_witness.809: = impl_witness file.%J.impl_witness_table.loc11, @D.as.J.impl.199(%T) [symbolic] // CHECK:STDOUT: %ptr: type = ptr_type %T [symbolic] // CHECK:STDOUT: %J.type.628: type = facet_type <@J, @J(%ptr)> [symbolic] -// CHECK:STDOUT: %J.impl_witness.5a8: = impl_witness file.%J.impl_witness_table.loc17, @J.impl.dfd(%T) [symbolic] +// CHECK:STDOUT: %J.impl_witness.5a8: = impl_witness file.%J.impl_witness_table.loc17, @D.as.J.impl.dfd(%T) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -509,7 +509,7 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: } { // CHECK:STDOUT: %T.loc5_13.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc5_13.1 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: impl_decl @J.impl.199 [concrete] { +// CHECK:STDOUT: impl_decl @D.as.J.impl.199 [concrete] { // CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] @@ -518,9 +518,9 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %J.type.loc11_32.1: type = facet_type <@J, @J(constants.%T)> [symbolic = %J.type.loc11_32.2 (constants.%J.type.b72)] // CHECK:STDOUT: %T.loc11_14.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc11_14.2 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %J.impl_witness_table.loc11 = impl_witness_table (), @J.impl.199 [concrete] -// CHECK:STDOUT: %J.impl_witness.loc11: = impl_witness %J.impl_witness_table.loc11, @J.impl.199(constants.%T) [symbolic = @J.impl.199.%J.impl_witness (constants.%J.impl_witness.809)] -// CHECK:STDOUT: impl_decl @J.impl.dfd [concrete] { +// CHECK:STDOUT: %J.impl_witness_table.loc11 = impl_witness_table (), @D.as.J.impl.199 [concrete] +// CHECK:STDOUT: %J.impl_witness.loc11: = impl_witness %J.impl_witness_table.loc11, @D.as.J.impl.199(constants.%T) [symbolic = @D.as.J.impl.199.%J.impl_witness (constants.%J.impl_witness.809)] +// CHECK:STDOUT: impl_decl @D.as.J.impl.dfd [concrete] { // CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] @@ -530,8 +530,8 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %J.type.loc17_33.1: type = facet_type <@J, @J(constants.%ptr)> [symbolic = %J.type.loc17_33.2 (constants.%J.type.628)] // CHECK:STDOUT: %T.loc17_14.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc17_14.2 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %J.impl_witness_table.loc17 = impl_witness_table (), @J.impl.dfd [concrete] -// CHECK:STDOUT: %J.impl_witness.loc17: = impl_witness %J.impl_witness_table.loc17, @J.impl.dfd(constants.%T) [symbolic = @J.impl.dfd.%J.impl_witness (constants.%J.impl_witness.5a8)] +// CHECK:STDOUT: %J.impl_witness_table.loc17 = impl_witness_table (), @D.as.J.impl.dfd [concrete] +// CHECK:STDOUT: %J.impl_witness.loc17: = impl_witness %J.impl_witness_table.loc17, @D.as.J.impl.dfd(constants.%T) [symbolic = @D.as.J.impl.dfd.%J.impl_witness (constants.%J.impl_witness.5a8)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic interface @J(%T.loc5_13.2: type) { @@ -550,19 +550,19 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @J.impl.199(%T.loc11_14.1: type) { +// CHECK:STDOUT: generic impl @D.as.J.impl.199(%T.loc11_14.1: type) { // CHECK:STDOUT: %T.loc11_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc11_14.2 (constants.%T)] // CHECK:STDOUT: %J.type.loc11_32.2: type = facet_type <@J, @J(%T.loc11_14.2)> [symbolic = %J.type.loc11_32.2 (constants.%J.type.b72)] -// CHECK:STDOUT: %J.impl_witness: = impl_witness file.%J.impl_witness_table.loc11, @J.impl.199(%T.loc11_14.2) [symbolic = %J.impl_witness (constants.%J.impl_witness.809)] +// CHECK:STDOUT: %J.impl_witness: = impl_witness file.%J.impl_witness_table.loc11, @D.as.J.impl.199(%T.loc11_14.2) [symbolic = %J.impl_witness (constants.%J.impl_witness.809)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %D.ref as %J.type.loc11_32.1; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @J.impl.dfd(%T.loc17_14.1: type) { +// CHECK:STDOUT: generic impl @D.as.J.impl.dfd(%T.loc17_14.1: type) { // CHECK:STDOUT: %T.loc17_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc17_14.2 (constants.%T)] // CHECK:STDOUT: %ptr.loc17_32.2: type = ptr_type %T.loc17_14.2 [symbolic = %ptr.loc17_32.2 (constants.%ptr)] // CHECK:STDOUT: %J.type.loc17_33.2: type = facet_type <@J, @J(%ptr.loc17_32.2)> [symbolic = %J.type.loc17_33.2 (constants.%J.type.628)] -// CHECK:STDOUT: %J.impl_witness: = impl_witness file.%J.impl_witness_table.loc17, @J.impl.dfd(%T.loc17_14.2) [symbolic = %J.impl_witness (constants.%J.impl_witness.5a8)] +// CHECK:STDOUT: %J.impl_witness: = impl_witness file.%J.impl_witness_table.loc17, @D.as.J.impl.dfd(%T.loc17_14.2) [symbolic = %J.impl_witness (constants.%J.impl_witness.5a8)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %D.ref as %J.type.loc17_33.1; // CHECK:STDOUT: } @@ -580,7 +580,7 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %T.loc5_13.1 => constants.%T // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @J.impl.199(constants.%T) { +// CHECK:STDOUT: specific @D.as.J.impl.199(constants.%T) { // CHECK:STDOUT: %T.loc11_14.2 => constants.%T // CHECK:STDOUT: %J.type.loc11_32.2 => constants.%J.type.b72 // CHECK:STDOUT: %J.impl_witness => constants.%J.impl_witness.809 @@ -590,7 +590,7 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %T.loc5_13.1 => constants.%ptr // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @J.impl.dfd(constants.%T) { +// CHECK:STDOUT: specific @D.as.J.impl.dfd(constants.%T) { // CHECK:STDOUT: %T.loc17_14.2 => constants.%T // CHECK:STDOUT: %ptr.loc17_32.2 => constants.%ptr // CHECK:STDOUT: %J.type.loc17_33.2 => constants.%J.type.628 @@ -609,10 +609,10 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %D: type = class_type @D [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] -// CHECK:STDOUT: %J.impl_witness.809: = impl_witness imports.%J.impl_witness_table.891, @J.impl.199bba.1(%T) [symbolic] +// CHECK:STDOUT: %J.impl_witness.809: = impl_witness imports.%J.impl_witness_table.891, @D.as.J.impl.199bba.1(%T) [symbolic] // CHECK:STDOUT: %ptr: type = ptr_type %T [symbolic] // CHECK:STDOUT: %J.type.628: type = facet_type <@J, @J(%ptr)> [symbolic] -// CHECK:STDOUT: %J.impl_witness.5a8: = impl_witness imports.%J.impl_witness_table.487, @J.impl.dfd2f7.1(%T) [symbolic] +// CHECK:STDOUT: %J.impl_witness.5a8: = impl_witness imports.%J.impl_witness_table.487, @D.as.J.impl.dfd2f7.1(%T) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -622,14 +622,14 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %Main.import_ref.ff5 = import_ref Main//import_generic_decl, inst31 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.8f2: = import_ref Main//import_generic_decl, loc4_10, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.cab = import_ref Main//import_generic_decl, inst16 [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.5ab3ec.2: type = import_ref Main//import_generic_decl, loc11_14, loaded [symbolic = @J.impl.199bba.1.%T (constants.%T)] +// CHECK:STDOUT: %Main.import_ref.5ab3ec.2: type = import_ref Main//import_generic_decl, loc11_14, loaded [symbolic = @D.as.J.impl.199bba.1.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.aa9f8a.1: type = import_ref Main//import_generic_decl, loc11_24, loaded [concrete = constants.%D] -// CHECK:STDOUT: %Main.import_ref.ded: type = import_ref Main//import_generic_decl, loc11_32, loaded [symbolic = @J.impl.199bba.1.%J.type (constants.%J.type.b72)] -// CHECK:STDOUT: %J.impl_witness_table.891 = impl_witness_table (), @J.impl.199bba.1 [concrete] -// CHECK:STDOUT: %Main.import_ref.5ab3ec.3: type = import_ref Main//import_generic_decl, loc17_14, loaded [symbolic = @J.impl.dfd2f7.1.%T (constants.%T)] +// CHECK:STDOUT: %Main.import_ref.ded: type = import_ref Main//import_generic_decl, loc11_32, loaded [symbolic = @D.as.J.impl.199bba.1.%J.type (constants.%J.type.b72)] +// CHECK:STDOUT: %J.impl_witness_table.891 = impl_witness_table (), @D.as.J.impl.199bba.1 [concrete] +// CHECK:STDOUT: %Main.import_ref.5ab3ec.3: type = import_ref Main//import_generic_decl, loc17_14, loaded [symbolic = @D.as.J.impl.dfd2f7.1.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.aa9f8a.2: type = import_ref Main//import_generic_decl, loc17_24, loaded [concrete = constants.%D] -// CHECK:STDOUT: %Main.import_ref.0d3: type = import_ref Main//import_generic_decl, loc17_33, loaded [symbolic = @J.impl.dfd2f7.1.%J.type (constants.%J.type.628)] -// CHECK:STDOUT: %J.impl_witness_table.487 = impl_witness_table (), @J.impl.dfd2f7.1 [concrete] +// CHECK:STDOUT: %Main.import_ref.0d3: type = import_ref Main//import_generic_decl, loc17_33, loaded [symbolic = @D.as.J.impl.dfd2f7.1.%J.type (constants.%J.type.628)] +// CHECK:STDOUT: %J.impl_witness_table.487 = impl_witness_table (), @D.as.J.impl.dfd2f7.1 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -639,7 +639,7 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: } // CHECK:STDOUT: %default.import.loc2_35.1 = import // CHECK:STDOUT: %default.import.loc2_35.2 = import -// CHECK:STDOUT: impl_decl @J.impl.199bba.2 [concrete] { +// CHECK:STDOUT: impl_decl @D.as.J.impl.199bba.2 [concrete] { // CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, imports.%Main.D [concrete = constants.%D] @@ -648,7 +648,7 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %J.type.loc8_32.1: type = facet_type <@J, @J(constants.%T)> [symbolic = %J.type.loc8_32.2 (constants.%J.type.b72)] // CHECK:STDOUT: %T.loc8_14.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc8_14.2 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: impl_decl @J.impl.199bba.3 [concrete] { +// CHECK:STDOUT: impl_decl @D.as.J.impl.199bba.3 [concrete] { // CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, imports.%Main.D [concrete = constants.%D] @@ -657,7 +657,7 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %J.type.loc14_32.1: type = facet_type <@J, @J(constants.%T)> [symbolic = %J.type.loc14_32.2 (constants.%J.type.b72)] // CHECK:STDOUT: %T.loc14_14.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc14_14.2 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: impl_decl @J.impl.dfd2f7.2 [concrete] { +// CHECK:STDOUT: impl_decl @D.as.J.impl.dfd2f7.2 [concrete] { // CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, imports.%Main.D [concrete = constants.%D] @@ -667,7 +667,7 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %J.type.loc20_33.1: type = facet_type <@J, @J(constants.%ptr)> [symbolic = %J.type.loc20_33.2 (constants.%J.type.628)] // CHECK:STDOUT: %T.loc20_14.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc20_14.2 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: impl_decl @J.impl.dfd2f7.3 [concrete] { +// CHECK:STDOUT: impl_decl @D.as.J.impl.dfd2f7.3 [concrete] { // CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, imports.%Main.D [concrete = constants.%D] @@ -693,31 +693,31 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @J.impl.199bba.1(imports.%Main.import_ref.5ab3ec.2: type) [from "fail_import_generic_decl.carbon"] { +// CHECK:STDOUT: generic impl @D.as.J.impl.199bba.1(imports.%Main.import_ref.5ab3ec.2: type) [from "fail_import_generic_decl.carbon"] { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %J.type: type = facet_type <@J, @J(%T)> [symbolic = %J.type (constants.%J.type.b72)] -// CHECK:STDOUT: %J.impl_witness: = impl_witness imports.%J.impl_witness_table.891, @J.impl.199bba.1(%T) [symbolic = %J.impl_witness (constants.%J.impl_witness.809)] +// CHECK:STDOUT: %J.impl_witness: = impl_witness imports.%J.impl_witness_table.891, @D.as.J.impl.199bba.1(%T) [symbolic = %J.impl_witness (constants.%J.impl_witness.809)] // CHECK:STDOUT: // CHECK:STDOUT: impl: imports.%Main.import_ref.aa9f8a.1 as imports.%Main.import_ref.ded; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @J.impl.dfd2f7.1(imports.%Main.import_ref.5ab3ec.3: type) [from "fail_import_generic_decl.carbon"] { +// CHECK:STDOUT: generic impl @D.as.J.impl.dfd2f7.1(imports.%Main.import_ref.5ab3ec.3: type) [from "fail_import_generic_decl.carbon"] { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %ptr: type = ptr_type %T [symbolic = %ptr (constants.%ptr)] // CHECK:STDOUT: %J.type: type = facet_type <@J, @J(%ptr)> [symbolic = %J.type (constants.%J.type.628)] -// CHECK:STDOUT: %J.impl_witness: = impl_witness imports.%J.impl_witness_table.487, @J.impl.dfd2f7.1(%T) [symbolic = %J.impl_witness (constants.%J.impl_witness.5a8)] +// CHECK:STDOUT: %J.impl_witness: = impl_witness imports.%J.impl_witness_table.487, @D.as.J.impl.dfd2f7.1(%T) [symbolic = %J.impl_witness (constants.%J.impl_witness.5a8)] // CHECK:STDOUT: // CHECK:STDOUT: impl: imports.%Main.import_ref.aa9f8a.2 as imports.%Main.import_ref.0d3; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @J.impl.199bba.2(%T.loc8_14.1: type) { +// CHECK:STDOUT: generic impl @D.as.J.impl.199bba.2(%T.loc8_14.1: type) { // CHECK:STDOUT: %T.loc8_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc8_14.2 (constants.%T)] // CHECK:STDOUT: %J.type.loc8_32.2: type = facet_type <@J, @J(%T.loc8_14.2)> [symbolic = %J.type.loc8_32.2 (constants.%J.type.b72)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %D.ref as %J.type.loc8_32.1; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @J.impl.199bba.3(%T.loc14_14.1: type) { +// CHECK:STDOUT: generic impl @D.as.J.impl.199bba.3(%T.loc14_14.1: type) { // CHECK:STDOUT: %T.loc14_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc14_14.2 (constants.%T)] // CHECK:STDOUT: %J.type.loc14_32.2: type = facet_type <@J, @J(%T.loc14_14.2)> [symbolic = %J.type.loc14_32.2 (constants.%J.type.b72)] // CHECK:STDOUT: @@ -729,7 +729,7 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @J.impl.dfd2f7.2(%T.loc20_14.1: type) { +// CHECK:STDOUT: generic impl @D.as.J.impl.dfd2f7.2(%T.loc20_14.1: type) { // CHECK:STDOUT: %T.loc20_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc20_14.2 (constants.%T)] // CHECK:STDOUT: %ptr.loc20_32.2: type = ptr_type %T.loc20_14.2 [symbolic = %ptr.loc20_32.2 (constants.%ptr)] // CHECK:STDOUT: %J.type.loc20_33.2: type = facet_type <@J, @J(%ptr.loc20_32.2)> [symbolic = %J.type.loc20_33.2 (constants.%J.type.628)] @@ -737,7 +737,7 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: impl: %D.ref as %J.type.loc20_33.1; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @J.impl.dfd2f7.3(%T.loc26_14.1: type) { +// CHECK:STDOUT: generic impl @D.as.J.impl.dfd2f7.3(%T.loc26_14.1: type) { // CHECK:STDOUT: %T.loc26_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc26_14.2 (constants.%T)] // CHECK:STDOUT: %ptr.loc26_32.2: type = ptr_type %T.loc26_14.2 [symbolic = %ptr.loc26_32.2 (constants.%ptr)] // CHECK:STDOUT: %J.type.loc26_33.2: type = facet_type <@J, @J(%ptr.loc26_32.2)> [symbolic = %J.type.loc26_33.2 (constants.%J.type.628)] @@ -761,7 +761,7 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @J.impl.199bba.1(constants.%T) { +// CHECK:STDOUT: specific @D.as.J.impl.199bba.1(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %J.type => constants.%J.type.b72 // CHECK:STDOUT: %J.impl_witness => constants.%J.impl_witness.809 @@ -771,30 +771,30 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %T => constants.%ptr // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @J.impl.dfd2f7.1(constants.%T) { +// CHECK:STDOUT: specific @D.as.J.impl.dfd2f7.1(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %ptr => constants.%ptr // CHECK:STDOUT: %J.type => constants.%J.type.628 // CHECK:STDOUT: %J.impl_witness => constants.%J.impl_witness.5a8 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @J.impl.199bba.2(constants.%T) { +// CHECK:STDOUT: specific @D.as.J.impl.199bba.2(constants.%T) { // CHECK:STDOUT: %T.loc8_14.2 => constants.%T // CHECK:STDOUT: %J.type.loc8_32.2 => constants.%J.type.b72 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @J.impl.199bba.3(constants.%T) { +// CHECK:STDOUT: specific @D.as.J.impl.199bba.3(constants.%T) { // CHECK:STDOUT: %T.loc14_14.2 => constants.%T // CHECK:STDOUT: %J.type.loc14_32.2 => constants.%J.type.b72 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @J.impl.dfd2f7.2(constants.%T) { +// CHECK:STDOUT: specific @D.as.J.impl.dfd2f7.2(constants.%T) { // CHECK:STDOUT: %T.loc20_14.2 => constants.%T // CHECK:STDOUT: %ptr.loc20_32.2 => constants.%ptr // CHECK:STDOUT: %J.type.loc20_33.2 => constants.%J.type.628 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @J.impl.dfd2f7.3(constants.%T) { +// CHECK:STDOUT: specific @D.as.J.impl.dfd2f7.3(constants.%T) { // CHECK:STDOUT: %T.loc26_14.2 => constants.%T // CHECK:STDOUT: %ptr.loc26_32.2 => constants.%ptr // CHECK:STDOUT: %J.type.loc26_33.2 => constants.%J.type.628 diff --git a/toolchain/check/testdata/impl/import_interface_assoc_const.carbon b/toolchain/check/testdata/impl/import_interface_assoc_const.carbon index 57280d0ad9ed..ff2138480d10 100644 --- a/toolchain/check/testdata/impl/import_interface_assoc_const.carbon +++ b/toolchain/check/testdata/impl/import_interface_assoc_const.carbon @@ -348,7 +348,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %C1.decl: type = class_decl @C1 [concrete = constants.%C1] {} {} -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C1.as.I.impl [concrete] {} { // CHECK:STDOUT: %C1.ref: type = name_ref C1, file.%C1.decl [concrete = constants.%C1] // CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [concrete = constants.%I.type] // CHECK:STDOUT: %.Self: %I.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] @@ -363,7 +363,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc5_26.2 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @I.impl [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @C1.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness] // CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } @@ -379,7 +379,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: assoc_const T:! type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: %C1.ref as %.loc5_14 { +// CHECK:STDOUT: impl @C1.as.I.impl: %C1.ref as %.loc5_14 { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%I.impl_witness // CHECK:STDOUT: } @@ -437,36 +437,36 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %C2.decl: type = class_decl @C2 [concrete = constants.%C2] {} {} -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C2.as.I.impl [concrete] {} { // CHECK:STDOUT: %C2.ref.loc5: type = name_ref C2, file.%C2.decl [concrete = constants.%C2] // CHECK:STDOUT: %I.ref.loc5: type = name_ref I, imports.%Main.I [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self.1: %I.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref.loc5: %I.type = name_ref .Self, %.Self.1 [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.2: %I.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.ref.loc5: %I.type = name_ref .Self, %.Self.2 [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.ref.loc5: %I.assoc_type = name_ref T, imports.%Main.import_ref.4fb [concrete = constants.%assoc0] // CHECK:STDOUT: %.Self.as_type.loc5: type = facet_access_type %.Self.ref.loc5 [symbolic_self = constants.%.Self.as_type] // CHECK:STDOUT: %.loc5_20: type = converted %.Self.ref.loc5, %.Self.as_type.loc5 [symbolic_self = constants.%.Self.as_type] // CHECK:STDOUT: %impl.elem0.loc5: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] // CHECK:STDOUT: %.loc5_26.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc5_26.2: type = converted %.loc5_26.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %.loc5_14: type = where_expr %.Self.1 [concrete = constants.%I_where.type] { +// CHECK:STDOUT: %.loc5_14: type = where_expr %.Self.2 [concrete = constants.%I_where.type] { // CHECK:STDOUT: requirement_rewrite %impl.elem0.loc5, %.loc5_26.2 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @I.impl [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @C2.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness] // CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_struct_type [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C2.as.I.impl [concrete] {} { // CHECK:STDOUT: %C2.ref.loc6: type = name_ref C2, file.%C2.decl [concrete = constants.%C2] // CHECK:STDOUT: %I.ref.loc6: type = name_ref I, imports.%Main.I [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self.2: %I.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref.loc6: %I.type = name_ref .Self, %.Self.2 [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.1: %I.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.ref.loc6: %I.type = name_ref .Self, %.Self.1 [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.ref.loc6: %I.assoc_type = name_ref T, imports.%Main.import_ref.4fb [concrete = constants.%assoc0] // CHECK:STDOUT: %.Self.as_type.loc6: type = facet_access_type %.Self.ref.loc6 [symbolic_self = constants.%.Self.as_type] // CHECK:STDOUT: %.loc6_20: type = converted %.Self.ref.loc6, %.Self.as_type.loc6 [symbolic_self = constants.%.Self.as_type] // CHECK:STDOUT: %impl.elem0.loc6: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] // CHECK:STDOUT: %.loc6_26.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc6_26.2: type = converted %.loc6_26.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %.loc6_14: type = where_expr %.Self.2 [concrete = constants.%I_where.type] { +// CHECK:STDOUT: %.loc6_14: type = where_expr %.Self.1 [concrete = constants.%I_where.type] { // CHECK:STDOUT: requirement_rewrite %impl.elem0.loc6, %.loc6_26.2 // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -483,7 +483,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: assoc_const T:! type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: %C2.ref.loc5 as %.loc5_14 { +// CHECK:STDOUT: impl @C2.as.I.impl: %C2.ref.loc5 as %.loc5_14 { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%I.impl_witness // CHECK:STDOUT: } @@ -542,13 +542,13 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %C3.decl: type = class_decl @C3 [concrete = constants.%C3] {} {} -// CHECK:STDOUT: impl_decl @I.impl.16e [concrete] {} { +// CHECK:STDOUT: impl_decl @C3.as.I.impl.16e [concrete] {} { // CHECK:STDOUT: %C3.ref: type = name_ref C3, file.%C3.decl [concrete = constants.%C3] // CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [concrete = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table.loc9 = impl_witness_table (), @I.impl.16e [concrete] +// CHECK:STDOUT: %I.impl_witness_table.loc9 = impl_witness_table (), @C3.as.I.impl.16e [concrete] // CHECK:STDOUT: %I.impl_witness.loc9: = impl_witness %I.impl_witness_table.loc9 [concrete = constants.%I.impl_witness.21f] -// CHECK:STDOUT: impl_decl @I.impl.625 [concrete] {} { +// CHECK:STDOUT: impl_decl @C3.as.I.impl.625 [concrete] {} { // CHECK:STDOUT: %C3.ref: type = name_ref C3, file.%C3.decl [concrete = constants.%C3] // CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [concrete = constants.%I.type] // CHECK:STDOUT: %.Self: %I.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] @@ -563,7 +563,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc10_26.2 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table.loc10 = impl_witness_table (%impl_witness_assoc_constant), @I.impl.625 [concrete] +// CHECK:STDOUT: %I.impl_witness_table.loc10 = impl_witness_table (%impl_witness_assoc_constant), @C3.as.I.impl.625 [concrete] // CHECK:STDOUT: %I.impl_witness.loc10: = impl_witness %I.impl_witness_table.loc10 [concrete = constants.%I.impl_witness.f84] // CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } @@ -579,9 +579,9 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: assoc_const T:! type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl.16e: %C3.ref as %I.ref; +// CHECK:STDOUT: impl @C3.as.I.impl.16e: %C3.ref as %I.ref; // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl.625: %C3.ref as %.loc10_14 { +// CHECK:STDOUT: impl @C3.as.I.impl.625: %C3.ref as %.loc10_14 { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%I.impl_witness.loc10 // CHECK:STDOUT: } @@ -642,7 +642,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %C4.decl: type = class_decl @C4 [concrete = constants.%C4] {} {} -// CHECK:STDOUT: impl_decl @I.impl.62b [concrete] {} { +// CHECK:STDOUT: impl_decl @C4.as.I.impl.62b [concrete] {} { // CHECK:STDOUT: %C4.ref: type = name_ref C4, file.%C4.decl [concrete = constants.%C4] // CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [concrete = constants.%I.type] // CHECK:STDOUT: %.Self: %I.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] @@ -657,10 +657,10 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc9_26.2 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table.loc9 = impl_witness_table (%impl_witness_assoc_constant.loc9), @I.impl.62b [concrete] +// CHECK:STDOUT: %I.impl_witness_table.loc9 = impl_witness_table (%impl_witness_assoc_constant.loc9), @C4.as.I.impl.62b [concrete] // CHECK:STDOUT: %I.impl_witness.loc9: = impl_witness %I.impl_witness_table.loc9 [concrete = constants.%I.impl_witness.b54] // CHECK:STDOUT: %impl_witness_assoc_constant.loc9: type = impl_witness_assoc_constant constants.%empty_struct_type [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: impl_decl @I.impl.384 [concrete] {} { +// CHECK:STDOUT: impl_decl @C4.as.I.impl.384 [concrete] {} { // CHECK:STDOUT: %C4.ref: type = name_ref C4, file.%C4.decl [concrete = constants.%C4] // CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [concrete = constants.%I.type] // CHECK:STDOUT: %.Self: %I.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] @@ -675,7 +675,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc10_26.2 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table.loc10 = impl_witness_table (%impl_witness_assoc_constant.loc10), @I.impl.384 [concrete] +// CHECK:STDOUT: %I.impl_witness_table.loc10 = impl_witness_table (%impl_witness_assoc_constant.loc10), @C4.as.I.impl.384 [concrete] // CHECK:STDOUT: %I.impl_witness.loc10: = impl_witness %I.impl_witness_table.loc10 [concrete = constants.%I.impl_witness.ac6] // CHECK:STDOUT: %impl_witness_assoc_constant.loc10: type = impl_witness_assoc_constant constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } @@ -691,9 +691,9 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: assoc_const T:! type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl.62b: %C4.ref as %.loc9_14; +// CHECK:STDOUT: impl @C4.as.I.impl.62b: %C4.ref as %.loc9_14; // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl.384: %C4.ref as %.loc10_14 { +// CHECK:STDOUT: impl @C4.as.I.impl.384: %C4.ref as %.loc10_14 { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%I.impl_witness.loc10 // CHECK:STDOUT: } @@ -769,7 +769,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %C5.decl: type = class_decl @C5 [concrete = constants.%C5] {} {} -// CHECK:STDOUT: impl_decl @impl.eaa268.1 [concrete] {} { +// CHECK:STDOUT: impl_decl @C5.as..impl.eaa268.1 [concrete] {} { // CHECK:STDOUT: %C5.ref: type = name_ref C5, file.%C5.decl [concrete = constants.%C5] // CHECK:STDOUT: %I3.ref: type = name_ref I3, imports.%Main.I3 [concrete = constants.%I3.type] // CHECK:STDOUT: %.Self: %I3.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] @@ -799,7 +799,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: requirement_rewrite %impl.elem2, // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: impl_decl @impl.eaa268.2 [concrete] {} { +// CHECK:STDOUT: impl_decl @C5.as..impl.eaa268.2 [concrete] {} { // CHECK:STDOUT: %C5.ref: type = name_ref C5, file.%C5.decl [concrete = constants.%C5] // CHECK:STDOUT: %I3.ref: type = name_ref I3, imports.%Main.I3 [concrete = constants.%I3.type] // CHECK:STDOUT: %.Self: %I3.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] @@ -852,9 +852,9 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: assoc_const T3:! type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl.eaa268.1: %C5.ref as %.loc17_15; +// CHECK:STDOUT: impl @C5.as..impl.eaa268.1: %C5.ref as %.loc17_15; // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl.eaa268.2: %C5.ref as %.loc27_15 { +// CHECK:STDOUT: impl @C5.as..impl.eaa268.2: %C5.ref as %.loc27_15 { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = // CHECK:STDOUT: } @@ -921,7 +921,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %C6.decl: type = class_decl @C6 [concrete = constants.%C6] {} {} -// CHECK:STDOUT: impl_decl @I.impl.98d [concrete] {} { +// CHECK:STDOUT: impl_decl @C6.as.I.impl.98d [concrete] {} { // CHECK:STDOUT: %C6.ref: type = name_ref C6, file.%C6.decl [concrete = constants.%C6] // CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [concrete = constants.%I.type] // CHECK:STDOUT: %.Self: %I.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] @@ -936,14 +936,14 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc5_26.2 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table.loc5 = impl_witness_table (%impl_witness_assoc_constant), @I.impl.98d [concrete] +// CHECK:STDOUT: %I.impl_witness_table.loc5 = impl_witness_table (%impl_witness_assoc_constant), @C6.as.I.impl.98d [concrete] // CHECK:STDOUT: %I.impl_witness.loc5: = impl_witness %I.impl_witness_table.loc5 [concrete = constants.%I.impl_witness.9b2] // CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_struct_type [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: impl_decl @I.impl.482 [concrete] {} { +// CHECK:STDOUT: impl_decl @C6.as.I.impl.482 [concrete] {} { // CHECK:STDOUT: %C6.ref: type = name_ref C6, file.%C6.decl [concrete = constants.%C6] // CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [concrete = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table.loc18 = impl_witness_table (), @I.impl.482 [concrete] +// CHECK:STDOUT: %I.impl_witness_table.loc18 = impl_witness_table (), @C6.as.I.impl.482 [concrete] // CHECK:STDOUT: %I.impl_witness.loc18: = impl_witness %I.impl_witness_table.loc18 [concrete = constants.%I.impl_witness.6de] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -958,9 +958,9 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: assoc_const T:! type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl.98d: %C6.ref as %.loc5_14; +// CHECK:STDOUT: impl @C6.as.I.impl.98d: %C6.ref as %.loc5_14; // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl.482: %C6.ref as %I.ref { +// CHECK:STDOUT: impl @C6.as.I.impl.482: %C6.ref as %I.ref { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%I.impl_witness.loc18 // CHECK:STDOUT: } @@ -1017,7 +1017,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %C7.decl: type = class_decl @C7 [concrete = constants.%C7] {} {} -// CHECK:STDOUT: impl_decl @impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C7.as..impl [concrete] {} { // CHECK:STDOUT: %C7.ref: type = name_ref C7, file.%C7.decl [concrete = constants.%C7] // CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [concrete = constants.%I.type] // CHECK:STDOUT: %.Self: %I.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] @@ -1053,7 +1053,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: assoc_const T:! type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl: %C7.ref as %.loc10_14 { +// CHECK:STDOUT: impl @C7.as..impl: %C7.ref as %.loc10_14 { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = // CHECK:STDOUT: } @@ -1111,7 +1111,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %C8.decl: type = class_decl @C8 [concrete = constants.%C8] {} {} -// CHECK:STDOUT: impl_decl @impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C8.as..impl [concrete] {} { // CHECK:STDOUT: %C8.ref: type = name_ref C8, file.%C8.decl [concrete = constants.%C8] // CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [concrete = constants.%I.type] // CHECK:STDOUT: %.Self: %I.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] @@ -1146,7 +1146,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: assoc_const T:! type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl: %C8.ref as %.loc10_14 { +// CHECK:STDOUT: impl @C8.as..impl: %C8.ref as %.loc10_14 { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = // CHECK:STDOUT: } @@ -1203,7 +1203,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %C9.decl: type = class_decl @C9 [concrete = constants.%C9] {} {} -// CHECK:STDOUT: impl_decl @impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C9.as..impl [concrete] {} { // CHECK:STDOUT: %C9.ref: type = name_ref C9, file.%C9.decl [concrete = constants.%C9] // CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [concrete = constants.%I.type] // CHECK:STDOUT: %.Self: %I.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] @@ -1238,7 +1238,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: assoc_const T:! type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl: %C9.ref as %.loc10_14 { +// CHECK:STDOUT: impl @C9.as..impl: %C9.ref as %.loc10_14 { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = // CHECK:STDOUT: } @@ -1296,7 +1296,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %CA.decl: type = class_decl @CA [concrete = constants.%CA] {} {} -// CHECK:STDOUT: impl_decl @impl [concrete] {} { +// CHECK:STDOUT: impl_decl @CA.as..impl [concrete] {} { // CHECK:STDOUT: %CA.ref: type = name_ref CA, file.%CA.decl [concrete = constants.%CA] // CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [concrete = constants.%I.type] // CHECK:STDOUT: %.Self: %I.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] @@ -1330,7 +1330,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: assoc_const T:! type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl: %CA.ref as %.loc14_14 { +// CHECK:STDOUT: impl @CA.as..impl: %CA.ref as %.loc14_14 { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = // CHECK:STDOUT: } @@ -1388,7 +1388,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %CB.decl: type = class_decl @CB [concrete = constants.%CB] {} {} -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @CB.as.I.impl [concrete] {} { // CHECK:STDOUT: %CB.ref: type = name_ref CB, file.%CB.decl [concrete = constants.%CB] // CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [concrete = constants.%I.type] // CHECK:STDOUT: %.Self: %I.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] @@ -1411,7 +1411,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: requirement_rewrite %impl.elem0.loc6_32, %.loc6_38.2 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @I.impl [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @CB.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness] // CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } @@ -1427,7 +1427,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: assoc_const T:! type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: %CB.ref as %.loc6_14 { +// CHECK:STDOUT: impl @CB.as.I.impl: %CB.ref as %.loc6_14 { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%I.impl_witness // CHECK:STDOUT: } @@ -1488,7 +1488,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %CC.decl: type = class_decl @CC [concrete = constants.%CC] {} {} -// CHECK:STDOUT: impl_decl @NonType.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @CC.as.NonType.impl [concrete] {} { // CHECK:STDOUT: %CC.ref: type = name_ref CC, file.%CC.decl [concrete = constants.%CC] // CHECK:STDOUT: %NonType.ref: type = name_ref NonType, imports.%Main.NonType [concrete = constants.%NonType.type] // CHECK:STDOUT: %.Self: %NonType.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] @@ -1507,7 +1507,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc6_39.3 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %NonType.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @NonType.impl [concrete] +// CHECK:STDOUT: %NonType.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @CC.as.NonType.impl [concrete] // CHECK:STDOUT: %NonType.impl_witness: = impl_witness %NonType.impl_witness_table [concrete = constants.%NonType.impl_witness] // CHECK:STDOUT: %impl_witness_assoc_constant: %struct_type.a.225 = impl_witness_assoc_constant constants.%struct [concrete = constants.%struct] // CHECK:STDOUT: } @@ -1523,7 +1523,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: assoc_const Y:! %struct_type.a.225; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @NonType.impl: %CC.ref as %.loc6_20 { +// CHECK:STDOUT: impl @CC.as.NonType.impl: %CC.ref as %.loc6_20 { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%NonType.impl_witness // CHECK:STDOUT: } @@ -1546,10 +1546,10 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: constants { // CHECK:STDOUT: %IF.type: type = facet_type <@IF> [concrete] // CHECK:STDOUT: %Self: %IF.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %IF.F.type: type = fn_type @IF.F [concrete] +// CHECK:STDOUT: %IF.F: %IF.F.type = struct_value () [concrete] // CHECK:STDOUT: %IF.assoc_type: type = assoc_entity_type @IF [concrete] -// CHECK:STDOUT: %assoc0: %IF.assoc_type = assoc_entity element0, @IF.%F.decl [concrete] +// CHECK:STDOUT: %assoc0: %IF.assoc_type = assoc_entity element0, @IF.%IF.F.decl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1561,20 +1561,20 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: // CHECK:STDOUT: interface @IF { // CHECK:STDOUT: %Self: %IF.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} -// CHECK:STDOUT: %assoc0: %IF.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %IF.F.decl: %IF.F.type = fn_decl @IF.F [concrete = constants.%IF.F] {} {} +// CHECK:STDOUT: %assoc0: %IF.assoc_type = assoc_entity element0, %IF.F.decl [concrete = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F = %assoc0 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%IF.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(@IF.%Self: %IF.type) { +// CHECK:STDOUT: generic fn @IF.F(@IF.%Self: %IF.type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%Self) {} +// CHECK:STDOUT: specific @IF.F(constants.%Self) {} // CHECK:STDOUT: // CHECK:STDOUT: --- fail_where_rewrite_function.carbon // CHECK:STDOUT: @@ -1589,16 +1589,16 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %assoc0: %IF.assoc_type = assoc_entity element0, imports.%Main.import_ref.4b7 [concrete] // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] // CHECK:STDOUT: %IF.lookup_impl_witness: = lookup_impl_witness %.Self, @IF [symbolic_self] -// CHECK:STDOUT: %F.type.496: type = fn_type @F.1 [concrete] -// CHECK:STDOUT: %F.1de: %F.type.496 = struct_value () [concrete] +// CHECK:STDOUT: %IF.F.type: type = fn_type @IF.F [concrete] +// CHECK:STDOUT: %IF.F: %IF.F.type = struct_value () [concrete] // CHECK:STDOUT: %IF.facet.01b: %IF.type = facet_value %.Self.as_type, (%IF.lookup_impl_witness) [symbolic_self] -// CHECK:STDOUT: %.c5b: type = fn_type_with_self_type %F.type.496, %IF.facet.01b [symbolic_self] +// CHECK:STDOUT: %.c5b: type = fn_type_with_self_type %IF.F.type, %IF.facet.01b [symbolic_self] // CHECK:STDOUT: %impl.elem0: %.c5b = impl_witness_access %IF.lookup_impl_witness, element0 [symbolic_self] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %IF_where.type: type = facet_type <@IF where %impl.elem0 = %int_0> [concrete] // CHECK:STDOUT: %IF.impl_witness: = impl_witness file.%IF.impl_witness_table [concrete] -// CHECK:STDOUT: %F.type.f56: type = fn_type @F.loc11 [concrete] -// CHECK:STDOUT: %F.fae: %F.type.f56 = struct_value () [concrete] +// CHECK:STDOUT: %CD.as.IF.impl.F.type: type = fn_type @CD.as.IF.impl.F [concrete] +// CHECK:STDOUT: %CD.as.IF.impl.F: %CD.as.IF.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %IF.facet.60c: %IF.type = facet_value %CD, (%IF.impl_witness) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1606,8 +1606,8 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %Main.IF: type = import_ref Main//interface_with_function, IF, loaded [concrete = constants.%IF.type] // CHECK:STDOUT: %Main.import_ref.a2a = import_ref Main//interface_with_function, inst17 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.f22: %IF.assoc_type = import_ref Main//interface_with_function, loc3_22, loaded [concrete = constants.%assoc0] -// CHECK:STDOUT: %Main.F: %F.type.496 = import_ref Main//interface_with_function, F, loaded [concrete = constants.%F.1de] -// CHECK:STDOUT: %Main.import_ref.4b7: %F.type.496 = import_ref Main//interface_with_function, loc3_22, loaded [concrete = constants.%F.1de] +// CHECK:STDOUT: %Main.F: %IF.F.type = import_ref Main//interface_with_function, F, loaded [concrete = constants.%IF.F] +// CHECK:STDOUT: %Main.import_ref.4b7: %IF.F.type = import_ref Main//interface_with_function, loc3_22, loaded [concrete = constants.%IF.F] // CHECK:STDOUT: %Main.import_ref.f57: %IF.type = import_ref Main//interface_with_function, inst17 [no loc], loaded [symbolic = constants.%Self] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1618,7 +1618,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %CD.decl: type = class_decl @CD [concrete = constants.%CD] {} {} -// CHECK:STDOUT: impl_decl @IF.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @CD.as.IF.impl [concrete] {} { // CHECK:STDOUT: %CD.ref: type = name_ref CD, file.%CD.decl [concrete = constants.%CD] // CHECK:STDOUT: %IF.ref: type = name_ref IF, imports.%Main.IF [concrete = constants.%IF.type] // CHECK:STDOUT: %.Self: %IF.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] @@ -1632,7 +1632,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: requirement_rewrite %impl.elem0, %int_0 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %IF.impl_witness_table = impl_witness_table (@IF.impl.%F.decl), @IF.impl [concrete] +// CHECK:STDOUT: %IF.impl_witness_table = impl_witness_table (@CD.as.IF.impl.%CD.as.IF.impl.F.decl), @CD.as.IF.impl [concrete] // CHECK:STDOUT: %IF.impl_witness: = impl_witness %IF.impl_witness_table [concrete = constants.%IF.impl_witness] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1643,11 +1643,11 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: witness = (imports.%Main.F) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @IF.impl: %CD.ref as %.loc10_15 { -// CHECK:STDOUT: %F.decl: %F.type.f56 = fn_decl @F.loc11 [concrete = constants.%F.fae] {} {} +// CHECK:STDOUT: impl @CD.as.IF.impl: %CD.ref as %.loc10_15 { +// CHECK:STDOUT: %CD.as.IF.impl.F.decl: %CD.as.IF.impl.F.type = fn_decl @CD.as.IF.impl.F [concrete = constants.%CD.as.IF.impl.F] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %CD.as.IF.impl.F.decl // CHECK:STDOUT: witness = file.%IF.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1660,16 +1660,16 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: .Self = constants.%CD // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.1(imports.%Main.import_ref.f57: %IF.type) [from "interface_with_function.carbon"] { +// CHECK:STDOUT: generic fn @IF.F(imports.%Main.import_ref.f57: %IF.type) [from "interface_with_function.carbon"] { // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc11() { +// CHECK:STDOUT: fn @CD.as.IF.impl.F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.1(constants.%Self) {} +// CHECK:STDOUT: specific @IF.F(constants.%Self) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.1(constants.%IF.facet.60c) {} +// CHECK:STDOUT: specific @IF.F(constants.%IF.facet.60c) {} // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/import_self.carbon b/toolchain/check/testdata/impl/import_self.carbon index d4db5a8f01a9..06c5f616a476 100644 --- a/toolchain/check/testdata/impl/import_self.carbon +++ b/toolchain/check/testdata/impl/import_self.carbon @@ -41,10 +41,10 @@ fn F(x: (), y: ()) -> () { // CHECK:STDOUT: %Self: %Add.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type [symbolic] -// CHECK:STDOUT: %Op.type: type = fn_type @Op [concrete] -// CHECK:STDOUT: %Op: %Op.type = struct_value () [concrete] +// CHECK:STDOUT: %Add.Op.type: type = fn_type @Add.Op [concrete] +// CHECK:STDOUT: %Add.Op: %Add.Op.type = struct_value () [concrete] // CHECK:STDOUT: %Add.assoc_type: type = assoc_entity_type @Add [concrete] -// CHECK:STDOUT: %assoc0: %Add.assoc_type = assoc_entity element0, @Add.%Op.decl [concrete] +// CHECK:STDOUT: %assoc0: %Add.assoc_type = assoc_entity element0, @Add.%Add.Op.decl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -65,53 +65,53 @@ fn F(x: (), y: ()) -> () { // CHECK:STDOUT: // CHECK:STDOUT: interface @Add { // CHECK:STDOUT: %Self: %Add.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %Op.decl: %Op.type = fn_decl @Op [concrete = constants.%Op] { -// CHECK:STDOUT: %self.patt: @Op.%pattern_type (%pattern_type) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @Op.%pattern_type (%pattern_type) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %other.patt: @Op.%pattern_type (%pattern_type) = binding_pattern other [concrete] -// CHECK:STDOUT: %other.param_patt: @Op.%pattern_type (%pattern_type) = value_param_pattern %other.patt, call_param1 [concrete] -// CHECK:STDOUT: %return.patt: @Op.%pattern_type (%pattern_type) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @Op.%pattern_type (%pattern_type) = out_param_pattern %return.patt, call_param2 [concrete] +// CHECK:STDOUT: %Add.Op.decl: %Add.Op.type = fn_decl @Add.Op [concrete = constants.%Add.Op] { +// CHECK:STDOUT: %self.patt: @Add.Op.%pattern_type (%pattern_type) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @Add.Op.%pattern_type (%pattern_type) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %other.patt: @Add.Op.%pattern_type (%pattern_type) = binding_pattern other [concrete] +// CHECK:STDOUT: %other.param_patt: @Add.Op.%pattern_type (%pattern_type) = value_param_pattern %other.patt, call_param1 [concrete] +// CHECK:STDOUT: %return.patt: @Add.Op.%pattern_type (%pattern_type) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @Add.Op.%pattern_type (%pattern_type) = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc5_37: %Add.type = name_ref Self, @Add.%Self [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc5_37: type = facet_access_type %Self.ref.loc5_37 [symbolic = %Self.as_type.loc5_15.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc5_37: type = converted %Self.ref.loc5_37, %Self.as_type.loc5_37 [symbolic = %Self.as_type.loc5_15.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %self.param: @Op.%Self.as_type.loc5_15.2 (%Self.as_type) = value_param call_param0 -// CHECK:STDOUT: %.loc5_15.1: type = splice_block %.loc5_15.2 [symbolic = %Self.as_type.loc5_15.2 (constants.%Self.as_type)] { +// CHECK:STDOUT: %Self.as_type.loc5_37: type = facet_access_type %Self.ref.loc5_37 [symbolic = %Self.as_type.loc5_15.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc5_37: type = converted %Self.ref.loc5_37, %Self.as_type.loc5_37 [symbolic = %Self.as_type.loc5_15.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %self.param: @Add.Op.%Self.as_type.loc5_15.1 (%Self.as_type) = value_param call_param0 +// CHECK:STDOUT: %.loc5_15.1: type = splice_block %.loc5_15.2 [symbolic = %Self.as_type.loc5_15.1 (constants.%Self.as_type)] { // CHECK:STDOUT: %Self.ref.loc5_15: %Add.type = name_ref Self, @Add.%Self [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc5_15.1: type = facet_access_type %Self.ref.loc5_15 [symbolic = %Self.as_type.loc5_15.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc5_15.2: type = converted %Self.ref.loc5_15, %Self.as_type.loc5_15.1 [symbolic = %Self.as_type.loc5_15.2 (constants.%Self.as_type)] +// CHECK:STDOUT: %Self.as_type.loc5_15.2: type = facet_access_type %Self.ref.loc5_15 [symbolic = %Self.as_type.loc5_15.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc5_15.2: type = converted %Self.ref.loc5_15, %Self.as_type.loc5_15.2 [symbolic = %Self.as_type.loc5_15.1 (constants.%Self.as_type)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @Op.%Self.as_type.loc5_15.2 (%Self.as_type) = bind_name self, %self.param -// CHECK:STDOUT: %other.param: @Op.%Self.as_type.loc5_15.2 (%Self.as_type) = value_param call_param1 -// CHECK:STDOUT: %.loc5_28.1: type = splice_block %.loc5_28.2 [symbolic = %Self.as_type.loc5_15.2 (constants.%Self.as_type)] { +// CHECK:STDOUT: %self: @Add.Op.%Self.as_type.loc5_15.1 (%Self.as_type) = bind_name self, %self.param +// CHECK:STDOUT: %other.param: @Add.Op.%Self.as_type.loc5_15.1 (%Self.as_type) = value_param call_param1 +// CHECK:STDOUT: %.loc5_28.1: type = splice_block %.loc5_28.2 [symbolic = %Self.as_type.loc5_15.1 (constants.%Self.as_type)] { // CHECK:STDOUT: %Self.ref.loc5_28: %Add.type = name_ref Self, @Add.%Self [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc5_28: type = facet_access_type %Self.ref.loc5_28 [symbolic = %Self.as_type.loc5_15.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc5_28.2: type = converted %Self.ref.loc5_28, %Self.as_type.loc5_28 [symbolic = %Self.as_type.loc5_15.2 (constants.%Self.as_type)] +// CHECK:STDOUT: %Self.as_type.loc5_28: type = facet_access_type %Self.ref.loc5_28 [symbolic = %Self.as_type.loc5_15.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc5_28.2: type = converted %Self.ref.loc5_28, %Self.as_type.loc5_28 [symbolic = %Self.as_type.loc5_15.1 (constants.%Self.as_type)] // CHECK:STDOUT: } -// CHECK:STDOUT: %other: @Op.%Self.as_type.loc5_15.2 (%Self.as_type) = bind_name other, %other.param -// CHECK:STDOUT: %return.param: ref @Op.%Self.as_type.loc5_15.2 (%Self.as_type) = out_param call_param2 -// CHECK:STDOUT: %return: ref @Op.%Self.as_type.loc5_15.2 (%Self.as_type) = return_slot %return.param +// CHECK:STDOUT: %other: @Add.Op.%Self.as_type.loc5_15.1 (%Self.as_type) = bind_name other, %other.param +// CHECK:STDOUT: %return.param: ref @Add.Op.%Self.as_type.loc5_15.1 (%Self.as_type) = out_param call_param2 +// CHECK:STDOUT: %return: ref @Add.Op.%Self.as_type.loc5_15.1 (%Self.as_type) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %Add.assoc_type = assoc_entity element0, %Op.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %assoc0: %Add.assoc_type = assoc_entity element0, %Add.Op.decl [concrete = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .Op = %assoc0 -// CHECK:STDOUT: witness = (%Op.decl) +// CHECK:STDOUT: witness = (%Add.Op.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Op(@Add.%Self: %Add.type) { +// CHECK:STDOUT: generic fn @Add.Op(@Add.%Self: %Add.type) { // CHECK:STDOUT: %Self: %Add.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc5_15.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc5_15.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc5_15.2 [symbolic = %pattern_type (constants.%pattern_type)] +// CHECK:STDOUT: %Self.as_type.loc5_15.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc5_15.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc5_15.1 [symbolic = %pattern_type (constants.%pattern_type)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @Op.%Self.as_type.loc5_15.2 (%Self.as_type), %other.param: @Op.%Self.as_type.loc5_15.2 (%Self.as_type)) -> @Op.%Self.as_type.loc5_15.2 (%Self.as_type); +// CHECK:STDOUT: fn(%self.param: @Add.Op.%Self.as_type.loc5_15.1 (%Self.as_type), %other.param: @Add.Op.%Self.as_type.loc5_15.1 (%Self.as_type)) -> @Add.Op.%Self.as_type.loc5_15.1 (%Self.as_type); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Op(constants.%Self) { +// CHECK:STDOUT: specific @Add.Op(constants.%Self) { // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %Self.as_type.loc5_15.2 => constants.%Self.as_type +// CHECK:STDOUT: %Self.as_type.loc5_15.1 => constants.%Self.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type // CHECK:STDOUT: } // CHECK:STDOUT: @@ -121,26 +121,26 @@ fn F(x: (), y: ()) -> () { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Add.type: type = facet_type <@Add> [concrete] // CHECK:STDOUT: %Self.b3d: %Add.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %Op.type.31b: type = fn_type @Op.1 [concrete] -// CHECK:STDOUT: %Op.d59: %Op.type.31b = struct_value () [concrete] +// CHECK:STDOUT: %Add.Op.type: type = fn_type @Add.Op [concrete] +// CHECK:STDOUT: %Add.Op: %Add.Op.type = struct_value () [concrete] // CHECK:STDOUT: %Self.as_type.f73: type = facet_access_type %Self.b3d [symbolic] // CHECK:STDOUT: %pattern_type.8f9: type = pattern_type %Self.as_type.f73 [symbolic] // CHECK:STDOUT: %Add.impl_witness: = impl_witness file.%Add.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] -// CHECK:STDOUT: %Op.type.adf: type = fn_type @Op.loc7 [concrete] -// CHECK:STDOUT: %Op.489: %Op.type.adf = struct_value () [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.Add.impl.Op.type: type = fn_type @empty_tuple.type.as.Add.impl.Op [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.Add.impl.Op: %empty_tuple.type.as.Add.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %Add.facet: %Add.type = facet_value %empty_tuple.type, (%Add.impl_witness) [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %Add.assoc_type: type = assoc_entity_type @Add [concrete] // CHECK:STDOUT: %assoc0.5ca: %Add.assoc_type = assoc_entity element0, imports.%Main.import_ref.5a3 [concrete] -// CHECK:STDOUT: %.59e: type = fn_type_with_self_type %Op.type.31b, %Add.facet [concrete] +// CHECK:STDOUT: %.59e: type = fn_type_with_self_type %Add.Op.type, %Add.facet [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.2, @Destroy.impl(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a63: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ea3: %T.as.Destroy.impl.Op.type.a63 = struct_value () [concrete] // CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ea3, @Op.2(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(%empty_tuple.type) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -152,9 +152,9 @@ fn F(x: (), y: ()) -> () { // CHECK:STDOUT: } // CHECK:STDOUT: %Main.import_ref.07c = import_ref Main//a, inst19 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.f99: %Add.assoc_type = import_ref Main//a, loc5_41, loaded [concrete = constants.%assoc0.5ca] -// CHECK:STDOUT: %Main.Op: %Op.type.31b = import_ref Main//a, Op, loaded [concrete = constants.%Op.d59] +// CHECK:STDOUT: %Main.Op: %Add.Op.type = import_ref Main//a, Op, loaded [concrete = constants.%Add.Op] // CHECK:STDOUT: %Main.import_ref.e5e: %Add.type = import_ref Main//a, inst19 [no loc], loaded [symbolic = constants.%Self.b3d] -// CHECK:STDOUT: %Main.import_ref.5a3: %Op.type.31b = import_ref Main//a, loc5_41, loaded [concrete = constants.%Op.d59] +// CHECK:STDOUT: %Main.import_ref.5a3: %Add.Op.type = import_ref Main//a, loc5_41, loaded [concrete = constants.%Add.Op] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -166,12 +166,12 @@ fn F(x: (), y: ()) -> () { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %default.import = import -// CHECK:STDOUT: impl_decl @Add.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @empty_tuple.type.as.Add.impl [concrete] {} { // CHECK:STDOUT: %.loc6_7.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc6_7.2: type = converted %.loc6_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %Add.ref: type = name_ref Add, imports.%Main.Add [concrete = constants.%Add.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %Add.impl_witness_table = impl_witness_table (@Add.impl.%Op.decl), @Add.impl [concrete] +// CHECK:STDOUT: %Add.impl_witness_table = impl_witness_table (@empty_tuple.type.as.Add.impl.%empty_tuple.type.as.Add.impl.Op.decl), @empty_tuple.type.as.Add.impl [concrete] // CHECK:STDOUT: %Add.impl_witness: = impl_witness %Add.impl_witness_table [concrete = constants.%Add.impl_witness] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { // CHECK:STDOUT: %x.patt: %pattern_type.cb1 = binding_pattern x [concrete] @@ -207,8 +207,8 @@ fn F(x: (), y: ()) -> () { // CHECK:STDOUT: witness = (imports.%Main.Op) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Add.impl: %.loc6_7.2 as %Add.ref { -// CHECK:STDOUT: %Op.decl: %Op.type.adf = fn_decl @Op.loc7 [concrete = constants.%Op.489] { +// CHECK:STDOUT: impl @empty_tuple.type.as.Add.impl: %.loc6_7.2 as %Add.ref { +// CHECK:STDOUT: %empty_tuple.type.as.Add.impl.Op.decl: %empty_tuple.type.as.Add.impl.Op.type = fn_decl @empty_tuple.type.as.Add.impl.Op [concrete = constants.%empty_tuple.type.as.Add.impl.Op] { // CHECK:STDOUT: %self.patt: %pattern_type.cb1 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.cb1 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %other.patt: %pattern_type.cb1 = binding_pattern other [concrete] @@ -216,23 +216,23 @@ fn F(x: (), y: ()) -> () { // CHECK:STDOUT: %return.patt: %pattern_type.cb1 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.cb1 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %Self.ref.loc7_37: type = name_ref Self, @Add.impl.%.loc6_7.2 [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %Self.ref.loc7_37: type = name_ref Self, @empty_tuple.type.as.Add.impl.%.loc6_7.2 [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %self.param: %empty_tuple.type = value_param call_param0 -// CHECK:STDOUT: %Self.ref.loc7_15: type = name_ref Self, @Add.impl.%.loc6_7.2 [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %Self.ref.loc7_15: type = name_ref Self, @empty_tuple.type.as.Add.impl.%.loc6_7.2 [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %self: %empty_tuple.type = bind_name self, %self.param // CHECK:STDOUT: %other.param: %empty_tuple.type = value_param call_param1 -// CHECK:STDOUT: %Self.ref.loc7_28: type = name_ref Self, @Add.impl.%.loc6_7.2 [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %Self.ref.loc7_28: type = name_ref Self, @empty_tuple.type.as.Add.impl.%.loc6_7.2 [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %other: %empty_tuple.type = bind_name other, %other.param // CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param call_param2 // CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Op = %Op.decl +// CHECK:STDOUT: .Op = %empty_tuple.type.as.Add.impl.Op.decl // CHECK:STDOUT: witness = file.%Add.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Op.1(imports.%Main.import_ref.e5e: %Add.type) [from "a.carbon"] { +// CHECK:STDOUT: generic fn @Add.Op(imports.%Main.import_ref.e5e: %Add.type) [from "a.carbon"] { // CHECK:STDOUT: %Self: %Add.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.b3d)] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic = %Self.as_type (constants.%Self.as_type.f73)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type [symbolic = %pattern_type (constants.%pattern_type.8f9)] @@ -240,7 +240,7 @@ fn F(x: (), y: ()) -> () { // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Op.loc7(%self.param: %empty_tuple.type, %other.param: %empty_tuple.type) -> %empty_tuple.type { +// CHECK:STDOUT: fn @empty_tuple.type.as.Add.impl.Op(%self.param: %empty_tuple.type, %other.param: %empty_tuple.type) -> %empty_tuple.type { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %.loc7_52: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] @@ -253,29 +253,29 @@ fn F(x: (), y: ()) -> () { // CHECK:STDOUT: %x.ref: %empty_tuple.type = name_ref x, %x // CHECK:STDOUT: %Add.ref: type = name_ref Add, imports.%Main.Add [concrete = constants.%Add.type] // CHECK:STDOUT: %Op.ref: %Add.assoc_type = name_ref Op, imports.%Main.import_ref.f99 [concrete = constants.%assoc0.5ca] -// CHECK:STDOUT: %impl.elem0: %.59e = impl_witness_access constants.%Add.impl_witness, element0 [concrete = constants.%Op.489] +// CHECK:STDOUT: %impl.elem0: %.59e = impl_witness_access constants.%Add.impl_witness, element0 [concrete = constants.%empty_tuple.type.as.Add.impl.Op] // CHECK:STDOUT: %bound_method.loc11_11: = bound_method %x.ref, %impl.elem0 // CHECK:STDOUT: %y.ref: %empty_tuple.type = name_ref y, %y -// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %bound_method.loc11_11(%x.ref, %y.ref) +// CHECK:STDOUT: %empty_tuple.type.as.Add.impl.Op.call: init %empty_tuple.type = call %bound_method.loc11_11(%x.ref, %y.ref) // CHECK:STDOUT: %.loc11_22.1: ref %empty_tuple.type = temporary_storage -// CHECK:STDOUT: %.loc11_22.2: ref %empty_tuple.type = temporary %.loc11_22.1, %Op.call +// CHECK:STDOUT: %.loc11_22.2: ref %empty_tuple.type = temporary %.loc11_22.1, %empty_tuple.type.as.Add.impl.Op.call // CHECK:STDOUT: %tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc11_23: %empty_tuple.type = converted %Op.call, %tuple [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %Op.bound: = bound_method %.loc11_22.1, constants.%Op.ea3 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.ea3, @Op.2(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc11_22: = bound_method %.loc11_22.1, %Op.specific_fn +// CHECK:STDOUT: %.loc11_23: %empty_tuple.type = converted %empty_tuple.type.as.Add.impl.Op.call, %tuple [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc11_22.1, constants.%T.as.Destroy.impl.Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc11_22: = bound_method %.loc11_22.1, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.843 = addr_of %.loc11_22.1 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc11_22(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc11_22(%addr) // CHECK:STDOUT: return %.loc11_23 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Op.1(constants.%Self.b3d) { +// CHECK:STDOUT: specific @Add.Op(constants.%Self.b3d) { // CHECK:STDOUT: %Self => constants.%Self.b3d // CHECK:STDOUT: %Self.as_type => constants.%Self.as_type.f73 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.8f9 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Op.1(constants.%Add.facet) { +// CHECK:STDOUT: specific @Add.Op(constants.%Add.facet) { // CHECK:STDOUT: %Self => constants.%Add.facet // CHECK:STDOUT: %Self.as_type => constants.%empty_tuple.type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.cb1 diff --git a/toolchain/check/testdata/impl/import_thunk.carbon b/toolchain/check/testdata/impl/import_thunk.carbon index e4019b1e8a52..b5ed21f89cb4 100644 --- a/toolchain/check/testdata/impl/import_thunk.carbon +++ b/toolchain/check/testdata/impl/import_thunk.carbon @@ -48,10 +48,10 @@ fn G() { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_struct_type [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %I.F.type: type = fn_type @I.F [concrete] +// CHECK:STDOUT: %I.F: %I.F.type = struct_value () [concrete] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] -// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%F.decl [concrete] +// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%I.F.decl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -72,7 +72,7 @@ fn G() { // CHECK:STDOUT: // CHECK:STDOUT: interface @I { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { +// CHECK:STDOUT: %I.F.decl: %I.F.type = fn_decl @I.F [concrete = constants.%I.F] { // CHECK:STDOUT: %x.patt: %pattern_type = binding_pattern x [concrete] // CHECK:STDOUT: %x.param_patt: %pattern_type = value_param_pattern %x.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -83,19 +83,19 @@ fn G() { // CHECK:STDOUT: } // CHECK:STDOUT: %x: %empty_struct_type = bind_name x, %x.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %I.F.decl [concrete = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F = %assoc0 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%I.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(@I.%Self: %I.type) { +// CHECK:STDOUT: generic fn @I.F(@I.%Self: %I.type) { // CHECK:STDOUT: fn(%x.param: %empty_struct_type); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%Self) {} +// CHECK:STDOUT: specific @I.F(constants.%Self) {} // CHECK:STDOUT: // CHECK:STDOUT: --- b.carbon // CHECK:STDOUT: @@ -112,31 +112,31 @@ fn G() { // CHECK:STDOUT: %C.13320f.2: type = class_type @C, @C(%Y) [symbolic] // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] // CHECK:STDOUT: %Self.826: %I.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.cf0: type = fn_type @F.1 [concrete] -// CHECK:STDOUT: %F.bc6: %F.type.cf0 = struct_value () [concrete] +// CHECK:STDOUT: %I.F.type: type = fn_type @I.F [concrete] +// CHECK:STDOUT: %I.F: %I.F.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.a96: type = pattern_type %empty_struct_type [concrete] -// CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table, @I.impl(%Y) [symbolic] +// CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table, @C.as.I.impl(%Y) [symbolic] // CHECK:STDOUT: %pattern_type.ccc: type = pattern_type %C.13320f.2 [symbolic] -// CHECK:STDOUT: %F.type.0daaa1.1: type = fn_type @F.loc8_17.1, @I.impl(%Y) [symbolic] -// CHECK:STDOUT: %F.49c1ac.1: %F.type.0daaa1.1 = struct_value () [symbolic] +// CHECK:STDOUT: %C.as.I.impl.F.type.0daaa1.1: type = fn_type @C.as.I.impl.F.loc8_17.1, @C.as.I.impl(%Y) [symbolic] +// CHECK:STDOUT: %C.as.I.impl.F.49c1ac.1: %C.as.I.impl.F.type.0daaa1.1 = struct_value () [symbolic] // CHECK:STDOUT: %I.facet: %I.type = facet_value %C.13320f.2, (%I.impl_witness) [symbolic] -// CHECK:STDOUT: %F.type.0daaa1.2: type = fn_type @F.loc8_17.2, @I.impl(%Y) [symbolic] -// CHECK:STDOUT: %F.49c1ac.2: %F.type.0daaa1.2 = struct_value () [symbolic] +// CHECK:STDOUT: %C.as.I.impl.F.type.0daaa1.2: type = fn_type @C.as.I.impl.F.loc8_17.2, @C.as.I.impl(%Y) [symbolic] +// CHECK:STDOUT: %C.as.I.impl.F.49c1ac.2: %C.as.I.impl.F.type.0daaa1.2 = struct_value () [symbolic] // CHECK:STDOUT: %require_complete.a35: = require_complete_type %C.13320f.2 [symbolic] -// CHECK:STDOUT: %F.specific_fn: = specific_function %F.49c1ac.1, @F.loc8_17.1(%Y) [symbolic] +// CHECK:STDOUT: %C.as.I.impl.F.specific_fn: = specific_function %C.as.I.impl.F.49c1ac.1, @C.as.I.impl.F.loc8_17.1(%Y) [symbolic] // CHECK:STDOUT: %C.val: %C.13320f.2 = struct_value () [symbolic] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %Destroy.assoc_type: type = assoc_entity_type @Destroy [concrete] // CHECK:STDOUT: %assoc0: %Destroy.assoc_type = assoc_entity element0, imports.%Core.import_ref.725 [concrete] -// CHECK:STDOUT: %Op.type.bae: type = fn_type @Op.1 [concrete] -// CHECK:STDOUT: %Op.651: %Op.type.bae = struct_value () [concrete] +// CHECK:STDOUT: %Destroy.Op.type: type = fn_type @Destroy.Op [concrete] +// CHECK:STDOUT: %Destroy.Op: %Destroy.Op.type = struct_value () [concrete] // CHECK:STDOUT: %ptr.40d: type = ptr_type %C.13320f.2 [symbolic] // CHECK:STDOUT: %require_complete.0b0: = require_complete_type %ptr.40d [symbolic] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %C.13320f.2, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %C.13320f.2, (%Destroy.lookup_impl_witness) [symbolic] -// CHECK:STDOUT: %.97f: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [symbolic] +// CHECK:STDOUT: %.97f: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet [symbolic] // CHECK:STDOUT: %impl.elem0: %.97f = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Op.1(%Destroy.facet) [symbolic] +// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Destroy.Op(%Destroy.facet) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -148,11 +148,11 @@ fn G() { // CHECK:STDOUT: } // CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//a, inst19 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.507 = import_ref Main//a, loc5_14, unloaded -// CHECK:STDOUT: %Main.F: %F.type.cf0 = import_ref Main//a, F, loaded [concrete = constants.%F.bc6] +// CHECK:STDOUT: %Main.F: %I.F.type = import_ref Main//a, F, loaded [concrete = constants.%I.F] // CHECK:STDOUT: %Main.import_ref.5dd: %I.type = import_ref Main//a, inst19 [no loc], loaded [symbolic = constants.%Self.826] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: %Core.import_ref.f99: %Destroy.assoc_type = import_ref Core//prelude/parts/destroy, loc5_28, loaded [concrete = constants.%assoc0] -// CHECK:STDOUT: %Core.import_ref.725: %Op.type.bae = import_ref Core//prelude/parts/destroy, loc5_28, loaded [concrete = constants.%Op.651] +// CHECK:STDOUT: %Core.import_ref.725: %Destroy.Op.type = import_ref Core//prelude/parts/destroy, loc5_28, loaded [concrete = constants.%Destroy.Op] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -172,21 +172,21 @@ fn G() { // CHECK:STDOUT: } // CHECK:STDOUT: %X.loc5_9.2: %empty_tuple.type = bind_symbolic_name X, 0 [symbolic = %X.loc5_9.1 (constants.%X)] // CHECK:STDOUT: } -// CHECK:STDOUT: impl_decl @I.impl [concrete] { +// CHECK:STDOUT: impl_decl @C.as.I.impl [concrete] { // CHECK:STDOUT: %Y.patt: %pattern_type.cb1 = symbolic_binding_pattern Y, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] -// CHECK:STDOUT: %Y.ref: %empty_tuple.type = name_ref Y, %Y.loc7_14.1 [symbolic = %Y.loc7_14.2 (constants.%Y)] -// CHECK:STDOUT: %C.loc7_25.1: type = class_type @C, @C(constants.%Y) [symbolic = %C.loc7_25.2 (constants.%C.13320f.2)] +// CHECK:STDOUT: %Y.ref: %empty_tuple.type = name_ref Y, %Y.loc7_14.2 [symbolic = %Y.loc7_14.1 (constants.%Y)] +// CHECK:STDOUT: %C.loc7_25.2: type = class_type @C, @C(constants.%Y) [symbolic = %C.loc7_25.1 (constants.%C.13320f.2)] // CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [concrete = constants.%I.type] // CHECK:STDOUT: %.loc7_19.1: type = splice_block %.loc7_19.3 [concrete = constants.%empty_tuple.type] { // CHECK:STDOUT: %.loc7_19.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc7_19.3: type = converted %.loc7_19.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %Y.loc7_14.1: %empty_tuple.type = bind_symbolic_name Y, 0 [symbolic = %Y.loc7_14.2 (constants.%Y)] +// CHECK:STDOUT: %Y.loc7_14.2: %empty_tuple.type = bind_symbolic_name Y, 0 [symbolic = %Y.loc7_14.1 (constants.%Y)] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (@I.impl.%F.decl.loc8_17.2), @I.impl [concrete] -// CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table, @I.impl(constants.%Y) [symbolic = @I.impl.%I.impl_witness (constants.%I.impl_witness)] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (@C.as.I.impl.%C.as.I.impl.F.decl.loc8_17.2), @C.as.I.impl [concrete] +// CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table, @C.as.I.impl(constants.%Y) [symbolic = @C.as.I.impl.%I.impl_witness (constants.%I.impl_witness)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I [from "a.carbon"] { @@ -196,31 +196,31 @@ fn G() { // CHECK:STDOUT: witness = (imports.%Main.F) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @I.impl(%Y.loc7_14.1: %empty_tuple.type) { -// CHECK:STDOUT: %Y.loc7_14.2: %empty_tuple.type = bind_symbolic_name Y, 0 [symbolic = %Y.loc7_14.2 (constants.%Y)] -// CHECK:STDOUT: %C.loc7_25.2: type = class_type @C, @C(%Y.loc7_14.2) [symbolic = %C.loc7_25.2 (constants.%C.13320f.2)] -// CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table, @I.impl(%Y.loc7_14.2) [symbolic = %I.impl_witness (constants.%I.impl_witness)] +// CHECK:STDOUT: generic impl @C.as.I.impl(%Y.loc7_14.2: %empty_tuple.type) { +// CHECK:STDOUT: %Y.loc7_14.1: %empty_tuple.type = bind_symbolic_name Y, 0 [symbolic = %Y.loc7_14.1 (constants.%Y)] +// CHECK:STDOUT: %C.loc7_25.1: type = class_type @C, @C(%Y.loc7_14.1) [symbolic = %C.loc7_25.1 (constants.%C.13320f.2)] +// CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table, @C.as.I.impl(%Y.loc7_14.1) [symbolic = %I.impl_witness (constants.%I.impl_witness)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type.loc8_17.1: type = fn_type @F.loc8_17.1, @I.impl(%Y.loc7_14.2) [symbolic = %F.type.loc8_17.1 (constants.%F.type.0daaa1.1)] -// CHECK:STDOUT: %F.loc8_17.1: @I.impl.%F.type.loc8_17.1 (%F.type.0daaa1.1) = struct_value () [symbolic = %F.loc8_17.1 (constants.%F.49c1ac.1)] -// CHECK:STDOUT: %F.type.loc8_17.2: type = fn_type @F.loc8_17.2, @I.impl(%Y.loc7_14.2) [symbolic = %F.type.loc8_17.2 (constants.%F.type.0daaa1.2)] -// CHECK:STDOUT: %F.loc8_17.2: @I.impl.%F.type.loc8_17.2 (%F.type.0daaa1.2) = struct_value () [symbolic = %F.loc8_17.2 (constants.%F.49c1ac.2)] +// CHECK:STDOUT: %C.as.I.impl.F.type.loc8_17.1: type = fn_type @C.as.I.impl.F.loc8_17.1, @C.as.I.impl(%Y.loc7_14.1) [symbolic = %C.as.I.impl.F.type.loc8_17.1 (constants.%C.as.I.impl.F.type.0daaa1.1)] +// CHECK:STDOUT: %C.as.I.impl.F.loc8_17.1: @C.as.I.impl.%C.as.I.impl.F.type.loc8_17.1 (%C.as.I.impl.F.type.0daaa1.1) = struct_value () [symbolic = %C.as.I.impl.F.loc8_17.1 (constants.%C.as.I.impl.F.49c1ac.1)] +// CHECK:STDOUT: %C.as.I.impl.F.type.loc8_17.2: type = fn_type @C.as.I.impl.F.loc8_17.2, @C.as.I.impl(%Y.loc7_14.1) [symbolic = %C.as.I.impl.F.type.loc8_17.2 (constants.%C.as.I.impl.F.type.0daaa1.2)] +// CHECK:STDOUT: %C.as.I.impl.F.loc8_17.2: @C.as.I.impl.%C.as.I.impl.F.type.loc8_17.2 (%C.as.I.impl.F.type.0daaa1.2) = struct_value () [symbolic = %C.as.I.impl.F.loc8_17.2 (constants.%C.as.I.impl.F.49c1ac.2)] // CHECK:STDOUT: -// CHECK:STDOUT: impl: %C.loc7_25.1 as %I.ref { -// CHECK:STDOUT: %F.decl.loc8_17.1: @I.impl.%F.type.loc8_17.1 (%F.type.0daaa1.1) = fn_decl @F.loc8_17.1 [symbolic = @I.impl.%F.loc8_17.1 (constants.%F.49c1ac.1)] { -// CHECK:STDOUT: %x.patt: @F.loc8_17.1.%pattern_type (%pattern_type.ccc) = binding_pattern x [concrete] -// CHECK:STDOUT: %x.param_patt: @F.loc8_17.1.%pattern_type (%pattern_type.ccc) = value_param_pattern %x.patt, call_param0 [concrete] +// CHECK:STDOUT: impl: %C.loc7_25.2 as %I.ref { +// CHECK:STDOUT: %C.as.I.impl.F.decl.loc8_17.1: @C.as.I.impl.%C.as.I.impl.F.type.loc8_17.1 (%C.as.I.impl.F.type.0daaa1.1) = fn_decl @C.as.I.impl.F.loc8_17.1 [symbolic = @C.as.I.impl.%C.as.I.impl.F.loc8_17.1 (constants.%C.as.I.impl.F.49c1ac.1)] { +// CHECK:STDOUT: %x.patt: @C.as.I.impl.F.loc8_17.1.%pattern_type (%pattern_type.ccc) = binding_pattern x [concrete] +// CHECK:STDOUT: %x.param_patt: @C.as.I.impl.F.loc8_17.1.%pattern_type (%pattern_type.ccc) = value_param_pattern %x.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %x.param: @F.loc8_17.1.%C.loc8_14.1 (%C.13320f.2) = value_param call_param0 +// CHECK:STDOUT: %x.param: @C.as.I.impl.F.loc8_17.1.%C.loc8_14.1 (%C.13320f.2) = value_param call_param0 // CHECK:STDOUT: %.loc8: type = splice_block %C.loc8_14.2 [symbolic = %C.loc8_14.1 (constants.%C.13320f.2)] { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] -// CHECK:STDOUT: %Y.ref: %empty_tuple.type = name_ref Y, @I.impl.%Y.loc7_14.1 [symbolic = %Y (constants.%Y)] +// CHECK:STDOUT: %Y.ref: %empty_tuple.type = name_ref Y, @C.as.I.impl.%Y.loc7_14.2 [symbolic = %Y (constants.%Y)] // CHECK:STDOUT: %C.loc8_14.2: type = class_type @C, @C(constants.%Y) [symbolic = %C.loc8_14.1 (constants.%C.13320f.2)] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: @F.loc8_17.1.%C.loc8_14.1 (%C.13320f.2) = bind_name x, %x.param +// CHECK:STDOUT: %x: @C.as.I.impl.F.loc8_17.1.%C.loc8_14.1 (%C.13320f.2) = bind_name x, %x.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl.loc8_17.2: @I.impl.%F.type.loc8_17.2 (%F.type.0daaa1.2) = fn_decl @F.loc8_17.2 [symbolic = @I.impl.%F.loc8_17.2 (constants.%F.49c1ac.2)] { +// CHECK:STDOUT: %C.as.I.impl.F.decl.loc8_17.2: @C.as.I.impl.%C.as.I.impl.F.type.loc8_17.2 (%C.as.I.impl.F.type.0daaa1.2) = fn_decl @C.as.I.impl.F.loc8_17.2 [symbolic = @C.as.I.impl.%C.as.I.impl.F.loc8_17.2 (constants.%C.as.I.impl.F.49c1ac.2)] { // CHECK:STDOUT: %x.patt: %pattern_type.a96 = binding_pattern x [concrete] // CHECK:STDOUT: %x.param_patt: %pattern_type.a96 = value_param_pattern %x.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -231,7 +231,7 @@ fn G() { // CHECK:STDOUT: !members: // CHECK:STDOUT: .C = // CHECK:STDOUT: .Y = -// CHECK:STDOUT: .F = %F.decl.loc8_17.1 +// CHECK:STDOUT: .F = %C.as.I.impl.F.decl.loc8_17.1 // CHECK:STDOUT: witness = file.%I.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -251,11 +251,11 @@ fn G() { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.1(imports.%Main.import_ref.5dd: %I.type) [from "a.carbon"] { +// CHECK:STDOUT: generic fn @I.F(imports.%Main.import_ref.5dd: %I.type) [from "a.carbon"] { // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc8_17.1(@I.impl.%Y.loc7_14.1: %empty_tuple.type) { +// CHECK:STDOUT: generic fn @C.as.I.impl.F.loc8_17.1(@C.as.I.impl.%Y.loc7_14.2: %empty_tuple.type) { // CHECK:STDOUT: %Y: %empty_tuple.type = bind_symbolic_name Y, 0 [symbolic = %Y (constants.%Y)] // CHECK:STDOUT: %C.loc8_14.1: type = class_type @C, @C(%Y) [symbolic = %C.loc8_14.1 (constants.%C.13320f.2)] // CHECK:STDOUT: %pattern_type: type = pattern_type %C.loc8_14.1 [symbolic = %pattern_type (constants.%pattern_type.ccc)] @@ -263,47 +263,47 @@ fn G() { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %C.loc8_14.1 [symbolic = %require_complete (constants.%require_complete.a35)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%x.param: @F.loc8_17.1.%C.loc8_14.1 (%C.13320f.2)) { +// CHECK:STDOUT: fn(%x.param: @C.as.I.impl.F.loc8_17.1.%C.loc8_14.1 (%C.13320f.2)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc8_17.2(@I.impl.%Y.loc7_14.1: %empty_tuple.type) { +// CHECK:STDOUT: generic fn @C.as.I.impl.F.loc8_17.2(@C.as.I.impl.%Y.loc7_14.2: %empty_tuple.type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Y: %empty_tuple.type = bind_symbolic_name Y, 0 [symbolic = %Y (constants.%Y)] -// CHECK:STDOUT: %F.type: type = fn_type @F.loc8_17.1, @I.impl(%Y) [symbolic = %F.type (constants.%F.type.0daaa1.1)] -// CHECK:STDOUT: %F: @F.loc8_17.2.%F.type (%F.type.0daaa1.1) = struct_value () [symbolic = %F (constants.%F.49c1ac.1)] -// CHECK:STDOUT: %F.specific_fn.loc8_17.2: = specific_function %F, @F.loc8_17.1(%Y) [symbolic = %F.specific_fn.loc8_17.2 (constants.%F.specific_fn)] +// CHECK:STDOUT: %C.as.I.impl.F.type: type = fn_type @C.as.I.impl.F.loc8_17.1, @C.as.I.impl(%Y) [symbolic = %C.as.I.impl.F.type (constants.%C.as.I.impl.F.type.0daaa1.1)] +// CHECK:STDOUT: %C.as.I.impl.F: @C.as.I.impl.F.loc8_17.2.%C.as.I.impl.F.type (%C.as.I.impl.F.type.0daaa1.1) = struct_value () [symbolic = %C.as.I.impl.F (constants.%C.as.I.impl.F.49c1ac.1)] +// CHECK:STDOUT: %C.as.I.impl.F.specific_fn.loc8_17.2: = specific_function %C.as.I.impl.F, @C.as.I.impl.F.loc8_17.1(%Y) [symbolic = %C.as.I.impl.F.specific_fn.loc8_17.2 (constants.%C.as.I.impl.F.specific_fn)] // CHECK:STDOUT: %C: type = class_type @C, @C(%Y) [symbolic = %C (constants.%C.13320f.2)] // CHECK:STDOUT: %require_complete.1: = require_complete_type %C [symbolic = %require_complete.1 (constants.%require_complete.a35)] -// CHECK:STDOUT: %C.val: @F.loc8_17.2.%C (%C.13320f.2) = struct_value () [symbolic = %C.val (constants.%C.val)] +// CHECK:STDOUT: %C.val: @C.as.I.impl.F.loc8_17.2.%C (%C.13320f.2) = struct_value () [symbolic = %C.val (constants.%C.val)] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %C, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness)] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %C, (%Destroy.lookup_impl_witness) [symbolic = %Destroy.facet (constants.%Destroy.facet)] -// CHECK:STDOUT: %.7: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.7 (constants.%.97f)] -// CHECK:STDOUT: %impl.elem0.2: @F.loc8_17.2.%.7 (%.97f) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %specific_impl_fn.2: = specific_impl_function %impl.elem0.2, @Op.1(%Destroy.facet) [symbolic = %specific_impl_fn.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %.7: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet [symbolic = %.7 (constants.%.97f)] +// CHECK:STDOUT: %impl.elem0.2: @C.as.I.impl.F.loc8_17.2.%.7 (%.97f) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.2 (constants.%impl.elem0)] +// CHECK:STDOUT: %specific_impl_fn.2: = specific_impl_function %impl.elem0.2, @Destroy.Op(%Destroy.facet) [symbolic = %specific_impl_fn.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %ptr: type = ptr_type %C [symbolic = %ptr (constants.%ptr.40d)] // CHECK:STDOUT: %require_complete.2: = require_complete_type %ptr [symbolic = %require_complete.2 (constants.%require_complete.0b0)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%x.param: %empty_struct_type) [thunk @I.impl.%F.decl.loc8_17.1] { +// CHECK:STDOUT: fn(%x.param: %empty_struct_type) [thunk @C.as.I.impl.%C.as.I.impl.F.decl.loc8_17.1] { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc8: @F.loc8_17.2.%F.type (%F.type.0daaa1.1) = specific_constant @I.impl.%F.decl.loc8_17.1, @I.impl(constants.%Y) [symbolic = %F (constants.%F.49c1ac.1)] -// CHECK:STDOUT: %F.ref: @F.loc8_17.2.%F.type (%F.type.0daaa1.1) = name_ref F, %.loc8 [symbolic = %F (constants.%F.49c1ac.1)] +// CHECK:STDOUT: %.loc8: @C.as.I.impl.F.loc8_17.2.%C.as.I.impl.F.type (%C.as.I.impl.F.type.0daaa1.1) = specific_constant @C.as.I.impl.%C.as.I.impl.F.decl.loc8_17.1, @C.as.I.impl(constants.%Y) [symbolic = %C.as.I.impl.F (constants.%C.as.I.impl.F.49c1ac.1)] +// CHECK:STDOUT: %F.ref: @C.as.I.impl.F.loc8_17.2.%C.as.I.impl.F.type (%C.as.I.impl.F.type.0daaa1.1) = name_ref F, %.loc8 [symbolic = %C.as.I.impl.F (constants.%C.as.I.impl.F.49c1ac.1)] // CHECK:STDOUT: %x.ref: %empty_struct_type = name_ref x, %x.param -// CHECK:STDOUT: %F.specific_fn.loc8_17.1: = specific_function %F.ref, @F.loc8_17.1(constants.%Y) [symbolic = %F.specific_fn.loc8_17.2 (constants.%F.specific_fn)] -// CHECK:STDOUT: %.1: ref @F.loc8_17.2.%C (%C.13320f.2) = temporary_storage -// CHECK:STDOUT: %.2: init @F.loc8_17.2.%C (%C.13320f.2) = class_init (), %.1 [symbolic = %C.val (constants.%C.val)] -// CHECK:STDOUT: %.3: ref @F.loc8_17.2.%C (%C.13320f.2) = temporary %.1, %.2 -// CHECK:STDOUT: %.4: ref @F.loc8_17.2.%C (%C.13320f.2) = converted %x.ref, %.3 -// CHECK:STDOUT: %.5: @F.loc8_17.2.%C (%C.13320f.2) = bind_value %.4 -// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.specific_fn.loc8_17.1(%.5) +// CHECK:STDOUT: %C.as.I.impl.F.specific_fn.loc8_17.1: = specific_function %F.ref, @C.as.I.impl.F.loc8_17.1(constants.%Y) [symbolic = %C.as.I.impl.F.specific_fn.loc8_17.2 (constants.%C.as.I.impl.F.specific_fn)] +// CHECK:STDOUT: %.1: ref @C.as.I.impl.F.loc8_17.2.%C (%C.13320f.2) = temporary_storage +// CHECK:STDOUT: %.2: init @C.as.I.impl.F.loc8_17.2.%C (%C.13320f.2) = class_init (), %.1 [symbolic = %C.val (constants.%C.val)] +// CHECK:STDOUT: %.3: ref @C.as.I.impl.F.loc8_17.2.%C (%C.13320f.2) = temporary %.1, %.2 +// CHECK:STDOUT: %.4: ref @C.as.I.impl.F.loc8_17.2.%C (%C.13320f.2) = converted %x.ref, %.3 +// CHECK:STDOUT: %.5: @C.as.I.impl.F.loc8_17.2.%C (%C.13320f.2) = bind_value %.4 +// CHECK:STDOUT: %C.as.I.impl.F.call: init %empty_tuple.type = call %C.as.I.impl.F.specific_fn.loc8_17.1(%.5) // CHECK:STDOUT: %Op.ref: %Destroy.assoc_type = name_ref Op, imports.%Core.import_ref.f99 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.1: @F.loc8_17.2.%.7 (%.97f) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.2 (constants.%impl.elem0)] +// CHECK:STDOUT: %impl.elem0.1: @C.as.I.impl.F.loc8_17.2.%.7 (%.97f) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.2 (constants.%impl.elem0)] // CHECK:STDOUT: %bound_method.1: = bound_method %.1, %impl.elem0.1 -// CHECK:STDOUT: %specific_impl_fn.1: = specific_impl_function %impl.elem0.1, @Op.1(constants.%Destroy.facet) [symbolic = %specific_impl_fn.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.1: = specific_impl_function %impl.elem0.1, @Destroy.Op(constants.%Destroy.facet) [symbolic = %specific_impl_fn.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %bound_method.2: = bound_method %.1, %specific_impl_fn.1 -// CHECK:STDOUT: %addr: @F.loc8_17.2.%ptr (%ptr.40d) = addr_of %.1 +// CHECK:STDOUT: %addr: @C.as.I.impl.F.loc8_17.2.%ptr (%ptr.40d) = addr_of %.1 // CHECK:STDOUT: %.6: init %empty_tuple.type = call %bound_method.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -319,21 +319,21 @@ fn G() { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.impl(constants.%Y) { -// CHECK:STDOUT: %Y.loc7_14.2 => constants.%Y -// CHECK:STDOUT: %C.loc7_25.2 => constants.%C.13320f.2 +// CHECK:STDOUT: specific @C.as.I.impl(constants.%Y) { +// CHECK:STDOUT: %Y.loc7_14.1 => constants.%Y +// CHECK:STDOUT: %C.loc7_25.1 => constants.%C.13320f.2 // CHECK:STDOUT: %I.impl_witness => constants.%I.impl_witness // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type.loc8_17.1 => constants.%F.type.0daaa1.1 -// CHECK:STDOUT: %F.loc8_17.1 => constants.%F.49c1ac.1 -// CHECK:STDOUT: %F.type.loc8_17.2 => constants.%F.type.0daaa1.2 -// CHECK:STDOUT: %F.loc8_17.2 => constants.%F.49c1ac.2 +// CHECK:STDOUT: %C.as.I.impl.F.type.loc8_17.1 => constants.%C.as.I.impl.F.type.0daaa1.1 +// CHECK:STDOUT: %C.as.I.impl.F.loc8_17.1 => constants.%C.as.I.impl.F.49c1ac.1 +// CHECK:STDOUT: %C.as.I.impl.F.type.loc8_17.2 => constants.%C.as.I.impl.F.type.0daaa1.2 +// CHECK:STDOUT: %C.as.I.impl.F.loc8_17.2 => constants.%C.as.I.impl.F.49c1ac.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.1(constants.%Self.826) {} +// CHECK:STDOUT: specific @I.F(constants.%Self.826) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc8_17.1(constants.%Y) { +// CHECK:STDOUT: specific @C.as.I.impl.F.loc8_17.1(constants.%Y) { // CHECK:STDOUT: %Y => constants.%Y // CHECK:STDOUT: %C.loc8_14.1 => constants.%C.13320f.2 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.ccc @@ -342,9 +342,9 @@ fn G() { // CHECK:STDOUT: %require_complete => constants.%require_complete.a35 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.1(constants.%I.facet) {} +// CHECK:STDOUT: specific @I.F(constants.%I.facet) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc8_17.2(constants.%Y) {} +// CHECK:STDOUT: specific @C.as.I.impl.F.loc8_17.2(constants.%Y) {} // CHECK:STDOUT: // CHECK:STDOUT: --- c.carbon // CHECK:STDOUT: @@ -363,51 +363,51 @@ fn G() { // CHECK:STDOUT: %Self.826: %I.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] // CHECK:STDOUT: %assoc0.3f3: %I.assoc_type = assoc_entity element0, imports.%Main.import_ref.e03 [concrete] -// CHECK:STDOUT: %F.type.cf0: type = fn_type @F.2 [concrete] -// CHECK:STDOUT: %F.bc6: %F.type.cf0 = struct_value () [concrete] +// CHECK:STDOUT: %I.F.type: type = fn_type @I.F [concrete] +// CHECK:STDOUT: %I.F: %I.F.type = struct_value () [concrete] // CHECK:STDOUT: %Y: %empty_tuple.type = bind_symbolic_name Y, 0 [symbolic] // CHECK:STDOUT: %C.13320f.2: type = class_type @C, @C(%Y) [symbolic] -// CHECK:STDOUT: %I.impl_witness.7d9: = impl_witness imports.%I.impl_witness_table, @I.impl(%Y) [symbolic] -// CHECK:STDOUT: %F.type.0daaa1.1: type = fn_type @F.1, @I.impl(%Y) [symbolic] -// CHECK:STDOUT: %F.49c1ac.1: %F.type.0daaa1.1 = struct_value () [symbolic] +// CHECK:STDOUT: %I.impl_witness.7d9: = impl_witness imports.%I.impl_witness_table, @C.as.I.impl(%Y) [symbolic] +// CHECK:STDOUT: %C.as.I.impl.F.type.0daaa1.1: type = fn_type @C.as.I.impl.F.1, @C.as.I.impl(%Y) [symbolic] +// CHECK:STDOUT: %C.as.I.impl.F.49c1ac.1: %C.as.I.impl.F.type.0daaa1.1 = struct_value () [symbolic] // CHECK:STDOUT: %pattern_type.ccc: type = pattern_type %C.13320f.2 [symbolic] -// CHECK:STDOUT: %F.type.0daaa1.2: type = fn_type @F.3, @I.impl(%Y) [symbolic] -// CHECK:STDOUT: %F.49c1ac.2: %F.type.0daaa1.2 = struct_value () [symbolic] +// CHECK:STDOUT: %C.as.I.impl.F.type.0daaa1.2: type = fn_type @C.as.I.impl.F.2, @C.as.I.impl(%Y) [symbolic] +// CHECK:STDOUT: %C.as.I.impl.F.49c1ac.2: %C.as.I.impl.F.type.0daaa1.2 = struct_value () [symbolic] // CHECK:STDOUT: %require_complete.a35: = require_complete_type %C.13320f.2 [symbolic] -// CHECK:STDOUT: %F.specific_fn.8d9: = specific_function %F.49c1ac.1, @F.1(%Y) [symbolic] +// CHECK:STDOUT: %C.as.I.impl.F.specific_fn.8d9: = specific_function %C.as.I.impl.F.49c1ac.1, @C.as.I.impl.F.1(%Y) [symbolic] // CHECK:STDOUT: %C.val.56a: %C.13320f.2 = struct_value () [symbolic] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %C.13320f.2, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.666: %Destroy.type = facet_value %C.13320f.2, (%Destroy.lookup_impl_witness) [symbolic] -// CHECK:STDOUT: %Op.type.989: type = fn_type @Op.2 [concrete] -// CHECK:STDOUT: %.5fd: type = fn_type_with_self_type %Op.type.989, %Destroy.facet.666 [symbolic] +// CHECK:STDOUT: %Destroy.Op.type: type = fn_type @Destroy.Op [concrete] +// CHECK:STDOUT: %.5fd: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.666 [symbolic] // CHECK:STDOUT: %impl.elem0: %.5fd = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Op.2(%Destroy.facet.666) [symbolic] +// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Destroy.Op(%Destroy.facet.666) [symbolic] // CHECK:STDOUT: %ptr.40d: type = ptr_type %C.13320f.2 [symbolic] // CHECK:STDOUT: %require_complete.0b0: = require_complete_type %ptr.40d [symbolic] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %Op.type.ed4: type = fn_type @Op.1, @Destroy.impl(%T) [symbolic] -// CHECK:STDOUT: %Op.486: %Op.type.ed4 = struct_value () [symbolic] -// CHECK:STDOUT: %I.impl_witness.02b: = impl_witness imports.%I.impl_witness_table, @I.impl(%empty_tuple) [concrete] -// CHECK:STDOUT: %F.type.af4856.1: type = fn_type @F.1, @I.impl(%empty_tuple) [concrete] -// CHECK:STDOUT: %F.5fa954.1: %F.type.af4856.1 = struct_value () [concrete] -// CHECK:STDOUT: %F.type.af4856.2: type = fn_type @F.3, @I.impl(%empty_tuple) [concrete] -// CHECK:STDOUT: %F.5fa954.2: %F.type.af4856.2 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.ed4: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%T) [symbolic] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.486: %T.as.Destroy.impl.Op.type.ed4 = struct_value () [symbolic] +// CHECK:STDOUT: %I.impl_witness.02b: = impl_witness imports.%I.impl_witness_table, @C.as.I.impl(%empty_tuple) [concrete] +// CHECK:STDOUT: %C.as.I.impl.F.type.af4856.1: type = fn_type @C.as.I.impl.F.1, @C.as.I.impl(%empty_tuple) [concrete] +// CHECK:STDOUT: %C.as.I.impl.F.5fa954.1: %C.as.I.impl.F.type.af4856.1 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.I.impl.F.type.af4856.2: type = fn_type @C.as.I.impl.F.2, @C.as.I.impl(%empty_tuple) [concrete] +// CHECK:STDOUT: %C.as.I.impl.F.5fa954.2: %C.as.I.impl.F.type.af4856.2 = struct_value () [concrete] // CHECK:STDOUT: %I.facet: %I.type = facet_value %C.607, (%I.impl_witness.02b) [concrete] -// CHECK:STDOUT: %.885: type = fn_type_with_self_type %F.type.cf0, %I.facet [concrete] +// CHECK:STDOUT: %.885: type = fn_type_with_self_type %I.F.type, %I.facet [concrete] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] -// CHECK:STDOUT: %F.specific_fn.4832e8.1: = specific_function %F.5fa954.2, @F.3(%empty_tuple) [concrete] +// CHECK:STDOUT: %C.as.I.impl.F.specific_fn.4832e8.1: = specific_function %C.as.I.impl.F.5fa954.2, @C.as.I.impl.F.2(%empty_tuple) [concrete] // CHECK:STDOUT: %pattern_type.186: type = pattern_type %C.607 [concrete] -// CHECK:STDOUT: %F.specific_fn.4832e8.2: = specific_function %F.5fa954.1, @F.1(%empty_tuple) [concrete] +// CHECK:STDOUT: %C.as.I.impl.F.specific_fn.4832e8.2: = specific_function %C.as.I.impl.F.5fa954.1, @C.as.I.impl.F.1(%empty_tuple) [concrete] // CHECK:STDOUT: %C.val.12f: %C.607 = struct_value () [concrete] -// CHECK:STDOUT: %Destroy.impl_witness.ce0: = impl_witness imports.%Destroy.impl_witness_table, @Destroy.impl(%C.607) [concrete] -// CHECK:STDOUT: %Op.type.ea0: type = fn_type @Op.1, @Destroy.impl(%C.607) [concrete] -// CHECK:STDOUT: %Op.ac0: %Op.type.ea0 = struct_value () [concrete] +// CHECK:STDOUT: %Destroy.impl_witness.ce0: = impl_witness imports.%Destroy.impl_witness_table, @T.as.Destroy.impl(%C.607) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.ea0: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C.607) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ac0: %T.as.Destroy.impl.Op.type.ea0 = struct_value () [concrete] // CHECK:STDOUT: %ptr.2ce: type = ptr_type %C.607 [concrete] // CHECK:STDOUT: %complete_type.e2c: = complete_type_witness %ptr.2ce [concrete] // CHECK:STDOUT: %Destroy.facet.c44: %Destroy.type = facet_value %C.607, (%Destroy.impl_witness.ce0) [concrete] -// CHECK:STDOUT: %.69e: type = fn_type_with_self_type %Op.type.989, %Destroy.facet.c44 [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ac0, @Op.1(%C.607) [concrete] +// CHECK:STDOUT: %.69e: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.c44 [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.ac0, @T.as.Destroy.impl.Op(%C.607) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -424,19 +424,19 @@ fn G() { // CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//a, inst19 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.c44: %I.assoc_type = import_ref Main//a, loc5_14, loaded [concrete = constants.%assoc0.3f3] // CHECK:STDOUT: %Main.F.8b9 = import_ref Main//a, F, unloaded -// CHECK:STDOUT: %Main.import_ref.e03: %F.type.cf0 = import_ref Main//a, loc5_14, loaded [concrete = constants.%F.bc6] +// CHECK:STDOUT: %Main.import_ref.e03: %I.F.type = import_ref Main//a, loc5_14, loaded [concrete = constants.%I.F] // CHECK:STDOUT: %Main.import_ref.5dd: %I.type = import_ref Main//a, inst19 [no loc], loaded [symbolic = constants.%Self.826] -// CHECK:STDOUT: %Main.import_ref.f89: = import_ref Main//b, loc7_32, loaded [symbolic = @I.impl.%I.impl_witness (constants.%I.impl_witness.7d9)] -// CHECK:STDOUT: %Main.import_ref.eb1c17.2: %empty_tuple.type = import_ref Main//b, loc7_14, loaded [symbolic = @I.impl.%Y (constants.%Y)] -// CHECK:STDOUT: %Main.import_ref.dbf: type = import_ref Main//b, loc7_25, loaded [symbolic = @I.impl.%C (constants.%C.13320f.2)] +// CHECK:STDOUT: %Main.import_ref.f89: = import_ref Main//b, loc7_32, loaded [symbolic = @C.as.I.impl.%I.impl_witness (constants.%I.impl_witness.7d9)] +// CHECK:STDOUT: %Main.import_ref.eb1c17.2: %empty_tuple.type = import_ref Main//b, loc7_14, loaded [symbolic = @C.as.I.impl.%Y (constants.%Y)] +// CHECK:STDOUT: %Main.import_ref.dbf: type = import_ref Main//b, loc7_25, loaded [symbolic = @C.as.I.impl.%C (constants.%C.13320f.2)] // CHECK:STDOUT: %Main.import_ref.f50: type = import_ref Main//b, loc7_30, loaded [concrete = constants.%I.type] -// CHECK:STDOUT: %Main.import_ref.047: @I.impl.%F.type.2 (%F.type.0daaa1.2) = import_ref Main//b, loc8_17, loaded [symbolic = @I.impl.%F.2 (constants.%F.49c1ac.2)] -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%Main.import_ref.047), @I.impl [concrete] -// CHECK:STDOUT: %Main.import_ref.eb1c17.3: %empty_tuple.type = import_ref Main//b, loc7_14, loaded [symbolic = @I.impl.%Y (constants.%Y)] -// CHECK:STDOUT: %Main.import_ref.eb1c17.4: %empty_tuple.type = import_ref Main//b, loc7_14, loaded [symbolic = @I.impl.%Y (constants.%Y)] -// CHECK:STDOUT: %Main.F.5a8: @I.impl.%F.type.1 (%F.type.0daaa1.1) = import_ref Main//b, F, loaded [symbolic = @I.impl.%F.1 (constants.%F.49c1ac.1)] -// CHECK:STDOUT: %Main.import_ref.fcc: @Destroy.impl.%Op.type (%Op.type.ed4) = import_ref Main//b, inst153 [indirect], loaded [symbolic = @Destroy.impl.%Op (constants.%Op.486)] -// CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Main.import_ref.fcc), @Destroy.impl [concrete] +// CHECK:STDOUT: %Main.import_ref.047: @C.as.I.impl.%C.as.I.impl.F.type.2 (%C.as.I.impl.F.type.0daaa1.2) = import_ref Main//b, loc8_17, loaded [symbolic = @C.as.I.impl.%C.as.I.impl.F.2 (constants.%C.as.I.impl.F.49c1ac.2)] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%Main.import_ref.047), @C.as.I.impl [concrete] +// CHECK:STDOUT: %Main.import_ref.eb1c17.3: %empty_tuple.type = import_ref Main//b, loc7_14, loaded [symbolic = @C.as.I.impl.%Y (constants.%Y)] +// CHECK:STDOUT: %Main.import_ref.eb1c17.4: %empty_tuple.type = import_ref Main//b, loc7_14, loaded [symbolic = @C.as.I.impl.%Y (constants.%Y)] +// CHECK:STDOUT: %Main.F.5a8: @C.as.I.impl.%C.as.I.impl.F.type.1 (%C.as.I.impl.F.type.0daaa1.1) = import_ref Main//b, F, loaded [symbolic = @C.as.I.impl.%C.as.I.impl.F.1 (constants.%C.as.I.impl.F.49c1ac.1)] +// CHECK:STDOUT: %Main.import_ref.fcc: @T.as.Destroy.impl.%T.as.Destroy.impl.Op.type (%T.as.Destroy.impl.Op.type.ed4) = import_ref Main//b, inst153 [indirect], loaded [symbolic = @T.as.Destroy.impl.%T.as.Destroy.impl.Op (constants.%T.as.Destroy.impl.Op.486)] +// CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Main.import_ref.fcc), @T.as.Destroy.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -459,16 +459,16 @@ fn G() { // CHECK:STDOUT: witness = (imports.%Main.F.8b9) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @I.impl(imports.%Main.import_ref.eb1c17.2: %empty_tuple.type) [from "b.carbon"] { +// CHECK:STDOUT: generic impl @C.as.I.impl(imports.%Main.import_ref.eb1c17.2: %empty_tuple.type) [from "b.carbon"] { // CHECK:STDOUT: %Y: %empty_tuple.type = bind_symbolic_name Y, 0 [symbolic = %Y (constants.%Y)] // CHECK:STDOUT: %C: type = class_type @C, @C(%Y) [symbolic = %C (constants.%C.13320f.2)] -// CHECK:STDOUT: %I.impl_witness: = impl_witness imports.%I.impl_witness_table, @I.impl(%Y) [symbolic = %I.impl_witness (constants.%I.impl_witness.7d9)] +// CHECK:STDOUT: %I.impl_witness: = impl_witness imports.%I.impl_witness_table, @C.as.I.impl(%Y) [symbolic = %I.impl_witness (constants.%I.impl_witness.7d9)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1, @I.impl(%Y) [symbolic = %F.type.1 (constants.%F.type.0daaa1.1)] -// CHECK:STDOUT: %F.1: @I.impl.%F.type.1 (%F.type.0daaa1.1) = struct_value () [symbolic = %F.1 (constants.%F.49c1ac.1)] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.3, @I.impl(%Y) [symbolic = %F.type.2 (constants.%F.type.0daaa1.2)] -// CHECK:STDOUT: %F.2: @I.impl.%F.type.2 (%F.type.0daaa1.2) = struct_value () [symbolic = %F.2 (constants.%F.49c1ac.2)] +// CHECK:STDOUT: %C.as.I.impl.F.type.1: type = fn_type @C.as.I.impl.F.1, @C.as.I.impl(%Y) [symbolic = %C.as.I.impl.F.type.1 (constants.%C.as.I.impl.F.type.0daaa1.1)] +// CHECK:STDOUT: %C.as.I.impl.F.1: @C.as.I.impl.%C.as.I.impl.F.type.1 (%C.as.I.impl.F.type.0daaa1.1) = struct_value () [symbolic = %C.as.I.impl.F.1 (constants.%C.as.I.impl.F.49c1ac.1)] +// CHECK:STDOUT: %C.as.I.impl.F.type.2: type = fn_type @C.as.I.impl.F.2, @C.as.I.impl(%Y) [symbolic = %C.as.I.impl.F.type.2 (constants.%C.as.I.impl.F.type.0daaa1.2)] +// CHECK:STDOUT: %C.as.I.impl.F.2: @C.as.I.impl.%C.as.I.impl.F.type.2 (%C.as.I.impl.F.type.0daaa1.2) = struct_value () [symbolic = %C.as.I.impl.F.2 (constants.%C.as.I.impl.F.49c1ac.2)] // CHECK:STDOUT: // CHECK:STDOUT: impl: imports.%Main.import_ref.dbf as imports.%Main.import_ref.f50 { // CHECK:STDOUT: !members: @@ -500,35 +500,35 @@ fn G() { // CHECK:STDOUT: %F.ref.loc7_11: %I.assoc_type = name_ref F, imports.%Main.import_ref.c44 [concrete = constants.%assoc0.3f3] // CHECK:STDOUT: %I.facet: %I.type = facet_value constants.%C.607, (constants.%I.impl_witness.02b) [concrete = constants.%I.facet] // CHECK:STDOUT: %.loc7_8: %I.type = converted %C, %I.facet [concrete = constants.%I.facet] -// CHECK:STDOUT: %impl.elem0: %.885 = impl_witness_access constants.%I.impl_witness.02b, element0 [concrete = constants.%F.5fa954.2] +// CHECK:STDOUT: %impl.elem0: %.885 = impl_witness_access constants.%I.impl_witness.02b, element0 [concrete = constants.%C.as.I.impl.F.5fa954.2] // CHECK:STDOUT: %.loc7_16.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %empty_struct.loc7_16.1: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc7_17.1: %empty_struct_type = converted %.loc7_16.1, %empty_struct.loc7_16.1 [concrete = constants.%empty_struct] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @F.3(constants.%empty_tuple) [concrete = constants.%F.specific_fn.4832e8.1] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @C.as.I.impl.F.2(constants.%empty_tuple) [concrete = constants.%C.as.I.impl.F.specific_fn.4832e8.1] // CHECK:STDOUT: %empty_struct.loc7_16.2: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc7_16.2: %empty_struct_type = converted %.loc7_16.1, %empty_struct.loc7_16.2 [concrete = constants.%empty_struct] -// CHECK:STDOUT: %.loc7_17.2: %F.type.af4856.1 = specific_constant imports.%Main.F.5a8, @I.impl(constants.%empty_tuple) [concrete = constants.%F.5fa954.1] -// CHECK:STDOUT: %F.ref.loc7_17: %F.type.af4856.1 = name_ref F, %.loc7_17.2 [concrete = constants.%F.5fa954.1] -// CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref.loc7_17, @F.1(constants.%empty_tuple) [concrete = constants.%F.specific_fn.4832e8.2] +// CHECK:STDOUT: %.loc7_17.2: %C.as.I.impl.F.type.af4856.1 = specific_constant imports.%Main.F.5a8, @C.as.I.impl(constants.%empty_tuple) [concrete = constants.%C.as.I.impl.F.5fa954.1] +// CHECK:STDOUT: %F.ref.loc7_17: %C.as.I.impl.F.type.af4856.1 = name_ref F, %.loc7_17.2 [concrete = constants.%C.as.I.impl.F.5fa954.1] +// CHECK:STDOUT: %C.as.I.impl.F.specific_fn: = specific_function %F.ref.loc7_17, @C.as.I.impl.F.1(constants.%empty_tuple) [concrete = constants.%C.as.I.impl.F.specific_fn.4832e8.2] // CHECK:STDOUT: %.loc7_16.3: ref %C.607 = temporary_storage // CHECK:STDOUT: %.loc7_16.4: init %C.607 = class_init (), %.loc7_16.3 [concrete = constants.%C.val.12f] // CHECK:STDOUT: %.loc7_16.5: ref %C.607 = temporary %.loc7_16.3, %.loc7_16.4 // CHECK:STDOUT: %.loc7_16.6: ref %C.607 = converted %.loc7_16.2, %.loc7_16.5 // CHECK:STDOUT: %.loc7_16.7: %C.607 = bind_value %.loc7_16.6 -// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.specific_fn(%.loc7_16.7) -// CHECK:STDOUT: %Op.bound: = bound_method %.loc7_16.3, constants.%Op.ac0 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.ac0, @Op.1(constants.%C.607) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc7_16.3, %Op.specific_fn +// CHECK:STDOUT: %C.as.I.impl.F.call: init %empty_tuple.type = call %C.as.I.impl.F.specific_fn(%.loc7_16.7) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc7_16.3, constants.%T.as.Destroy.impl.Op.ac0 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.ac0, @T.as.Destroy.impl.Op(constants.%C.607) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %.loc7_16.3, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.2ce = addr_of %.loc7_16.3 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.2(imports.%Main.import_ref.5dd: %I.type) [from "a.carbon"] { +// CHECK:STDOUT: generic fn @I.F(imports.%Main.import_ref.5dd: %I.type) [from "a.carbon"] { // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.1(imports.%Main.import_ref.eb1c17.3: %empty_tuple.type) [from "b.carbon"] { +// CHECK:STDOUT: generic fn @C.as.I.impl.F.1(imports.%Main.import_ref.eb1c17.3: %empty_tuple.type) [from "b.carbon"] { // CHECK:STDOUT: %Y: %empty_tuple.type = bind_symbolic_name Y, 0 [symbolic = %Y (constants.%Y)] // CHECK:STDOUT: %C: type = class_type @C, @C(%Y) [symbolic = %C (constants.%C.13320f.2)] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [symbolic = %pattern_type (constants.%pattern_type.ccc)] @@ -539,20 +539,20 @@ fn G() { // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.3(imports.%Main.import_ref.eb1c17.4: %empty_tuple.type) [from "b.carbon"] { +// CHECK:STDOUT: generic fn @C.as.I.impl.F.2(imports.%Main.import_ref.eb1c17.4: %empty_tuple.type) [from "b.carbon"] { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Y: %empty_tuple.type = bind_symbolic_name Y, 0 [symbolic = %Y (constants.%Y)] -// CHECK:STDOUT: %F.type: type = fn_type @F.1, @I.impl(%Y) [symbolic = %F.type (constants.%F.type.0daaa1.1)] -// CHECK:STDOUT: %F: @F.3.%F.type (%F.type.0daaa1.1) = struct_value () [symbolic = %F (constants.%F.49c1ac.1)] -// CHECK:STDOUT: %F.specific_fn: = specific_function %F, @F.1(%Y) [symbolic = %F.specific_fn (constants.%F.specific_fn.8d9)] +// CHECK:STDOUT: %C.as.I.impl.F.type: type = fn_type @C.as.I.impl.F.1, @C.as.I.impl(%Y) [symbolic = %C.as.I.impl.F.type (constants.%C.as.I.impl.F.type.0daaa1.1)] +// CHECK:STDOUT: %C.as.I.impl.F: @C.as.I.impl.F.2.%C.as.I.impl.F.type (%C.as.I.impl.F.type.0daaa1.1) = struct_value () [symbolic = %C.as.I.impl.F (constants.%C.as.I.impl.F.49c1ac.1)] +// CHECK:STDOUT: %C.as.I.impl.F.specific_fn: = specific_function %C.as.I.impl.F, @C.as.I.impl.F.1(%Y) [symbolic = %C.as.I.impl.F.specific_fn (constants.%C.as.I.impl.F.specific_fn.8d9)] // CHECK:STDOUT: %C: type = class_type @C, @C(%Y) [symbolic = %C (constants.%C.13320f.2)] // CHECK:STDOUT: %require_complete.1: = require_complete_type %C [symbolic = %require_complete.1 (constants.%require_complete.a35)] -// CHECK:STDOUT: %C.val: @F.3.%C (%C.13320f.2) = struct_value () [symbolic = %C.val (constants.%C.val.56a)] +// CHECK:STDOUT: %C.val: @C.as.I.impl.F.2.%C (%C.13320f.2) = struct_value () [symbolic = %C.val (constants.%C.val.56a)] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %C, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness)] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %C, (%Destroy.lookup_impl_witness) [symbolic = %Destroy.facet (constants.%Destroy.facet.666)] -// CHECK:STDOUT: %.1: type = fn_type_with_self_type constants.%Op.type.989, %Destroy.facet [symbolic = %.1 (constants.%.5fd)] -// CHECK:STDOUT: %impl.elem0: @F.3.%.1 (%.5fd) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0 (constants.%impl.elem0)] -// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Op.2(%Destroy.facet) [symbolic = %specific_impl_fn (constants.%specific_impl_fn)] +// CHECK:STDOUT: %.1: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet [symbolic = %.1 (constants.%.5fd)] +// CHECK:STDOUT: %impl.elem0: @C.as.I.impl.F.2.%.1 (%.5fd) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0 (constants.%impl.elem0)] +// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Destroy.Op(%Destroy.facet) [symbolic = %specific_impl_fn (constants.%specific_impl_fn)] // CHECK:STDOUT: %ptr: type = ptr_type %C [symbolic = %ptr (constants.%ptr.40d)] // CHECK:STDOUT: %require_complete.2: = require_complete_type %ptr [symbolic = %require_complete.2 (constants.%require_complete.0b0)] // CHECK:STDOUT: @@ -569,7 +569,7 @@ fn G() { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.2(constants.%Self.826) {} +// CHECK:STDOUT: specific @I.F(constants.%Self.826) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @C(constants.%Y) { // CHECK:STDOUT: %X => constants.%Y @@ -577,19 +577,19 @@ fn G() { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.impl(constants.%Y) { +// CHECK:STDOUT: specific @C.as.I.impl(constants.%Y) { // CHECK:STDOUT: %Y => constants.%Y // CHECK:STDOUT: %C => constants.%C.13320f.2 // CHECK:STDOUT: %I.impl_witness => constants.%I.impl_witness.7d9 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type.1 => constants.%F.type.0daaa1.1 -// CHECK:STDOUT: %F.1 => constants.%F.49c1ac.1 -// CHECK:STDOUT: %F.type.2 => constants.%F.type.0daaa1.2 -// CHECK:STDOUT: %F.2 => constants.%F.49c1ac.2 +// CHECK:STDOUT: %C.as.I.impl.F.type.1 => constants.%C.as.I.impl.F.type.0daaa1.1 +// CHECK:STDOUT: %C.as.I.impl.F.1 => constants.%C.as.I.impl.F.49c1ac.1 +// CHECK:STDOUT: %C.as.I.impl.F.type.2 => constants.%C.as.I.impl.F.type.0daaa1.2 +// CHECK:STDOUT: %C.as.I.impl.F.2 => constants.%C.as.I.impl.F.49c1ac.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.1(constants.%Y) { +// CHECK:STDOUT: specific @C.as.I.impl.F.1(constants.%Y) { // CHECK:STDOUT: %Y => constants.%Y // CHECK:STDOUT: %C => constants.%C.13320f.2 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.ccc @@ -598,39 +598,39 @@ fn G() { // CHECK:STDOUT: %require_complete => constants.%require_complete.a35 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.3(constants.%Y) {} +// CHECK:STDOUT: specific @C.as.I.impl.F.2(constants.%Y) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.impl(constants.%empty_tuple) { +// CHECK:STDOUT: specific @C.as.I.impl(constants.%empty_tuple) { // CHECK:STDOUT: %Y => constants.%empty_tuple // CHECK:STDOUT: %C => constants.%C.607 // CHECK:STDOUT: %I.impl_witness => constants.%I.impl_witness.02b // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type.1 => constants.%F.type.af4856.1 -// CHECK:STDOUT: %F.1 => constants.%F.5fa954.1 -// CHECK:STDOUT: %F.type.2 => constants.%F.type.af4856.2 -// CHECK:STDOUT: %F.2 => constants.%F.5fa954.2 +// CHECK:STDOUT: %C.as.I.impl.F.type.1 => constants.%C.as.I.impl.F.type.af4856.1 +// CHECK:STDOUT: %C.as.I.impl.F.1 => constants.%C.as.I.impl.F.5fa954.1 +// CHECK:STDOUT: %C.as.I.impl.F.type.2 => constants.%C.as.I.impl.F.type.af4856.2 +// CHECK:STDOUT: %C.as.I.impl.F.2 => constants.%C.as.I.impl.F.5fa954.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.3(constants.%empty_tuple) { +// CHECK:STDOUT: specific @C.as.I.impl.F.2(constants.%empty_tuple) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Y => constants.%empty_tuple -// CHECK:STDOUT: %F.type => constants.%F.type.af4856.1 -// CHECK:STDOUT: %F => constants.%F.5fa954.1 -// CHECK:STDOUT: %F.specific_fn => constants.%F.specific_fn.4832e8.2 +// CHECK:STDOUT: %C.as.I.impl.F.type => constants.%C.as.I.impl.F.type.af4856.1 +// CHECK:STDOUT: %C.as.I.impl.F => constants.%C.as.I.impl.F.5fa954.1 +// CHECK:STDOUT: %C.as.I.impl.F.specific_fn => constants.%C.as.I.impl.F.specific_fn.4832e8.2 // CHECK:STDOUT: %C => constants.%C.607 // CHECK:STDOUT: %require_complete.1 => constants.%complete_type.357 // CHECK:STDOUT: %C.val => constants.%C.val.12f // CHECK:STDOUT: %Destroy.lookup_impl_witness => constants.%Destroy.impl_witness.ce0 // CHECK:STDOUT: %Destroy.facet => constants.%Destroy.facet.c44 // CHECK:STDOUT: %.1 => constants.%.69e -// CHECK:STDOUT: %impl.elem0 => constants.%Op.ac0 -// CHECK:STDOUT: %specific_impl_fn => constants.%Op.specific_fn +// CHECK:STDOUT: %impl.elem0 => constants.%T.as.Destroy.impl.Op.ac0 +// CHECK:STDOUT: %specific_impl_fn => constants.%T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %ptr => constants.%ptr.2ce // CHECK:STDOUT: %require_complete.2 => constants.%complete_type.e2c // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.1(constants.%empty_tuple) { +// CHECK:STDOUT: specific @C.as.I.impl.F.1(constants.%empty_tuple) { // CHECK:STDOUT: %Y => constants.%empty_tuple // CHECK:STDOUT: %C => constants.%C.607 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.186 diff --git a/toolchain/check/testdata/impl/import_use_generic.carbon b/toolchain/check/testdata/impl/import_use_generic.carbon index 4cc519777e04..017069d308e0 100644 --- a/toolchain/check/testdata/impl/import_use_generic.carbon +++ b/toolchain/check/testdata/impl/import_use_generic.carbon @@ -65,13 +65,13 @@ fn H() -> C({}).(I.F)() {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.cf0: type = fn_type @F.loc7 [concrete] -// CHECK:STDOUT: %F.bc6: %F.type.cf0 = struct_value () [concrete] +// CHECK:STDOUT: %I.F.type: type = fn_type @I.F [concrete] +// CHECK:STDOUT: %I.F: %I.F.type = struct_value () [concrete] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] -// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%F.decl [concrete] -// CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table, @I.impl(%T) [symbolic] -// CHECK:STDOUT: %F.type.40c: type = fn_type @F.loc11, @I.impl(%T) [symbolic] -// CHECK:STDOUT: %F.071: %F.type.40c = struct_value () [symbolic] +// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%I.F.decl [concrete] +// CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table, @C.as.I.impl(%T) [symbolic] +// CHECK:STDOUT: %C.as.I.impl.F.type: type = fn_type @C.as.I.impl.F, @C.as.I.impl(%T) [symbolic] +// CHECK:STDOUT: %C.as.I.impl.F: %C.as.I.impl.F.type = struct_value () [symbolic] // CHECK:STDOUT: %I.facet: %I.type = facet_value %C, (%I.impl_witness) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -86,44 +86,44 @@ fn H() -> C({}).(I.F)() {} // CHECK:STDOUT: %T.loc4_9.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_9.1 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} -// CHECK:STDOUT: impl_decl @I.impl [concrete] { +// CHECK:STDOUT: impl_decl @C.as.I.impl [concrete] { // CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] -// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc10_14.1 [symbolic = %T.loc10_14.2 (constants.%T)] -// CHECK:STDOUT: %C.loc10_27.1: type = class_type @C, @C(constants.%T) [symbolic = %C.loc10_27.2 (constants.%C)] +// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc10_14.2 [symbolic = %T.loc10_14.1 (constants.%T)] +// CHECK:STDOUT: %C.loc10_27.2: type = class_type @C, @C(constants.%T) [symbolic = %C.loc10_27.1 (constants.%C)] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] -// CHECK:STDOUT: %T.loc10_14.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc10_14.2 (constants.%T)] +// CHECK:STDOUT: %T.loc10_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc10_14.1 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (@I.impl.%F.decl), @I.impl [concrete] -// CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table, @I.impl(constants.%T) [symbolic = @I.impl.%I.impl_witness (constants.%I.impl_witness)] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (@C.as.I.impl.%C.as.I.impl.F.decl), @C.as.I.impl [concrete] +// CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table, @C.as.I.impl(constants.%T) [symbolic = @C.as.I.impl.%I.impl_witness (constants.%I.impl_witness)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %F.decl: %F.type.cf0 = fn_decl @F.loc7 [concrete = constants.%F.bc6] {} {} -// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %I.F.decl: %I.F.type = fn_decl @I.F [concrete = constants.%I.F] {} {} +// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %I.F.decl [concrete = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F = %assoc0 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%I.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @I.impl(%T.loc10_14.1: type) { -// CHECK:STDOUT: %T.loc10_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc10_14.2 (constants.%T)] -// CHECK:STDOUT: %C.loc10_27.2: type = class_type @C, @C(%T.loc10_14.2) [symbolic = %C.loc10_27.2 (constants.%C)] -// CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table, @I.impl(%T.loc10_14.2) [symbolic = %I.impl_witness (constants.%I.impl_witness)] +// CHECK:STDOUT: generic impl @C.as.I.impl(%T.loc10_14.2: type) { +// CHECK:STDOUT: %T.loc10_14.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc10_14.1 (constants.%T)] +// CHECK:STDOUT: %C.loc10_27.1: type = class_type @C, @C(%T.loc10_14.1) [symbolic = %C.loc10_27.1 (constants.%C)] +// CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table, @C.as.I.impl(%T.loc10_14.1) [symbolic = %I.impl_witness (constants.%I.impl_witness)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type: type = fn_type @F.loc11, @I.impl(%T.loc10_14.2) [symbolic = %F.type (constants.%F.type.40c)] -// CHECK:STDOUT: %F: @I.impl.%F.type (%F.type.40c) = struct_value () [symbolic = %F (constants.%F.071)] +// CHECK:STDOUT: %C.as.I.impl.F.type: type = fn_type @C.as.I.impl.F, @C.as.I.impl(%T.loc10_14.1) [symbolic = %C.as.I.impl.F.type (constants.%C.as.I.impl.F.type)] +// CHECK:STDOUT: %C.as.I.impl.F: @C.as.I.impl.%C.as.I.impl.F.type (%C.as.I.impl.F.type) = struct_value () [symbolic = %C.as.I.impl.F (constants.%C.as.I.impl.F)] // CHECK:STDOUT: -// CHECK:STDOUT: impl: %C.loc10_27.1 as %I.ref { -// CHECK:STDOUT: %F.decl: @I.impl.%F.type (%F.type.40c) = fn_decl @F.loc11 [symbolic = @I.impl.%F (constants.%F.071)] {} {} +// CHECK:STDOUT: impl: %C.loc10_27.2 as %I.ref { +// CHECK:STDOUT: %C.as.I.impl.F.decl: @C.as.I.impl.%C.as.I.impl.F.type (%C.as.I.impl.F.type) = fn_decl @C.as.I.impl.F [symbolic = @C.as.I.impl.%C.as.I.impl.F (constants.%C.as.I.impl.F)] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %C.as.I.impl.F.decl // CHECK:STDOUT: witness = file.%I.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -143,11 +143,11 @@ fn H() -> C({}).(I.F)() {} // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc7(@I.%Self: %I.type) { +// CHECK:STDOUT: generic fn @I.F(@I.%Self: %I.type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc11(@I.impl.%T.loc10_14.1: type) { +// CHECK:STDOUT: generic fn @C.as.I.impl.F(@C.as.I.impl.%T.loc10_14.2: type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: fn() { @@ -160,21 +160,21 @@ fn H() -> C({}).(I.F)() {} // CHECK:STDOUT: %T.loc4_9.1 => constants.%T // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc7(constants.%Self) {} +// CHECK:STDOUT: specific @I.F(constants.%Self) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.impl(constants.%T) { -// CHECK:STDOUT: %T.loc10_14.2 => constants.%T -// CHECK:STDOUT: %C.loc10_27.2 => constants.%C +// CHECK:STDOUT: specific @C.as.I.impl(constants.%T) { +// CHECK:STDOUT: %T.loc10_14.1 => constants.%T +// CHECK:STDOUT: %C.loc10_27.1 => constants.%C // CHECK:STDOUT: %I.impl_witness => constants.%I.impl_witness // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.40c -// CHECK:STDOUT: %F => constants.%F.071 +// CHECK:STDOUT: %C.as.I.impl.F.type => constants.%C.as.I.impl.F.type +// CHECK:STDOUT: %C.as.I.impl.F => constants.%C.as.I.impl.F // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc11(constants.%T) {} +// CHECK:STDOUT: specific @C.as.I.impl.F(constants.%T) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc7(constants.%I.facet) {} +// CHECK:STDOUT: specific @I.F(constants.%I.facet) {} // CHECK:STDOUT: // CHECK:STDOUT: --- fail_use_in_fn_decl.carbon // CHECK:STDOUT: @@ -193,19 +193,19 @@ fn H() -> C({}).(I.F)() {} // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] // CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, imports.%Main.import_ref.e03 [concrete] -// CHECK:STDOUT: %F.type.cf0: type = fn_type @F.1 [concrete] -// CHECK:STDOUT: %F.bc6: %F.type.cf0 = struct_value () [concrete] +// CHECK:STDOUT: %I.F.type: type = fn_type @I.F [concrete] +// CHECK:STDOUT: %I.F: %I.F.type = struct_value () [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] -// CHECK:STDOUT: %I.impl_witness.443: = impl_witness imports.%I.impl_witness_table, @I.impl(%T) [symbolic] -// CHECK:STDOUT: %F.type.40c: type = fn_type @F.2, @I.impl(%T) [symbolic] -// CHECK:STDOUT: %F.071: %F.type.40c = struct_value () [symbolic] -// CHECK:STDOUT: %I.impl_witness.6bb: = impl_witness imports.%I.impl_witness_table, @I.impl(%empty_struct_type) [concrete] -// CHECK:STDOUT: %F.type.4a4: type = fn_type @F.2, @I.impl(%empty_struct_type) [concrete] -// CHECK:STDOUT: %F.9e6: %F.type.4a4 = struct_value () [concrete] +// CHECK:STDOUT: %I.impl_witness.443: = impl_witness imports.%I.impl_witness_table, @C.as.I.impl(%T) [symbolic] +// CHECK:STDOUT: %C.as.I.impl.F.type.40c: type = fn_type @C.as.I.impl.F, @C.as.I.impl(%T) [symbolic] +// CHECK:STDOUT: %C.as.I.impl.F.071: %C.as.I.impl.F.type.40c = struct_value () [symbolic] +// CHECK:STDOUT: %I.impl_witness.6bb: = impl_witness imports.%I.impl_witness_table, @C.as.I.impl(%empty_struct_type) [concrete] +// CHECK:STDOUT: %C.as.I.impl.F.type.4a4: type = fn_type @C.as.I.impl.F, @C.as.I.impl(%empty_struct_type) [concrete] +// CHECK:STDOUT: %C.as.I.impl.F.9e6: %C.as.I.impl.F.type.4a4 = struct_value () [concrete] // CHECK:STDOUT: %I.facet: %I.type = facet_value %C.7a7, (%I.impl_witness.6bb) [concrete] -// CHECK:STDOUT: %.81d: type = fn_type_with_self_type %F.type.cf0, %I.facet [concrete] -// CHECK:STDOUT: %F.specific_fn: = specific_function %F.9e6, @F.2(%empty_struct_type) [concrete] +// CHECK:STDOUT: %.81d: type = fn_type_with_self_type %I.F.type, %I.facet [concrete] +// CHECK:STDOUT: %C.as.I.impl.F.specific_fn: = specific_function %C.as.I.impl.F.9e6, @C.as.I.impl.F(%empty_struct_type) [concrete] // CHECK:STDOUT: %H.type: type = fn_type @H [concrete] // CHECK:STDOUT: %H: %H.type = struct_value () [concrete] // CHECK:STDOUT: } @@ -219,15 +219,15 @@ fn H() -> C({}).(I.F)() {} // CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//import_generic, inst31 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.c44: %I.assoc_type = import_ref Main//import_generic, loc7_9, loaded [concrete = constants.%assoc0] // CHECK:STDOUT: %Main.F = import_ref Main//import_generic, F, unloaded -// CHECK:STDOUT: %Main.import_ref.e03: %F.type.cf0 = import_ref Main//import_generic, loc7_9, loaded [concrete = constants.%F.bc6] +// CHECK:STDOUT: %Main.import_ref.e03: %I.F.type = import_ref Main//import_generic, loc7_9, loaded [concrete = constants.%I.F] // CHECK:STDOUT: %Main.import_ref.5dd: %I.type = import_ref Main//import_generic, inst31 [no loc], loaded [symbolic = constants.%Self] -// CHECK:STDOUT: %Main.import_ref.6ac: = import_ref Main//import_generic, loc10_34, loaded [symbolic = @I.impl.%I.impl_witness (constants.%I.impl_witness.443)] -// CHECK:STDOUT: %Main.import_ref.5ab3ec.2: type = import_ref Main//import_generic, loc10_14, loaded [symbolic = @I.impl.%T (constants.%T)] -// CHECK:STDOUT: %Main.import_ref.499: type = import_ref Main//import_generic, loc10_27, loaded [symbolic = @I.impl.%C (constants.%C.f2e)] +// CHECK:STDOUT: %Main.import_ref.6ac: = import_ref Main//import_generic, loc10_34, loaded [symbolic = @C.as.I.impl.%I.impl_witness (constants.%I.impl_witness.443)] +// CHECK:STDOUT: %Main.import_ref.5ab3ec.2: type = import_ref Main//import_generic, loc10_14, loaded [symbolic = @C.as.I.impl.%T (constants.%T)] +// CHECK:STDOUT: %Main.import_ref.499: type = import_ref Main//import_generic, loc10_27, loaded [symbolic = @C.as.I.impl.%C (constants.%C.f2e)] // CHECK:STDOUT: %Main.import_ref.301: type = import_ref Main//import_generic, loc10_32, loaded [concrete = constants.%I.type] -// CHECK:STDOUT: %Main.import_ref.e2c: @I.impl.%F.type (%F.type.40c) = import_ref Main//import_generic, loc11_10, loaded [symbolic = @I.impl.%F (constants.%F.071)] -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%Main.import_ref.e2c), @I.impl [concrete] -// CHECK:STDOUT: %Main.import_ref.5ab3ec.3: type = import_ref Main//import_generic, loc10_14, loaded [symbolic = @I.impl.%T (constants.%T)] +// CHECK:STDOUT: %Main.import_ref.e2c: @C.as.I.impl.%C.as.I.impl.F.type (%C.as.I.impl.F.type.40c) = import_ref Main//import_generic, loc11_10, loaded [symbolic = @C.as.I.impl.%C.as.I.impl.F (constants.%C.as.I.impl.F.071)] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%Main.import_ref.e2c), @C.as.I.impl [concrete] +// CHECK:STDOUT: %Main.import_ref.5ab3ec.3: type = import_ref Main//import_generic, loc10_14, loaded [symbolic = @C.as.I.impl.%T (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -274,12 +274,12 @@ fn H() -> C({}).(I.F)() {} // CHECK:STDOUT: %F.ref: %I.assoc_type = name_ref F, imports.%Main.import_ref.c44 [concrete = constants.%assoc0] // CHECK:STDOUT: %I.facet: %I.type = facet_value constants.%C.7a7, (constants.%I.impl_witness.6bb) [concrete = constants.%I.facet] // CHECK:STDOUT: %.loc25_16: %I.type = converted %C, %I.facet [concrete = constants.%I.facet] -// CHECK:STDOUT: %impl.elem0: %.81d = impl_witness_access constants.%I.impl_witness.6bb, element0 [concrete = constants.%F.9e6] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @F.2(constants.%empty_struct_type) [concrete = constants.%F.specific_fn] -// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %specific_fn() +// CHECK:STDOUT: %impl.elem0: %.81d = impl_witness_access constants.%I.impl_witness.6bb, element0 [concrete = constants.%C.as.I.impl.F.9e6] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @C.as.I.impl.F(constants.%empty_struct_type) [concrete = constants.%C.as.I.impl.F.specific_fn] +// CHECK:STDOUT: %C.as.I.impl.F.call: init %empty_tuple.type = call %specific_fn() // CHECK:STDOUT: %.loc25_23.1: ref %empty_tuple.type = temporary_storage -// CHECK:STDOUT: %.loc25_23.2: ref %empty_tuple.type = temporary %.loc25_23.1, %F.call -// CHECK:STDOUT: %.loc25_23.3: type = converted %F.call, [concrete = ] +// CHECK:STDOUT: %.loc25_23.2: ref %empty_tuple.type = temporary %.loc25_23.1, %C.as.I.impl.F.call +// CHECK:STDOUT: %.loc25_23.3: type = converted %C.as.I.impl.F.call, [concrete = ] // CHECK:STDOUT: %return.param: ref = out_param call_param0 // CHECK:STDOUT: %return: ref = return_slot %return.param // CHECK:STDOUT: } @@ -292,14 +292,14 @@ fn H() -> C({}).(I.F)() {} // CHECK:STDOUT: witness = (imports.%Main.F) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @I.impl(imports.%Main.import_ref.5ab3ec.2: type) [from "import_generic.carbon"] { +// CHECK:STDOUT: generic impl @C.as.I.impl(imports.%Main.import_ref.5ab3ec.2: type) [from "import_generic.carbon"] { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %C: type = class_type @C, @C(%T) [symbolic = %C (constants.%C.f2e)] -// CHECK:STDOUT: %I.impl_witness: = impl_witness imports.%I.impl_witness_table, @I.impl(%T) [symbolic = %I.impl_witness (constants.%I.impl_witness.443)] +// CHECK:STDOUT: %I.impl_witness: = impl_witness imports.%I.impl_witness_table, @C.as.I.impl(%T) [symbolic = %I.impl_witness (constants.%I.impl_witness.443)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type: type = fn_type @F.2, @I.impl(%T) [symbolic = %F.type (constants.%F.type.40c)] -// CHECK:STDOUT: %F: @I.impl.%F.type (%F.type.40c) = struct_value () [symbolic = %F (constants.%F.071)] +// CHECK:STDOUT: %C.as.I.impl.F.type: type = fn_type @C.as.I.impl.F, @C.as.I.impl(%T) [symbolic = %C.as.I.impl.F.type (constants.%C.as.I.impl.F.type.40c)] +// CHECK:STDOUT: %C.as.I.impl.F: @C.as.I.impl.%C.as.I.impl.F.type (%C.as.I.impl.F.type.40c) = struct_value () [symbolic = %C.as.I.impl.F (constants.%C.as.I.impl.F.071)] // CHECK:STDOUT: // CHECK:STDOUT: impl: imports.%Main.import_ref.499 as imports.%Main.import_ref.301 { // CHECK:STDOUT: !members: @@ -320,7 +320,7 @@ fn H() -> C({}).(I.F)() {} // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.1(imports.%Main.import_ref.5dd: %I.type) [from "import_generic.carbon"] { +// CHECK:STDOUT: generic fn @I.F(imports.%Main.import_ref.5dd: %I.type) [from "import_generic.carbon"] { // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: @@ -328,7 +328,7 @@ fn H() -> C({}).(I.F)() {} // CHECK:STDOUT: !entry: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.2(imports.%Main.import_ref.5ab3ec.3: type) [from "import_generic.carbon"] { +// CHECK:STDOUT: generic fn @C.as.I.impl.F(imports.%Main.import_ref.5ab3ec.3: type) [from "import_generic.carbon"] { // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: fn; @@ -357,31 +357,31 @@ fn H() -> C({}).(I.F)() {} // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.1(constants.%Self) {} +// CHECK:STDOUT: specific @I.F(constants.%Self) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.impl(constants.%T) { +// CHECK:STDOUT: specific @C.as.I.impl(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %C => constants.%C.f2e // CHECK:STDOUT: %I.impl_witness => constants.%I.impl_witness.443 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.40c -// CHECK:STDOUT: %F => constants.%F.071 +// CHECK:STDOUT: %C.as.I.impl.F.type => constants.%C.as.I.impl.F.type.40c +// CHECK:STDOUT: %C.as.I.impl.F => constants.%C.as.I.impl.F.071 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.2(constants.%T) {} +// CHECK:STDOUT: specific @C.as.I.impl.F(constants.%T) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.impl(constants.%empty_struct_type) { +// CHECK:STDOUT: specific @C.as.I.impl(constants.%empty_struct_type) { // CHECK:STDOUT: %T => constants.%empty_struct_type // CHECK:STDOUT: %C => constants.%C.7a7 // CHECK:STDOUT: %I.impl_witness => constants.%I.impl_witness.6bb // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.4a4 -// CHECK:STDOUT: %F => constants.%F.9e6 +// CHECK:STDOUT: %C.as.I.impl.F.type => constants.%C.as.I.impl.F.type.4a4 +// CHECK:STDOUT: %C.as.I.impl.F => constants.%C.as.I.impl.F.9e6 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.2(constants.%empty_struct_type) { +// CHECK:STDOUT: specific @C.as.I.impl.F(constants.%empty_struct_type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/interface_args.carbon b/toolchain/check/testdata/impl/interface_args.carbon index 54293b1c5038..0254daa04cbf 100644 --- a/toolchain/check/testdata/impl/interface_args.carbon +++ b/toolchain/check/testdata/impl/interface_args.carbon @@ -119,10 +119,10 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic] // CHECK:STDOUT: %pattern_type.a93: type = pattern_type %Self.as_type [symbolic] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %Dest [symbolic] -// CHECK:STDOUT: %Convert.type: type = fn_type @Convert, @ImplicitAs(%Dest) [symbolic] -// CHECK:STDOUT: %Convert: %Convert.type = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.Convert.type: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%Dest) [symbolic] +// CHECK:STDOUT: %ImplicitAs.Convert: %ImplicitAs.Convert.type = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.assoc_type: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%Dest) [symbolic] -// CHECK:STDOUT: %assoc0: %ImplicitAs.assoc_type = assoc_entity element0, @ImplicitAs.%Convert.decl [symbolic] +// CHECK:STDOUT: %assoc0: %ImplicitAs.assoc_type = assoc_entity element0, @ImplicitAs.%ImplicitAs.Convert.decl [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -142,61 +142,61 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%Dest.loc3_22.1)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.07f)] // CHECK:STDOUT: %Self.2: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.07f) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] -// CHECK:STDOUT: %Convert.type: type = fn_type @Convert, @ImplicitAs(%Dest.loc3_22.1) [symbolic = %Convert.type (constants.%Convert.type)] -// CHECK:STDOUT: %Convert: @ImplicitAs.%Convert.type (%Convert.type) = struct_value () [symbolic = %Convert (constants.%Convert)] +// CHECK:STDOUT: %ImplicitAs.Convert.type: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%Dest.loc3_22.1) [symbolic = %ImplicitAs.Convert.type (constants.%ImplicitAs.Convert.type)] +// CHECK:STDOUT: %ImplicitAs.Convert: @ImplicitAs.%ImplicitAs.Convert.type (%ImplicitAs.Convert.type) = struct_value () [symbolic = %ImplicitAs.Convert (constants.%ImplicitAs.Convert)] // CHECK:STDOUT: %ImplicitAs.assoc_type: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%Dest.loc3_22.1) [symbolic = %ImplicitAs.assoc_type (constants.%ImplicitAs.assoc_type)] -// CHECK:STDOUT: %assoc0.loc4_35.2: @ImplicitAs.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type) = assoc_entity element0, %Convert.decl [symbolic = %assoc0.loc4_35.2 (constants.%assoc0)] +// CHECK:STDOUT: %assoc0.loc4_35.2: @ImplicitAs.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type) = assoc_entity element0, %ImplicitAs.Convert.decl [symbolic = %assoc0.loc4_35.2 (constants.%assoc0)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: %Self.1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.07f) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] -// CHECK:STDOUT: %Convert.decl: @ImplicitAs.%Convert.type (%Convert.type) = fn_decl @Convert [symbolic = @ImplicitAs.%Convert (constants.%Convert)] { -// CHECK:STDOUT: %self.patt: @Convert.%pattern_type.loc4_14 (%pattern_type.a93) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @Convert.%pattern_type.loc4_14 (%pattern_type.a93) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: @Convert.%pattern_type.loc4_28 (%pattern_type.7dc) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @Convert.%pattern_type.loc4_28 (%pattern_type.7dc) = out_param_pattern %return.patt, call_param1 [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.decl: @ImplicitAs.%ImplicitAs.Convert.type (%ImplicitAs.Convert.type) = fn_decl @ImplicitAs.Convert [symbolic = @ImplicitAs.%ImplicitAs.Convert (constants.%ImplicitAs.Convert)] { +// CHECK:STDOUT: %self.patt: @ImplicitAs.Convert.%pattern_type.loc4_14 (%pattern_type.a93) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @ImplicitAs.Convert.%pattern_type.loc4_14 (%pattern_type.a93) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %return.patt: @ImplicitAs.Convert.%pattern_type.loc4_28 (%pattern_type.7dc) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @ImplicitAs.Convert.%pattern_type.loc4_28 (%pattern_type.7dc) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Dest.ref: type = name_ref Dest, @ImplicitAs.%Dest.loc3_22.2 [symbolic = %Dest (constants.%Dest)] -// CHECK:STDOUT: %self.param: @Convert.%Self.as_type.loc4_20.2 (%Self.as_type) = value_param call_param0 -// CHECK:STDOUT: %.loc4_20.1: type = splice_block %.loc4_20.3 [symbolic = %Self.as_type.loc4_20.2 (constants.%Self.as_type)] { -// CHECK:STDOUT: %.loc4_20.2: @Convert.%ImplicitAs.type (%ImplicitAs.type.07f) = specific_constant @ImplicitAs.%Self.1, @ImplicitAs(constants.%Dest) [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.ref: @Convert.%ImplicitAs.type (%ImplicitAs.type.07f) = name_ref Self, %.loc4_20.2 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc4_20.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc4_20.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc4_20.3: type = converted %Self.ref, %Self.as_type.loc4_20.1 [symbolic = %Self.as_type.loc4_20.2 (constants.%Self.as_type)] +// CHECK:STDOUT: %self.param: @ImplicitAs.Convert.%Self.as_type.loc4_20.1 (%Self.as_type) = value_param call_param0 +// CHECK:STDOUT: %.loc4_20.1: type = splice_block %.loc4_20.3 [symbolic = %Self.as_type.loc4_20.1 (constants.%Self.as_type)] { +// CHECK:STDOUT: %.loc4_20.2: @ImplicitAs.Convert.%ImplicitAs.type (%ImplicitAs.type.07f) = specific_constant @ImplicitAs.%Self.1, @ImplicitAs(constants.%Dest) [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %Self.ref: @ImplicitAs.Convert.%ImplicitAs.type (%ImplicitAs.type.07f) = name_ref Self, %.loc4_20.2 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %Self.as_type.loc4_20.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc4_20.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc4_20.3: type = converted %Self.ref, %Self.as_type.loc4_20.2 [symbolic = %Self.as_type.loc4_20.1 (constants.%Self.as_type)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @Convert.%Self.as_type.loc4_20.2 (%Self.as_type) = bind_name self, %self.param -// CHECK:STDOUT: %return.param: ref @Convert.%Dest (%Dest) = out_param call_param1 -// CHECK:STDOUT: %return: ref @Convert.%Dest (%Dest) = return_slot %return.param +// CHECK:STDOUT: %self: @ImplicitAs.Convert.%Self.as_type.loc4_20.1 (%Self.as_type) = bind_name self, %self.param +// CHECK:STDOUT: %return.param: ref @ImplicitAs.Convert.%Dest (%Dest) = out_param call_param1 +// CHECK:STDOUT: %return: ref @ImplicitAs.Convert.%Dest (%Dest) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0.loc4_35.1: @ImplicitAs.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type) = assoc_entity element0, %Convert.decl [symbolic = %assoc0.loc4_35.2 (constants.%assoc0)] +// CHECK:STDOUT: %assoc0.loc4_35.1: @ImplicitAs.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type) = assoc_entity element0, %ImplicitAs.Convert.decl [symbolic = %assoc0.loc4_35.2 (constants.%assoc0)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 // CHECK:STDOUT: .Dest = // CHECK:STDOUT: .Convert = %assoc0.loc4_35.1 -// CHECK:STDOUT: witness = (%Convert.decl) +// CHECK:STDOUT: witness = (%ImplicitAs.Convert.decl) // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Convert(@ImplicitAs.%Dest.loc3_22.2: type, @ImplicitAs.%Self.1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.07f)) { +// CHECK:STDOUT: generic fn @ImplicitAs.Convert(@ImplicitAs.%Dest.loc3_22.2: type, @ImplicitAs.%Self.1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.07f)) { // CHECK:STDOUT: %Dest: type = bind_symbolic_name Dest, 0 [symbolic = %Dest (constants.%Dest)] // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%Dest)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.07f)] -// CHECK:STDOUT: %Self: @Convert.%ImplicitAs.type (%ImplicitAs.type.07f) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc4_20.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc4_20.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %pattern_type.loc4_14: type = pattern_type %Self.as_type.loc4_20.2 [symbolic = %pattern_type.loc4_14 (constants.%pattern_type.a93)] +// CHECK:STDOUT: %Self: @ImplicitAs.Convert.%ImplicitAs.type (%ImplicitAs.type.07f) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %Self.as_type.loc4_20.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc4_20.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %pattern_type.loc4_14: type = pattern_type %Self.as_type.loc4_20.1 [symbolic = %pattern_type.loc4_14 (constants.%pattern_type.a93)] // CHECK:STDOUT: %pattern_type.loc4_28: type = pattern_type %Dest [symbolic = %pattern_type.loc4_28 (constants.%pattern_type.7dc)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @Convert.%Self.as_type.loc4_20.2 (%Self.as_type)) -> @Convert.%Dest (%Dest); +// CHECK:STDOUT: fn(%self.param: @ImplicitAs.Convert.%Self.as_type.loc4_20.1 (%Self.as_type)) -> @ImplicitAs.Convert.%Dest (%Dest); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @ImplicitAs(constants.%Dest) { // CHECK:STDOUT: %Dest.loc3_22.1 => constants.%Dest // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Convert(constants.%Dest, constants.%Self) { +// CHECK:STDOUT: specific @ImplicitAs.Convert(constants.%Dest, constants.%Self) { // CHECK:STDOUT: %Dest => constants.%Dest // CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.07f // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %Self.as_type.loc4_20.2 => constants.%Self.as_type +// CHECK:STDOUT: %Self.as_type.loc4_20.1 => constants.%Self.as_type // CHECK:STDOUT: %pattern_type.loc4_14 => constants.%pattern_type.a93 // CHECK:STDOUT: %pattern_type.loc4_28 => constants.%pattern_type.7dc // CHECK:STDOUT: } @@ -213,10 +213,10 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %Self.e98: %Action.type.cca = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self.e98 [symbolic] // CHECK:STDOUT: %pattern_type.8db: type = pattern_type %Self.as_type [symbolic] -// CHECK:STDOUT: %Op.type.036: type = fn_type @Op.loc5, @Action(%T) [symbolic] -// CHECK:STDOUT: %Op.6ed: %Op.type.036 = struct_value () [symbolic] +// CHECK:STDOUT: %Action.Op.type.036: type = fn_type @Action.Op, @Action(%T) [symbolic] +// CHECK:STDOUT: %Action.Op.6ed: %Action.Op.type.036 = struct_value () [symbolic] // CHECK:STDOUT: %Action.assoc_type.32e: type = assoc_entity_type @Action, @Action(%T) [symbolic] -// CHECK:STDOUT: %assoc0.268: %Action.assoc_type.32e = assoc_entity element0, @Action.%Op.decl [symbolic] +// CHECK:STDOUT: %assoc0.268: %Action.assoc_type.32e = assoc_entity element0, @Action.%Action.Op.decl [symbolic] // CHECK:STDOUT: %A: type = class_type @A [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] @@ -224,18 +224,18 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %Action.type.cb0: type = facet_type <@Action, @Action(%B)> [concrete] // CHECK:STDOUT: %Self.0d1: %Action.type.cb0 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %Op.type.54d: type = fn_type @Op.loc5, @Action(%B) [concrete] -// CHECK:STDOUT: %Op.dba: %Op.type.54d = struct_value () [concrete] +// CHECK:STDOUT: %Action.Op.type.54d: type = fn_type @Action.Op, @Action(%B) [concrete] +// CHECK:STDOUT: %Action.Op.dba: %Action.Op.type.54d = struct_value () [concrete] // CHECK:STDOUT: %Action.assoc_type.4ee: type = assoc_entity_type @Action, @Action(%B) [concrete] -// CHECK:STDOUT: %assoc0.f3b: %Action.assoc_type.4ee = assoc_entity element0, @Action.%Op.decl [concrete] +// CHECK:STDOUT: %assoc0.f3b: %Action.assoc_type.4ee = assoc_entity element0, @Action.%Action.Op.decl [concrete] // CHECK:STDOUT: %Action.impl_witness: = impl_witness file.%Action.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.c10: type = pattern_type %A [concrete] -// CHECK:STDOUT: %Op.type.4b4: type = fn_type @Op.loc13 [concrete] -// CHECK:STDOUT: %Op.40d: %Op.type.4b4 = struct_value () [concrete] +// CHECK:STDOUT: %A.as.Action.impl.Op.type: type = fn_type @A.as.Action.impl.Op [concrete] +// CHECK:STDOUT: %A.as.Action.impl.Op: %A.as.Action.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %Action.facet: %Action.type.cb0 = facet_value %A, (%Action.impl_witness) [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %.584: type = fn_type_with_self_type %Op.type.54d, %Action.facet [concrete] +// CHECK:STDOUT: %.584: type = fn_type_with_self_type %Action.Op.type.54d, %Action.facet [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -263,13 +263,13 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %A.decl: type = class_decl @A [concrete = constants.%A] {} {} // CHECK:STDOUT: %B.decl: type = class_decl @B [concrete = constants.%B] {} {} // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} -// CHECK:STDOUT: impl_decl @Action.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @A.as.Action.impl [concrete] {} { // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A] // CHECK:STDOUT: %Action.ref: %Action.type.29c = name_ref Action, file.%Action.decl [concrete = constants.%Action.generic] // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B] // CHECK:STDOUT: %Action.type: type = facet_type <@Action, @Action(constants.%B)> [concrete = constants.%Action.type.cb0] // CHECK:STDOUT: } -// CHECK:STDOUT: %Action.impl_witness_table = impl_witness_table (@Action.impl.%Op.decl), @Action.impl [concrete] +// CHECK:STDOUT: %Action.impl_witness_table = impl_witness_table (@A.as.Action.impl.%A.as.Action.impl.Op.decl), @A.as.Action.impl [concrete] // CHECK:STDOUT: %Action.impl_witness: = impl_witness %Action.impl_witness_table [concrete = constants.%Action.impl_witness] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { // CHECK:STDOUT: %a.patt: %pattern_type.c10 = binding_pattern a [concrete] @@ -287,47 +287,47 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Action.type: type = facet_type <@Action, @Action(%T.loc4_18.1)> [symbolic = %Action.type (constants.%Action.type.cca)] // CHECK:STDOUT: %Self.2: @Action.%Action.type (%Action.type.cca) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.e98)] -// CHECK:STDOUT: %Op.type: type = fn_type @Op.loc5, @Action(%T.loc4_18.1) [symbolic = %Op.type (constants.%Op.type.036)] -// CHECK:STDOUT: %Op: @Action.%Op.type (%Op.type.036) = struct_value () [symbolic = %Op (constants.%Op.6ed)] +// CHECK:STDOUT: %Action.Op.type: type = fn_type @Action.Op, @Action(%T.loc4_18.1) [symbolic = %Action.Op.type (constants.%Action.Op.type.036)] +// CHECK:STDOUT: %Action.Op: @Action.%Action.Op.type (%Action.Op.type.036) = struct_value () [symbolic = %Action.Op (constants.%Action.Op.6ed)] // CHECK:STDOUT: %Action.assoc_type: type = assoc_entity_type @Action, @Action(%T.loc4_18.1) [symbolic = %Action.assoc_type (constants.%Action.assoc_type.32e)] -// CHECK:STDOUT: %assoc0.loc5_22.2: @Action.%Action.assoc_type (%Action.assoc_type.32e) = assoc_entity element0, %Op.decl [symbolic = %assoc0.loc5_22.2 (constants.%assoc0.268)] +// CHECK:STDOUT: %assoc0.loc5_22.2: @Action.%Action.assoc_type (%Action.assoc_type.32e) = assoc_entity element0, %Action.Op.decl [symbolic = %assoc0.loc5_22.2 (constants.%assoc0.268)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: %Self.1: @Action.%Action.type (%Action.type.cca) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.e98)] -// CHECK:STDOUT: %Op.decl: @Action.%Op.type (%Op.type.036) = fn_decl @Op.loc5 [symbolic = @Action.%Op (constants.%Op.6ed)] { -// CHECK:STDOUT: %self.patt: @Op.loc5.%pattern_type (%pattern_type.8db) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @Op.loc5.%pattern_type (%pattern_type.8db) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %Action.Op.decl: @Action.%Action.Op.type (%Action.Op.type.036) = fn_decl @Action.Op [symbolic = @Action.%Action.Op (constants.%Action.Op.6ed)] { +// CHECK:STDOUT: %self.patt: @Action.Op.%pattern_type (%pattern_type.8db) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @Action.Op.%pattern_type (%pattern_type.8db) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @Op.loc5.%Self.as_type.loc5_15.2 (%Self.as_type) = value_param call_param0 -// CHECK:STDOUT: %.loc5_15.1: type = splice_block %.loc5_15.3 [symbolic = %Self.as_type.loc5_15.2 (constants.%Self.as_type)] { -// CHECK:STDOUT: %.loc5_15.2: @Op.loc5.%Action.type (%Action.type.cca) = specific_constant @Action.%Self.1, @Action(constants.%T) [symbolic = %Self (constants.%Self.e98)] -// CHECK:STDOUT: %Self.ref: @Op.loc5.%Action.type (%Action.type.cca) = name_ref Self, %.loc5_15.2 [symbolic = %Self (constants.%Self.e98)] -// CHECK:STDOUT: %Self.as_type.loc5_15.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc5_15.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc5_15.3: type = converted %Self.ref, %Self.as_type.loc5_15.1 [symbolic = %Self.as_type.loc5_15.2 (constants.%Self.as_type)] +// CHECK:STDOUT: %self.param: @Action.Op.%Self.as_type.loc5_15.1 (%Self.as_type) = value_param call_param0 +// CHECK:STDOUT: %.loc5_15.1: type = splice_block %.loc5_15.3 [symbolic = %Self.as_type.loc5_15.1 (constants.%Self.as_type)] { +// CHECK:STDOUT: %.loc5_15.2: @Action.Op.%Action.type (%Action.type.cca) = specific_constant @Action.%Self.1, @Action(constants.%T) [symbolic = %Self (constants.%Self.e98)] +// CHECK:STDOUT: %Self.ref: @Action.Op.%Action.type (%Action.type.cca) = name_ref Self, %.loc5_15.2 [symbolic = %Self (constants.%Self.e98)] +// CHECK:STDOUT: %Self.as_type.loc5_15.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc5_15.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc5_15.3: type = converted %Self.ref, %Self.as_type.loc5_15.2 [symbolic = %Self.as_type.loc5_15.1 (constants.%Self.as_type)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @Op.loc5.%Self.as_type.loc5_15.2 (%Self.as_type) = bind_name self, %self.param +// CHECK:STDOUT: %self: @Action.Op.%Self.as_type.loc5_15.1 (%Self.as_type) = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0.loc5_22.1: @Action.%Action.assoc_type (%Action.assoc_type.32e) = assoc_entity element0, %Op.decl [symbolic = %assoc0.loc5_22.2 (constants.%assoc0.268)] +// CHECK:STDOUT: %assoc0.loc5_22.1: @Action.%Action.assoc_type (%Action.assoc_type.32e) = assoc_entity element0, %Action.Op.decl [symbolic = %assoc0.loc5_22.2 (constants.%assoc0.268)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 // CHECK:STDOUT: .Op = %assoc0.loc5_22.1 -// CHECK:STDOUT: witness = (%Op.decl) +// CHECK:STDOUT: witness = (%Action.Op.decl) // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Action.impl: %A.ref as %Action.type { -// CHECK:STDOUT: %Op.decl: %Op.type.4b4 = fn_decl @Op.loc13 [concrete = constants.%Op.40d] { +// CHECK:STDOUT: impl @A.as.Action.impl: %A.ref as %Action.type { +// CHECK:STDOUT: %A.as.Action.impl.Op.decl: %A.as.Action.impl.Op.type = fn_decl @A.as.Action.impl.Op [concrete = constants.%A.as.Action.impl.Op] { // CHECK:STDOUT: %self.patt: %pattern_type.c10 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.c10 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %self.param: %A = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @Action.impl.%A.ref [concrete = constants.%A] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @A.as.Action.impl.%A.ref [concrete = constants.%A] // CHECK:STDOUT: %self: %A = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Op = %Op.decl +// CHECK:STDOUT: .Op = %A.as.Action.impl.Op.decl // CHECK:STDOUT: witness = file.%Action.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: @@ -358,17 +358,17 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Op.loc5(@Action.%T.loc4_18.2: type, @Action.%Self.1: @Action.%Action.type (%Action.type.cca)) { +// CHECK:STDOUT: generic fn @Action.Op(@Action.%T.loc4_18.2: type, @Action.%Self.1: @Action.%Action.type (%Action.type.cca)) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Action.type: type = facet_type <@Action, @Action(%T)> [symbolic = %Action.type (constants.%Action.type.cca)] -// CHECK:STDOUT: %Self: @Op.loc5.%Action.type (%Action.type.cca) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.e98)] -// CHECK:STDOUT: %Self.as_type.loc5_15.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc5_15.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc5_15.2 [symbolic = %pattern_type (constants.%pattern_type.8db)] +// CHECK:STDOUT: %Self: @Action.Op.%Action.type (%Action.type.cca) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.e98)] +// CHECK:STDOUT: %Self.as_type.loc5_15.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc5_15.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc5_15.1 [symbolic = %pattern_type (constants.%pattern_type.8db)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @Op.loc5.%Self.as_type.loc5_15.2 (%Self.as_type)); +// CHECK:STDOUT: fn(%self.param: @Action.Op.%Self.as_type.loc5_15.1 (%Self.as_type)); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Op.loc13(%self.param: %A) { +// CHECK:STDOUT: fn @A.as.Action.impl.Op(%self.param: %A) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -381,9 +381,9 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %Action.type: type = facet_type <@Action, @Action(constants.%B)> [concrete = constants.%Action.type.cb0] // CHECK:STDOUT: %.loc16: %Action.assoc_type.4ee = specific_constant @Action.%assoc0.loc5_22.1, @Action(constants.%B) [concrete = constants.%assoc0.f3b] // CHECK:STDOUT: %Op.ref: %Action.assoc_type.4ee = name_ref Op, %.loc16 [concrete = constants.%assoc0.f3b] -// CHECK:STDOUT: %impl.elem0: %.584 = impl_witness_access constants.%Action.impl_witness, element0 [concrete = constants.%Op.40d] +// CHECK:STDOUT: %impl.elem0: %.584 = impl_witness_access constants.%Action.impl_witness, element0 [concrete = constants.%A.as.Action.impl.Op] // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem0 -// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %bound_method(%a.ref) +// CHECK:STDOUT: %A.as.Action.impl.Op.call: init %empty_tuple.type = call %bound_method(%a.ref) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -391,11 +391,11 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %T.loc4_18.1 => constants.%T // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Op.loc5(constants.%T, constants.%Self.e98) { +// CHECK:STDOUT: specific @Action.Op(constants.%T, constants.%Self.e98) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %Action.type => constants.%Action.type.cca // CHECK:STDOUT: %Self => constants.%Self.e98 -// CHECK:STDOUT: %Self.as_type.loc5_15.2 => constants.%Self.as_type +// CHECK:STDOUT: %Self.as_type.loc5_15.1 => constants.%Self.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.8db // CHECK:STDOUT: } // CHECK:STDOUT: @@ -405,17 +405,17 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Action.type => constants.%Action.type.cb0 // CHECK:STDOUT: %Self.2 => constants.%Self.0d1 -// CHECK:STDOUT: %Op.type => constants.%Op.type.54d -// CHECK:STDOUT: %Op => constants.%Op.dba +// CHECK:STDOUT: %Action.Op.type => constants.%Action.Op.type.54d +// CHECK:STDOUT: %Action.Op => constants.%Action.Op.dba // CHECK:STDOUT: %Action.assoc_type => constants.%Action.assoc_type.4ee // CHECK:STDOUT: %assoc0.loc5_22.2 => constants.%assoc0.f3b // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Op.loc5(constants.%B, constants.%Action.facet) { +// CHECK:STDOUT: specific @Action.Op(constants.%B, constants.%Action.facet) { // CHECK:STDOUT: %T => constants.%B // CHECK:STDOUT: %Action.type => constants.%Action.type.cb0 // CHECK:STDOUT: %Self => constants.%Action.facet -// CHECK:STDOUT: %Self.as_type.loc5_15.2 => constants.%A +// CHECK:STDOUT: %Self.as_type.loc5_15.1 => constants.%A // CHECK:STDOUT: %pattern_type => constants.%pattern_type.c10 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -433,15 +433,15 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %Self.e98: %Action.type.cca = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %Action.type.cb0: type = facet_type <@Action, @Action(%B)> [concrete] // CHECK:STDOUT: %A: type = class_type @A [concrete] -// CHECK:STDOUT: %Op.type.036: type = fn_type @Op.1, @Action(%T) [symbolic] -// CHECK:STDOUT: %Op.6ed: %Op.type.036 = struct_value () [symbolic] +// CHECK:STDOUT: %Action.Op.type.036: type = fn_type @Action.Op, @Action(%T) [symbolic] +// CHECK:STDOUT: %Action.Op.6ed: %Action.Op.type.036 = struct_value () [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self.e98 [symbolic] // CHECK:STDOUT: %pattern_type.8db: type = pattern_type %Self.as_type [symbolic] // CHECK:STDOUT: %Action.assoc_type.32e: type = assoc_entity_type @Action, @Action(%T) [symbolic] // CHECK:STDOUT: %assoc0.f18741.1: %Action.assoc_type.32e = assoc_entity element0, imports.%Main.import_ref.0e3753.1 [symbolic] // CHECK:STDOUT: %Self.0d1: %Action.type.cb0 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %Op.type.54d: type = fn_type @Op.1, @Action(%B) [concrete] -// CHECK:STDOUT: %Op.dba: %Op.type.54d = struct_value () [concrete] +// CHECK:STDOUT: %Action.Op.type.54d: type = fn_type @Action.Op, @Action(%B) [concrete] +// CHECK:STDOUT: %Action.Op.dba: %Action.Op.type.54d = struct_value () [concrete] // CHECK:STDOUT: %Action.assoc_type.4ee: type = assoc_entity_type @Action, @Action(%B) [concrete] // CHECK:STDOUT: %assoc0.8a8: %Action.assoc_type.4ee = assoc_entity element0, imports.%Main.import_ref.1f6 [concrete] // CHECK:STDOUT: %pattern_type.c10: type = pattern_type %A [concrete] @@ -450,9 +450,9 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %assoc0.f18741.2: %Action.assoc_type.32e = assoc_entity element0, imports.%Main.import_ref.0e3753.2 [symbolic] // CHECK:STDOUT: %Action.impl_witness: = impl_witness imports.%Action.impl_witness_table [concrete] // CHECK:STDOUT: %Action.facet: %Action.type.cb0 = facet_value %A, (%Action.impl_witness) [concrete] -// CHECK:STDOUT: %.6c7: type = fn_type_with_self_type %Op.type.54d, %Action.facet [concrete] -// CHECK:STDOUT: %Op.type.4b4: type = fn_type @Op.2 [concrete] -// CHECK:STDOUT: %Op.40d: %Op.type.4b4 = struct_value () [concrete] +// CHECK:STDOUT: %.6c7: type = fn_type_with_self_type %Action.Op.type.54d, %Action.facet [concrete] +// CHECK:STDOUT: %A.as.Action.impl.Op.type: type = fn_type @A.as.Action.impl.Op [concrete] +// CHECK:STDOUT: %A.as.Action.impl.Op: %A.as.Action.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -480,10 +480,10 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %Main.import_ref.5ab3ec.2: type = import_ref Main//action, loc4_18, loaded [symbolic = @Action.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.835: @Action.%Action.type (%Action.type.cca) = import_ref Main//action, inst27 [no loc], loaded [symbolic = @Action.%Self (constants.%Self.e98)] // CHECK:STDOUT: %Main.import_ref.0e3753.1 = import_ref Main//action, loc5_22, unloaded -// CHECK:STDOUT: %Main.import_ref.1f6: @Action.%Op.type (%Op.type.036) = import_ref Main//action, loc5_22, loaded [symbolic = @Action.%Op (constants.%Op.6ed)] +// CHECK:STDOUT: %Main.import_ref.1f6: @Action.%Action.Op.type (%Action.Op.type.036) = import_ref Main//action, loc5_22, loaded [symbolic = @Action.%Action.Op (constants.%Action.Op.6ed)] // CHECK:STDOUT: %Main.import_ref.0e3753.2 = import_ref Main//action, loc5_22, unloaded -// CHECK:STDOUT: %Main.import_ref.d0b: %Op.type.4b4 = import_ref Main//action, loc13_23, loaded [concrete = constants.%Op.40d] -// CHECK:STDOUT: %Action.impl_witness_table = impl_witness_table (%Main.import_ref.d0b), @Action.impl [concrete] +// CHECK:STDOUT: %Main.import_ref.d0b: %A.as.Action.impl.Op.type = import_ref Main//action, loc13_23, loaded [concrete = constants.%A.as.Action.impl.Op] +// CHECK:STDOUT: %Action.impl_witness_table = impl_witness_table (%Main.import_ref.d0b), @A.as.Action.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -515,8 +515,8 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Action.type: type = facet_type <@Action, @Action(%T)> [symbolic = %Action.type (constants.%Action.type.cca)] // CHECK:STDOUT: %Self: @Action.%Action.type (%Action.type.cca) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.e98)] -// CHECK:STDOUT: %Op.type: type = fn_type @Op.1, @Action(%T) [symbolic = %Op.type (constants.%Op.type.036)] -// CHECK:STDOUT: %Op: @Action.%Op.type (%Op.type.036) = struct_value () [symbolic = %Op (constants.%Op.6ed)] +// CHECK:STDOUT: %Action.Op.type: type = fn_type @Action.Op, @Action(%T) [symbolic = %Action.Op.type (constants.%Action.Op.type.036)] +// CHECK:STDOUT: %Action.Op: @Action.%Action.Op.type (%Action.Op.type.036) = struct_value () [symbolic = %Action.Op (constants.%Action.Op.6ed)] // CHECK:STDOUT: %Action.assoc_type: type = assoc_entity_type @Action, @Action(%T) [symbolic = %Action.assoc_type (constants.%Action.assoc_type.32e)] // CHECK:STDOUT: %assoc0: @Action.%Action.assoc_type (%Action.assoc_type.32e) = assoc_entity element0, imports.%Main.import_ref.0e3753.1 [symbolic = %assoc0 (constants.%assoc0.f18741.1)] // CHECK:STDOUT: @@ -528,7 +528,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Action.impl: imports.%Main.import_ref.984 as imports.%Main.import_ref.bb2 [from "action.carbon"] { +// CHECK:STDOUT: impl @A.as.Action.impl: imports.%Main.import_ref.984 as imports.%Main.import_ref.bb2 [from "action.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Op = imports.%Main.import_ref.7b5 // CHECK:STDOUT: witness = imports.%Main.import_ref.995 @@ -548,10 +548,10 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: .Self = imports.%Main.import_ref.da3 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Op.1(imports.%Main.import_ref.5ab3ec.2: type, imports.%Main.import_ref.835: @Action.%Action.type (%Action.type.cca)) [from "action.carbon"] { +// CHECK:STDOUT: generic fn @Action.Op(imports.%Main.import_ref.5ab3ec.2: type, imports.%Main.import_ref.835: @Action.%Action.type (%Action.type.cca)) [from "action.carbon"] { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Action.type: type = facet_type <@Action, @Action(%T)> [symbolic = %Action.type (constants.%Action.type.cca)] -// CHECK:STDOUT: %Self: @Op.1.%Action.type (%Action.type.cca) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.e98)] +// CHECK:STDOUT: %Self: @Action.Op.%Action.type (%Action.type.cca) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.e98)] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic = %Self.as_type (constants.%Self.as_type)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type [symbolic = %pattern_type (constants.%pattern_type.8db)] // CHECK:STDOUT: @@ -566,13 +566,13 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %Action.type: type = facet_type <@Action, @Action(constants.%B)> [concrete = constants.%Action.type.cb0] // CHECK:STDOUT: %.loc4: %Action.assoc_type.4ee = specific_constant imports.%Main.import_ref.c55, @Action(constants.%B) [concrete = constants.%assoc0.8a8] // CHECK:STDOUT: %Op.ref: %Action.assoc_type.4ee = name_ref Op, %.loc4 [concrete = constants.%assoc0.8a8] -// CHECK:STDOUT: %impl.elem0: %.6c7 = impl_witness_access constants.%Action.impl_witness, element0 [concrete = constants.%Op.40d] +// CHECK:STDOUT: %impl.elem0: %.6c7 = impl_witness_access constants.%Action.impl_witness, element0 [concrete = constants.%A.as.Action.impl.Op] // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem0 -// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %bound_method(%a.ref) +// CHECK:STDOUT: %A.as.Action.impl.Op.call: init %empty_tuple.type = call %bound_method(%a.ref) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Op.2 [from "action.carbon"]; +// CHECK:STDOUT: fn @A.as.Action.impl.Op [from "action.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: specific @Action(constants.%T) { // CHECK:STDOUT: %T => constants.%T @@ -584,13 +584,13 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Action.type => constants.%Action.type.cb0 // CHECK:STDOUT: %Self => constants.%Self.0d1 -// CHECK:STDOUT: %Op.type => constants.%Op.type.54d -// CHECK:STDOUT: %Op => constants.%Op.dba +// CHECK:STDOUT: %Action.Op.type => constants.%Action.Op.type.54d +// CHECK:STDOUT: %Action.Op => constants.%Action.Op.dba // CHECK:STDOUT: %Action.assoc_type => constants.%Action.assoc_type.4ee // CHECK:STDOUT: %assoc0 => constants.%assoc0.8a8 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Op.1(constants.%T, constants.%Self.e98) { +// CHECK:STDOUT: specific @Action.Op(constants.%T, constants.%Self.e98) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %Action.type => constants.%Action.type.cca // CHECK:STDOUT: %Self => constants.%Self.e98 @@ -611,15 +611,15 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %Self.e98: %Action.type.cca = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %Action.type.cb0: type = facet_type <@Action, @Action(%B)> [concrete] // CHECK:STDOUT: %A: type = class_type @A [concrete] -// CHECK:STDOUT: %Op.type.036: type = fn_type @Op, @Action(%T) [symbolic] -// CHECK:STDOUT: %Op.6ed: %Op.type.036 = struct_value () [symbolic] +// CHECK:STDOUT: %Action.Op.type.036: type = fn_type @Action.Op, @Action(%T) [symbolic] +// CHECK:STDOUT: %Action.Op.6ed: %Action.Op.type.036 = struct_value () [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self.e98 [symbolic] // CHECK:STDOUT: %pattern_type.8db: type = pattern_type %Self.as_type [symbolic] // CHECK:STDOUT: %Action.assoc_type.32e: type = assoc_entity_type @Action, @Action(%T) [symbolic] // CHECK:STDOUT: %assoc0.326: %Action.assoc_type.32e = assoc_entity element0, imports.%Main.import_ref.1f6 [symbolic] // CHECK:STDOUT: %Self.0d1: %Action.type.cb0 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %Op.type.54d: type = fn_type @Op, @Action(%B) [concrete] -// CHECK:STDOUT: %Op.dba: %Op.type.54d = struct_value () [concrete] +// CHECK:STDOUT: %Action.Op.type.54d: type = fn_type @Action.Op, @Action(%B) [concrete] +// CHECK:STDOUT: %Action.Op.dba: %Action.Op.type.54d = struct_value () [concrete] // CHECK:STDOUT: %Action.assoc_type.4ee: type = assoc_entity_type @Action, @Action(%B) [concrete] // CHECK:STDOUT: %assoc0.338: %Action.assoc_type.4ee = assoc_entity element0, imports.%Main.import_ref.0e3753.1 [concrete] // CHECK:STDOUT: %pattern_type.c10: type = pattern_type %A [concrete] @@ -628,8 +628,8 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %Action.type.e2b: type = facet_type <@Action, @Action(%C)> [concrete] // CHECK:STDOUT: %Self.4bb: %Action.type.e2b = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %Op.type.5ad: type = fn_type @Op, @Action(%C) [concrete] -// CHECK:STDOUT: %Op.b10: %Op.type.5ad = struct_value () [concrete] +// CHECK:STDOUT: %Action.Op.type.5ad: type = fn_type @Action.Op, @Action(%C) [concrete] +// CHECK:STDOUT: %Action.Op.b10: %Action.Op.type.5ad = struct_value () [concrete] // CHECK:STDOUT: %Action.assoc_type.79f: type = assoc_entity_type @Action, @Action(%C) [concrete] // CHECK:STDOUT: %assoc0.37d: %Action.assoc_type.79f = assoc_entity element0, imports.%Main.import_ref.1f6 [concrete] // CHECK:STDOUT: %assoc0.f18: %Action.assoc_type.32e = assoc_entity element0, imports.%Main.import_ref.0e3753.2 [symbolic] @@ -659,7 +659,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %Main.import_ref.7b5 = import_ref Main//action, loc13_23, unloaded // CHECK:STDOUT: %Main.import_ref.5ab3ec.2: type = import_ref Main//action, loc4_18, loaded [symbolic = @Action.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.835: @Action.%Action.type (%Action.type.cca) = import_ref Main//action, inst27 [no loc], loaded [symbolic = @Action.%Self (constants.%Self.e98)] -// CHECK:STDOUT: %Main.import_ref.1f6: @Action.%Op.type (%Op.type.036) = import_ref Main//action, loc5_22, loaded [symbolic = @Action.%Op (constants.%Op.6ed)] +// CHECK:STDOUT: %Main.import_ref.1f6: @Action.%Action.Op.type (%Action.Op.type.036) = import_ref Main//action, loc5_22, loaded [symbolic = @Action.%Action.Op (constants.%Action.Op.6ed)] // CHECK:STDOUT: %Main.import_ref.0e3753.1 = import_ref Main//action, loc5_22, unloaded // CHECK:STDOUT: %Main.import_ref.8f24d3.3: = import_ref Main//action, loc10_10, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//action, inst68 [no loc], unloaded @@ -695,8 +695,8 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Action.type: type = facet_type <@Action, @Action(%T)> [symbolic = %Action.type (constants.%Action.type.cca)] // CHECK:STDOUT: %Self: @Action.%Action.type (%Action.type.cca) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.e98)] -// CHECK:STDOUT: %Op.type: type = fn_type @Op, @Action(%T) [symbolic = %Op.type (constants.%Op.type.036)] -// CHECK:STDOUT: %Op: @Action.%Op.type (%Op.type.036) = struct_value () [symbolic = %Op (constants.%Op.6ed)] +// CHECK:STDOUT: %Action.Op.type: type = fn_type @Action.Op, @Action(%T) [symbolic = %Action.Op.type (constants.%Action.Op.type.036)] +// CHECK:STDOUT: %Action.Op: @Action.%Action.Op.type (%Action.Op.type.036) = struct_value () [symbolic = %Action.Op (constants.%Action.Op.6ed)] // CHECK:STDOUT: %Action.assoc_type: type = assoc_entity_type @Action, @Action(%T) [symbolic = %Action.assoc_type (constants.%Action.assoc_type.32e)] // CHECK:STDOUT: %assoc0: @Action.%Action.assoc_type (%Action.assoc_type.32e) = assoc_entity element0, imports.%Main.import_ref.1f6 [symbolic = %assoc0 (constants.%assoc0.326)] // CHECK:STDOUT: @@ -708,7 +708,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Action.impl: imports.%Main.import_ref.984 as imports.%Main.import_ref.bb2 [from "action.carbon"] { +// CHECK:STDOUT: impl @A.as.Action.impl: imports.%Main.import_ref.984 as imports.%Main.import_ref.bb2 [from "action.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Op = imports.%Main.import_ref.7b5 // CHECK:STDOUT: witness = imports.%Main.import_ref.19c @@ -735,10 +735,10 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: .Self = imports.%Main.import_ref.2c4 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Op(imports.%Main.import_ref.5ab3ec.2: type, imports.%Main.import_ref.835: @Action.%Action.type (%Action.type.cca)) [from "action.carbon"] { +// CHECK:STDOUT: generic fn @Action.Op(imports.%Main.import_ref.5ab3ec.2: type, imports.%Main.import_ref.835: @Action.%Action.type (%Action.type.cca)) [from "action.carbon"] { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Action.type: type = facet_type <@Action, @Action(%T)> [symbolic = %Action.type (constants.%Action.type.cca)] -// CHECK:STDOUT: %Self: @Op.%Action.type (%Action.type.cca) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.e98)] +// CHECK:STDOUT: %Self: @Action.Op.%Action.type (%Action.type.cca) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.e98)] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic = %Self.as_type (constants.%Self.as_type)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type [symbolic = %pattern_type (constants.%pattern_type.8db)] // CHECK:STDOUT: @@ -766,13 +766,13 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Action.type => constants.%Action.type.cb0 // CHECK:STDOUT: %Self => constants.%Self.0d1 -// CHECK:STDOUT: %Op.type => constants.%Op.type.54d -// CHECK:STDOUT: %Op => constants.%Op.dba +// CHECK:STDOUT: %Action.Op.type => constants.%Action.Op.type.54d +// CHECK:STDOUT: %Action.Op => constants.%Action.Op.dba // CHECK:STDOUT: %Action.assoc_type => constants.%Action.assoc_type.4ee // CHECK:STDOUT: %assoc0 => constants.%assoc0.338 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Op(constants.%T, constants.%Self.e98) { +// CHECK:STDOUT: specific @Action.Op(constants.%T, constants.%Self.e98) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %Action.type => constants.%Action.type.cca // CHECK:STDOUT: %Self => constants.%Self.e98 @@ -786,8 +786,8 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Action.type => constants.%Action.type.e2b // CHECK:STDOUT: %Self => constants.%Self.4bb -// CHECK:STDOUT: %Op.type => constants.%Op.type.5ad -// CHECK:STDOUT: %Op => constants.%Op.b10 +// CHECK:STDOUT: %Action.Op.type => constants.%Action.Op.type.5ad +// CHECK:STDOUT: %Action.Op => constants.%Action.Op.b10 // CHECK:STDOUT: %Action.assoc_type => constants.%Action.assoc_type.79f // CHECK:STDOUT: %assoc0 => constants.%assoc0.37d // CHECK:STDOUT: } @@ -802,35 +802,35 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %Factory.type.c96: type = facet_type <@Factory, @Factory(%T)> [symbolic] // CHECK:STDOUT: %Self.9ba: %Factory.type.c96 = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %T [symbolic] -// CHECK:STDOUT: %Make.type.598: type = fn_type @Make.loc6, @Factory(%T) [symbolic] -// CHECK:STDOUT: %Make.737: %Make.type.598 = struct_value () [symbolic] +// CHECK:STDOUT: %Factory.Make.type.598: type = fn_type @Factory.Make, @Factory(%T) [symbolic] +// CHECK:STDOUT: %Factory.Make.737: %Factory.Make.type.598 = struct_value () [symbolic] // CHECK:STDOUT: %Factory.assoc_type.207: type = assoc_entity_type @Factory, @Factory(%T) [symbolic] -// CHECK:STDOUT: %assoc0.b3c: %Factory.assoc_type.207 = assoc_entity element0, @Factory.%Make.decl [symbolic] +// CHECK:STDOUT: %assoc0.b3c: %Factory.assoc_type.207 = assoc_entity element0, @Factory.%Factory.Make.decl [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self.9ba [symbolic] // CHECK:STDOUT: %pattern_type.5ea: type = pattern_type %Self.as_type [symbolic] -// CHECK:STDOUT: %Method.type.7ee: type = fn_type @Method.loc8, @Factory(%T) [symbolic] -// CHECK:STDOUT: %Method.a71: %Method.type.7ee = struct_value () [symbolic] -// CHECK:STDOUT: %assoc1.e30: %Factory.assoc_type.207 = assoc_entity element1, @Factory.%Method.decl [symbolic] +// CHECK:STDOUT: %Factory.Method.type.7ee: type = fn_type @Factory.Method, @Factory(%T) [symbolic] +// CHECK:STDOUT: %Factory.Method.a71: %Factory.Method.type.7ee = struct_value () [symbolic] +// CHECK:STDOUT: %assoc1.e30: %Factory.assoc_type.207 = assoc_entity element1, @Factory.%Factory.Method.decl [symbolic] // CHECK:STDOUT: %A: type = class_type @A [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %B: type = class_type @B [concrete] // CHECK:STDOUT: %Factory.type.a5d: type = facet_type <@Factory, @Factory(%B)> [concrete] // CHECK:STDOUT: %Self.187: %Factory.type.a5d = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %Make.type.c59: type = fn_type @Make.loc6, @Factory(%B) [concrete] -// CHECK:STDOUT: %Make.efe: %Make.type.c59 = struct_value () [concrete] +// CHECK:STDOUT: %Factory.Make.type.c59: type = fn_type @Factory.Make, @Factory(%B) [concrete] +// CHECK:STDOUT: %Factory.Make.efe: %Factory.Make.type.c59 = struct_value () [concrete] // CHECK:STDOUT: %Factory.assoc_type.579: type = assoc_entity_type @Factory, @Factory(%B) [concrete] -// CHECK:STDOUT: %assoc0.fe7: %Factory.assoc_type.579 = assoc_entity element0, @Factory.%Make.decl [concrete] -// CHECK:STDOUT: %Method.type.117: type = fn_type @Method.loc8, @Factory(%B) [concrete] -// CHECK:STDOUT: %Method.ea9: %Method.type.117 = struct_value () [concrete] -// CHECK:STDOUT: %assoc1.02a: %Factory.assoc_type.579 = assoc_entity element1, @Factory.%Method.decl [concrete] +// CHECK:STDOUT: %assoc0.fe7: %Factory.assoc_type.579 = assoc_entity element0, @Factory.%Factory.Make.decl [concrete] +// CHECK:STDOUT: %Factory.Method.type.117: type = fn_type @Factory.Method, @Factory(%B) [concrete] +// CHECK:STDOUT: %Factory.Method.ea9: %Factory.Method.type.117 = struct_value () [concrete] +// CHECK:STDOUT: %assoc1.02a: %Factory.assoc_type.579 = assoc_entity element1, @Factory.%Factory.Method.decl [concrete] // CHECK:STDOUT: %Factory.impl_witness: = impl_witness file.%Factory.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.049: type = pattern_type %B [concrete] -// CHECK:STDOUT: %Make.type.ec4: type = fn_type @Make.loc15 [concrete] -// CHECK:STDOUT: %Make.377: %Make.type.ec4 = struct_value () [concrete] +// CHECK:STDOUT: %A.as.Factory.impl.Make.type: type = fn_type @A.as.Factory.impl.Make [concrete] +// CHECK:STDOUT: %A.as.Factory.impl.Make: %A.as.Factory.impl.Make.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.c10: type = pattern_type %A [concrete] -// CHECK:STDOUT: %Method.type.af5: type = fn_type @Method.loc16 [concrete] -// CHECK:STDOUT: %Method.3d4: %Method.type.af5 = struct_value () [concrete] +// CHECK:STDOUT: %A.as.Factory.impl.Method.type: type = fn_type @A.as.Factory.impl.Method [concrete] +// CHECK:STDOUT: %A.as.Factory.impl.Method: %A.as.Factory.impl.Method.type = struct_value () [concrete] // CHECK:STDOUT: %Factory.facet: %Factory.type.a5d = facet_value %A, (%Factory.impl_witness) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -856,13 +856,13 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: } // CHECK:STDOUT: %A.decl: type = class_decl @A [concrete = constants.%A] {} {} // CHECK:STDOUT: %B.decl: type = class_decl @B [concrete = constants.%B] {} {} -// CHECK:STDOUT: impl_decl @Factory.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @A.as.Factory.impl [concrete] {} { // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A] // CHECK:STDOUT: %Factory.ref: %Factory.type.1a8 = name_ref Factory, file.%Factory.decl [concrete = constants.%Factory.generic] // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B] // CHECK:STDOUT: %Factory.type: type = facet_type <@Factory, @Factory(constants.%B)> [concrete = constants.%Factory.type.a5d] // CHECK:STDOUT: } -// CHECK:STDOUT: %Factory.impl_witness_table = impl_witness_table (@Factory.impl.%Make.decl, @Factory.impl.%Method.decl), @Factory.impl [concrete] +// CHECK:STDOUT: %Factory.impl_witness_table = impl_witness_table (@A.as.Factory.impl.%A.as.Factory.impl.Make.decl, @A.as.Factory.impl.%A.as.Factory.impl.Method.decl), @A.as.Factory.impl [concrete] // CHECK:STDOUT: %Factory.impl_witness: = impl_witness %Factory.impl_witness_table [concrete = constants.%Factory.impl_witness] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -872,56 +872,56 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Factory.type: type = facet_type <@Factory, @Factory(%T.loc4_19.1)> [symbolic = %Factory.type (constants.%Factory.type.c96)] // CHECK:STDOUT: %Self.2: @Factory.%Factory.type (%Factory.type.c96) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.9ba)] -// CHECK:STDOUT: %Make.type: type = fn_type @Make.loc6, @Factory(%T.loc4_19.1) [symbolic = %Make.type (constants.%Make.type.598)] -// CHECK:STDOUT: %Make: @Factory.%Make.type (%Make.type.598) = struct_value () [symbolic = %Make (constants.%Make.737)] +// CHECK:STDOUT: %Factory.Make.type: type = fn_type @Factory.Make, @Factory(%T.loc4_19.1) [symbolic = %Factory.Make.type (constants.%Factory.Make.type.598)] +// CHECK:STDOUT: %Factory.Make: @Factory.%Factory.Make.type (%Factory.Make.type.598) = struct_value () [symbolic = %Factory.Make (constants.%Factory.Make.737)] // CHECK:STDOUT: %Factory.assoc_type: type = assoc_entity_type @Factory, @Factory(%T.loc4_19.1) [symbolic = %Factory.assoc_type (constants.%Factory.assoc_type.207)] -// CHECK:STDOUT: %assoc0.loc6_17.2: @Factory.%Factory.assoc_type (%Factory.assoc_type.207) = assoc_entity element0, %Make.decl [symbolic = %assoc0.loc6_17.2 (constants.%assoc0.b3c)] -// CHECK:STDOUT: %Method.type: type = fn_type @Method.loc8, @Factory(%T.loc4_19.1) [symbolic = %Method.type (constants.%Method.type.7ee)] -// CHECK:STDOUT: %Method: @Factory.%Method.type (%Method.type.7ee) = struct_value () [symbolic = %Method (constants.%Method.a71)] -// CHECK:STDOUT: %assoc1.loc8_31.2: @Factory.%Factory.assoc_type (%Factory.assoc_type.207) = assoc_entity element1, %Method.decl [symbolic = %assoc1.loc8_31.2 (constants.%assoc1.e30)] +// CHECK:STDOUT: %assoc0.loc6_17.2: @Factory.%Factory.assoc_type (%Factory.assoc_type.207) = assoc_entity element0, %Factory.Make.decl [symbolic = %assoc0.loc6_17.2 (constants.%assoc0.b3c)] +// CHECK:STDOUT: %Factory.Method.type: type = fn_type @Factory.Method, @Factory(%T.loc4_19.1) [symbolic = %Factory.Method.type (constants.%Factory.Method.type.7ee)] +// CHECK:STDOUT: %Factory.Method: @Factory.%Factory.Method.type (%Factory.Method.type.7ee) = struct_value () [symbolic = %Factory.Method (constants.%Factory.Method.a71)] +// CHECK:STDOUT: %assoc1.loc8_31.2: @Factory.%Factory.assoc_type (%Factory.assoc_type.207) = assoc_entity element1, %Factory.Method.decl [symbolic = %assoc1.loc8_31.2 (constants.%assoc1.e30)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: %Self.1: @Factory.%Factory.type (%Factory.type.c96) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.9ba)] -// CHECK:STDOUT: %Make.decl: @Factory.%Make.type (%Make.type.598) = fn_decl @Make.loc6 [symbolic = @Factory.%Make (constants.%Make.737)] { -// CHECK:STDOUT: %return.patt: @Make.loc6.%pattern_type (%pattern_type.7dc) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @Make.loc6.%pattern_type (%pattern_type.7dc) = out_param_pattern %return.patt, call_param0 [concrete] +// CHECK:STDOUT: %Factory.Make.decl: @Factory.%Factory.Make.type (%Factory.Make.type.598) = fn_decl @Factory.Make [symbolic = @Factory.%Factory.Make (constants.%Factory.Make.737)] { +// CHECK:STDOUT: %return.patt: @Factory.Make.%pattern_type (%pattern_type.7dc) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @Factory.Make.%pattern_type (%pattern_type.7dc) = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, @Factory.%T.loc4_19.2 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %return.param: ref @Make.loc6.%T (%T) = out_param call_param0 -// CHECK:STDOUT: %return: ref @Make.loc6.%T (%T) = return_slot %return.param +// CHECK:STDOUT: %return.param: ref @Factory.Make.%T (%T) = out_param call_param0 +// CHECK:STDOUT: %return: ref @Factory.Make.%T (%T) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0.loc6_17.1: @Factory.%Factory.assoc_type (%Factory.assoc_type.207) = assoc_entity element0, %Make.decl [symbolic = %assoc0.loc6_17.2 (constants.%assoc0.b3c)] -// CHECK:STDOUT: %Method.decl: @Factory.%Method.type (%Method.type.7ee) = fn_decl @Method.loc8 [symbolic = @Factory.%Method (constants.%Method.a71)] { -// CHECK:STDOUT: %self.patt: @Method.loc8.%pattern_type.loc8_13 (%pattern_type.5ea) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @Method.loc8.%pattern_type.loc8_13 (%pattern_type.5ea) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: @Method.loc8.%pattern_type.loc8_27 (%pattern_type.7dc) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @Method.loc8.%pattern_type.loc8_27 (%pattern_type.7dc) = out_param_pattern %return.patt, call_param1 [concrete] +// CHECK:STDOUT: %assoc0.loc6_17.1: @Factory.%Factory.assoc_type (%Factory.assoc_type.207) = assoc_entity element0, %Factory.Make.decl [symbolic = %assoc0.loc6_17.2 (constants.%assoc0.b3c)] +// CHECK:STDOUT: %Factory.Method.decl: @Factory.%Factory.Method.type (%Factory.Method.type.7ee) = fn_decl @Factory.Method [symbolic = @Factory.%Factory.Method (constants.%Factory.Method.a71)] { +// CHECK:STDOUT: %self.patt: @Factory.Method.%pattern_type.loc8_13 (%pattern_type.5ea) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @Factory.Method.%pattern_type.loc8_13 (%pattern_type.5ea) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %return.patt: @Factory.Method.%pattern_type.loc8_27 (%pattern_type.7dc) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @Factory.Method.%pattern_type.loc8_27 (%pattern_type.7dc) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, @Factory.%T.loc4_19.2 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %self.param: @Method.loc8.%Self.as_type.loc8_19.2 (%Self.as_type) = value_param call_param0 -// CHECK:STDOUT: %.loc8_19.1: type = splice_block %.loc8_19.3 [symbolic = %Self.as_type.loc8_19.2 (constants.%Self.as_type)] { -// CHECK:STDOUT: %.loc8_19.2: @Method.loc8.%Factory.type (%Factory.type.c96) = specific_constant @Factory.%Self.1, @Factory(constants.%T) [symbolic = %Self (constants.%Self.9ba)] -// CHECK:STDOUT: %Self.ref: @Method.loc8.%Factory.type (%Factory.type.c96) = name_ref Self, %.loc8_19.2 [symbolic = %Self (constants.%Self.9ba)] -// CHECK:STDOUT: %Self.as_type.loc8_19.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc8_19.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc8_19.3: type = converted %Self.ref, %Self.as_type.loc8_19.1 [symbolic = %Self.as_type.loc8_19.2 (constants.%Self.as_type)] +// CHECK:STDOUT: %self.param: @Factory.Method.%Self.as_type.loc8_19.1 (%Self.as_type) = value_param call_param0 +// CHECK:STDOUT: %.loc8_19.1: type = splice_block %.loc8_19.3 [symbolic = %Self.as_type.loc8_19.1 (constants.%Self.as_type)] { +// CHECK:STDOUT: %.loc8_19.2: @Factory.Method.%Factory.type (%Factory.type.c96) = specific_constant @Factory.%Self.1, @Factory(constants.%T) [symbolic = %Self (constants.%Self.9ba)] +// CHECK:STDOUT: %Self.ref: @Factory.Method.%Factory.type (%Factory.type.c96) = name_ref Self, %.loc8_19.2 [symbolic = %Self (constants.%Self.9ba)] +// CHECK:STDOUT: %Self.as_type.loc8_19.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc8_19.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc8_19.3: type = converted %Self.ref, %Self.as_type.loc8_19.2 [symbolic = %Self.as_type.loc8_19.1 (constants.%Self.as_type)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @Method.loc8.%Self.as_type.loc8_19.2 (%Self.as_type) = bind_name self, %self.param -// CHECK:STDOUT: %return.param: ref @Method.loc8.%T (%T) = out_param call_param1 -// CHECK:STDOUT: %return: ref @Method.loc8.%T (%T) = return_slot %return.param +// CHECK:STDOUT: %self: @Factory.Method.%Self.as_type.loc8_19.1 (%Self.as_type) = bind_name self, %self.param +// CHECK:STDOUT: %return.param: ref @Factory.Method.%T (%T) = out_param call_param1 +// CHECK:STDOUT: %return: ref @Factory.Method.%T (%T) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc1.loc8_31.1: @Factory.%Factory.assoc_type (%Factory.assoc_type.207) = assoc_entity element1, %Method.decl [symbolic = %assoc1.loc8_31.2 (constants.%assoc1.e30)] +// CHECK:STDOUT: %assoc1.loc8_31.1: @Factory.%Factory.assoc_type (%Factory.assoc_type.207) = assoc_entity element1, %Factory.Method.decl [symbolic = %assoc1.loc8_31.2 (constants.%assoc1.e30)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 // CHECK:STDOUT: .T = // CHECK:STDOUT: .Make = %assoc0.loc6_17.1 // CHECK:STDOUT: .Method = %assoc1.loc8_31.1 -// CHECK:STDOUT: witness = (%Make.decl, %Method.decl) +// CHECK:STDOUT: witness = (%Factory.Make.decl, %Factory.Method.decl) // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Factory.impl: %A.ref as %Factory.type { -// CHECK:STDOUT: %Make.decl: %Make.type.ec4 = fn_decl @Make.loc15 [concrete = constants.%Make.377] { +// CHECK:STDOUT: impl @A.as.Factory.impl: %A.ref as %Factory.type { +// CHECK:STDOUT: %A.as.Factory.impl.Make.decl: %A.as.Factory.impl.Make.type = fn_decl @A.as.Factory.impl.Make [concrete = constants.%A.as.Factory.impl.Make] { // CHECK:STDOUT: %return.patt: %pattern_type.049 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.049 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -929,7 +929,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %return.param: ref %B = out_param call_param0 // CHECK:STDOUT: %return: ref %B = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %Method.decl: %Method.type.af5 = fn_decl @Method.loc16 [concrete = constants.%Method.3d4] { +// CHECK:STDOUT: %A.as.Factory.impl.Method.decl: %A.as.Factory.impl.Method.type = fn_decl @A.as.Factory.impl.Method [concrete = constants.%A.as.Factory.impl.Method] { // CHECK:STDOUT: %self.patt: %pattern_type.c10 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.c10 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.049 = return_slot_pattern [concrete] @@ -937,7 +937,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: } { // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B] // CHECK:STDOUT: %self.param: %A = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @Factory.impl.%A.ref [concrete = constants.%A] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @A.as.Factory.impl.%A.ref [concrete = constants.%A] // CHECK:STDOUT: %self: %A = bind_name self, %self.param // CHECK:STDOUT: %return.param: ref %B = out_param call_param1 // CHECK:STDOUT: %return: ref %B = return_slot %return.param @@ -945,8 +945,8 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .B = -// CHECK:STDOUT: .Make = %Make.decl -// CHECK:STDOUT: .Method = %Method.decl +// CHECK:STDOUT: .Make = %A.as.Factory.impl.Make.decl +// CHECK:STDOUT: .Method = %A.as.Factory.impl.Method.decl // CHECK:STDOUT: witness = file.%Factory.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: @@ -968,42 +968,42 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Make.loc6(@Factory.%T.loc4_19.2: type, @Factory.%Self.1: @Factory.%Factory.type (%Factory.type.c96)) { +// CHECK:STDOUT: generic fn @Factory.Make(@Factory.%T.loc4_19.2: type, @Factory.%Self.1: @Factory.%Factory.type (%Factory.type.c96)) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %pattern_type: type = pattern_type %T [symbolic = %pattern_type (constants.%pattern_type.7dc)] // CHECK:STDOUT: -// CHECK:STDOUT: fn() -> @Make.loc6.%T (%T); +// CHECK:STDOUT: fn() -> @Factory.Make.%T (%T); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Method.loc8(@Factory.%T.loc4_19.2: type, @Factory.%Self.1: @Factory.%Factory.type (%Factory.type.c96)) { +// CHECK:STDOUT: generic fn @Factory.Method(@Factory.%T.loc4_19.2: type, @Factory.%Self.1: @Factory.%Factory.type (%Factory.type.c96)) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Factory.type: type = facet_type <@Factory, @Factory(%T)> [symbolic = %Factory.type (constants.%Factory.type.c96)] -// CHECK:STDOUT: %Self: @Method.loc8.%Factory.type (%Factory.type.c96) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.9ba)] -// CHECK:STDOUT: %Self.as_type.loc8_19.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc8_19.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %pattern_type.loc8_13: type = pattern_type %Self.as_type.loc8_19.2 [symbolic = %pattern_type.loc8_13 (constants.%pattern_type.5ea)] +// CHECK:STDOUT: %Self: @Factory.Method.%Factory.type (%Factory.type.c96) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.9ba)] +// CHECK:STDOUT: %Self.as_type.loc8_19.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc8_19.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %pattern_type.loc8_13: type = pattern_type %Self.as_type.loc8_19.1 [symbolic = %pattern_type.loc8_13 (constants.%pattern_type.5ea)] // CHECK:STDOUT: %pattern_type.loc8_27: type = pattern_type %T [symbolic = %pattern_type.loc8_27 (constants.%pattern_type.7dc)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @Method.loc8.%Self.as_type.loc8_19.2 (%Self.as_type)) -> @Method.loc8.%T (%T); +// CHECK:STDOUT: fn(%self.param: @Factory.Method.%Self.as_type.loc8_19.1 (%Self.as_type)) -> @Factory.Method.%T (%T); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Make.loc15() -> %B; +// CHECK:STDOUT: fn @A.as.Factory.impl.Make() -> %B; // CHECK:STDOUT: -// CHECK:STDOUT: fn @Method.loc16(%self.param: %A) -> %B; +// CHECK:STDOUT: fn @A.as.Factory.impl.Method(%self.param: %A) -> %B; // CHECK:STDOUT: // CHECK:STDOUT: specific @Factory(constants.%T) { // CHECK:STDOUT: %T.loc4_19.1 => constants.%T // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Make.loc6(constants.%T, constants.%Self.9ba) { +// CHECK:STDOUT: specific @Factory.Make(constants.%T, constants.%Self.9ba) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7dc // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Method.loc8(constants.%T, constants.%Self.9ba) { +// CHECK:STDOUT: specific @Factory.Method(constants.%T, constants.%Self.9ba) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %Factory.type => constants.%Factory.type.c96 // CHECK:STDOUT: %Self => constants.%Self.9ba -// CHECK:STDOUT: %Self.as_type.loc8_19.2 => constants.%Self.as_type +// CHECK:STDOUT: %Self.as_type.loc8_19.1 => constants.%Self.as_type // CHECK:STDOUT: %pattern_type.loc8_13 => constants.%pattern_type.5ea // CHECK:STDOUT: %pattern_type.loc8_27 => constants.%pattern_type.7dc // CHECK:STDOUT: } @@ -1014,25 +1014,25 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Factory.type => constants.%Factory.type.a5d // CHECK:STDOUT: %Self.2 => constants.%Self.187 -// CHECK:STDOUT: %Make.type => constants.%Make.type.c59 -// CHECK:STDOUT: %Make => constants.%Make.efe +// CHECK:STDOUT: %Factory.Make.type => constants.%Factory.Make.type.c59 +// CHECK:STDOUT: %Factory.Make => constants.%Factory.Make.efe // CHECK:STDOUT: %Factory.assoc_type => constants.%Factory.assoc_type.579 // CHECK:STDOUT: %assoc0.loc6_17.2 => constants.%assoc0.fe7 -// CHECK:STDOUT: %Method.type => constants.%Method.type.117 -// CHECK:STDOUT: %Method => constants.%Method.ea9 +// CHECK:STDOUT: %Factory.Method.type => constants.%Factory.Method.type.117 +// CHECK:STDOUT: %Factory.Method => constants.%Factory.Method.ea9 // CHECK:STDOUT: %assoc1.loc8_31.2 => constants.%assoc1.02a // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Make.loc6(constants.%B, constants.%Factory.facet) { +// CHECK:STDOUT: specific @Factory.Make(constants.%B, constants.%Factory.facet) { // CHECK:STDOUT: %T => constants.%B // CHECK:STDOUT: %pattern_type => constants.%pattern_type.049 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Method.loc8(constants.%B, constants.%Factory.facet) { +// CHECK:STDOUT: specific @Factory.Method(constants.%B, constants.%Factory.facet) { // CHECK:STDOUT: %T => constants.%B // CHECK:STDOUT: %Factory.type => constants.%Factory.type.a5d // CHECK:STDOUT: %Self => constants.%Factory.facet -// CHECK:STDOUT: %Self.as_type.loc8_19.2 => constants.%A +// CHECK:STDOUT: %Self.as_type.loc8_19.1 => constants.%A // CHECK:STDOUT: %pattern_type.loc8_13 => constants.%pattern_type.c10 // CHECK:STDOUT: %pattern_type.loc8_27 => constants.%pattern_type.049 // CHECK:STDOUT: } @@ -1051,23 +1051,23 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %Self.9ba: %Factory.type.c96 = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %Factory.type.a5d: type = facet_type <@Factory, @Factory(%B)> [concrete] // CHECK:STDOUT: %A: type = class_type @A [concrete] -// CHECK:STDOUT: %Make.type.598: type = fn_type @Make.1, @Factory(%T) [symbolic] -// CHECK:STDOUT: %Make.737: %Make.type.598 = struct_value () [symbolic] +// CHECK:STDOUT: %Factory.Make.type.598: type = fn_type @Factory.Make, @Factory(%T) [symbolic] +// CHECK:STDOUT: %Factory.Make.737: %Factory.Make.type.598 = struct_value () [symbolic] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %T [symbolic] // CHECK:STDOUT: %Factory.assoc_type.207: type = assoc_entity_type @Factory, @Factory(%T) [symbolic] // CHECK:STDOUT: %assoc0.46d25f.1: %Factory.assoc_type.207 = assoc_entity element0, imports.%Main.import_ref.21018a.1 [symbolic] -// CHECK:STDOUT: %Method.type.7ee: type = fn_type @Method.1, @Factory(%T) [symbolic] -// CHECK:STDOUT: %Method.a71: %Method.type.7ee = struct_value () [symbolic] +// CHECK:STDOUT: %Factory.Method.type.7ee: type = fn_type @Factory.Method, @Factory(%T) [symbolic] +// CHECK:STDOUT: %Factory.Method.a71: %Factory.Method.type.7ee = struct_value () [symbolic] // CHECK:STDOUT: %Self.as_type.56c: type = facet_access_type %Self.9ba [symbolic] // CHECK:STDOUT: %pattern_type.5ea: type = pattern_type %Self.as_type.56c [symbolic] // CHECK:STDOUT: %assoc1.16541d.1: %Factory.assoc_type.207 = assoc_entity element1, imports.%Main.import_ref.46fc3c.1 [symbolic] // CHECK:STDOUT: %Self.187: %Factory.type.a5d = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %Make.type.c59: type = fn_type @Make.1, @Factory(%B) [concrete] -// CHECK:STDOUT: %Make.efe: %Make.type.c59 = struct_value () [concrete] +// CHECK:STDOUT: %Factory.Make.type.c59: type = fn_type @Factory.Make, @Factory(%B) [concrete] +// CHECK:STDOUT: %Factory.Make.efe: %Factory.Make.type.c59 = struct_value () [concrete] // CHECK:STDOUT: %Factory.assoc_type.579: type = assoc_entity_type @Factory, @Factory(%B) [concrete] // CHECK:STDOUT: %assoc0.153: %Factory.assoc_type.579 = assoc_entity element0, imports.%Main.import_ref.1aa [concrete] -// CHECK:STDOUT: %Method.type.117: type = fn_type @Method.1, @Factory(%B) [concrete] -// CHECK:STDOUT: %Method.ea9: %Method.type.117 = struct_value () [concrete] +// CHECK:STDOUT: %Factory.Method.type.117: type = fn_type @Factory.Method, @Factory(%B) [concrete] +// CHECK:STDOUT: %Factory.Method.ea9: %Factory.Method.type.117 = struct_value () [concrete] // CHECK:STDOUT: %assoc1.a48: %Factory.assoc_type.579 = assoc_entity element1, imports.%Main.import_ref.5be [concrete] // CHECK:STDOUT: %pattern_type.049: type = pattern_type %B [concrete] // CHECK:STDOUT: %MakeB.type: type = fn_type @MakeB [concrete] @@ -1075,21 +1075,21 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %assoc0.46d25f.2: %Factory.assoc_type.207 = assoc_entity element0, imports.%Main.import_ref.21018a.2 [symbolic] // CHECK:STDOUT: %Factory.impl_witness: = impl_witness imports.%Factory.impl_witness_table [concrete] // CHECK:STDOUT: %Factory.facet: %Factory.type.a5d = facet_value %A, (%Factory.impl_witness) [concrete] -// CHECK:STDOUT: %.711: type = fn_type_with_self_type %Make.type.c59, %Factory.facet [concrete] -// CHECK:STDOUT: %Make.type.ec4: type = fn_type @Make.2 [concrete] -// CHECK:STDOUT: %Make.377: %Make.type.ec4 = struct_value () [concrete] +// CHECK:STDOUT: %.711: type = fn_type_with_self_type %Factory.Make.type.c59, %Factory.facet [concrete] +// CHECK:STDOUT: %A.as.Factory.impl.Make.type: type = fn_type @A.as.Factory.impl.Make [concrete] +// CHECK:STDOUT: %A.as.Factory.impl.Make: %A.as.Factory.impl.Make.type = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.1a6: type = fn_type @Op.1, @Destroy.impl(%B) [concrete] -// CHECK:STDOUT: %Op.3c2: %Op.type.1a6 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.1a6: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%B) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.3c2: %T.as.Destroy.impl.Op.type.1a6 = struct_value () [concrete] // CHECK:STDOUT: %ptr.e79: type = ptr_type %B [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.3c2, @Op.1(%B) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.3c2, @T.as.Destroy.impl.Op(%B) [concrete] // CHECK:STDOUT: %pattern_type.c10: type = pattern_type %A [concrete] // CHECK:STDOUT: %InstanceB.type: type = fn_type @InstanceB [concrete] // CHECK:STDOUT: %InstanceB: %InstanceB.type = struct_value () [concrete] // CHECK:STDOUT: %assoc1.16541d.2: %Factory.assoc_type.207 = assoc_entity element1, imports.%Main.import_ref.46fc3c.2 [symbolic] -// CHECK:STDOUT: %.fed: type = fn_type_with_self_type %Method.type.117, %Factory.facet [concrete] -// CHECK:STDOUT: %Method.type.af5: type = fn_type @Method.2 [concrete] -// CHECK:STDOUT: %Method.3d4: %Method.type.af5 = struct_value () [concrete] +// CHECK:STDOUT: %.fed: type = fn_type_with_self_type %Factory.Method.type.117, %Factory.facet [concrete] +// CHECK:STDOUT: %A.as.Factory.impl.Method.type: type = fn_type @A.as.Factory.impl.Method [concrete] +// CHECK:STDOUT: %A.as.Factory.impl.Method: %A.as.Factory.impl.Method.type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -1122,12 +1122,12 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %Main.import_ref.5ab3ec.3: type = import_ref Main//factory, loc4_19, loaded [symbolic = @Factory.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.91b53a.2: @Factory.%Factory.type (%Factory.type.c96) = import_ref Main//factory, inst27 [no loc], loaded [symbolic = @Factory.%Self (constants.%Self.9ba)] // CHECK:STDOUT: %Main.import_ref.46fc3c.1 = import_ref Main//factory, loc8_31, unloaded -// CHECK:STDOUT: %Main.import_ref.1aa: @Factory.%Make.type (%Make.type.598) = import_ref Main//factory, loc6_17, loaded [symbolic = @Factory.%Make (constants.%Make.737)] -// CHECK:STDOUT: %Main.import_ref.5be: @Factory.%Method.type (%Method.type.7ee) = import_ref Main//factory, loc8_31, loaded [symbolic = @Factory.%Method (constants.%Method.a71)] +// CHECK:STDOUT: %Main.import_ref.1aa: @Factory.%Factory.Make.type (%Factory.Make.type.598) = import_ref Main//factory, loc6_17, loaded [symbolic = @Factory.%Factory.Make (constants.%Factory.Make.737)] +// CHECK:STDOUT: %Main.import_ref.5be: @Factory.%Factory.Method.type (%Factory.Method.type.7ee) = import_ref Main//factory, loc8_31, loaded [symbolic = @Factory.%Factory.Method (constants.%Factory.Method.a71)] // CHECK:STDOUT: %Main.import_ref.21018a.2 = import_ref Main//factory, loc6_17, unloaded -// CHECK:STDOUT: %Main.import_ref.9ec: %Make.type.ec4 = import_ref Main//factory, loc15_17, loaded [concrete = constants.%Make.377] -// CHECK:STDOUT: %Main.import_ref.7dd: %Method.type.af5 = import_ref Main//factory, loc16_31, loaded [concrete = constants.%Method.3d4] -// CHECK:STDOUT: %Factory.impl_witness_table = impl_witness_table (%Main.import_ref.9ec, %Main.import_ref.7dd), @Factory.impl [concrete] +// CHECK:STDOUT: %Main.import_ref.9ec: %A.as.Factory.impl.Make.type = import_ref Main//factory, loc15_17, loaded [concrete = constants.%A.as.Factory.impl.Make] +// CHECK:STDOUT: %Main.import_ref.7dd: %A.as.Factory.impl.Method.type = import_ref Main//factory, loc16_31, loaded [concrete = constants.%A.as.Factory.impl.Method] +// CHECK:STDOUT: %Factory.impl_witness_table = impl_witness_table (%Main.import_ref.9ec, %Main.import_ref.7dd), @A.as.Factory.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: %Main.import_ref.46fc3c.2 = import_ref Main//factory, loc8_31, unloaded // CHECK:STDOUT: } @@ -1173,12 +1173,12 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Factory.type: type = facet_type <@Factory, @Factory(%T)> [symbolic = %Factory.type (constants.%Factory.type.c96)] // CHECK:STDOUT: %Self: @Factory.%Factory.type (%Factory.type.c96) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.9ba)] -// CHECK:STDOUT: %Make.type: type = fn_type @Make.1, @Factory(%T) [symbolic = %Make.type (constants.%Make.type.598)] -// CHECK:STDOUT: %Make: @Factory.%Make.type (%Make.type.598) = struct_value () [symbolic = %Make (constants.%Make.737)] +// CHECK:STDOUT: %Factory.Make.type: type = fn_type @Factory.Make, @Factory(%T) [symbolic = %Factory.Make.type (constants.%Factory.Make.type.598)] +// CHECK:STDOUT: %Factory.Make: @Factory.%Factory.Make.type (%Factory.Make.type.598) = struct_value () [symbolic = %Factory.Make (constants.%Factory.Make.737)] // CHECK:STDOUT: %Factory.assoc_type: type = assoc_entity_type @Factory, @Factory(%T) [symbolic = %Factory.assoc_type (constants.%Factory.assoc_type.207)] // CHECK:STDOUT: %assoc0: @Factory.%Factory.assoc_type (%Factory.assoc_type.207) = assoc_entity element0, imports.%Main.import_ref.21018a.1 [symbolic = %assoc0 (constants.%assoc0.46d25f.1)] -// CHECK:STDOUT: %Method.type: type = fn_type @Method.1, @Factory(%T) [symbolic = %Method.type (constants.%Method.type.7ee)] -// CHECK:STDOUT: %Method: @Factory.%Method.type (%Method.type.7ee) = struct_value () [symbolic = %Method (constants.%Method.a71)] +// CHECK:STDOUT: %Factory.Method.type: type = fn_type @Factory.Method, @Factory(%T) [symbolic = %Factory.Method.type (constants.%Factory.Method.type.7ee)] +// CHECK:STDOUT: %Factory.Method: @Factory.%Factory.Method.type (%Factory.Method.type.7ee) = struct_value () [symbolic = %Factory.Method (constants.%Factory.Method.a71)] // CHECK:STDOUT: %assoc1: @Factory.%Factory.assoc_type (%Factory.assoc_type.207) = assoc_entity element1, imports.%Main.import_ref.46fc3c.1 [symbolic = %assoc1 (constants.%assoc1.16541d.1)] // CHECK:STDOUT: // CHECK:STDOUT: interface { @@ -1190,7 +1190,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Factory.impl: imports.%Main.import_ref.984 as imports.%Main.import_ref.bd2 [from "factory.carbon"] { +// CHECK:STDOUT: impl @A.as.Factory.impl: imports.%Main.import_ref.984 as imports.%Main.import_ref.bd2 [from "factory.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Make = imports.%Main.import_ref.a27 // CHECK:STDOUT: .Method = imports.%Main.import_ref.163 @@ -1211,17 +1211,17 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: .Self = imports.%Main.import_ref.da3 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Make.1(imports.%Main.import_ref.5ab3ec.2: type, imports.%Main.import_ref.91b53a.1: @Factory.%Factory.type (%Factory.type.c96)) [from "factory.carbon"] { +// CHECK:STDOUT: generic fn @Factory.Make(imports.%Main.import_ref.5ab3ec.2: type, imports.%Main.import_ref.91b53a.1: @Factory.%Factory.type (%Factory.type.c96)) [from "factory.carbon"] { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %pattern_type: type = pattern_type %T [symbolic = %pattern_type (constants.%pattern_type.7dc)] // CHECK:STDOUT: // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Method.1(imports.%Main.import_ref.5ab3ec.3: type, imports.%Main.import_ref.91b53a.2: @Factory.%Factory.type (%Factory.type.c96)) [from "factory.carbon"] { +// CHECK:STDOUT: generic fn @Factory.Method(imports.%Main.import_ref.5ab3ec.3: type, imports.%Main.import_ref.91b53a.2: @Factory.%Factory.type (%Factory.type.c96)) [from "factory.carbon"] { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Factory.type: type = facet_type <@Factory, @Factory(%T)> [symbolic = %Factory.type (constants.%Factory.type.c96)] -// CHECK:STDOUT: %Self: @Method.1.%Factory.type (%Factory.type.c96) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.9ba)] +// CHECK:STDOUT: %Self: @Factory.Method.%Factory.type (%Factory.type.c96) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.9ba)] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic = %Self.as_type (constants.%Self.as_type.56c)] // CHECK:STDOUT: %pattern_type.1: type = pattern_type %Self.as_type [symbolic = %pattern_type.1 (constants.%pattern_type.5ea)] // CHECK:STDOUT: %pattern_type.2: type = pattern_type %T [symbolic = %pattern_type.2 (constants.%pattern_type.7dc)] @@ -1239,18 +1239,18 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %Make.ref: %Factory.assoc_type.579 = name_ref Make, %.loc5_23 [concrete = constants.%assoc0.153] // CHECK:STDOUT: %Factory.facet: %Factory.type.a5d = facet_value constants.%A, (constants.%Factory.impl_witness) [concrete = constants.%Factory.facet] // CHECK:STDOUT: %.loc5_11: %Factory.type.a5d = converted %A.ref, %Factory.facet [concrete = constants.%Factory.facet] -// CHECK:STDOUT: %impl.elem0: %.711 = impl_witness_access constants.%Factory.impl_witness, element0 [concrete = constants.%Make.377] +// CHECK:STDOUT: %impl.elem0: %.711 = impl_witness_access constants.%Factory.impl_witness, element0 [concrete = constants.%A.as.Factory.impl.Make] // CHECK:STDOUT: %.loc4: ref %B = splice_block %return {} -// CHECK:STDOUT: %Make.call: init %B = call %impl.elem0() to %.loc4 -// CHECK:STDOUT: %Op.bound: = bound_method %.loc4, constants.%Op.3c2 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.3c2, @Op.1(constants.%B) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc4, %Op.specific_fn +// CHECK:STDOUT: %A.as.Factory.impl.Make.call: init %B = call %impl.elem0() to %.loc4 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc4, constants.%T.as.Destroy.impl.Op.3c2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.3c2, @T.as.Destroy.impl.Op(constants.%B) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %.loc4, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.e79 = addr_of %.loc4 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) -// CHECK:STDOUT: return %Make.call to %return +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: return %A.as.Factory.impl.Make.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Make.2 [from "factory.carbon"]; +// CHECK:STDOUT: fn @A.as.Factory.impl.Make [from "factory.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: fn @InstanceB(%a.param: %A) -> %return.param: %B { // CHECK:STDOUT: !entry: @@ -1260,19 +1260,19 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %Factory.type: type = facet_type <@Factory, @Factory(constants.%B)> [concrete = constants.%Factory.type.a5d] // CHECK:STDOUT: %.loc8: %Factory.assoc_type.579 = specific_constant imports.%Main.import_ref.2e4, @Factory(constants.%B) [concrete = constants.%assoc1.a48] // CHECK:STDOUT: %Method.ref: %Factory.assoc_type.579 = name_ref Method, %.loc8 [concrete = constants.%assoc1.a48] -// CHECK:STDOUT: %impl.elem1: %.fed = impl_witness_access constants.%Factory.impl_witness, element1 [concrete = constants.%Method.3d4] +// CHECK:STDOUT: %impl.elem1: %.fed = impl_witness_access constants.%Factory.impl_witness, element1 [concrete = constants.%A.as.Factory.impl.Method] // CHECK:STDOUT: %bound_method.loc8: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: %.loc7: ref %B = splice_block %return {} -// CHECK:STDOUT: %Method.call: init %B = call %bound_method.loc8(%a.ref) to %.loc7 -// CHECK:STDOUT: %Op.bound: = bound_method %.loc7, constants.%Op.3c2 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.3c2, @Op.1(constants.%B) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc7: = bound_method %.loc7, %Op.specific_fn +// CHECK:STDOUT: %A.as.Factory.impl.Method.call: init %B = call %bound_method.loc8(%a.ref) to %.loc7 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc7, constants.%T.as.Destroy.impl.Op.3c2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.3c2, @T.as.Destroy.impl.Op(constants.%B) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc7: = bound_method %.loc7, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.e79 = addr_of %.loc7 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc7(%addr) -// CHECK:STDOUT: return %Method.call to %return +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc7(%addr) +// CHECK:STDOUT: return %A.as.Factory.impl.Method.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Method.2 [from "factory.carbon"]; +// CHECK:STDOUT: fn @A.as.Factory.impl.Method [from "factory.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: specific @Factory(constants.%T) { // CHECK:STDOUT: %T => constants.%T @@ -1284,21 +1284,21 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Factory.type => constants.%Factory.type.a5d // CHECK:STDOUT: %Self => constants.%Self.187 -// CHECK:STDOUT: %Make.type => constants.%Make.type.c59 -// CHECK:STDOUT: %Make => constants.%Make.efe +// CHECK:STDOUT: %Factory.Make.type => constants.%Factory.Make.type.c59 +// CHECK:STDOUT: %Factory.Make => constants.%Factory.Make.efe // CHECK:STDOUT: %Factory.assoc_type => constants.%Factory.assoc_type.579 // CHECK:STDOUT: %assoc0 => constants.%assoc0.153 -// CHECK:STDOUT: %Method.type => constants.%Method.type.117 -// CHECK:STDOUT: %Method => constants.%Method.ea9 +// CHECK:STDOUT: %Factory.Method.type => constants.%Factory.Method.type.117 +// CHECK:STDOUT: %Factory.Method => constants.%Factory.Method.ea9 // CHECK:STDOUT: %assoc1 => constants.%assoc1.a48 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Make.1(constants.%T, constants.%Self.9ba) { +// CHECK:STDOUT: specific @Factory.Make(constants.%T, constants.%Self.9ba) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7dc // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Method.1(constants.%T, constants.%Self.9ba) { +// CHECK:STDOUT: specific @Factory.Method(constants.%T, constants.%Self.9ba) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %Factory.type => constants.%Factory.type.c96 // CHECK:STDOUT: %Self => constants.%Self.9ba @@ -1320,23 +1320,23 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %Self.9ba: %Factory.type.c96 = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %Factory.type.a5d: type = facet_type <@Factory, @Factory(%B)> [concrete] // CHECK:STDOUT: %A: type = class_type @A [concrete] -// CHECK:STDOUT: %Make.type.598: type = fn_type @Make, @Factory(%T) [symbolic] -// CHECK:STDOUT: %Make.737: %Make.type.598 = struct_value () [symbolic] +// CHECK:STDOUT: %Factory.Make.type.598: type = fn_type @Factory.Make, @Factory(%T) [symbolic] +// CHECK:STDOUT: %Factory.Make.737: %Factory.Make.type.598 = struct_value () [symbolic] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %T [symbolic] // CHECK:STDOUT: %Factory.assoc_type.207: type = assoc_entity_type @Factory, @Factory(%T) [symbolic] // CHECK:STDOUT: %assoc0.fe4: %Factory.assoc_type.207 = assoc_entity element0, imports.%Main.import_ref.1aa [symbolic] -// CHECK:STDOUT: %Method.type.7ee: type = fn_type @Method, @Factory(%T) [symbolic] -// CHECK:STDOUT: %Method.a71: %Method.type.7ee = struct_value () [symbolic] +// CHECK:STDOUT: %Factory.Method.type.7ee: type = fn_type @Factory.Method, @Factory(%T) [symbolic] +// CHECK:STDOUT: %Factory.Method.a71: %Factory.Method.type.7ee = struct_value () [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self.9ba [symbolic] // CHECK:STDOUT: %pattern_type.5ea: type = pattern_type %Self.as_type [symbolic] // CHECK:STDOUT: %assoc1.ea6: %Factory.assoc_type.207 = assoc_entity element1, imports.%Main.import_ref.5be [symbolic] // CHECK:STDOUT: %Self.187: %Factory.type.a5d = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %Make.type.c59: type = fn_type @Make, @Factory(%B) [concrete] -// CHECK:STDOUT: %Make.efe: %Make.type.c59 = struct_value () [concrete] +// CHECK:STDOUT: %Factory.Make.type.c59: type = fn_type @Factory.Make, @Factory(%B) [concrete] +// CHECK:STDOUT: %Factory.Make.efe: %Factory.Make.type.c59 = struct_value () [concrete] // CHECK:STDOUT: %Factory.assoc_type.579: type = assoc_entity_type @Factory, @Factory(%B) [concrete] // CHECK:STDOUT: %assoc0.cc7: %Factory.assoc_type.579 = assoc_entity element0, imports.%Main.import_ref.21018a.1 [concrete] -// CHECK:STDOUT: %Method.type.117: type = fn_type @Method, @Factory(%B) [concrete] -// CHECK:STDOUT: %Method.ea9: %Method.type.117 = struct_value () [concrete] +// CHECK:STDOUT: %Factory.Method.type.117: type = fn_type @Factory.Method, @Factory(%B) [concrete] +// CHECK:STDOUT: %Factory.Method.ea9: %Factory.Method.type.117 = struct_value () [concrete] // CHECK:STDOUT: %assoc1.535: %Factory.assoc_type.579 = assoc_entity element1, imports.%Main.import_ref.46fc3c.1 [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] @@ -1344,12 +1344,12 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %MakeC: %MakeC.type = struct_value () [concrete] // CHECK:STDOUT: %Factory.type.5c5: type = facet_type <@Factory, @Factory(%C)> [concrete] // CHECK:STDOUT: %Self.424: %Factory.type.5c5 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %Make.type.0de: type = fn_type @Make, @Factory(%C) [concrete] -// CHECK:STDOUT: %Make.8ba: %Make.type.0de = struct_value () [concrete] +// CHECK:STDOUT: %Factory.Make.type.0de: type = fn_type @Factory.Make, @Factory(%C) [concrete] +// CHECK:STDOUT: %Factory.Make.8ba: %Factory.Make.type.0de = struct_value () [concrete] // CHECK:STDOUT: %Factory.assoc_type.d01: type = assoc_entity_type @Factory, @Factory(%C) [concrete] // CHECK:STDOUT: %assoc0.38e: %Factory.assoc_type.d01 = assoc_entity element0, imports.%Main.import_ref.1aa [concrete] -// CHECK:STDOUT: %Method.type.d46: type = fn_type @Method, @Factory(%C) [concrete] -// CHECK:STDOUT: %Method.f9e: %Method.type.d46 = struct_value () [concrete] +// CHECK:STDOUT: %Factory.Method.type.d46: type = fn_type @Factory.Method, @Factory(%C) [concrete] +// CHECK:STDOUT: %Factory.Method.f9e: %Factory.Method.type.d46 = struct_value () [concrete] // CHECK:STDOUT: %assoc1.263: %Factory.assoc_type.d01 = assoc_entity element1, imports.%Main.import_ref.5be [concrete] // CHECK:STDOUT: %assoc0.46d: %Factory.assoc_type.207 = assoc_entity element0, imports.%Main.import_ref.21018a.2 [symbolic] // CHECK:STDOUT: %pattern_type.c10: type = pattern_type %A [concrete] @@ -1384,10 +1384,10 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %Main.import_ref.163 = import_ref Main//factory, loc16_31, unloaded // CHECK:STDOUT: %Main.import_ref.5ab3ec.2: type = import_ref Main//factory, loc4_19, loaded [symbolic = @Factory.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.91b53a.1: @Factory.%Factory.type (%Factory.type.c96) = import_ref Main//factory, inst27 [no loc], loaded [symbolic = @Factory.%Self (constants.%Self.9ba)] -// CHECK:STDOUT: %Main.import_ref.1aa: @Factory.%Make.type (%Make.type.598) = import_ref Main//factory, loc6_17, loaded [symbolic = @Factory.%Make (constants.%Make.737)] +// CHECK:STDOUT: %Main.import_ref.1aa: @Factory.%Factory.Make.type (%Factory.Make.type.598) = import_ref Main//factory, loc6_17, loaded [symbolic = @Factory.%Factory.Make (constants.%Factory.Make.737)] // CHECK:STDOUT: %Main.import_ref.5ab3ec.3: type = import_ref Main//factory, loc4_19, loaded [symbolic = @Factory.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.91b53a.2: @Factory.%Factory.type (%Factory.type.c96) = import_ref Main//factory, inst27 [no loc], loaded [symbolic = @Factory.%Self (constants.%Self.9ba)] -// CHECK:STDOUT: %Main.import_ref.5be: @Factory.%Method.type (%Method.type.7ee) = import_ref Main//factory, loc8_31, loaded [symbolic = @Factory.%Method (constants.%Method.a71)] +// CHECK:STDOUT: %Main.import_ref.5be: @Factory.%Factory.Method.type (%Factory.Method.type.7ee) = import_ref Main//factory, loc8_31, loaded [symbolic = @Factory.%Factory.Method (constants.%Factory.Method.a71)] // CHECK:STDOUT: %Main.import_ref.21018a.1 = import_ref Main//factory, loc6_17, unloaded // CHECK:STDOUT: %Main.import_ref.46fc3c.1 = import_ref Main//factory, loc8_31, unloaded // CHECK:STDOUT: %Main.import_ref.21018a.2 = import_ref Main//factory, loc6_17, unloaded @@ -1437,12 +1437,12 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Factory.type: type = facet_type <@Factory, @Factory(%T)> [symbolic = %Factory.type (constants.%Factory.type.c96)] // CHECK:STDOUT: %Self: @Factory.%Factory.type (%Factory.type.c96) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.9ba)] -// CHECK:STDOUT: %Make.type: type = fn_type @Make, @Factory(%T) [symbolic = %Make.type (constants.%Make.type.598)] -// CHECK:STDOUT: %Make: @Factory.%Make.type (%Make.type.598) = struct_value () [symbolic = %Make (constants.%Make.737)] +// CHECK:STDOUT: %Factory.Make.type: type = fn_type @Factory.Make, @Factory(%T) [symbolic = %Factory.Make.type (constants.%Factory.Make.type.598)] +// CHECK:STDOUT: %Factory.Make: @Factory.%Factory.Make.type (%Factory.Make.type.598) = struct_value () [symbolic = %Factory.Make (constants.%Factory.Make.737)] // CHECK:STDOUT: %Factory.assoc_type: type = assoc_entity_type @Factory, @Factory(%T) [symbolic = %Factory.assoc_type (constants.%Factory.assoc_type.207)] // CHECK:STDOUT: %assoc0: @Factory.%Factory.assoc_type (%Factory.assoc_type.207) = assoc_entity element0, imports.%Main.import_ref.1aa [symbolic = %assoc0 (constants.%assoc0.fe4)] -// CHECK:STDOUT: %Method.type: type = fn_type @Method, @Factory(%T) [symbolic = %Method.type (constants.%Method.type.7ee)] -// CHECK:STDOUT: %Method: @Factory.%Method.type (%Method.type.7ee) = struct_value () [symbolic = %Method (constants.%Method.a71)] +// CHECK:STDOUT: %Factory.Method.type: type = fn_type @Factory.Method, @Factory(%T) [symbolic = %Factory.Method.type (constants.%Factory.Method.type.7ee)] +// CHECK:STDOUT: %Factory.Method: @Factory.%Factory.Method.type (%Factory.Method.type.7ee) = struct_value () [symbolic = %Factory.Method (constants.%Factory.Method.a71)] // CHECK:STDOUT: %assoc1: @Factory.%Factory.assoc_type (%Factory.assoc_type.207) = assoc_entity element1, imports.%Main.import_ref.5be [symbolic = %assoc1 (constants.%assoc1.ea6)] // CHECK:STDOUT: // CHECK:STDOUT: interface { @@ -1454,7 +1454,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Factory.impl: imports.%Main.import_ref.984 as imports.%Main.import_ref.bd2 [from "factory.carbon"] { +// CHECK:STDOUT: impl @A.as.Factory.impl: imports.%Main.import_ref.984 as imports.%Main.import_ref.bd2 [from "factory.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Make = imports.%Main.import_ref.a27 // CHECK:STDOUT: .Method = imports.%Main.import_ref.163 @@ -1484,17 +1484,17 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Make(imports.%Main.import_ref.5ab3ec.2: type, imports.%Main.import_ref.91b53a.1: @Factory.%Factory.type (%Factory.type.c96)) [from "factory.carbon"] { +// CHECK:STDOUT: generic fn @Factory.Make(imports.%Main.import_ref.5ab3ec.2: type, imports.%Main.import_ref.91b53a.1: @Factory.%Factory.type (%Factory.type.c96)) [from "factory.carbon"] { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %pattern_type: type = pattern_type %T [symbolic = %pattern_type (constants.%pattern_type.7dc)] // CHECK:STDOUT: // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Method(imports.%Main.import_ref.5ab3ec.3: type, imports.%Main.import_ref.91b53a.2: @Factory.%Factory.type (%Factory.type.c96)) [from "factory.carbon"] { +// CHECK:STDOUT: generic fn @Factory.Method(imports.%Main.import_ref.5ab3ec.3: type, imports.%Main.import_ref.91b53a.2: @Factory.%Factory.type (%Factory.type.c96)) [from "factory.carbon"] { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Factory.type: type = facet_type <@Factory, @Factory(%T)> [symbolic = %Factory.type (constants.%Factory.type.c96)] -// CHECK:STDOUT: %Self: @Method.%Factory.type (%Factory.type.c96) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.9ba)] +// CHECK:STDOUT: %Self: @Factory.Method.%Factory.type (%Factory.type.c96) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.9ba)] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic = %Self.as_type (constants.%Self.as_type)] // CHECK:STDOUT: %pattern_type.1: type = pattern_type %Self.as_type [symbolic = %pattern_type.1 (constants.%pattern_type.5ea)] // CHECK:STDOUT: %pattern_type.2: type = pattern_type %T [symbolic = %pattern_type.2 (constants.%pattern_type.7dc)] @@ -1534,21 +1534,21 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Factory.type => constants.%Factory.type.a5d // CHECK:STDOUT: %Self => constants.%Self.187 -// CHECK:STDOUT: %Make.type => constants.%Make.type.c59 -// CHECK:STDOUT: %Make => constants.%Make.efe +// CHECK:STDOUT: %Factory.Make.type => constants.%Factory.Make.type.c59 +// CHECK:STDOUT: %Factory.Make => constants.%Factory.Make.efe // CHECK:STDOUT: %Factory.assoc_type => constants.%Factory.assoc_type.579 // CHECK:STDOUT: %assoc0 => constants.%assoc0.cc7 -// CHECK:STDOUT: %Method.type => constants.%Method.type.117 -// CHECK:STDOUT: %Method => constants.%Method.ea9 +// CHECK:STDOUT: %Factory.Method.type => constants.%Factory.Method.type.117 +// CHECK:STDOUT: %Factory.Method => constants.%Factory.Method.ea9 // CHECK:STDOUT: %assoc1 => constants.%assoc1.535 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Make(constants.%T, constants.%Self.9ba) { +// CHECK:STDOUT: specific @Factory.Make(constants.%T, constants.%Self.9ba) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7dc // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Method(constants.%T, constants.%Self.9ba) { +// CHECK:STDOUT: specific @Factory.Method(constants.%T, constants.%Self.9ba) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %Factory.type => constants.%Factory.type.c96 // CHECK:STDOUT: %Self => constants.%Self.9ba @@ -1563,12 +1563,12 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Factory.type => constants.%Factory.type.5c5 // CHECK:STDOUT: %Self => constants.%Self.424 -// CHECK:STDOUT: %Make.type => constants.%Make.type.0de -// CHECK:STDOUT: %Make => constants.%Make.8ba +// CHECK:STDOUT: %Factory.Make.type => constants.%Factory.Make.type.0de +// CHECK:STDOUT: %Factory.Make => constants.%Factory.Make.8ba // CHECK:STDOUT: %Factory.assoc_type => constants.%Factory.assoc_type.d01 // CHECK:STDOUT: %assoc0 => constants.%assoc0.38e -// CHECK:STDOUT: %Method.type => constants.%Method.type.d46 -// CHECK:STDOUT: %Method => constants.%Method.f9e +// CHECK:STDOUT: %Factory.Method.type => constants.%Factory.Method.type.d46 +// CHECK:STDOUT: %Factory.Method => constants.%Factory.Method.f9e // CHECK:STDOUT: %assoc1 => constants.%assoc1.263 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/lookup/alias.carbon b/toolchain/check/testdata/impl/lookup/alias.carbon index 009d7d3a0c58..677a0610929c 100644 --- a/toolchain/check/testdata/impl/lookup/alias.carbon +++ b/toolchain/check/testdata/impl/lookup/alias.carbon @@ -34,22 +34,22 @@ fn G(c: C) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %HasF.type: type = facet_type <@HasF> [concrete] // CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.b7b: type = fn_type @F.loc16 [concrete] +// CHECK:STDOUT: %HasF.F.type: type = fn_type @HasF.F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F.f50: %F.type.b7b = struct_value () [concrete] +// CHECK:STDOUT: %HasF.F: %HasF.F.type = struct_value () [concrete] // CHECK:STDOUT: %HasF.assoc_type: type = assoc_entity_type @HasF [concrete] -// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, @HasF.%F.decl [concrete] +// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, @HasF.%HasF.F.decl [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %HasF.impl_witness: = impl_witness file.%HasF.impl_witness_table [concrete] -// CHECK:STDOUT: %F.type.a02: type = fn_type @F.loc24 [concrete] -// CHECK:STDOUT: %F.dc7: %F.type.a02 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.HasF.impl.F.type: type = fn_type @C.as.HasF.impl.F [concrete] +// CHECK:STDOUT: %C.as.HasF.impl.F: %C.as.HasF.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %HasF.facet: %HasF.type = facet_value %C, (%HasF.impl_witness) [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] -// CHECK:STDOUT: %.fec: type = fn_type_with_self_type %F.type.b7b, %HasF.facet [concrete] +// CHECK:STDOUT: %.fec: type = fn_type_with_self_type %HasF.F.type, %HasF.facet [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -60,11 +60,11 @@ fn G(c: C) { // CHECK:STDOUT: } // CHECK:STDOUT: %HasF.decl: type = interface_decl @HasF [concrete = constants.%HasF.type] {} {} // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} -// CHECK:STDOUT: impl_decl @HasF.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.HasF.impl [concrete] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [concrete = constants.%HasF.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %HasF.impl_witness_table = impl_witness_table (@HasF.impl.%F.decl), @HasF.impl [concrete] +// CHECK:STDOUT: %HasF.impl_witness_table = impl_witness_table (@C.as.HasF.impl.%C.as.HasF.impl.F.decl), @C.as.HasF.impl [concrete] // CHECK:STDOUT: %HasF.impl_witness: = impl_witness %HasF.impl_witness_table [concrete = constants.%HasF.impl_witness] // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { // CHECK:STDOUT: %c.patt: %pattern_type = binding_pattern c [concrete] @@ -78,20 +78,20 @@ fn G(c: C) { // CHECK:STDOUT: // CHECK:STDOUT: interface @HasF { // CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %F.decl: %F.type.b7b = fn_decl @F.loc16 [concrete = constants.%F.f50] {} {} -// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %HasF.F.decl: %HasF.F.type = fn_decl @HasF.F [concrete = constants.%HasF.F] {} {} +// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, %HasF.F.decl [concrete = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F = %assoc0 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%HasF.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @HasF.impl: %C.ref as %HasF.ref { -// CHECK:STDOUT: %F.decl: %F.type.a02 = fn_decl @F.loc24 [concrete = constants.%F.dc7] {} {} +// CHECK:STDOUT: impl @C.as.HasF.impl: %C.ref as %HasF.ref { +// CHECK:STDOUT: %C.as.HasF.impl.F.decl: %C.as.HasF.impl.F.type = fn_decl @C.as.HasF.impl.F [concrete = constants.%C.as.HasF.impl.F] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %C.as.HasF.impl.F.decl // CHECK:STDOUT: witness = file.%HasF.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: @@ -109,11 +109,11 @@ fn G(c: C) { // CHECK:STDOUT: .G = %G // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc16(@HasF.%Self: %HasF.type) { +// CHECK:STDOUT: generic fn @HasF.F(@HasF.%Self: %HasF.type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc24() { +// CHECK:STDOUT: fn @C.as.HasF.impl.F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -122,16 +122,16 @@ fn G(c: C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %C.ref.loc28: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %G.ref.loc28: %HasF.assoc_type = name_ref G, @C.%G [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc28: %.fec = impl_witness_access constants.%HasF.impl_witness, element0 [concrete = constants.%F.dc7] -// CHECK:STDOUT: %F.call.loc28: init %empty_tuple.type = call %impl.elem0.loc28() +// CHECK:STDOUT: %impl.elem0.loc28: %.fec = impl_witness_access constants.%HasF.impl_witness, element0 [concrete = constants.%C.as.HasF.impl.F] +// CHECK:STDOUT: %C.as.HasF.impl.F.call.loc28: init %empty_tuple.type = call %impl.elem0.loc28() // CHECK:STDOUT: %c.ref: %C = name_ref c, %c // CHECK:STDOUT: %G.ref.loc29: %HasF.assoc_type = name_ref G, @C.%G [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc29: %.fec = impl_witness_access constants.%HasF.impl_witness, element0 [concrete = constants.%F.dc7] -// CHECK:STDOUT: %F.call.loc29: init %empty_tuple.type = call %impl.elem0.loc29() +// CHECK:STDOUT: %impl.elem0.loc29: %.fec = impl_witness_access constants.%HasF.impl_witness, element0 [concrete = constants.%C.as.HasF.impl.F] +// CHECK:STDOUT: %C.as.HasF.impl.F.call.loc29: init %empty_tuple.type = call %impl.elem0.loc29() // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc16(constants.%Self) {} +// CHECK:STDOUT: specific @HasF.F(constants.%Self) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc16(constants.%HasF.facet) {} +// CHECK:STDOUT: specific @HasF.F(constants.%HasF.facet) {} // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/lookup/canonical_query_self.carbon b/toolchain/check/testdata/impl/lookup/canonical_query_self.carbon index fc3ee147e45d..164eaf698379 100644 --- a/toolchain/check/testdata/impl/lookup/canonical_query_self.carbon +++ b/toolchain/check/testdata/impl/lookup/canonical_query_self.carbon @@ -53,29 +53,29 @@ fn G() { // CHECK:STDOUT: %Self.826: %I.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type.b70: type = facet_access_type %Self.826 [symbolic] // CHECK:STDOUT: %pattern_type.6de: type = pattern_type %Self.as_type.b70 [symbolic] -// CHECK:STDOUT: %II.type.465: type = fn_type @II.loc16 [concrete] +// CHECK:STDOUT: %I.II.type: type = fn_type @I.II [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %II.a07: %II.type.465 = struct_value () [concrete] +// CHECK:STDOUT: %I.II: %I.II.type = struct_value () [concrete] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] -// CHECK:STDOUT: %assoc0.82e: %I.assoc_type = assoc_entity element0, @I.%II.decl [concrete] +// CHECK:STDOUT: %assoc0.82e: %I.assoc_type = assoc_entity element0, @I.%I.II.decl [concrete] // CHECK:STDOUT: %J.type: type = facet_type <@J> [concrete] // CHECK:STDOUT: %Self.ccd: %J.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type.3df: type = facet_access_type %Self.ccd [symbolic] // CHECK:STDOUT: %pattern_type.4ca: type = pattern_type %Self.as_type.3df [symbolic] -// CHECK:STDOUT: %JJ.type.622: type = fn_type @JJ.loc19 [concrete] -// CHECK:STDOUT: %JJ.5f5: %JJ.type.622 = struct_value () [concrete] +// CHECK:STDOUT: %J.JJ.type: type = fn_type @J.JJ [concrete] +// CHECK:STDOUT: %J.JJ: %J.JJ.type = struct_value () [concrete] // CHECK:STDOUT: %J.assoc_type: type = assoc_entity_type @J [concrete] -// CHECK:STDOUT: %assoc0.78c: %J.assoc_type = assoc_entity element0, @J.%JJ.decl [concrete] +// CHECK:STDOUT: %assoc0.78c: %J.assoc_type = assoc_entity element0, @J.%J.JJ.decl [concrete] // CHECK:STDOUT: %BitAndWith.type.f2e: type = generic_interface_type @BitAndWith [concrete] // CHECK:STDOUT: %BitAndWith.generic: %BitAndWith.type.f2e = struct_value () [concrete] // CHECK:STDOUT: %BitAndWith.type.e8c: type = facet_type <@BitAndWith, @BitAndWith(type)> [concrete] -// CHECK:STDOUT: %Op.type.9a3: type = fn_type @Op.1, @BitAndWith(type) [concrete] +// CHECK:STDOUT: %BitAndWith.Op.type.9a3: type = fn_type @BitAndWith.Op, @BitAndWith(type) [concrete] // CHECK:STDOUT: %BitAndWith.impl_witness: = impl_witness imports.%BitAndWith.impl_witness_table [concrete] // CHECK:STDOUT: %BitAndWith.facet: %BitAndWith.type.e8c = facet_value type, (%BitAndWith.impl_witness) [concrete] -// CHECK:STDOUT: %.2af: type = fn_type_with_self_type %Op.type.9a3, %BitAndWith.facet [concrete] -// CHECK:STDOUT: %Op.type.1cc: type = fn_type @Op.2 [concrete] -// CHECK:STDOUT: %Op.ff4: %Op.type.1cc = struct_value () [concrete] -// CHECK:STDOUT: %Op.bound: = bound_method %I.type, %Op.ff4 [concrete] +// CHECK:STDOUT: %.2af: type = fn_type_with_self_type %BitAndWith.Op.type.9a3, %BitAndWith.facet [concrete] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.type: type = fn_type @type.as.BitAndWith.impl.Op [concrete] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op: %type.as.BitAndWith.impl.Op.type = struct_value () [concrete] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.bound: = bound_method %I.type, %type.as.BitAndWith.impl.Op [concrete] // CHECK:STDOUT: %facet_type: type = facet_type <@I & @J> [concrete] // CHECK:STDOUT: %T.527: %facet_type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.f8f: type = pattern_type %facet_type [concrete] @@ -88,32 +88,32 @@ fn G() { // CHECK:STDOUT: %I.facet.e75: %I.type = facet_value %T.as_type, (%I.lookup_impl_witness) [symbolic] // CHECK:STDOUT: %J.lookup_impl_witness: = lookup_impl_witness %T.527, @J [symbolic] // CHECK:STDOUT: %J.facet.fa4: %J.type = facet_value %T.as_type, (%J.lookup_impl_witness) [symbolic] -// CHECK:STDOUT: %.935: type = fn_type_with_self_type %JJ.type.622, %J.facet.fa4 [symbolic] +// CHECK:STDOUT: %.935: type = fn_type_with_self_type %J.JJ.type, %J.facet.fa4 [symbolic] // CHECK:STDOUT: %impl.elem0: %.935 = impl_witness_access %J.lookup_impl_witness, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @JJ.loc19(%J.facet.fa4) [symbolic] +// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @J.JJ(%J.facet.fa4) [symbolic] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @C.%I.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.893: type = pattern_type %C [concrete] -// CHECK:STDOUT: %II.type.f11: type = fn_type @II.loc32 [concrete] -// CHECK:STDOUT: %II.b71: %II.type.f11 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.I.impl.II.type: type = fn_type @C.as.I.impl.II [concrete] +// CHECK:STDOUT: %C.as.I.impl.II: %C.as.I.impl.II.type = struct_value () [concrete] // CHECK:STDOUT: %I.facet.98f: %I.type = facet_value %C, (%I.impl_witness) [concrete] // CHECK:STDOUT: %J.impl_witness: = impl_witness @C.%J.impl_witness_table [concrete] -// CHECK:STDOUT: %JJ.type.811: type = fn_type @JJ.loc35 [concrete] -// CHECK:STDOUT: %JJ.9c9: %JJ.type.811 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.J.impl.JJ.type: type = fn_type @C.as.J.impl.JJ [concrete] +// CHECK:STDOUT: %C.as.J.impl.JJ: %C.as.J.impl.JJ.type = struct_value () [concrete] // CHECK:STDOUT: %J.facet.5df: %J.type = facet_value %C, (%J.impl_witness) [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] -// CHECK:STDOUT: %.638: type = fn_type_with_self_type %JJ.type.622, %J.facet.5df [concrete] +// CHECK:STDOUT: %.638: type = fn_type_with_self_type %J.JJ.type, %J.facet.5df [concrete] // CHECK:STDOUT: %facet_value: %facet_type = facet_value %C, (%I.impl_witness, %J.impl_witness) [concrete] // CHECK:STDOUT: %F.specific_fn: = specific_function %F, @F(%facet_value) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.8e9: type = fn_type @Op.3, @Destroy.impl(%C) [concrete] -// CHECK:STDOUT: %Op.ddb: %Op.type.8e9 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.8e9: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ddb: %T.as.Destroy.impl.Op.type.8e9 = struct_value () [concrete] // CHECK:STDOUT: %ptr.8e6: type = ptr_type %C [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ddb, @Op.3(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.ddb, @T.as.Destroy.impl.Op(%C) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -124,8 +124,8 @@ fn G() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.BitAndWith: %BitAndWith.type.f2e = import_ref Core//prelude, BitAndWith, loaded [concrete = constants.%BitAndWith.generic] -// CHECK:STDOUT: %Core.import_ref.012: %Op.type.1cc = import_ref Core//prelude, loc13_42, loaded [concrete = constants.%Op.ff4] -// CHECK:STDOUT: %BitAndWith.impl_witness_table = impl_witness_table (%Core.import_ref.012), @BitAndWith.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.012: %type.as.BitAndWith.impl.Op.type = import_ref Core//prelude, loc13_42, loaded [concrete = constants.%type.as.BitAndWith.impl.Op] +// CHECK:STDOUT: %BitAndWith.impl_witness_table = impl_witness_table (%Core.import_ref.012), @type.as.BitAndWith.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -148,11 +148,11 @@ fn G() { // CHECK:STDOUT: %.loc22_12.1: type = splice_block %.loc22_12.3 [concrete = constants.%facet_type] { // CHECK:STDOUT: %I.ref.loc22: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: %J.ref.loc22: type = name_ref J, file.%J.decl [concrete = constants.%J.type] -// CHECK:STDOUT: %impl.elem0.loc22: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%Op.ff4] -// CHECK:STDOUT: %bound_method.loc22: = bound_method %I.ref.loc22, %impl.elem0.loc22 [concrete = constants.%Op.bound] -// CHECK:STDOUT: %type.and: init type = call %bound_method.loc22(%I.ref.loc22, %J.ref.loc22) [concrete = constants.%facet_type] -// CHECK:STDOUT: %.loc22_12.2: type = value_of_initializer %type.and [concrete = constants.%facet_type] -// CHECK:STDOUT: %.loc22_12.3: type = converted %type.and, %.loc22_12.2 [concrete = constants.%facet_type] +// CHECK:STDOUT: %impl.elem0.loc22: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%type.as.BitAndWith.impl.Op] +// CHECK:STDOUT: %bound_method.loc22: = bound_method %I.ref.loc22, %impl.elem0.loc22 [concrete = constants.%type.as.BitAndWith.impl.Op.bound] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.call: init type = call %bound_method.loc22(%I.ref.loc22, %J.ref.loc22) [concrete = constants.%facet_type] +// CHECK:STDOUT: %.loc22_12.2: type = value_of_initializer %type.as.BitAndWith.impl.Op.call [concrete = constants.%facet_type] +// CHECK:STDOUT: %.loc22_12.3: type = converted %type.as.BitAndWith.impl.Op.call, %.loc22_12.2 [concrete = constants.%facet_type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc22_6.2: %facet_type = bind_symbolic_name T, 0 [symbolic = %T.loc22_6.1 (constants.%T.527)] // CHECK:STDOUT: %t.param: @F.%T.as_type.loc22_20.1 (%T.as_type) = value_param call_param0 @@ -168,52 +168,52 @@ fn G() { // CHECK:STDOUT: // CHECK:STDOUT: interface @I { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.826] -// CHECK:STDOUT: %II.decl: %II.type.465 = fn_decl @II.loc16 [concrete = constants.%II.a07] { -// CHECK:STDOUT: %self.patt: @II.loc16.%pattern_type (%pattern_type.6de) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @II.loc16.%pattern_type (%pattern_type.6de) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %I.II.decl: %I.II.type = fn_decl @I.II [concrete = constants.%I.II] { +// CHECK:STDOUT: %self.patt: @I.II.%pattern_type (%pattern_type.6de) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @I.II.%pattern_type (%pattern_type.6de) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @II.loc16.%Self.as_type.loc16_15.2 (%Self.as_type.b70) = value_param call_param0 -// CHECK:STDOUT: %.loc16_15.1: type = splice_block %.loc16_15.2 [symbolic = %Self.as_type.loc16_15.2 (constants.%Self.as_type.b70)] { +// CHECK:STDOUT: %self.param: @I.II.%Self.as_type.loc16_15.1 (%Self.as_type.b70) = value_param call_param0 +// CHECK:STDOUT: %.loc16_15.1: type = splice_block %.loc16_15.2 [symbolic = %Self.as_type.loc16_15.1 (constants.%Self.as_type.b70)] { // CHECK:STDOUT: %Self.ref: %I.type = name_ref Self, @I.%Self [symbolic = %Self (constants.%Self.826)] -// CHECK:STDOUT: %Self.as_type.loc16_15.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc16_15.2 (constants.%Self.as_type.b70)] -// CHECK:STDOUT: %.loc16_15.2: type = converted %Self.ref, %Self.as_type.loc16_15.1 [symbolic = %Self.as_type.loc16_15.2 (constants.%Self.as_type.b70)] +// CHECK:STDOUT: %Self.as_type.loc16_15.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc16_15.1 (constants.%Self.as_type.b70)] +// CHECK:STDOUT: %.loc16_15.2: type = converted %Self.ref, %Self.as_type.loc16_15.2 [symbolic = %Self.as_type.loc16_15.1 (constants.%Self.as_type.b70)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @II.loc16.%Self.as_type.loc16_15.2 (%Self.as_type.b70) = bind_name self, %self.param +// CHECK:STDOUT: %self: @I.II.%Self.as_type.loc16_15.1 (%Self.as_type.b70) = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %II.decl [concrete = constants.%assoc0.82e] +// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %I.II.decl [concrete = constants.%assoc0.82e] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .II = %assoc0 // CHECK:STDOUT: .JJ = // CHECK:STDOUT: .J = -// CHECK:STDOUT: witness = (%II.decl) +// CHECK:STDOUT: witness = (%I.II.decl) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @J { // CHECK:STDOUT: %Self: %J.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.ccd] -// CHECK:STDOUT: %JJ.decl: %JJ.type.622 = fn_decl @JJ.loc19 [concrete = constants.%JJ.5f5] { -// CHECK:STDOUT: %self.patt: @JJ.loc19.%pattern_type (%pattern_type.4ca) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @JJ.loc19.%pattern_type (%pattern_type.4ca) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %J.JJ.decl: %J.JJ.type = fn_decl @J.JJ [concrete = constants.%J.JJ] { +// CHECK:STDOUT: %self.patt: @J.JJ.%pattern_type (%pattern_type.4ca) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @J.JJ.%pattern_type (%pattern_type.4ca) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @JJ.loc19.%Self.as_type.loc19_15.2 (%Self.as_type.3df) = value_param call_param0 -// CHECK:STDOUT: %.loc19_15.1: type = splice_block %.loc19_15.2 [symbolic = %Self.as_type.loc19_15.2 (constants.%Self.as_type.3df)] { +// CHECK:STDOUT: %self.param: @J.JJ.%Self.as_type.loc19_15.1 (%Self.as_type.3df) = value_param call_param0 +// CHECK:STDOUT: %.loc19_15.1: type = splice_block %.loc19_15.2 [symbolic = %Self.as_type.loc19_15.1 (constants.%Self.as_type.3df)] { // CHECK:STDOUT: %Self.ref: %J.type = name_ref Self, @J.%Self [symbolic = %Self (constants.%Self.ccd)] -// CHECK:STDOUT: %Self.as_type.loc19_15.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc19_15.2 (constants.%Self.as_type.3df)] -// CHECK:STDOUT: %.loc19_15.2: type = converted %Self.ref, %Self.as_type.loc19_15.1 [symbolic = %Self.as_type.loc19_15.2 (constants.%Self.as_type.3df)] +// CHECK:STDOUT: %Self.as_type.loc19_15.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc19_15.1 (constants.%Self.as_type.3df)] +// CHECK:STDOUT: %.loc19_15.2: type = converted %Self.ref, %Self.as_type.loc19_15.2 [symbolic = %Self.as_type.loc19_15.1 (constants.%Self.as_type.3df)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @JJ.loc19.%Self.as_type.loc19_15.2 (%Self.as_type.3df) = bind_name self, %self.param +// CHECK:STDOUT: %self: @J.JJ.%Self.as_type.loc19_15.1 (%Self.as_type.3df) = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %J.assoc_type = assoc_entity element0, %JJ.decl [concrete = constants.%assoc0.78c] +// CHECK:STDOUT: %assoc0: %J.assoc_type = assoc_entity element0, %J.JJ.decl [concrete = constants.%assoc0.78c] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .JJ = %assoc0 -// CHECK:STDOUT: witness = (%JJ.decl) +// CHECK:STDOUT: witness = (%J.JJ.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: %Self.ref as %I.ref { -// CHECK:STDOUT: %II.decl: %II.type.f11 = fn_decl @II.loc32 [concrete = constants.%II.b71] { +// CHECK:STDOUT: impl @C.as.I.impl: %Self.ref as %I.ref { +// CHECK:STDOUT: %C.as.I.impl.II.decl: %C.as.I.impl.II.type = fn_decl @C.as.I.impl.II [concrete = constants.%C.as.I.impl.II] { // CHECK:STDOUT: %self.patt: %pattern_type.893 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.893 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -223,12 +223,12 @@ fn G() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .II = %II.decl +// CHECK:STDOUT: .II = %C.as.I.impl.II.decl // CHECK:STDOUT: witness = @C.%I.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @J.impl: %Self.ref as %J.ref { -// CHECK:STDOUT: %JJ.decl: %JJ.type.811 = fn_decl @JJ.loc35 [concrete = constants.%JJ.9c9] { +// CHECK:STDOUT: impl @C.as.J.impl: %Self.ref as %J.ref { +// CHECK:STDOUT: %C.as.J.impl.JJ.decl: %C.as.J.impl.JJ.type = fn_decl @C.as.J.impl.JJ [concrete = constants.%C.as.J.impl.JJ] { // CHECK:STDOUT: %self.patt: %pattern_type.893 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.893 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -238,22 +238,22 @@ fn G() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .JJ = %JJ.decl +// CHECK:STDOUT: .JJ = %C.as.J.impl.JJ.decl // CHECK:STDOUT: witness = @C.%J.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.I.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (@I.impl.%II.decl), @I.impl [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (@C.as.I.impl.%C.as.I.impl.II.decl), @C.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness] -// CHECK:STDOUT: impl_decl @J.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.J.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %J.impl_witness_table = impl_witness_table (@J.impl.%JJ.decl), @J.impl [concrete] +// CHECK:STDOUT: %J.impl_witness_table = impl_witness_table (@C.as.J.impl.%C.as.J.impl.JJ.decl), @C.as.J.impl [concrete] // CHECK:STDOUT: %J.impl_witness: = impl_witness %J.impl_witness_table [concrete = constants.%J.impl_witness] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] @@ -264,24 +264,24 @@ fn G() { // CHECK:STDOUT: .I = // CHECK:STDOUT: .J = // CHECK:STDOUT: .JJ = -// CHECK:STDOUT: extend @I.impl.%I.ref -// CHECK:STDOUT: extend @J.impl.%J.ref +// CHECK:STDOUT: extend @C.as.I.impl.%I.ref +// CHECK:STDOUT: extend @C.as.J.impl.%J.ref // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @II.loc16(@I.%Self: %I.type) { +// CHECK:STDOUT: generic fn @I.II(@I.%Self: %I.type) { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.826)] -// CHECK:STDOUT: %Self.as_type.loc16_15.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc16_15.2 (constants.%Self.as_type.b70)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc16_15.2 [symbolic = %pattern_type (constants.%pattern_type.6de)] +// CHECK:STDOUT: %Self.as_type.loc16_15.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc16_15.1 (constants.%Self.as_type.b70)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc16_15.1 [symbolic = %pattern_type (constants.%pattern_type.6de)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @II.loc16.%Self.as_type.loc16_15.2 (%Self.as_type.b70)); +// CHECK:STDOUT: fn(%self.param: @I.II.%Self.as_type.loc16_15.1 (%Self.as_type.b70)); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @JJ.loc19(@J.%Self: %J.type) { +// CHECK:STDOUT: generic fn @J.JJ(@J.%Self: %J.type) { // CHECK:STDOUT: %Self: %J.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.ccd)] -// CHECK:STDOUT: %Self.as_type.loc19_15.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc19_15.2 (constants.%Self.as_type.3df)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc19_15.2 [symbolic = %pattern_type (constants.%pattern_type.4ca)] +// CHECK:STDOUT: %Self.as_type.loc19_15.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc19_15.1 (constants.%Self.as_type.3df)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc19_15.1 [symbolic = %pattern_type (constants.%pattern_type.4ca)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @JJ.loc19.%Self.as_type.loc19_15.2 (%Self.as_type.3df)); +// CHECK:STDOUT: fn(%self.param: @J.JJ.%Self.as_type.loc19_15.1 (%Self.as_type.3df)); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%T.loc22_6.2: %facet_type) { @@ -295,9 +295,9 @@ fn G() { // CHECK:STDOUT: %I.facet.loc26_18.2: %I.type = facet_value %T.as_type.loc22_20.1, (%I.lookup_impl_witness) [symbolic = %I.facet.loc26_18.2 (constants.%I.facet.e75)] // CHECK:STDOUT: %J.lookup_impl_witness: = lookup_impl_witness %T.loc22_6.1, @J [symbolic = %J.lookup_impl_witness (constants.%J.lookup_impl_witness)] // CHECK:STDOUT: %J.facet.loc26_33.2: %J.type = facet_value %T.as_type.loc22_20.1, (%J.lookup_impl_witness) [symbolic = %J.facet.loc26_33.2 (constants.%J.facet.fa4)] -// CHECK:STDOUT: %.loc26_69.2: type = fn_type_with_self_type constants.%JJ.type.622, %J.facet.loc26_33.2 [symbolic = %.loc26_69.2 (constants.%.935)] +// CHECK:STDOUT: %.loc26_69.2: type = fn_type_with_self_type constants.%J.JJ.type, %J.facet.loc26_33.2 [symbolic = %.loc26_69.2 (constants.%.935)] // CHECK:STDOUT: %impl.elem0.loc26_69.2: @F.%.loc26_69.2 (%.935) = impl_witness_access %J.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc26_69.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %specific_impl_fn.loc26_69.2: = specific_impl_function %impl.elem0.loc26_69.2, @JJ.loc19(%J.facet.loc26_33.2) [symbolic = %specific_impl_fn.loc26_69.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc26_69.2: = specific_impl_function %impl.elem0.loc26_69.2, @J.JJ(%J.facet.loc26_33.2) [symbolic = %specific_impl_fn.loc26_69.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%t.param: @F.%T.as_type.loc22_20.1 (%T.as_type)) { // CHECK:STDOUT: !entry: @@ -329,7 +329,7 @@ fn G() { // CHECK:STDOUT: %.loc26_69.1: type = converted constants.%T.527, %T.as_type.loc26_69 [symbolic = %T.as_type.loc22_20.1 (constants.%T.as_type)] // CHECK:STDOUT: %impl.elem0.loc26_69.1: @F.%.loc26_69.2 (%.935) = impl_witness_access constants.%J.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc26_69.2 (constants.%impl.elem0)] // CHECK:STDOUT: %bound_method.loc26_69: = bound_method %t.ref, %impl.elem0.loc26_69.1 -// CHECK:STDOUT: %specific_impl_fn.loc26_69.1: = specific_impl_function %impl.elem0.loc26_69.1, @JJ.loc19(constants.%J.facet.fa4) [symbolic = %specific_impl_fn.loc26_69.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc26_69.1: = specific_impl_function %impl.elem0.loc26_69.1, @J.JJ(constants.%J.facet.fa4) [symbolic = %specific_impl_fn.loc26_69.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %bound_method.loc26_73: = bound_method %t.ref, %specific_impl_fn.loc26_69.1 // CHECK:STDOUT: %.loc26_73: init %empty_tuple.type = call %bound_method.loc26_73(%t.ref) // CHECK:STDOUT: return @@ -367,10 +367,10 @@ fn G() { // CHECK:STDOUT: %as_type.loc40_75: type = facet_access_type %.loc40_71 [concrete = constants.%C] // CHECK:STDOUT: %.loc40_75: type = converted %.loc40_71, %as_type.loc40_75 [concrete = constants.%C] // CHECK:STDOUT: %JJ.ref: %J.assoc_type = name_ref JJ, @J.%assoc0 [concrete = constants.%assoc0.78c] -// CHECK:STDOUT: %impl.elem0: %.638 = impl_witness_access constants.%J.impl_witness, element0 [concrete = constants.%JJ.9c9] +// CHECK:STDOUT: %impl.elem0: %.638 = impl_witness_access constants.%J.impl_witness, element0 [concrete = constants.%C.as.J.impl.JJ] // CHECK:STDOUT: %bound_method.loc40_77: = bound_method %.loc40_8.1, %impl.elem0 // CHECK:STDOUT: %.loc40_8.2: %C = bind_value %.loc40_8.1 -// CHECK:STDOUT: %JJ.call: init %empty_tuple.type = call %bound_method.loc40_77(%.loc40_8.2) +// CHECK:STDOUT: %C.as.J.impl.JJ.call: init %empty_tuple.type = call %bound_method.loc40_77(%.loc40_8.2) // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [concrete = constants.%F] // CHECK:STDOUT: %C.ref.loc46_5: type = name_ref C, %C.decl [concrete = constants.%C] // CHECK:STDOUT: %.loc46_9.1: %empty_struct_type = struct_literal () @@ -388,38 +388,38 @@ fn G() { // CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%facet_value) [concrete = constants.%F.specific_fn] // CHECK:STDOUT: %.loc46_11.2: %C = bind_value %.loc46_11.1 // CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.specific_fn(%.loc46_11.2) -// CHECK:STDOUT: %Op.bound.loc46: = bound_method %.loc46_9.2, constants.%Op.ddb -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.ddb, @Op.3(constants.%C) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc46: = bound_method %.loc46_9.2, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc46: = bound_method %.loc46_9.2, constants.%T.as.Destroy.impl.Op.ddb +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.ddb, @T.as.Destroy.impl.Op(constants.%C) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc46: = bound_method %.loc46_9.2, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc46: %ptr.8e6 = addr_of %.loc46_9.2 -// CHECK:STDOUT: %no_op.loc46: init %empty_tuple.type = call %bound_method.loc46(%addr.loc46) -// CHECK:STDOUT: %Op.bound.loc40: = bound_method %.loc40_6.2, constants.%Op.ddb -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.ddb, @Op.3(constants.%C) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc40_6: = bound_method %.loc40_6.2, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc46: init %empty_tuple.type = call %bound_method.loc46(%addr.loc46) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc40: = bound_method %.loc40_6.2, constants.%T.as.Destroy.impl.Op.ddb +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.ddb, @T.as.Destroy.impl.Op(constants.%C) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc40_6: = bound_method %.loc40_6.2, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc40: %ptr.8e6 = addr_of %.loc40_6.2 -// CHECK:STDOUT: %no_op.loc40: init %empty_tuple.type = call %bound_method.loc40_6(%addr.loc40) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc40: init %empty_tuple.type = call %bound_method.loc40_6(%addr.loc40) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @II.loc32(%self.param: %C) { +// CHECK:STDOUT: fn @C.as.I.impl.II(%self.param: %C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @JJ.loc35(%self.param: %C) { +// CHECK:STDOUT: fn @C.as.J.impl.JJ(%self.param: %C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @II.loc16(constants.%Self.826) { +// CHECK:STDOUT: specific @I.II(constants.%Self.826) { // CHECK:STDOUT: %Self => constants.%Self.826 -// CHECK:STDOUT: %Self.as_type.loc16_15.2 => constants.%Self.as_type.b70 +// CHECK:STDOUT: %Self.as_type.loc16_15.1 => constants.%Self.as_type.b70 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.6de // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @JJ.loc19(constants.%Self.ccd) { +// CHECK:STDOUT: specific @J.JJ(constants.%Self.ccd) { // CHECK:STDOUT: %Self => constants.%Self.ccd -// CHECK:STDOUT: %Self.as_type.loc19_15.2 => constants.%Self.as_type.3df +// CHECK:STDOUT: %Self.as_type.loc19_15.1 => constants.%Self.as_type.3df // CHECK:STDOUT: %pattern_type => constants.%pattern_type.4ca // CHECK:STDOUT: } // CHECK:STDOUT: @@ -429,21 +429,21 @@ fn G() { // CHECK:STDOUT: %pattern_type => constants.%pattern_type.a4f // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @JJ.loc19(constants.%J.facet.fa4) { +// CHECK:STDOUT: specific @J.JJ(constants.%J.facet.fa4) { // CHECK:STDOUT: %Self => constants.%J.facet.fa4 -// CHECK:STDOUT: %Self.as_type.loc19_15.2 => constants.%T.as_type +// CHECK:STDOUT: %Self.as_type.loc19_15.1 => constants.%T.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.a4f // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @II.loc16(constants.%I.facet.98f) { +// CHECK:STDOUT: specific @I.II(constants.%I.facet.98f) { // CHECK:STDOUT: %Self => constants.%I.facet.98f -// CHECK:STDOUT: %Self.as_type.loc16_15.2 => constants.%C +// CHECK:STDOUT: %Self.as_type.loc16_15.1 => constants.%C // CHECK:STDOUT: %pattern_type => constants.%pattern_type.893 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @JJ.loc19(constants.%J.facet.5df) { +// CHECK:STDOUT: specific @J.JJ(constants.%J.facet.5df) { // CHECK:STDOUT: %Self => constants.%J.facet.5df -// CHECK:STDOUT: %Self.as_type.loc19_15.2 => constants.%C +// CHECK:STDOUT: %Self.as_type.loc19_15.1 => constants.%C // CHECK:STDOUT: %pattern_type => constants.%pattern_type.893 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -459,7 +459,7 @@ fn G() { // CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.impl_witness // CHECK:STDOUT: %J.facet.loc26_33.2 => constants.%J.facet.5df // CHECK:STDOUT: %.loc26_69.2 => constants.%.638 -// CHECK:STDOUT: %impl.elem0.loc26_69.2 => constants.%JJ.9c9 -// CHECK:STDOUT: %specific_impl_fn.loc26_69.2 => constants.%JJ.9c9 +// CHECK:STDOUT: %impl.elem0.loc26_69.2 => constants.%C.as.J.impl.JJ +// CHECK:STDOUT: %specific_impl_fn.loc26_69.2 => constants.%C.as.J.impl.JJ // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/lookup/fail_alias_impl_not_found.carbon b/toolchain/check/testdata/impl/lookup/fail_alias_impl_not_found.carbon index fa4b6c8ef7c2..c633e0f31db6 100644 --- a/toolchain/check/testdata/impl/lookup/fail_alias_impl_not_found.carbon +++ b/toolchain/check/testdata/impl/lookup/fail_alias_impl_not_found.carbon @@ -38,16 +38,16 @@ fn F(c: C) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.cf0: type = fn_type @F.loc16 [concrete] -// CHECK:STDOUT: %F.bc6: %F.type.cf0 = struct_value () [concrete] +// CHECK:STDOUT: %I.F.type: type = fn_type @I.F [concrete] +// CHECK:STDOUT: %I.F: %I.F.type = struct_value () [concrete] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] -// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%F.decl [concrete] +// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%I.F.decl [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] -// CHECK:STDOUT: %F.type.b25: type = fn_type @F.loc23 [concrete] -// CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [concrete] +// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] +// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -58,7 +58,7 @@ fn F(c: C) { // CHECK:STDOUT: } // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} -// CHECK:STDOUT: %F.decl: %F.type.b25 = fn_decl @F.loc23 [concrete = constants.%F.c41] { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { // CHECK:STDOUT: %c.patt: %pattern_type = binding_pattern c [concrete] // CHECK:STDOUT: %c.param_patt: %pattern_type = value_param_pattern %c.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -70,13 +70,13 @@ fn F(c: C) { // CHECK:STDOUT: // CHECK:STDOUT: interface @I { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %F.decl: %F.type.cf0 = fn_decl @F.loc16 [concrete = constants.%F.bc6] {} {} -// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %I.F.decl: %I.F.type = fn_decl @I.F [concrete = constants.%I.F] {} {} +// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %I.F.decl [concrete = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F = %assoc0 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%I.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { @@ -93,11 +93,11 @@ fn F(c: C) { // CHECK:STDOUT: .F = %F // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc16(@I.%Self: %I.type) { +// CHECK:STDOUT: generic fn @I.F(@I.%Self: %I.type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc23(%c.param: %C) { +// CHECK:STDOUT: fn @F(%c.param: %C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %C.ref.loc28: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %F.ref.loc28: %I.assoc_type = name_ref F, @C.%F [concrete = constants.%assoc0] @@ -106,5 +106,5 @@ fn F(c: C) { // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc16(constants.%Self) {} +// CHECK:STDOUT: specific @I.F(constants.%Self) {} // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/lookup/fail_todo_undefined_impl.carbon b/toolchain/check/testdata/impl/lookup/fail_todo_undefined_impl.carbon index 10f007aceecf..334018acb641 100644 --- a/toolchain/check/testdata/impl/lookup/fail_todo_undefined_impl.carbon +++ b/toolchain/check/testdata/impl/lookup/fail_todo_undefined_impl.carbon @@ -53,21 +53,21 @@ fn G() { // CHECK:STDOUT: constants { // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.cf0: type = fn_type @F.loc16 [concrete] -// CHECK:STDOUT: %F.bc6: %F.type.cf0 = struct_value () [concrete] +// CHECK:STDOUT: %I.F.type: type = fn_type @I.F [concrete] +// CHECK:STDOUT: %I.F: %I.F.type = struct_value () [concrete] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] -// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%F.decl [concrete] +// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%I.F.decl [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %I.impl_witness.ab4: = impl_witness @C.%I.impl_witness_table [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] -// CHECK:STDOUT: %F.type.b25: type = fn_type @F.loc25 [concrete] -// CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [concrete] +// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] +// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %I.facet.580: %I.type = facet_value %C, (%I.impl_witness.ab4) [concrete] -// CHECK:STDOUT: %.3ac: type = fn_type_with_self_type %F.type.cf0, %I.facet.580 [concrete] +// CHECK:STDOUT: %.3ac: type = fn_type_with_self_type %I.F.type, %I.facet.580 [concrete] // CHECK:STDOUT: %I.impl_witness.6f2: = impl_witness file.%I.impl_witness_table [concrete] -// CHECK:STDOUT: %F.type.5d6: type = fn_type @F.loc36 [concrete] -// CHECK:STDOUT: %F.a2e: %F.type.5d6 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.I.impl.F.type: type = fn_type @C.as.I.impl.F [concrete] +// CHECK:STDOUT: %C.as.I.impl.F: %C.as.I.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %I.facet.029: %I.type = facet_value %C, (%I.impl_witness.6f2) [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] @@ -82,43 +82,43 @@ fn G() { // CHECK:STDOUT: } // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} -// CHECK:STDOUT: %F.decl: %F.type.b25 = fn_decl @F.loc25 [concrete = constants.%F.c41] {} {} -// CHECK:STDOUT: impl_decl @I.impl.770 [concrete] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} +// CHECK:STDOUT: impl_decl @C.as.I.impl.770 [concrete] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (@I.impl.770.%F.decl), @I.impl.770 [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (@C.as.I.impl.770.%C.as.I.impl.F.decl), @C.as.I.impl.770 [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness.6f2] // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %F.decl: %F.type.cf0 = fn_decl @F.loc16 [concrete = constants.%F.bc6] {} {} -// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %I.F.decl: %I.F.type = fn_decl @I.F [concrete = constants.%I.F] {} {} +// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %I.F.decl [concrete = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F = %assoc0 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%I.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl.a21: %Self.ref as %I.ref; +// CHECK:STDOUT: impl @C.as.I.impl.a21: %Self.ref as %I.ref; // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl.770: %C.ref as %I.ref { -// CHECK:STDOUT: %F.decl: %F.type.5d6 = fn_decl @F.loc36 [concrete = constants.%F.a2e] {} {} +// CHECK:STDOUT: impl @C.as.I.impl.770: %C.ref as %I.ref { +// CHECK:STDOUT: %C.as.I.impl.F.decl: %C.as.I.impl.F.type = fn_decl @C.as.I.impl.F [concrete = constants.%C.as.I.impl.F] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %C.as.I.impl.F.decl // CHECK:STDOUT: witness = file.%I.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: impl_decl @I.impl.a21 [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.I.impl.a21 [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @I.impl.a21 [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @C.as.I.impl.a21 [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness.ab4] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] @@ -128,14 +128,14 @@ fn G() { // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .I = // CHECK:STDOUT: .F = -// CHECK:STDOUT: extend @I.impl.a21.%I.ref +// CHECK:STDOUT: extend @C.as.I.impl.a21.%I.ref // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc16(@I.%Self: %I.type) { +// CHECK:STDOUT: generic fn @I.F(@I.%Self: %I.type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc25() { +// CHECK:STDOUT: fn @F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %F.ref: %I.assoc_type = name_ref F, @I.%assoc0 [concrete = constants.%assoc0] @@ -143,7 +143,7 @@ fn G() { // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc36() { +// CHECK:STDOUT: fn @C.as.I.impl.F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -156,7 +156,7 @@ fn G() { // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc16(constants.%Self) {} +// CHECK:STDOUT: specific @I.F(constants.%Self) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc16(constants.%I.facet.029) {} +// CHECK:STDOUT: specific @I.F(constants.%I.facet.029) {} // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/lookup/generic.carbon b/toolchain/check/testdata/impl/lookup/generic.carbon index 3b28da71508a..f58b68c12331 100644 --- a/toolchain/check/testdata/impl/lookup/generic.carbon +++ b/toolchain/check/testdata/impl/lookup/generic.carbon @@ -134,29 +134,29 @@ fn G(x: A) { // CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic] // CHECK:STDOUT: %pattern_type.28f: type = pattern_type %Self.as_type [symbolic] -// CHECK:STDOUT: %F.type.b7b: type = fn_type @F.loc5 [concrete] +// CHECK:STDOUT: %HasF.F.type: type = fn_type @HasF.F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F.f50: %F.type.b7b = struct_value () [concrete] +// CHECK:STDOUT: %HasF.F: %HasF.F.type = struct_value () [concrete] // CHECK:STDOUT: %HasF.assoc_type: type = assoc_entity_type @HasF [concrete] -// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, @HasF.%F.decl [concrete] +// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, @HasF.%HasF.F.decl [concrete] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] -// CHECK:STDOUT: %HasF.impl_witness.ec7: = impl_witness file.%HasF.impl_witness_table, @HasF.impl(%T) [symbolic] +// CHECK:STDOUT: %HasF.impl_witness.ec7: = impl_witness file.%HasF.impl_witness_table, @T.as.HasF.impl(%T) [symbolic] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %T [symbolic] -// CHECK:STDOUT: %F.type.3fd: type = fn_type @F.loc9, @HasF.impl(%T) [symbolic] -// CHECK:STDOUT: %F.c98: %F.type.3fd = struct_value () [symbolic] +// CHECK:STDOUT: %T.as.HasF.impl.F.type.3fd: type = fn_type @T.as.HasF.impl.F, @T.as.HasF.impl(%T) [symbolic] +// CHECK:STDOUT: %T.as.HasF.impl.F.c98: %T.as.HasF.impl.F.type.3fd = struct_value () [symbolic] // CHECK:STDOUT: %HasF.facet.216: %HasF.type = facet_value %T, (%HasF.impl_witness.ec7) [symbolic] // CHECK:STDOUT: %require_complete: = require_complete_type %T [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %pattern_type.a96: type = pattern_type %empty_struct_type [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] -// CHECK:STDOUT: %HasF.impl_witness.6e4: = impl_witness file.%HasF.impl_witness_table, @HasF.impl(%empty_struct_type) [concrete] -// CHECK:STDOUT: %F.type.2e4: type = fn_type @F.loc9, @HasF.impl(%empty_struct_type) [concrete] -// CHECK:STDOUT: %F.f13: %F.type.2e4 = struct_value () [concrete] +// CHECK:STDOUT: %HasF.impl_witness.6e4: = impl_witness file.%HasF.impl_witness_table, @T.as.HasF.impl(%empty_struct_type) [concrete] +// CHECK:STDOUT: %T.as.HasF.impl.F.type.2e4: type = fn_type @T.as.HasF.impl.F, @T.as.HasF.impl(%empty_struct_type) [concrete] +// CHECK:STDOUT: %T.as.HasF.impl.F.f13: %T.as.HasF.impl.F.type.2e4 = struct_value () [concrete] // CHECK:STDOUT: %HasF.facet.fa2: %HasF.type = facet_value %empty_struct_type, (%HasF.impl_witness.6e4) [concrete] -// CHECK:STDOUT: %.e02: type = fn_type_with_self_type %F.type.b7b, %HasF.facet.fa2 [concrete] -// CHECK:STDOUT: %F.specific_fn: = specific_function %F.f13, @F.loc9(%empty_struct_type) [concrete] +// CHECK:STDOUT: %.e02: type = fn_type_with_self_type %HasF.F.type, %HasF.facet.fa2 [concrete] +// CHECK:STDOUT: %T.as.HasF.impl.F.specific_fn: = specific_function %T.as.HasF.impl.F.f13, @T.as.HasF.impl.F(%empty_struct_type) [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -175,15 +175,15 @@ fn G(x: A) { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %HasF.decl: type = interface_decl @HasF [concrete = constants.%HasF.type] {} {} -// CHECK:STDOUT: impl_decl @HasF.impl [concrete] { +// CHECK:STDOUT: impl_decl @T.as.HasF.impl [concrete] { // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc8_14.1 [symbolic = %T.loc8_14.2 (constants.%T)] +// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc8_14.2 [symbolic = %T.loc8_14.1 (constants.%T)] // CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [concrete = constants.%HasF.type] -// CHECK:STDOUT: %T.loc8_14.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc8_14.2 (constants.%T)] +// CHECK:STDOUT: %T.loc8_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc8_14.1 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %HasF.impl_witness_table = impl_witness_table (@HasF.impl.%F.decl), @HasF.impl [concrete] -// CHECK:STDOUT: %HasF.impl_witness: = impl_witness %HasF.impl_witness_table, @HasF.impl(constants.%T) [symbolic = @HasF.impl.%HasF.impl_witness (constants.%HasF.impl_witness.ec7)] +// CHECK:STDOUT: %HasF.impl_witness_table = impl_witness_table (@T.as.HasF.impl.%T.as.HasF.impl.F.decl), @T.as.HasF.impl [concrete] +// CHECK:STDOUT: %HasF.impl_witness: = impl_witness %HasF.impl_witness_table, @T.as.HasF.impl(constants.%T) [symbolic = @T.as.HasF.impl.%HasF.impl_witness (constants.%HasF.impl_witness.ec7)] // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { // CHECK:STDOUT: %x.patt: %pattern_type.a96 = binding_pattern x [concrete] // CHECK:STDOUT: %x.param_patt: %pattern_type.a96 = value_param_pattern %x.patt, call_param0 [concrete] @@ -199,66 +199,66 @@ fn G(x: A) { // CHECK:STDOUT: // CHECK:STDOUT: interface @HasF { // CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %F.decl: %F.type.b7b = fn_decl @F.loc5 [concrete = constants.%F.f50] { -// CHECK:STDOUT: %self.patt: @F.loc5.%pattern_type (%pattern_type.28f) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.loc5.%pattern_type (%pattern_type.28f) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %HasF.F.decl: %HasF.F.type = fn_decl @HasF.F [concrete = constants.%HasF.F] { +// CHECK:STDOUT: %self.patt: @HasF.F.%pattern_type (%pattern_type.28f) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @HasF.F.%pattern_type (%pattern_type.28f) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @F.loc5.%Self.as_type.loc5_14.2 (%Self.as_type) = value_param call_param0 -// CHECK:STDOUT: %.loc5_14.1: type = splice_block %.loc5_14.2 [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type)] { +// CHECK:STDOUT: %self.param: @HasF.F.%Self.as_type.loc5_14.1 (%Self.as_type) = value_param call_param0 +// CHECK:STDOUT: %.loc5_14.1: type = splice_block %.loc5_14.2 [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] { // CHECK:STDOUT: %Self.ref: %HasF.type = name_ref Self, @HasF.%Self [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc5_14.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc5_14.2: type = converted %Self.ref, %Self.as_type.loc5_14.1 [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type)] +// CHECK:STDOUT: %Self.as_type.loc5_14.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc5_14.2: type = converted %Self.ref, %Self.as_type.loc5_14.2 [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.loc5.%Self.as_type.loc5_14.2 (%Self.as_type) = bind_name self, %self.param +// CHECK:STDOUT: %self: @HasF.F.%Self.as_type.loc5_14.1 (%Self.as_type) = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, %HasF.F.decl [concrete = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F = %assoc0 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%HasF.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @HasF.impl(%T.loc8_14.1: type) { -// CHECK:STDOUT: %T.loc8_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc8_14.2 (constants.%T)] -// CHECK:STDOUT: %HasF.impl_witness: = impl_witness file.%HasF.impl_witness_table, @HasF.impl(%T.loc8_14.2) [symbolic = %HasF.impl_witness (constants.%HasF.impl_witness.ec7)] +// CHECK:STDOUT: generic impl @T.as.HasF.impl(%T.loc8_14.2: type) { +// CHECK:STDOUT: %T.loc8_14.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc8_14.1 (constants.%T)] +// CHECK:STDOUT: %HasF.impl_witness: = impl_witness file.%HasF.impl_witness_table, @T.as.HasF.impl(%T.loc8_14.1) [symbolic = %HasF.impl_witness (constants.%HasF.impl_witness.ec7)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type: type = fn_type @F.loc9, @HasF.impl(%T.loc8_14.2) [symbolic = %F.type (constants.%F.type.3fd)] -// CHECK:STDOUT: %F: @HasF.impl.%F.type (%F.type.3fd) = struct_value () [symbolic = %F (constants.%F.c98)] +// CHECK:STDOUT: %T.as.HasF.impl.F.type: type = fn_type @T.as.HasF.impl.F, @T.as.HasF.impl(%T.loc8_14.1) [symbolic = %T.as.HasF.impl.F.type (constants.%T.as.HasF.impl.F.type.3fd)] +// CHECK:STDOUT: %T.as.HasF.impl.F: @T.as.HasF.impl.%T.as.HasF.impl.F.type (%T.as.HasF.impl.F.type.3fd) = struct_value () [symbolic = %T.as.HasF.impl.F (constants.%T.as.HasF.impl.F.c98)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %T.ref as %HasF.ref { -// CHECK:STDOUT: %F.decl: @HasF.impl.%F.type (%F.type.3fd) = fn_decl @F.loc9 [symbolic = @HasF.impl.%F (constants.%F.c98)] { -// CHECK:STDOUT: %self.patt: @F.loc9.%pattern_type (%pattern_type.7dc) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.loc9.%pattern_type (%pattern_type.7dc) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %T.as.HasF.impl.F.decl: @T.as.HasF.impl.%T.as.HasF.impl.F.type (%T.as.HasF.impl.F.type.3fd) = fn_decl @T.as.HasF.impl.F [symbolic = @T.as.HasF.impl.%T.as.HasF.impl.F (constants.%T.as.HasF.impl.F.c98)] { +// CHECK:STDOUT: %self.patt: @T.as.HasF.impl.F.%pattern_type (%pattern_type.7dc) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @T.as.HasF.impl.F.%pattern_type (%pattern_type.7dc) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @F.loc9.%T (%T) = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @HasF.impl.%T.ref [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %self: @F.loc9.%T (%T) = bind_name self, %self.param +// CHECK:STDOUT: %self.param: @T.as.HasF.impl.F.%T (%T) = value_param call_param0 +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @T.as.HasF.impl.%T.ref [symbolic = %T (constants.%T)] +// CHECK:STDOUT: %self: @T.as.HasF.impl.F.%T (%T) = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %T.as.HasF.impl.F.decl // CHECK:STDOUT: witness = file.%HasF.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc5(@HasF.%Self: %HasF.type) { +// CHECK:STDOUT: generic fn @HasF.F(@HasF.%Self: %HasF.type) { // CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc5_14.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc5_14.2 [symbolic = %pattern_type (constants.%pattern_type.28f)] +// CHECK:STDOUT: %Self.as_type.loc5_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc5_14.1 [symbolic = %pattern_type (constants.%pattern_type.28f)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @F.loc5.%Self.as_type.loc5_14.2 (%Self.as_type)); +// CHECK:STDOUT: fn(%self.param: @HasF.F.%Self.as_type.loc5_14.1 (%Self.as_type)); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc9(@HasF.impl.%T.loc8_14.1: type) { +// CHECK:STDOUT: generic fn @T.as.HasF.impl.F(@T.as.HasF.impl.%T.loc8_14.2: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %pattern_type: type = pattern_type %T [symbolic = %pattern_type (constants.%pattern_type.7dc)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %T [symbolic = %require_complete (constants.%require_complete)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @F.loc9.%T (%T)) { +// CHECK:STDOUT: fn(%self.param: @T.as.HasF.impl.F.%T (%T)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -269,50 +269,50 @@ fn G(x: A) { // CHECK:STDOUT: %x.ref: %empty_struct_type = name_ref x, %x // CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [concrete = constants.%HasF.type] // CHECK:STDOUT: %F.ref: %HasF.assoc_type = name_ref F, @HasF.%assoc0 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: %.e02 = impl_witness_access constants.%HasF.impl_witness.6e4, element0 [concrete = constants.%F.f13] +// CHECK:STDOUT: %impl.elem0: %.e02 = impl_witness_access constants.%HasF.impl_witness.6e4, element0 [concrete = constants.%T.as.HasF.impl.F.f13] // CHECK:STDOUT: %bound_method.loc13_4: = bound_method %x.ref, %impl.elem0 -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @F.loc9(constants.%empty_struct_type) [concrete = constants.%F.specific_fn] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @T.as.HasF.impl.F(constants.%empty_struct_type) [concrete = constants.%T.as.HasF.impl.F.specific_fn] // CHECK:STDOUT: %bound_method.loc13_14: = bound_method %x.ref, %specific_fn -// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %bound_method.loc13_14(%x.ref) +// CHECK:STDOUT: %T.as.HasF.impl.F.call: init %empty_tuple.type = call %bound_method.loc13_14(%x.ref) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%Self) { +// CHECK:STDOUT: specific @HasF.F(constants.%Self) { // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %Self.as_type.loc5_14.2 => constants.%Self.as_type +// CHECK:STDOUT: %Self.as_type.loc5_14.1 => constants.%Self.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.28f // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @HasF.impl(constants.%T) { -// CHECK:STDOUT: %T.loc8_14.2 => constants.%T +// CHECK:STDOUT: specific @T.as.HasF.impl(constants.%T) { +// CHECK:STDOUT: %T.loc8_14.1 => constants.%T // CHECK:STDOUT: %HasF.impl_witness => constants.%HasF.impl_witness.ec7 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.3fd -// CHECK:STDOUT: %F => constants.%F.c98 +// CHECK:STDOUT: %T.as.HasF.impl.F.type => constants.%T.as.HasF.impl.F.type.3fd +// CHECK:STDOUT: %T.as.HasF.impl.F => constants.%T.as.HasF.impl.F.c98 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc9(constants.%T) { +// CHECK:STDOUT: specific @T.as.HasF.impl.F(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7dc // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%HasF.facet.216) { +// CHECK:STDOUT: specific @HasF.F(constants.%HasF.facet.216) { // CHECK:STDOUT: %Self => constants.%HasF.facet.216 -// CHECK:STDOUT: %Self.as_type.loc5_14.2 => constants.%T +// CHECK:STDOUT: %Self.as_type.loc5_14.1 => constants.%T // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7dc // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @HasF.impl(constants.%empty_struct_type) { -// CHECK:STDOUT: %T.loc8_14.2 => constants.%empty_struct_type +// CHECK:STDOUT: specific @T.as.HasF.impl(constants.%empty_struct_type) { +// CHECK:STDOUT: %T.loc8_14.1 => constants.%empty_struct_type // CHECK:STDOUT: %HasF.impl_witness => constants.%HasF.impl_witness.6e4 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.2e4 -// CHECK:STDOUT: %F => constants.%F.f13 +// CHECK:STDOUT: %T.as.HasF.impl.F.type => constants.%T.as.HasF.impl.F.type.2e4 +// CHECK:STDOUT: %T.as.HasF.impl.F => constants.%T.as.HasF.impl.F.f13 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc9(constants.%empty_struct_type) { +// CHECK:STDOUT: specific @T.as.HasF.impl.F(constants.%empty_struct_type) { // CHECK:STDOUT: %T => constants.%empty_struct_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.a96 // CHECK:STDOUT: @@ -327,35 +327,35 @@ fn G(x: A) { // CHECK:STDOUT: %Self.f0c: %HasF.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type.308: type = facet_access_type %Self.f0c [symbolic] // CHECK:STDOUT: %pattern_type.28f: type = pattern_type %Self.as_type.308 [symbolic] -// CHECK:STDOUT: %F.type.b7b: type = fn_type @F.loc5 [concrete] +// CHECK:STDOUT: %HasF.F.type: type = fn_type @HasF.F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F.f50: %F.type.b7b = struct_value () [concrete] +// CHECK:STDOUT: %HasF.F: %HasF.F.type = struct_value () [concrete] // CHECK:STDOUT: %HasF.assoc_type: type = assoc_entity_type @HasF [concrete] -// CHECK:STDOUT: %assoc0.97a: %HasF.assoc_type = assoc_entity element0, @HasF.%F.decl [concrete] +// CHECK:STDOUT: %assoc0.97a: %HasF.assoc_type = assoc_entity element0, @HasF.%HasF.F.decl [concrete] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] -// CHECK:STDOUT: %HasF.impl_witness.ec7: = impl_witness file.%HasF.impl_witness_table, @HasF.impl(%T) [symbolic] +// CHECK:STDOUT: %HasF.impl_witness.ec7: = impl_witness file.%HasF.impl_witness_table, @T.as.HasF.impl(%T) [symbolic] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %T [symbolic] -// CHECK:STDOUT: %F.type.3fd: type = fn_type @F.loc9, @HasF.impl(%T) [symbolic] -// CHECK:STDOUT: %F.c98: %F.type.3fd = struct_value () [symbolic] +// CHECK:STDOUT: %T.as.HasF.impl.F.type.3fd: type = fn_type @T.as.HasF.impl.F, @T.as.HasF.impl(%T) [symbolic] +// CHECK:STDOUT: %T.as.HasF.impl.F.c98: %T.as.HasF.impl.F.type.3fd = struct_value () [symbolic] // CHECK:STDOUT: %HasF.facet.216: %HasF.type = facet_value %T, (%HasF.impl_witness.ec7) [symbolic] // CHECK:STDOUT: %require_complete.4ae: = require_complete_type %T [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %pattern_type.a96: type = pattern_type %empty_struct_type [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] -// CHECK:STDOUT: %HasF.impl_witness.6e4: = impl_witness file.%HasF.impl_witness_table, @HasF.impl(%empty_struct_type) [concrete] -// CHECK:STDOUT: %F.type.2e4: type = fn_type @F.loc9, @HasF.impl(%empty_struct_type) [concrete] -// CHECK:STDOUT: %F.f13: %F.type.2e4 = struct_value () [concrete] +// CHECK:STDOUT: %HasF.impl_witness.6e4: = impl_witness file.%HasF.impl_witness_table, @T.as.HasF.impl(%empty_struct_type) [concrete] +// CHECK:STDOUT: %T.as.HasF.impl.F.type.2e4: type = fn_type @T.as.HasF.impl.F, @T.as.HasF.impl(%empty_struct_type) [concrete] +// CHECK:STDOUT: %T.as.HasF.impl.F.f13: %T.as.HasF.impl.F.type.2e4 = struct_value () [concrete] // CHECK:STDOUT: %HasF.facet.fa2: %HasF.type = facet_value %empty_struct_type, (%HasF.impl_witness.6e4) [concrete] -// CHECK:STDOUT: %.e02: type = fn_type_with_self_type %F.type.b7b, %HasF.facet.fa2 [concrete] -// CHECK:STDOUT: %F.specific_fn: = specific_function %F.f13, @F.loc9(%empty_struct_type) [concrete] +// CHECK:STDOUT: %.e02: type = fn_type_with_self_type %HasF.F.type, %HasF.facet.fa2 [concrete] +// CHECK:STDOUT: %T.as.HasF.impl.F.specific_fn: = specific_function %T.as.HasF.impl.F.f13, @T.as.HasF.impl.F(%empty_struct_type) [concrete] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.069: type = fn_type @Op.1, @Destroy.impl(%empty_struct_type) [concrete] -// CHECK:STDOUT: %Op.d5a: %Op.type.069 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.069: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%empty_struct_type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.d5a: %T.as.Destroy.impl.Op.type.069 = struct_value () [concrete] // CHECK:STDOUT: %ptr.c28: type = ptr_type %empty_struct_type [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.d5a, @Op.1(%empty_struct_type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.d5a, @T.as.Destroy.impl.Op(%empty_struct_type) [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -376,15 +376,15 @@ fn G(x: A) { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %HasF.decl: type = interface_decl @HasF [concrete = constants.%HasF.type] {} {} -// CHECK:STDOUT: impl_decl @HasF.impl [concrete] { +// CHECK:STDOUT: impl_decl @T.as.HasF.impl [concrete] { // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc8_14.1 [symbolic = %T.loc8_14.2 (constants.%T)] +// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc8_14.2 [symbolic = %T.loc8_14.1 (constants.%T)] // CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [concrete = constants.%HasF.type] -// CHECK:STDOUT: %T.loc8_14.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc8_14.2 (constants.%T)] +// CHECK:STDOUT: %T.loc8_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc8_14.1 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %HasF.impl_witness_table = impl_witness_table (@HasF.impl.%F.decl), @HasF.impl [concrete] -// CHECK:STDOUT: %HasF.impl_witness: = impl_witness %HasF.impl_witness_table, @HasF.impl(constants.%T) [symbolic = @HasF.impl.%HasF.impl_witness (constants.%HasF.impl_witness.ec7)] +// CHECK:STDOUT: %HasF.impl_witness_table = impl_witness_table (@T.as.HasF.impl.%T.as.HasF.impl.F.decl), @T.as.HasF.impl [concrete] +// CHECK:STDOUT: %HasF.impl_witness: = impl_witness %HasF.impl_witness_table, @T.as.HasF.impl(constants.%T) [symbolic = @T.as.HasF.impl.%HasF.impl_witness (constants.%HasF.impl_witness.ec7)] // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { // CHECK:STDOUT: %x.patt: %pattern_type.a96 = binding_pattern x [concrete] // CHECK:STDOUT: %x.param_patt: %pattern_type.a96 = value_param_pattern %x.patt, call_param0 [concrete] @@ -406,81 +406,81 @@ fn G(x: A) { // CHECK:STDOUT: // CHECK:STDOUT: interface @HasF { // CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.f0c] -// CHECK:STDOUT: %F.decl: %F.type.b7b = fn_decl @F.loc5 [concrete = constants.%F.f50] { -// CHECK:STDOUT: %self.patt: @F.loc5.%pattern_type (%pattern_type.28f) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.loc5.%pattern_type (%pattern_type.28f) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: @F.loc5.%pattern_type (%pattern_type.28f) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @F.loc5.%pattern_type (%pattern_type.28f) = out_param_pattern %return.patt, call_param1 [concrete] +// CHECK:STDOUT: %HasF.F.decl: %HasF.F.type = fn_decl @HasF.F [concrete = constants.%HasF.F] { +// CHECK:STDOUT: %self.patt: @HasF.F.%pattern_type (%pattern_type.28f) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @HasF.F.%pattern_type (%pattern_type.28f) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %return.patt: @HasF.F.%pattern_type (%pattern_type.28f) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @HasF.F.%pattern_type (%pattern_type.28f) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc5_25: %HasF.type = name_ref Self, @HasF.%Self [symbolic = %Self (constants.%Self.f0c)] -// CHECK:STDOUT: %Self.as_type.loc5_25: type = facet_access_type %Self.ref.loc5_25 [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type.308)] -// CHECK:STDOUT: %.loc5_25: type = converted %Self.ref.loc5_25, %Self.as_type.loc5_25 [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type.308)] -// CHECK:STDOUT: %self.param: @F.loc5.%Self.as_type.loc5_14.2 (%Self.as_type.308) = value_param call_param0 -// CHECK:STDOUT: %.loc5_14.1: type = splice_block %.loc5_14.2 [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type.308)] { +// CHECK:STDOUT: %Self.as_type.loc5_25: type = facet_access_type %Self.ref.loc5_25 [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type.308)] +// CHECK:STDOUT: %.loc5_25: type = converted %Self.ref.loc5_25, %Self.as_type.loc5_25 [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type.308)] +// CHECK:STDOUT: %self.param: @HasF.F.%Self.as_type.loc5_14.1 (%Self.as_type.308) = value_param call_param0 +// CHECK:STDOUT: %.loc5_14.1: type = splice_block %.loc5_14.2 [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type.308)] { // CHECK:STDOUT: %Self.ref.loc5_14: %HasF.type = name_ref Self, @HasF.%Self [symbolic = %Self (constants.%Self.f0c)] -// CHECK:STDOUT: %Self.as_type.loc5_14.1: type = facet_access_type %Self.ref.loc5_14 [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type.308)] -// CHECK:STDOUT: %.loc5_14.2: type = converted %Self.ref.loc5_14, %Self.as_type.loc5_14.1 [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type.308)] +// CHECK:STDOUT: %Self.as_type.loc5_14.2: type = facet_access_type %Self.ref.loc5_14 [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type.308)] +// CHECK:STDOUT: %.loc5_14.2: type = converted %Self.ref.loc5_14, %Self.as_type.loc5_14.2 [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type.308)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.loc5.%Self.as_type.loc5_14.2 (%Self.as_type.308) = bind_name self, %self.param -// CHECK:STDOUT: %return.param: ref @F.loc5.%Self.as_type.loc5_14.2 (%Self.as_type.308) = out_param call_param1 -// CHECK:STDOUT: %return: ref @F.loc5.%Self.as_type.loc5_14.2 (%Self.as_type.308) = return_slot %return.param +// CHECK:STDOUT: %self: @HasF.F.%Self.as_type.loc5_14.1 (%Self.as_type.308) = bind_name self, %self.param +// CHECK:STDOUT: %return.param: ref @HasF.F.%Self.as_type.loc5_14.1 (%Self.as_type.308) = out_param call_param1 +// CHECK:STDOUT: %return: ref @HasF.F.%Self.as_type.loc5_14.1 (%Self.as_type.308) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0.97a] +// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, %HasF.F.decl [concrete = constants.%assoc0.97a] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F = %assoc0 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%HasF.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @HasF.impl(%T.loc8_14.1: type) { -// CHECK:STDOUT: %T.loc8_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc8_14.2 (constants.%T)] -// CHECK:STDOUT: %HasF.impl_witness: = impl_witness file.%HasF.impl_witness_table, @HasF.impl(%T.loc8_14.2) [symbolic = %HasF.impl_witness (constants.%HasF.impl_witness.ec7)] +// CHECK:STDOUT: generic impl @T.as.HasF.impl(%T.loc8_14.2: type) { +// CHECK:STDOUT: %T.loc8_14.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc8_14.1 (constants.%T)] +// CHECK:STDOUT: %HasF.impl_witness: = impl_witness file.%HasF.impl_witness_table, @T.as.HasF.impl(%T.loc8_14.1) [symbolic = %HasF.impl_witness (constants.%HasF.impl_witness.ec7)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type: type = fn_type @F.loc9, @HasF.impl(%T.loc8_14.2) [symbolic = %F.type (constants.%F.type.3fd)] -// CHECK:STDOUT: %F: @HasF.impl.%F.type (%F.type.3fd) = struct_value () [symbolic = %F (constants.%F.c98)] +// CHECK:STDOUT: %T.as.HasF.impl.F.type: type = fn_type @T.as.HasF.impl.F, @T.as.HasF.impl(%T.loc8_14.1) [symbolic = %T.as.HasF.impl.F.type (constants.%T.as.HasF.impl.F.type.3fd)] +// CHECK:STDOUT: %T.as.HasF.impl.F: @T.as.HasF.impl.%T.as.HasF.impl.F.type (%T.as.HasF.impl.F.type.3fd) = struct_value () [symbolic = %T.as.HasF.impl.F (constants.%T.as.HasF.impl.F.c98)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %T.ref as %HasF.ref { -// CHECK:STDOUT: %F.decl: @HasF.impl.%F.type (%F.type.3fd) = fn_decl @F.loc9 [symbolic = @HasF.impl.%F (constants.%F.c98)] { -// CHECK:STDOUT: %self.patt: @F.loc9.%pattern_type (%pattern_type.7dc) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.loc9.%pattern_type (%pattern_type.7dc) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: @F.loc9.%pattern_type (%pattern_type.7dc) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @F.loc9.%pattern_type (%pattern_type.7dc) = out_param_pattern %return.patt, call_param1 [concrete] +// CHECK:STDOUT: %T.as.HasF.impl.F.decl: @T.as.HasF.impl.%T.as.HasF.impl.F.type (%T.as.HasF.impl.F.type.3fd) = fn_decl @T.as.HasF.impl.F [symbolic = @T.as.HasF.impl.%T.as.HasF.impl.F (constants.%T.as.HasF.impl.F.c98)] { +// CHECK:STDOUT: %self.patt: @T.as.HasF.impl.F.%pattern_type (%pattern_type.7dc) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @T.as.HasF.impl.F.%pattern_type (%pattern_type.7dc) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %return.patt: @T.as.HasF.impl.F.%pattern_type (%pattern_type.7dc) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @T.as.HasF.impl.F.%pattern_type (%pattern_type.7dc) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.ref: type = name_ref T, @HasF.impl.%T.loc8_14.1 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %self.param: @F.loc9.%T (%T) = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @HasF.impl.%T.ref [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %self: @F.loc9.%T (%T) = bind_name self, %self.param -// CHECK:STDOUT: %return.param: ref @F.loc9.%T (%T) = out_param call_param1 -// CHECK:STDOUT: %return: ref @F.loc9.%T (%T) = return_slot %return.param +// CHECK:STDOUT: %T.ref: type = name_ref T, @T.as.HasF.impl.%T.loc8_14.2 [symbolic = %T (constants.%T)] +// CHECK:STDOUT: %self.param: @T.as.HasF.impl.F.%T (%T) = value_param call_param0 +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @T.as.HasF.impl.%T.ref [symbolic = %T (constants.%T)] +// CHECK:STDOUT: %self: @T.as.HasF.impl.F.%T (%T) = bind_name self, %self.param +// CHECK:STDOUT: %return.param: ref @T.as.HasF.impl.F.%T (%T) = out_param call_param1 +// CHECK:STDOUT: %return: ref @T.as.HasF.impl.F.%T (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .T = -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %T.as.HasF.impl.F.decl // CHECK:STDOUT: witness = file.%HasF.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc5(@HasF.%Self: %HasF.type) { +// CHECK:STDOUT: generic fn @HasF.F(@HasF.%Self: %HasF.type) { // CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.f0c)] -// CHECK:STDOUT: %Self.as_type.loc5_14.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type.308)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc5_14.2 [symbolic = %pattern_type (constants.%pattern_type.28f)] +// CHECK:STDOUT: %Self.as_type.loc5_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type.308)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc5_14.1 [symbolic = %pattern_type (constants.%pattern_type.28f)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @F.loc5.%Self.as_type.loc5_14.2 (%Self.as_type.308)) -> @F.loc5.%Self.as_type.loc5_14.2 (%Self.as_type.308); +// CHECK:STDOUT: fn(%self.param: @HasF.F.%Self.as_type.loc5_14.1 (%Self.as_type.308)) -> @HasF.F.%Self.as_type.loc5_14.1 (%Self.as_type.308); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc9(@HasF.impl.%T.loc8_14.1: type) { +// CHECK:STDOUT: generic fn @T.as.HasF.impl.F(@T.as.HasF.impl.%T.loc8_14.2: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %pattern_type: type = pattern_type %T [symbolic = %pattern_type (constants.%pattern_type.7dc)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %T [symbolic = %require_complete (constants.%require_complete.4ae)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @F.loc9.%T (%T)) -> @F.loc9.%T (%T) { +// CHECK:STDOUT: fn(%self.param: @T.as.HasF.impl.F.%T (%T)) -> @T.as.HasF.impl.F.%T (%T) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %self.ref: @F.loc9.%T (%T) = name_ref self, %self +// CHECK:STDOUT: %self.ref: @T.as.HasF.impl.F.%T (%T) = name_ref self, %self // CHECK:STDOUT: return %self.ref // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -490,59 +490,59 @@ fn G(x: A) { // CHECK:STDOUT: %x.ref: %empty_struct_type = name_ref x, %x // CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [concrete = constants.%HasF.type] // CHECK:STDOUT: %F.ref: %HasF.assoc_type = name_ref F, @HasF.%assoc0 [concrete = constants.%assoc0.97a] -// CHECK:STDOUT: %impl.elem0: %.e02 = impl_witness_access constants.%HasF.impl_witness.6e4, element0 [concrete = constants.%F.f13] +// CHECK:STDOUT: %impl.elem0: %.e02 = impl_witness_access constants.%HasF.impl_witness.6e4, element0 [concrete = constants.%T.as.HasF.impl.F.f13] // CHECK:STDOUT: %bound_method.loc13_11: = bound_method %x.ref, %impl.elem0 -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @F.loc9(constants.%empty_struct_type) [concrete = constants.%F.specific_fn] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @T.as.HasF.impl.F(constants.%empty_struct_type) [concrete = constants.%T.as.HasF.impl.F.specific_fn] // CHECK:STDOUT: %bound_method.loc13_21.1: = bound_method %x.ref, %specific_fn -// CHECK:STDOUT: %F.call: init %empty_struct_type = call %bound_method.loc13_21.1(%x.ref) +// CHECK:STDOUT: %T.as.HasF.impl.F.call: init %empty_struct_type = call %bound_method.loc13_21.1(%x.ref) // CHECK:STDOUT: %.loc13_21.1: ref %empty_struct_type = temporary_storage -// CHECK:STDOUT: %.loc13_21.2: ref %empty_struct_type = temporary %.loc13_21.1, %F.call +// CHECK:STDOUT: %.loc13_21.2: ref %empty_struct_type = temporary %.loc13_21.1, %T.as.HasF.impl.F.call // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] -// CHECK:STDOUT: %.loc13_22: %empty_struct_type = converted %F.call, %empty_struct [concrete = constants.%empty_struct] -// CHECK:STDOUT: %Op.bound: = bound_method %.loc13_21.1, constants.%Op.d5a -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.d5a, @Op.1(constants.%empty_struct_type) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc13_21.2: = bound_method %.loc13_21.1, %Op.specific_fn +// CHECK:STDOUT: %.loc13_22: %empty_struct_type = converted %T.as.HasF.impl.F.call, %empty_struct [concrete = constants.%empty_struct] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc13_21.1, constants.%T.as.Destroy.impl.Op.d5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.d5a, @T.as.Destroy.impl.Op(constants.%empty_struct_type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc13_21.2: = bound_method %.loc13_21.1, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.c28 = addr_of %.loc13_21.1 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc13_21.2(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc13_21.2(%addr) // CHECK:STDOUT: return %.loc13_22 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%Self.f0c) { +// CHECK:STDOUT: specific @HasF.F(constants.%Self.f0c) { // CHECK:STDOUT: %Self => constants.%Self.f0c -// CHECK:STDOUT: %Self.as_type.loc5_14.2 => constants.%Self.as_type.308 +// CHECK:STDOUT: %Self.as_type.loc5_14.1 => constants.%Self.as_type.308 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.28f // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @HasF.impl(constants.%T) { -// CHECK:STDOUT: %T.loc8_14.2 => constants.%T +// CHECK:STDOUT: specific @T.as.HasF.impl(constants.%T) { +// CHECK:STDOUT: %T.loc8_14.1 => constants.%T // CHECK:STDOUT: %HasF.impl_witness => constants.%HasF.impl_witness.ec7 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.3fd -// CHECK:STDOUT: %F => constants.%F.c98 +// CHECK:STDOUT: %T.as.HasF.impl.F.type => constants.%T.as.HasF.impl.F.type.3fd +// CHECK:STDOUT: %T.as.HasF.impl.F => constants.%T.as.HasF.impl.F.c98 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc9(constants.%T) { +// CHECK:STDOUT: specific @T.as.HasF.impl.F(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7dc // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%HasF.facet.216) { +// CHECK:STDOUT: specific @HasF.F(constants.%HasF.facet.216) { // CHECK:STDOUT: %Self => constants.%HasF.facet.216 -// CHECK:STDOUT: %Self.as_type.loc5_14.2 => constants.%T +// CHECK:STDOUT: %Self.as_type.loc5_14.1 => constants.%T // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7dc // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @HasF.impl(constants.%empty_struct_type) { -// CHECK:STDOUT: %T.loc8_14.2 => constants.%empty_struct_type +// CHECK:STDOUT: specific @T.as.HasF.impl(constants.%empty_struct_type) { +// CHECK:STDOUT: %T.loc8_14.1 => constants.%empty_struct_type // CHECK:STDOUT: %HasF.impl_witness => constants.%HasF.impl_witness.6e4 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.2e4 -// CHECK:STDOUT: %F => constants.%F.f13 +// CHECK:STDOUT: %T.as.HasF.impl.F.type => constants.%T.as.HasF.impl.F.type.2e4 +// CHECK:STDOUT: %T.as.HasF.impl.F => constants.%T.as.HasF.impl.F.f13 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc9(constants.%empty_struct_type) { +// CHECK:STDOUT: specific @T.as.HasF.impl.F(constants.%empty_struct_type) { // CHECK:STDOUT: %T => constants.%empty_struct_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.a96 // CHECK:STDOUT: @@ -557,11 +557,11 @@ fn G(x: A) { // CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic] // CHECK:STDOUT: %pattern_type.28f: type = pattern_type %Self.as_type [symbolic] -// CHECK:STDOUT: %F.type.b7b: type = fn_type @F.loc5 [concrete] +// CHECK:STDOUT: %HasF.F.type: type = fn_type @HasF.F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F.f50: %F.type.b7b = struct_value () [concrete] +// CHECK:STDOUT: %HasF.F: %HasF.F.type = struct_value () [concrete] // CHECK:STDOUT: %HasF.assoc_type: type = assoc_entity_type @HasF [concrete] -// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, @HasF.%F.decl [concrete] +// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, @HasF.%HasF.F.decl [concrete] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %C.type: type = generic_class_type @C [concrete] @@ -569,22 +569,22 @@ fn G(x: A) { // CHECK:STDOUT: %C.f2e: type = class_type @C, @C(%T) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] -// CHECK:STDOUT: %HasF.impl_witness.834: = impl_witness file.%HasF.impl_witness_table, @HasF.impl(%T) [symbolic] +// CHECK:STDOUT: %HasF.impl_witness.834: = impl_witness file.%HasF.impl_witness_table, @C.as.HasF.impl(%T) [symbolic] // CHECK:STDOUT: %pattern_type.e5e: type = pattern_type %C.f2e [symbolic] -// CHECK:STDOUT: %F.type.8fe: type = fn_type @F.loc11, @HasF.impl(%T) [symbolic] -// CHECK:STDOUT: %F.92a: %F.type.8fe = struct_value () [symbolic] +// CHECK:STDOUT: %C.as.HasF.impl.F.type.8fe: type = fn_type @C.as.HasF.impl.F, @C.as.HasF.impl(%T) [symbolic] +// CHECK:STDOUT: %C.as.HasF.impl.F.92a: %C.as.HasF.impl.F.type.8fe = struct_value () [symbolic] // CHECK:STDOUT: %HasF.facet.766: %HasF.type = facet_value %C.f2e, (%HasF.impl_witness.834) [symbolic] // CHECK:STDOUT: %require_complete: = require_complete_type %C.f2e [symbolic] // CHECK:STDOUT: %C.7a7: type = class_type @C, @C(%empty_struct_type) [concrete] // CHECK:STDOUT: %pattern_type.99a: type = pattern_type %C.7a7 [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] -// CHECK:STDOUT: %HasF.impl_witness.0de: = impl_witness file.%HasF.impl_witness_table, @HasF.impl(%empty_struct_type) [concrete] -// CHECK:STDOUT: %F.type.2e5: type = fn_type @F.loc11, @HasF.impl(%empty_struct_type) [concrete] -// CHECK:STDOUT: %F.c77: %F.type.2e5 = struct_value () [concrete] +// CHECK:STDOUT: %HasF.impl_witness.0de: = impl_witness file.%HasF.impl_witness_table, @C.as.HasF.impl(%empty_struct_type) [concrete] +// CHECK:STDOUT: %C.as.HasF.impl.F.type.2e5: type = fn_type @C.as.HasF.impl.F, @C.as.HasF.impl(%empty_struct_type) [concrete] +// CHECK:STDOUT: %C.as.HasF.impl.F.c77: %C.as.HasF.impl.F.type.2e5 = struct_value () [concrete] // CHECK:STDOUT: %HasF.facet.672: %HasF.type = facet_value %C.7a7, (%HasF.impl_witness.0de) [concrete] -// CHECK:STDOUT: %.0c7: type = fn_type_with_self_type %F.type.b7b, %HasF.facet.672 [concrete] -// CHECK:STDOUT: %F.specific_fn: = specific_function %F.c77, @F.loc11(%empty_struct_type) [concrete] +// CHECK:STDOUT: %.0c7: type = fn_type_with_self_type %HasF.F.type, %HasF.facet.672 [concrete] +// CHECK:STDOUT: %C.as.HasF.impl.F.specific_fn: = specific_function %C.as.HasF.impl.F.c77, @C.as.HasF.impl.F(%empty_struct_type) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -608,17 +608,17 @@ fn G(x: A) { // CHECK:STDOUT: } { // CHECK:STDOUT: %T.loc8_9.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc8_9.1 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: impl_decl @HasF.impl [concrete] { +// CHECK:STDOUT: impl_decl @C.as.HasF.impl [concrete] { // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] -// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc10_14.1 [symbolic = %T.loc10_14.2 (constants.%T)] -// CHECK:STDOUT: %C.loc10_27.1: type = class_type @C, @C(constants.%T) [symbolic = %C.loc10_27.2 (constants.%C.f2e)] +// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc10_14.2 [symbolic = %T.loc10_14.1 (constants.%T)] +// CHECK:STDOUT: %C.loc10_27.2: type = class_type @C, @C(constants.%T) [symbolic = %C.loc10_27.1 (constants.%C.f2e)] // CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [concrete = constants.%HasF.type] -// CHECK:STDOUT: %T.loc10_14.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc10_14.2 (constants.%T)] +// CHECK:STDOUT: %T.loc10_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc10_14.1 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %HasF.impl_witness_table = impl_witness_table (@HasF.impl.%F.decl), @HasF.impl [concrete] -// CHECK:STDOUT: %HasF.impl_witness: = impl_witness %HasF.impl_witness_table, @HasF.impl(constants.%T) [symbolic = @HasF.impl.%HasF.impl_witness (constants.%HasF.impl_witness.834)] +// CHECK:STDOUT: %HasF.impl_witness_table = impl_witness_table (@C.as.HasF.impl.%C.as.HasF.impl.F.decl), @C.as.HasF.impl [concrete] +// CHECK:STDOUT: %HasF.impl_witness: = impl_witness %HasF.impl_witness_table, @C.as.HasF.impl(constants.%T) [symbolic = @C.as.HasF.impl.%HasF.impl_witness (constants.%HasF.impl_witness.834)] // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { // CHECK:STDOUT: %x.patt: %pattern_type.99a = binding_pattern x [concrete] // CHECK:STDOUT: %x.param_patt: %pattern_type.99a = value_param_pattern %x.patt, call_param0 [concrete] @@ -636,47 +636,47 @@ fn G(x: A) { // CHECK:STDOUT: // CHECK:STDOUT: interface @HasF { // CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %F.decl: %F.type.b7b = fn_decl @F.loc5 [concrete = constants.%F.f50] { -// CHECK:STDOUT: %self.patt: @F.loc5.%pattern_type (%pattern_type.28f) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.loc5.%pattern_type (%pattern_type.28f) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %HasF.F.decl: %HasF.F.type = fn_decl @HasF.F [concrete = constants.%HasF.F] { +// CHECK:STDOUT: %self.patt: @HasF.F.%pattern_type (%pattern_type.28f) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @HasF.F.%pattern_type (%pattern_type.28f) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @F.loc5.%Self.as_type.loc5_14.2 (%Self.as_type) = value_param call_param0 -// CHECK:STDOUT: %.loc5_14.1: type = splice_block %.loc5_14.2 [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type)] { +// CHECK:STDOUT: %self.param: @HasF.F.%Self.as_type.loc5_14.1 (%Self.as_type) = value_param call_param0 +// CHECK:STDOUT: %.loc5_14.1: type = splice_block %.loc5_14.2 [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] { // CHECK:STDOUT: %Self.ref: %HasF.type = name_ref Self, @HasF.%Self [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc5_14.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc5_14.2: type = converted %Self.ref, %Self.as_type.loc5_14.1 [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type)] +// CHECK:STDOUT: %Self.as_type.loc5_14.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc5_14.2: type = converted %Self.ref, %Self.as_type.loc5_14.2 [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.loc5.%Self.as_type.loc5_14.2 (%Self.as_type) = bind_name self, %self.param +// CHECK:STDOUT: %self: @HasF.F.%Self.as_type.loc5_14.1 (%Self.as_type) = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, %HasF.F.decl [concrete = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F = %assoc0 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%HasF.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @HasF.impl(%T.loc10_14.1: type) { -// CHECK:STDOUT: %T.loc10_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc10_14.2 (constants.%T)] -// CHECK:STDOUT: %C.loc10_27.2: type = class_type @C, @C(%T.loc10_14.2) [symbolic = %C.loc10_27.2 (constants.%C.f2e)] -// CHECK:STDOUT: %HasF.impl_witness: = impl_witness file.%HasF.impl_witness_table, @HasF.impl(%T.loc10_14.2) [symbolic = %HasF.impl_witness (constants.%HasF.impl_witness.834)] +// CHECK:STDOUT: generic impl @C.as.HasF.impl(%T.loc10_14.2: type) { +// CHECK:STDOUT: %T.loc10_14.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc10_14.1 (constants.%T)] +// CHECK:STDOUT: %C.loc10_27.1: type = class_type @C, @C(%T.loc10_14.1) [symbolic = %C.loc10_27.1 (constants.%C.f2e)] +// CHECK:STDOUT: %HasF.impl_witness: = impl_witness file.%HasF.impl_witness_table, @C.as.HasF.impl(%T.loc10_14.1) [symbolic = %HasF.impl_witness (constants.%HasF.impl_witness.834)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type: type = fn_type @F.loc11, @HasF.impl(%T.loc10_14.2) [symbolic = %F.type (constants.%F.type.8fe)] -// CHECK:STDOUT: %F: @HasF.impl.%F.type (%F.type.8fe) = struct_value () [symbolic = %F (constants.%F.92a)] +// CHECK:STDOUT: %C.as.HasF.impl.F.type: type = fn_type @C.as.HasF.impl.F, @C.as.HasF.impl(%T.loc10_14.1) [symbolic = %C.as.HasF.impl.F.type (constants.%C.as.HasF.impl.F.type.8fe)] +// CHECK:STDOUT: %C.as.HasF.impl.F: @C.as.HasF.impl.%C.as.HasF.impl.F.type (%C.as.HasF.impl.F.type.8fe) = struct_value () [symbolic = %C.as.HasF.impl.F (constants.%C.as.HasF.impl.F.92a)] // CHECK:STDOUT: -// CHECK:STDOUT: impl: %C.loc10_27.1 as %HasF.ref { -// CHECK:STDOUT: %F.decl: @HasF.impl.%F.type (%F.type.8fe) = fn_decl @F.loc11 [symbolic = @HasF.impl.%F (constants.%F.92a)] { -// CHECK:STDOUT: %self.patt: @F.loc11.%pattern_type (%pattern_type.e5e) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.loc11.%pattern_type (%pattern_type.e5e) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: impl: %C.loc10_27.2 as %HasF.ref { +// CHECK:STDOUT: %C.as.HasF.impl.F.decl: @C.as.HasF.impl.%C.as.HasF.impl.F.type (%C.as.HasF.impl.F.type.8fe) = fn_decl @C.as.HasF.impl.F [symbolic = @C.as.HasF.impl.%C.as.HasF.impl.F (constants.%C.as.HasF.impl.F.92a)] { +// CHECK:STDOUT: %self.patt: @C.as.HasF.impl.F.%pattern_type (%pattern_type.e5e) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @C.as.HasF.impl.F.%pattern_type (%pattern_type.e5e) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @F.loc11.%C (%C.f2e) = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @HasF.impl.%C.loc10_27.1 [symbolic = %C (constants.%C.f2e)] -// CHECK:STDOUT: %self: @F.loc11.%C (%C.f2e) = bind_name self, %self.param +// CHECK:STDOUT: %self.param: @C.as.HasF.impl.F.%C (%C.f2e) = value_param call_param0 +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @C.as.HasF.impl.%C.loc10_27.2 [symbolic = %C (constants.%C.f2e)] +// CHECK:STDOUT: %self: @C.as.HasF.impl.F.%C (%C.f2e) = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %C.as.HasF.impl.F.decl // CHECK:STDOUT: witness = file.%HasF.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -696,15 +696,15 @@ fn G(x: A) { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc5(@HasF.%Self: %HasF.type) { +// CHECK:STDOUT: generic fn @HasF.F(@HasF.%Self: %HasF.type) { // CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc5_14.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc5_14.2 [symbolic = %pattern_type (constants.%pattern_type.28f)] +// CHECK:STDOUT: %Self.as_type.loc5_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc5_14.1 [symbolic = %pattern_type (constants.%pattern_type.28f)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @F.loc5.%Self.as_type.loc5_14.2 (%Self.as_type)); +// CHECK:STDOUT: fn(%self.param: @HasF.F.%Self.as_type.loc5_14.1 (%Self.as_type)); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc11(@HasF.impl.%T.loc10_14.1: type) { +// CHECK:STDOUT: generic fn @C.as.HasF.impl.F(@C.as.HasF.impl.%T.loc10_14.2: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %C: type = class_type @C, @C(%T) [symbolic = %C (constants.%C.f2e)] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [symbolic = %pattern_type (constants.%pattern_type.e5e)] @@ -712,7 +712,7 @@ fn G(x: A) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %C [symbolic = %require_complete (constants.%require_complete)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @F.loc11.%C (%C.f2e)) { +// CHECK:STDOUT: fn(%self.param: @C.as.HasF.impl.F.%C (%C.f2e)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -723,17 +723,17 @@ fn G(x: A) { // CHECK:STDOUT: %x.ref: %C.7a7 = name_ref x, %x // CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [concrete = constants.%HasF.type] // CHECK:STDOUT: %F.ref: %HasF.assoc_type = name_ref F, @HasF.%assoc0 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: %.0c7 = impl_witness_access constants.%HasF.impl_witness.0de, element0 [concrete = constants.%F.c77] +// CHECK:STDOUT: %impl.elem0: %.0c7 = impl_witness_access constants.%HasF.impl_witness.0de, element0 [concrete = constants.%C.as.HasF.impl.F.c77] // CHECK:STDOUT: %bound_method.loc15_4: = bound_method %x.ref, %impl.elem0 -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @F.loc11(constants.%empty_struct_type) [concrete = constants.%F.specific_fn] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @C.as.HasF.impl.F(constants.%empty_struct_type) [concrete = constants.%C.as.HasF.impl.F.specific_fn] // CHECK:STDOUT: %bound_method.loc15_14: = bound_method %x.ref, %specific_fn -// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %bound_method.loc15_14(%x.ref) +// CHECK:STDOUT: %C.as.HasF.impl.F.call: init %empty_tuple.type = call %bound_method.loc15_14(%x.ref) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%Self) { +// CHECK:STDOUT: specific @HasF.F(constants.%Self) { // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %Self.as_type.loc5_14.2 => constants.%Self.as_type +// CHECK:STDOUT: %Self.as_type.loc5_14.1 => constants.%Self.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.28f // CHECK:STDOUT: } // CHECK:STDOUT: @@ -743,25 +743,25 @@ fn G(x: A) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @HasF.impl(constants.%T) { -// CHECK:STDOUT: %T.loc10_14.2 => constants.%T -// CHECK:STDOUT: %C.loc10_27.2 => constants.%C.f2e +// CHECK:STDOUT: specific @C.as.HasF.impl(constants.%T) { +// CHECK:STDOUT: %T.loc10_14.1 => constants.%T +// CHECK:STDOUT: %C.loc10_27.1 => constants.%C.f2e // CHECK:STDOUT: %HasF.impl_witness => constants.%HasF.impl_witness.834 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.8fe -// CHECK:STDOUT: %F => constants.%F.92a +// CHECK:STDOUT: %C.as.HasF.impl.F.type => constants.%C.as.HasF.impl.F.type.8fe +// CHECK:STDOUT: %C.as.HasF.impl.F => constants.%C.as.HasF.impl.F.92a // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc11(constants.%T) { +// CHECK:STDOUT: specific @C.as.HasF.impl.F(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %C => constants.%C.f2e // CHECK:STDOUT: %pattern_type => constants.%pattern_type.e5e // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%HasF.facet.766) { +// CHECK:STDOUT: specific @HasF.F(constants.%HasF.facet.766) { // CHECK:STDOUT: %Self => constants.%HasF.facet.766 -// CHECK:STDOUT: %Self.as_type.loc5_14.2 => constants.%C.f2e +// CHECK:STDOUT: %Self.as_type.loc5_14.1 => constants.%C.f2e // CHECK:STDOUT: %pattern_type => constants.%pattern_type.e5e // CHECK:STDOUT: } // CHECK:STDOUT: @@ -771,17 +771,17 @@ fn G(x: A) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @HasF.impl(constants.%empty_struct_type) { -// CHECK:STDOUT: %T.loc10_14.2 => constants.%empty_struct_type -// CHECK:STDOUT: %C.loc10_27.2 => constants.%C.7a7 +// CHECK:STDOUT: specific @C.as.HasF.impl(constants.%empty_struct_type) { +// CHECK:STDOUT: %T.loc10_14.1 => constants.%empty_struct_type +// CHECK:STDOUT: %C.loc10_27.1 => constants.%C.7a7 // CHECK:STDOUT: %HasF.impl_witness => constants.%HasF.impl_witness.0de // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.2e5 -// CHECK:STDOUT: %F => constants.%F.c77 +// CHECK:STDOUT: %C.as.HasF.impl.F.type => constants.%C.as.HasF.impl.F.type.2e5 +// CHECK:STDOUT: %C.as.HasF.impl.F => constants.%C.as.HasF.impl.F.c77 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc11(constants.%empty_struct_type) { +// CHECK:STDOUT: specific @C.as.HasF.impl.F(constants.%empty_struct_type) { // CHECK:STDOUT: %T => constants.%empty_struct_type // CHECK:STDOUT: %C => constants.%C.7a7 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.99a @@ -802,32 +802,32 @@ fn G(x: A) { // CHECK:STDOUT: %Self.322: %HasF.type.901 = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self.322 [symbolic] // CHECK:STDOUT: %pattern_type.dfb: type = pattern_type %Self.as_type [symbolic] -// CHECK:STDOUT: %F.type.46c: type = fn_type @F.loc5, @HasF(%T) [symbolic] -// CHECK:STDOUT: %F.823: %F.type.46c = struct_value () [symbolic] +// CHECK:STDOUT: %HasF.F.type.46c: type = fn_type @HasF.F, @HasF(%T) [symbolic] +// CHECK:STDOUT: %HasF.F.823: %HasF.F.type.46c = struct_value () [symbolic] // CHECK:STDOUT: %HasF.assoc_type.dd8: type = assoc_entity_type @HasF, @HasF(%T) [symbolic] -// CHECK:STDOUT: %assoc0.d31: %HasF.assoc_type.dd8 = assoc_entity element0, @HasF.%F.decl [symbolic] +// CHECK:STDOUT: %assoc0.d31: %HasF.assoc_type.dd8 = assoc_entity element0, @HasF.%HasF.F.decl [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %require_complete: = require_complete_type %HasF.type.901 [symbolic] -// CHECK:STDOUT: %HasF.impl_witness.55c: = impl_witness file.%HasF.impl_witness_table, @HasF.impl(%T) [symbolic] +// CHECK:STDOUT: %HasF.impl_witness.55c: = impl_witness file.%HasF.impl_witness_table, @empty_struct_type.as.HasF.impl(%T) [symbolic] // CHECK:STDOUT: %pattern_type.a96: type = pattern_type %empty_struct_type [concrete] -// CHECK:STDOUT: %F.type.6c8: type = fn_type @F.loc9, @HasF.impl(%T) [symbolic] -// CHECK:STDOUT: %F.008: %F.type.6c8 = struct_value () [symbolic] +// CHECK:STDOUT: %empty_struct_type.as.HasF.impl.F.type.6c8: type = fn_type @empty_struct_type.as.HasF.impl.F, @empty_struct_type.as.HasF.impl(%T) [symbolic] +// CHECK:STDOUT: %empty_struct_type.as.HasF.impl.F.008: %empty_struct_type.as.HasF.impl.F.type.6c8 = struct_value () [symbolic] // CHECK:STDOUT: %HasF.facet.566: %HasF.type.901 = facet_value %empty_struct_type, (%HasF.impl_witness.55c) [symbolic] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %HasF.type.072: type = facet_type <@HasF, @HasF(%empty_struct_type)> [concrete] // CHECK:STDOUT: %Self.a46: %HasF.type.072 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %F.type.b0b: type = fn_type @F.loc5, @HasF(%empty_struct_type) [concrete] -// CHECK:STDOUT: %F.418: %F.type.b0b = struct_value () [concrete] +// CHECK:STDOUT: %HasF.F.type.b0b: type = fn_type @HasF.F, @HasF(%empty_struct_type) [concrete] +// CHECK:STDOUT: %HasF.F.418: %HasF.F.type.b0b = struct_value () [concrete] // CHECK:STDOUT: %HasF.assoc_type.9e4: type = assoc_entity_type @HasF, @HasF(%empty_struct_type) [concrete] -// CHECK:STDOUT: %assoc0.f76: %HasF.assoc_type.9e4 = assoc_entity element0, @HasF.%F.decl [concrete] +// CHECK:STDOUT: %assoc0.f76: %HasF.assoc_type.9e4 = assoc_entity element0, @HasF.%HasF.F.decl [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %HasF.type.072 [concrete] -// CHECK:STDOUT: %HasF.impl_witness.25d: = impl_witness file.%HasF.impl_witness_table, @HasF.impl(%empty_struct_type) [concrete] -// CHECK:STDOUT: %F.type.a13: type = fn_type @F.loc9, @HasF.impl(%empty_struct_type) [concrete] -// CHECK:STDOUT: %F.8c6: %F.type.a13 = struct_value () [concrete] +// CHECK:STDOUT: %HasF.impl_witness.25d: = impl_witness file.%HasF.impl_witness_table, @empty_struct_type.as.HasF.impl(%empty_struct_type) [concrete] +// CHECK:STDOUT: %empty_struct_type.as.HasF.impl.F.type.a13: type = fn_type @empty_struct_type.as.HasF.impl.F, @empty_struct_type.as.HasF.impl(%empty_struct_type) [concrete] +// CHECK:STDOUT: %empty_struct_type.as.HasF.impl.F.8c6: %empty_struct_type.as.HasF.impl.F.type.a13 = struct_value () [concrete] // CHECK:STDOUT: %HasF.facet.07d: %HasF.type.072 = facet_value %empty_struct_type, (%HasF.impl_witness.25d) [concrete] -// CHECK:STDOUT: %.21f: type = fn_type_with_self_type %F.type.b0b, %HasF.facet.07d [concrete] -// CHECK:STDOUT: %F.specific_fn: = specific_function %F.8c6, @F.loc9(%empty_struct_type) [concrete] +// CHECK:STDOUT: %.21f: type = fn_type_with_self_type %HasF.F.type.b0b, %HasF.facet.07d [concrete] +// CHECK:STDOUT: %empty_struct_type.as.HasF.impl.F.specific_fn: = specific_function %empty_struct_type.as.HasF.impl.F.8c6, @empty_struct_type.as.HasF.impl.F(%empty_struct_type) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -849,18 +849,18 @@ fn G(x: A) { // CHECK:STDOUT: } { // CHECK:STDOUT: %T.loc4_16.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_16.1 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: impl_decl @HasF.impl [concrete] { +// CHECK:STDOUT: impl_decl @empty_struct_type.as.HasF.impl [concrete] { // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc8_25.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc8_25.2: type = converted %.loc8_25.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %HasF.ref: %HasF.type.fe3 = name_ref HasF, file.%HasF.decl [concrete = constants.%HasF.generic] -// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc8_14.1 [symbolic = %T.loc8_14.2 (constants.%T)] -// CHECK:STDOUT: %HasF.type.loc8_36.1: type = facet_type <@HasF, @HasF(constants.%T)> [symbolic = %HasF.type.loc8_36.2 (constants.%HasF.type.901)] -// CHECK:STDOUT: %T.loc8_14.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc8_14.2 (constants.%T)] +// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc8_14.2 [symbolic = %T.loc8_14.1 (constants.%T)] +// CHECK:STDOUT: %HasF.type.loc8_36.2: type = facet_type <@HasF, @HasF(constants.%T)> [symbolic = %HasF.type.loc8_36.1 (constants.%HasF.type.901)] +// CHECK:STDOUT: %T.loc8_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc8_14.1 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %HasF.impl_witness_table = impl_witness_table (@HasF.impl.%F.decl), @HasF.impl [concrete] -// CHECK:STDOUT: %HasF.impl_witness: = impl_witness %HasF.impl_witness_table, @HasF.impl(constants.%T) [symbolic = @HasF.impl.%HasF.impl_witness (constants.%HasF.impl_witness.55c)] +// CHECK:STDOUT: %HasF.impl_witness_table = impl_witness_table (@empty_struct_type.as.HasF.impl.%empty_struct_type.as.HasF.impl.F.decl), @empty_struct_type.as.HasF.impl [concrete] +// CHECK:STDOUT: %HasF.impl_witness: = impl_witness %HasF.impl_witness_table, @empty_struct_type.as.HasF.impl(constants.%T) [symbolic = @empty_struct_type.as.HasF.impl.%HasF.impl_witness (constants.%HasF.impl_witness.55c)] // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { // CHECK:STDOUT: %x.patt: %pattern_type.a96 = binding_pattern x [concrete] // CHECK:STDOUT: %x.param_patt: %pattern_type.a96 = value_param_pattern %x.patt, call_param0 [concrete] @@ -880,72 +880,72 @@ fn G(x: A) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %HasF.type: type = facet_type <@HasF, @HasF(%T.loc4_16.1)> [symbolic = %HasF.type (constants.%HasF.type.901)] // CHECK:STDOUT: %Self.2: @HasF.%HasF.type (%HasF.type.901) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.322)] -// CHECK:STDOUT: %F.type: type = fn_type @F.loc5, @HasF(%T.loc4_16.1) [symbolic = %F.type (constants.%F.type.46c)] -// CHECK:STDOUT: %F: @HasF.%F.type (%F.type.46c) = struct_value () [symbolic = %F (constants.%F.823)] +// CHECK:STDOUT: %HasF.F.type: type = fn_type @HasF.F, @HasF(%T.loc4_16.1) [symbolic = %HasF.F.type (constants.%HasF.F.type.46c)] +// CHECK:STDOUT: %HasF.F: @HasF.%HasF.F.type (%HasF.F.type.46c) = struct_value () [symbolic = %HasF.F (constants.%HasF.F.823)] // CHECK:STDOUT: %HasF.assoc_type: type = assoc_entity_type @HasF, @HasF(%T.loc4_16.1) [symbolic = %HasF.assoc_type (constants.%HasF.assoc_type.dd8)] -// CHECK:STDOUT: %assoc0.loc5_21.2: @HasF.%HasF.assoc_type (%HasF.assoc_type.dd8) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc5_21.2 (constants.%assoc0.d31)] +// CHECK:STDOUT: %assoc0.loc5_21.2: @HasF.%HasF.assoc_type (%HasF.assoc_type.dd8) = assoc_entity element0, %HasF.F.decl [symbolic = %assoc0.loc5_21.2 (constants.%assoc0.d31)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: %Self.1: @HasF.%HasF.type (%HasF.type.901) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.322)] -// CHECK:STDOUT: %F.decl: @HasF.%F.type (%F.type.46c) = fn_decl @F.loc5 [symbolic = @HasF.%F (constants.%F.823)] { -// CHECK:STDOUT: %self.patt: @F.loc5.%pattern_type (%pattern_type.dfb) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.loc5.%pattern_type (%pattern_type.dfb) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %HasF.F.decl: @HasF.%HasF.F.type (%HasF.F.type.46c) = fn_decl @HasF.F [symbolic = @HasF.%HasF.F (constants.%HasF.F.823)] { +// CHECK:STDOUT: %self.patt: @HasF.F.%pattern_type (%pattern_type.dfb) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @HasF.F.%pattern_type (%pattern_type.dfb) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @F.loc5.%Self.as_type.loc5_14.2 (%Self.as_type) = value_param call_param0 -// CHECK:STDOUT: %.loc5_14.1: type = splice_block %.loc5_14.3 [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type)] { -// CHECK:STDOUT: %.loc5_14.2: @F.loc5.%HasF.type (%HasF.type.901) = specific_constant @HasF.%Self.1, @HasF(constants.%T) [symbolic = %Self (constants.%Self.322)] -// CHECK:STDOUT: %Self.ref: @F.loc5.%HasF.type (%HasF.type.901) = name_ref Self, %.loc5_14.2 [symbolic = %Self (constants.%Self.322)] -// CHECK:STDOUT: %Self.as_type.loc5_14.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc5_14.3: type = converted %Self.ref, %Self.as_type.loc5_14.1 [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type)] +// CHECK:STDOUT: %self.param: @HasF.F.%Self.as_type.loc5_14.1 (%Self.as_type) = value_param call_param0 +// CHECK:STDOUT: %.loc5_14.1: type = splice_block %.loc5_14.3 [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] { +// CHECK:STDOUT: %.loc5_14.2: @HasF.F.%HasF.type (%HasF.type.901) = specific_constant @HasF.%Self.1, @HasF(constants.%T) [symbolic = %Self (constants.%Self.322)] +// CHECK:STDOUT: %Self.ref: @HasF.F.%HasF.type (%HasF.type.901) = name_ref Self, %.loc5_14.2 [symbolic = %Self (constants.%Self.322)] +// CHECK:STDOUT: %Self.as_type.loc5_14.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc5_14.3: type = converted %Self.ref, %Self.as_type.loc5_14.2 [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.loc5.%Self.as_type.loc5_14.2 (%Self.as_type) = bind_name self, %self.param +// CHECK:STDOUT: %self: @HasF.F.%Self.as_type.loc5_14.1 (%Self.as_type) = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0.loc5_21.1: @HasF.%HasF.assoc_type (%HasF.assoc_type.dd8) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc5_21.2 (constants.%assoc0.d31)] +// CHECK:STDOUT: %assoc0.loc5_21.1: @HasF.%HasF.assoc_type (%HasF.assoc_type.dd8) = assoc_entity element0, %HasF.F.decl [symbolic = %assoc0.loc5_21.2 (constants.%assoc0.d31)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 // CHECK:STDOUT: .F = %assoc0.loc5_21.1 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%HasF.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @HasF.impl(%T.loc8_14.1: type) { -// CHECK:STDOUT: %T.loc8_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc8_14.2 (constants.%T)] -// CHECK:STDOUT: %HasF.type.loc8_36.2: type = facet_type <@HasF, @HasF(%T.loc8_14.2)> [symbolic = %HasF.type.loc8_36.2 (constants.%HasF.type.901)] -// CHECK:STDOUT: %require_complete: = require_complete_type %HasF.type.loc8_36.2 [symbolic = %require_complete (constants.%require_complete)] -// CHECK:STDOUT: %HasF.impl_witness: = impl_witness file.%HasF.impl_witness_table, @HasF.impl(%T.loc8_14.2) [symbolic = %HasF.impl_witness (constants.%HasF.impl_witness.55c)] +// CHECK:STDOUT: generic impl @empty_struct_type.as.HasF.impl(%T.loc8_14.2: type) { +// CHECK:STDOUT: %T.loc8_14.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc8_14.1 (constants.%T)] +// CHECK:STDOUT: %HasF.type.loc8_36.1: type = facet_type <@HasF, @HasF(%T.loc8_14.1)> [symbolic = %HasF.type.loc8_36.1 (constants.%HasF.type.901)] +// CHECK:STDOUT: %require_complete: = require_complete_type %HasF.type.loc8_36.1 [symbolic = %require_complete (constants.%require_complete)] +// CHECK:STDOUT: %HasF.impl_witness: = impl_witness file.%HasF.impl_witness_table, @empty_struct_type.as.HasF.impl(%T.loc8_14.1) [symbolic = %HasF.impl_witness (constants.%HasF.impl_witness.55c)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type: type = fn_type @F.loc9, @HasF.impl(%T.loc8_14.2) [symbolic = %F.type (constants.%F.type.6c8)] -// CHECK:STDOUT: %F: @HasF.impl.%F.type (%F.type.6c8) = struct_value () [symbolic = %F (constants.%F.008)] +// CHECK:STDOUT: %empty_struct_type.as.HasF.impl.F.type: type = fn_type @empty_struct_type.as.HasF.impl.F, @empty_struct_type.as.HasF.impl(%T.loc8_14.1) [symbolic = %empty_struct_type.as.HasF.impl.F.type (constants.%empty_struct_type.as.HasF.impl.F.type.6c8)] +// CHECK:STDOUT: %empty_struct_type.as.HasF.impl.F: @empty_struct_type.as.HasF.impl.%empty_struct_type.as.HasF.impl.F.type (%empty_struct_type.as.HasF.impl.F.type.6c8) = struct_value () [symbolic = %empty_struct_type.as.HasF.impl.F (constants.%empty_struct_type.as.HasF.impl.F.008)] // CHECK:STDOUT: -// CHECK:STDOUT: impl: %.loc8_25.2 as %HasF.type.loc8_36.1 { -// CHECK:STDOUT: %F.decl: @HasF.impl.%F.type (%F.type.6c8) = fn_decl @F.loc9 [symbolic = @HasF.impl.%F (constants.%F.008)] { +// CHECK:STDOUT: impl: %.loc8_25.2 as %HasF.type.loc8_36.2 { +// CHECK:STDOUT: %empty_struct_type.as.HasF.impl.F.decl: @empty_struct_type.as.HasF.impl.%empty_struct_type.as.HasF.impl.F.type (%empty_struct_type.as.HasF.impl.F.type.6c8) = fn_decl @empty_struct_type.as.HasF.impl.F [symbolic = @empty_struct_type.as.HasF.impl.%empty_struct_type.as.HasF.impl.F (constants.%empty_struct_type.as.HasF.impl.F.008)] { // CHECK:STDOUT: %self.patt: %pattern_type.a96 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.a96 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %self.param: %empty_struct_type = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @HasF.impl.%.loc8_25.2 [concrete = constants.%empty_struct_type] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @empty_struct_type.as.HasF.impl.%.loc8_25.2 [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %self: %empty_struct_type = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %empty_struct_type.as.HasF.impl.F.decl // CHECK:STDOUT: witness = file.%HasF.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc5(@HasF.%T.loc4_16.2: type, @HasF.%Self.1: @HasF.%HasF.type (%HasF.type.901)) { +// CHECK:STDOUT: generic fn @HasF.F(@HasF.%T.loc4_16.2: type, @HasF.%Self.1: @HasF.%HasF.type (%HasF.type.901)) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %HasF.type: type = facet_type <@HasF, @HasF(%T)> [symbolic = %HasF.type (constants.%HasF.type.901)] -// CHECK:STDOUT: %Self: @F.loc5.%HasF.type (%HasF.type.901) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.322)] -// CHECK:STDOUT: %Self.as_type.loc5_14.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc5_14.2 [symbolic = %pattern_type (constants.%pattern_type.dfb)] +// CHECK:STDOUT: %Self: @HasF.F.%HasF.type (%HasF.type.901) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.322)] +// CHECK:STDOUT: %Self.as_type.loc5_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc5_14.1 [symbolic = %pattern_type (constants.%pattern_type.dfb)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @F.loc5.%Self.as_type.loc5_14.2 (%Self.as_type)); +// CHECK:STDOUT: fn(%self.param: @HasF.F.%Self.as_type.loc5_14.1 (%Self.as_type)); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc9(@HasF.impl.%T.loc8_14.1: type) { +// CHECK:STDOUT: generic fn @empty_struct_type.as.HasF.impl.F(@empty_struct_type.as.HasF.impl.%T.loc8_14.2: type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: fn(%self.param: %empty_struct_type) { @@ -963,11 +963,11 @@ fn G(x: A) { // CHECK:STDOUT: %HasF.type: type = facet_type <@HasF, @HasF(constants.%empty_struct_type)> [concrete = constants.%HasF.type.072] // CHECK:STDOUT: %.loc13_14: %HasF.assoc_type.9e4 = specific_constant @HasF.%assoc0.loc5_21.1, @HasF(constants.%empty_struct_type) [concrete = constants.%assoc0.f76] // CHECK:STDOUT: %F.ref: %HasF.assoc_type.9e4 = name_ref F, %.loc13_14 [concrete = constants.%assoc0.f76] -// CHECK:STDOUT: %impl.elem0: %.21f = impl_witness_access constants.%HasF.impl_witness.25d, element0 [concrete = constants.%F.8c6] +// CHECK:STDOUT: %impl.elem0: %.21f = impl_witness_access constants.%HasF.impl_witness.25d, element0 [concrete = constants.%empty_struct_type.as.HasF.impl.F.8c6] // CHECK:STDOUT: %bound_method.loc13_4: = bound_method %x.ref, %impl.elem0 -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @F.loc9(constants.%empty_struct_type) [concrete = constants.%F.specific_fn] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @empty_struct_type.as.HasF.impl.F(constants.%empty_struct_type) [concrete = constants.%empty_struct_type.as.HasF.impl.F.specific_fn] // CHECK:STDOUT: %bound_method.loc13_18: = bound_method %x.ref, %specific_fn -// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %bound_method.loc13_18(%x.ref) +// CHECK:STDOUT: %empty_struct_type.as.HasF.impl.F.call: init %empty_tuple.type = call %bound_method.loc13_18(%x.ref) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -977,38 +977,38 @@ fn G(x: A) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %HasF.type => constants.%HasF.type.901 // CHECK:STDOUT: %Self.2 => constants.%Self.322 -// CHECK:STDOUT: %F.type => constants.%F.type.46c -// CHECK:STDOUT: %F => constants.%F.823 +// CHECK:STDOUT: %HasF.F.type => constants.%HasF.F.type.46c +// CHECK:STDOUT: %HasF.F => constants.%HasF.F.823 // CHECK:STDOUT: %HasF.assoc_type => constants.%HasF.assoc_type.dd8 // CHECK:STDOUT: %assoc0.loc5_21.2 => constants.%assoc0.d31 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%T, constants.%Self.322) { +// CHECK:STDOUT: specific @HasF.F(constants.%T, constants.%Self.322) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %HasF.type => constants.%HasF.type.901 // CHECK:STDOUT: %Self => constants.%Self.322 -// CHECK:STDOUT: %Self.as_type.loc5_14.2 => constants.%Self.as_type +// CHECK:STDOUT: %Self.as_type.loc5_14.1 => constants.%Self.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.dfb // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @HasF.impl(constants.%T) { -// CHECK:STDOUT: %T.loc8_14.2 => constants.%T -// CHECK:STDOUT: %HasF.type.loc8_36.2 => constants.%HasF.type.901 +// CHECK:STDOUT: specific @empty_struct_type.as.HasF.impl(constants.%T) { +// CHECK:STDOUT: %T.loc8_14.1 => constants.%T +// CHECK:STDOUT: %HasF.type.loc8_36.1 => constants.%HasF.type.901 // CHECK:STDOUT: %require_complete => constants.%require_complete // CHECK:STDOUT: %HasF.impl_witness => constants.%HasF.impl_witness.55c // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.6c8 -// CHECK:STDOUT: %F => constants.%F.008 +// CHECK:STDOUT: %empty_struct_type.as.HasF.impl.F.type => constants.%empty_struct_type.as.HasF.impl.F.type.6c8 +// CHECK:STDOUT: %empty_struct_type.as.HasF.impl.F => constants.%empty_struct_type.as.HasF.impl.F.008 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc9(constants.%T) {} +// CHECK:STDOUT: specific @empty_struct_type.as.HasF.impl.F(constants.%T) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%T, constants.%HasF.facet.566) { +// CHECK:STDOUT: specific @HasF.F(constants.%T, constants.%HasF.facet.566) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %HasF.type => constants.%HasF.type.901 // CHECK:STDOUT: %Self => constants.%HasF.facet.566 -// CHECK:STDOUT: %Self.as_type.loc5_14.2 => constants.%empty_struct_type +// CHECK:STDOUT: %Self.as_type.loc5_14.1 => constants.%empty_struct_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.a96 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1018,24 +1018,24 @@ fn G(x: A) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %HasF.type => constants.%HasF.type.072 // CHECK:STDOUT: %Self.2 => constants.%Self.a46 -// CHECK:STDOUT: %F.type => constants.%F.type.b0b -// CHECK:STDOUT: %F => constants.%F.418 +// CHECK:STDOUT: %HasF.F.type => constants.%HasF.F.type.b0b +// CHECK:STDOUT: %HasF.F => constants.%HasF.F.418 // CHECK:STDOUT: %HasF.assoc_type => constants.%HasF.assoc_type.9e4 // CHECK:STDOUT: %assoc0.loc5_21.2 => constants.%assoc0.f76 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @HasF.impl(constants.%empty_struct_type) { -// CHECK:STDOUT: %T.loc8_14.2 => constants.%empty_struct_type -// CHECK:STDOUT: %HasF.type.loc8_36.2 => constants.%HasF.type.072 +// CHECK:STDOUT: specific @empty_struct_type.as.HasF.impl(constants.%empty_struct_type) { +// CHECK:STDOUT: %T.loc8_14.1 => constants.%empty_struct_type +// CHECK:STDOUT: %HasF.type.loc8_36.1 => constants.%HasF.type.072 // CHECK:STDOUT: %require_complete => constants.%complete_type // CHECK:STDOUT: %HasF.impl_witness => constants.%HasF.impl_witness.25d // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.a13 -// CHECK:STDOUT: %F => constants.%F.8c6 +// CHECK:STDOUT: %empty_struct_type.as.HasF.impl.F.type => constants.%empty_struct_type.as.HasF.impl.F.type.a13 +// CHECK:STDOUT: %empty_struct_type.as.HasF.impl.F => constants.%empty_struct_type.as.HasF.impl.F.8c6 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc9(constants.%empty_struct_type) { +// CHECK:STDOUT: specific @empty_struct_type.as.HasF.impl.F(constants.%empty_struct_type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1046,17 +1046,17 @@ fn G(x: A) { // CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic] // CHECK:STDOUT: %pattern_type.28f: type = pattern_type %Self.as_type [symbolic] -// CHECK:STDOUT: %F.type.b7b: type = fn_type @F.loc5 [concrete] -// CHECK:STDOUT: %F.f50: %F.type.b7b = struct_value () [concrete] +// CHECK:STDOUT: %HasF.F.type: type = fn_type @HasF.F [concrete] +// CHECK:STDOUT: %HasF.F: %HasF.F.type = struct_value () [concrete] // CHECK:STDOUT: %HasF.assoc_type: type = assoc_entity_type @HasF [concrete] -// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, @HasF.%F.decl [concrete] +// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, @HasF.%HasF.F.decl [concrete] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %U: type = bind_symbolic_name U, 1 [symbolic] -// CHECK:STDOUT: %HasF.impl_witness: = impl_witness file.%HasF.impl_witness_table, @HasF.impl(%T, %U) [symbolic] +// CHECK:STDOUT: %HasF.impl_witness: = impl_witness file.%HasF.impl_witness_table, @T.as.HasF.impl(%T, %U) [symbolic] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %T [symbolic] -// CHECK:STDOUT: %F.type.56e: type = fn_type @F.loc13, @HasF.impl(%T, %U) [symbolic] -// CHECK:STDOUT: %F.9b8: %F.type.56e = struct_value () [symbolic] +// CHECK:STDOUT: %T.as.HasF.impl.F.type: type = fn_type @T.as.HasF.impl.F, @T.as.HasF.impl(%T, %U) [symbolic] +// CHECK:STDOUT: %T.as.HasF.impl.F: %T.as.HasF.impl.F.type = struct_value () [symbolic] // CHECK:STDOUT: %require_complete: = require_complete_type %T [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %pattern_type.a96: type = pattern_type %empty_struct_type [concrete] @@ -1079,17 +1079,17 @@ fn G(x: A) { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %HasF.decl: type = interface_decl @HasF [concrete = constants.%HasF.type] {} {} -// CHECK:STDOUT: impl_decl @HasF.impl [concrete] { +// CHECK:STDOUT: impl_decl @T.as.HasF.impl [concrete] { // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: %U.patt: %pattern_type.98f = symbolic_binding_pattern U, 1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc12_14.1 [symbolic = %T.loc12_14.2 (constants.%T)] +// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc12_14.2 [symbolic = %T.loc12_14.1 (constants.%T)] // CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [concrete = constants.%HasF.type] -// CHECK:STDOUT: %T.loc12_14.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc12_14.2 (constants.%T)] -// CHECK:STDOUT: %U.loc12_24.1: type = bind_symbolic_name U, 1 [symbolic = %U.loc12_24.2 (constants.%U)] +// CHECK:STDOUT: %T.loc12_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc12_14.1 (constants.%T)] +// CHECK:STDOUT: %U.loc12_24.2: type = bind_symbolic_name U, 1 [symbolic = %U.loc12_24.1 (constants.%U)] // CHECK:STDOUT: } -// CHECK:STDOUT: %HasF.impl_witness_table = impl_witness_table (), @HasF.impl [concrete] -// CHECK:STDOUT: %HasF.impl_witness: = impl_witness %HasF.impl_witness_table, @HasF.impl(constants.%T, constants.%U) [symbolic = @HasF.impl.%HasF.impl_witness (constants.%HasF.impl_witness)] +// CHECK:STDOUT: %HasF.impl_witness_table = impl_witness_table (), @T.as.HasF.impl [concrete] +// CHECK:STDOUT: %HasF.impl_witness: = impl_witness %HasF.impl_witness_table, @T.as.HasF.impl(constants.%T, constants.%U) [symbolic = @T.as.HasF.impl.%HasF.impl_witness (constants.%HasF.impl_witness)] // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { // CHECK:STDOUT: %x.patt: %pattern_type.a96 = binding_pattern x [concrete] // CHECK:STDOUT: %x.param_patt: %pattern_type.a96 = value_param_pattern %x.patt, call_param0 [concrete] @@ -1105,67 +1105,67 @@ fn G(x: A) { // CHECK:STDOUT: // CHECK:STDOUT: interface @HasF { // CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %F.decl: %F.type.b7b = fn_decl @F.loc5 [concrete = constants.%F.f50] { -// CHECK:STDOUT: %self.patt: @F.loc5.%pattern_type (%pattern_type.28f) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.loc5.%pattern_type (%pattern_type.28f) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %HasF.F.decl: %HasF.F.type = fn_decl @HasF.F [concrete = constants.%HasF.F] { +// CHECK:STDOUT: %self.patt: @HasF.F.%pattern_type (%pattern_type.28f) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @HasF.F.%pattern_type (%pattern_type.28f) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @F.loc5.%Self.as_type.loc5_14.2 (%Self.as_type) = value_param call_param0 -// CHECK:STDOUT: %.loc5_14.1: type = splice_block %.loc5_14.2 [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type)] { +// CHECK:STDOUT: %self.param: @HasF.F.%Self.as_type.loc5_14.1 (%Self.as_type) = value_param call_param0 +// CHECK:STDOUT: %.loc5_14.1: type = splice_block %.loc5_14.2 [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] { // CHECK:STDOUT: %Self.ref: %HasF.type = name_ref Self, @HasF.%Self [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc5_14.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc5_14.2: type = converted %Self.ref, %Self.as_type.loc5_14.1 [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type)] +// CHECK:STDOUT: %Self.as_type.loc5_14.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc5_14.2: type = converted %Self.ref, %Self.as_type.loc5_14.2 [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.loc5.%Self.as_type.loc5_14.2 (%Self.as_type) = bind_name self, %self.param +// CHECK:STDOUT: %self: @HasF.F.%Self.as_type.loc5_14.1 (%Self.as_type) = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, %HasF.F.decl [concrete = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F = %assoc0 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%HasF.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @HasF.impl(%T.loc12_14.1: type, %U.loc12_24.1: type) { -// CHECK:STDOUT: %T.loc12_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc12_14.2 (constants.%T)] -// CHECK:STDOUT: %U.loc12_24.2: type = bind_symbolic_name U, 1 [symbolic = %U.loc12_24.2 (constants.%U)] -// CHECK:STDOUT: %HasF.impl_witness: = impl_witness file.%HasF.impl_witness_table, @HasF.impl(%T.loc12_14.2, %U.loc12_24.2) [symbolic = %HasF.impl_witness (constants.%HasF.impl_witness)] +// CHECK:STDOUT: generic impl @T.as.HasF.impl(%T.loc12_14.2: type, %U.loc12_24.2: type) { +// CHECK:STDOUT: %T.loc12_14.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc12_14.1 (constants.%T)] +// CHECK:STDOUT: %U.loc12_24.1: type = bind_symbolic_name U, 1 [symbolic = %U.loc12_24.1 (constants.%U)] +// CHECK:STDOUT: %HasF.impl_witness: = impl_witness file.%HasF.impl_witness_table, @T.as.HasF.impl(%T.loc12_14.1, %U.loc12_24.1) [symbolic = %HasF.impl_witness (constants.%HasF.impl_witness)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type: type = fn_type @F.loc13, @HasF.impl(%T.loc12_14.2, %U.loc12_24.2) [symbolic = %F.type (constants.%F.type.56e)] -// CHECK:STDOUT: %F: @HasF.impl.%F.type (%F.type.56e) = struct_value () [symbolic = %F (constants.%F.9b8)] +// CHECK:STDOUT: %T.as.HasF.impl.F.type: type = fn_type @T.as.HasF.impl.F, @T.as.HasF.impl(%T.loc12_14.1, %U.loc12_24.1) [symbolic = %T.as.HasF.impl.F.type (constants.%T.as.HasF.impl.F.type)] +// CHECK:STDOUT: %T.as.HasF.impl.F: @T.as.HasF.impl.%T.as.HasF.impl.F.type (%T.as.HasF.impl.F.type) = struct_value () [symbolic = %T.as.HasF.impl.F (constants.%T.as.HasF.impl.F)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %T.ref as %HasF.ref { -// CHECK:STDOUT: %F.decl: @HasF.impl.%F.type (%F.type.56e) = fn_decl @F.loc13 [symbolic = @HasF.impl.%F (constants.%F.9b8)] { -// CHECK:STDOUT: %self.patt: @F.loc13.%pattern_type (%pattern_type.7dc) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.loc13.%pattern_type (%pattern_type.7dc) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %T.as.HasF.impl.F.decl: @T.as.HasF.impl.%T.as.HasF.impl.F.type (%T.as.HasF.impl.F.type) = fn_decl @T.as.HasF.impl.F [symbolic = @T.as.HasF.impl.%T.as.HasF.impl.F (constants.%T.as.HasF.impl.F)] { +// CHECK:STDOUT: %self.patt: @T.as.HasF.impl.F.%pattern_type (%pattern_type.7dc) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @T.as.HasF.impl.F.%pattern_type (%pattern_type.7dc) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @F.loc13.%T (%T) = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @HasF.impl.%T.ref [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %self: @F.loc13.%T (%T) = bind_name self, %self.param +// CHECK:STDOUT: %self.param: @T.as.HasF.impl.F.%T (%T) = value_param call_param0 +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @T.as.HasF.impl.%T.ref [symbolic = %T (constants.%T)] +// CHECK:STDOUT: %self: @T.as.HasF.impl.F.%T (%T) = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %T.as.HasF.impl.F.decl // CHECK:STDOUT: witness = // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc5(@HasF.%Self: %HasF.type) { +// CHECK:STDOUT: generic fn @HasF.F(@HasF.%Self: %HasF.type) { // CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc5_14.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc5_14.2 [symbolic = %pattern_type (constants.%pattern_type.28f)] +// CHECK:STDOUT: %Self.as_type.loc5_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc5_14.1 [symbolic = %pattern_type (constants.%pattern_type.28f)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @F.loc5.%Self.as_type.loc5_14.2 (%Self.as_type)); +// CHECK:STDOUT: fn(%self.param: @HasF.F.%Self.as_type.loc5_14.1 (%Self.as_type)); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc13(@HasF.impl.%T.loc12_14.1: type, @HasF.impl.%U.loc12_24.1: type) { +// CHECK:STDOUT: generic fn @T.as.HasF.impl.F(@T.as.HasF.impl.%T.loc12_14.2: type, @T.as.HasF.impl.%U.loc12_24.2: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %pattern_type: type = pattern_type %T [symbolic = %pattern_type (constants.%pattern_type.7dc)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %T [symbolic = %require_complete (constants.%require_complete)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @F.loc13.%T (%T)) { +// CHECK:STDOUT: fn(%self.param: @T.as.HasF.impl.F.%T (%T)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -1179,23 +1179,23 @@ fn G(x: A) { // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%Self) { +// CHECK:STDOUT: specific @HasF.F(constants.%Self) { // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %Self.as_type.loc5_14.2 => constants.%Self.as_type +// CHECK:STDOUT: %Self.as_type.loc5_14.1 => constants.%Self.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.28f // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @HasF.impl(constants.%T, constants.%U) { -// CHECK:STDOUT: %T.loc12_14.2 => constants.%T -// CHECK:STDOUT: %U.loc12_24.2 => constants.%U +// CHECK:STDOUT: specific @T.as.HasF.impl(constants.%T, constants.%U) { +// CHECK:STDOUT: %T.loc12_14.1 => constants.%T +// CHECK:STDOUT: %U.loc12_24.1 => constants.%U // CHECK:STDOUT: %HasF.impl_witness => constants.%HasF.impl_witness // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.56e -// CHECK:STDOUT: %F => constants.%F.9b8 +// CHECK:STDOUT: %T.as.HasF.impl.F.type => constants.%T.as.HasF.impl.F.type +// CHECK:STDOUT: %T.as.HasF.impl.F => constants.%T.as.HasF.impl.F // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc13(constants.%T, constants.%U) { +// CHECK:STDOUT: specific @T.as.HasF.impl.F(constants.%T, constants.%U) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7dc // CHECK:STDOUT: } @@ -1211,15 +1211,15 @@ fn G(x: A) { // CHECK:STDOUT: %Self.322: %HasF.type.901 = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self.322 [symbolic] // CHECK:STDOUT: %pattern_type.dfb: type = pattern_type %Self.as_type [symbolic] -// CHECK:STDOUT: %F.type.46c: type = fn_type @F.loc5, @HasF(%T) [symbolic] -// CHECK:STDOUT: %F.823: %F.type.46c = struct_value () [symbolic] +// CHECK:STDOUT: %HasF.F.type.46c: type = fn_type @HasF.F, @HasF(%T) [symbolic] +// CHECK:STDOUT: %HasF.F.823: %HasF.F.type.46c = struct_value () [symbolic] // CHECK:STDOUT: %HasF.assoc_type.dd8: type = assoc_entity_type @HasF, @HasF(%T) [symbolic] -// CHECK:STDOUT: %assoc0.d31: %HasF.assoc_type.dd8 = assoc_entity element0, @HasF.%F.decl [symbolic] +// CHECK:STDOUT: %assoc0.d31: %HasF.assoc_type.dd8 = assoc_entity element0, @HasF.%HasF.F.decl [symbolic] // CHECK:STDOUT: %require_complete.03f: = require_complete_type %HasF.type.901 [symbolic] -// CHECK:STDOUT: %HasF.impl_witness: = impl_witness file.%HasF.impl_witness_table, @HasF.impl(%T) [symbolic] +// CHECK:STDOUT: %HasF.impl_witness: = impl_witness file.%HasF.impl_witness_table, @T.as.HasF.impl(%T) [symbolic] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %T [symbolic] -// CHECK:STDOUT: %F.type.912: type = fn_type @F.loc9, @HasF.impl(%T) [symbolic] -// CHECK:STDOUT: %F.f30: %F.type.912 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as.HasF.impl.F.type: type = fn_type @T.as.HasF.impl.F, @T.as.HasF.impl(%T) [symbolic] +// CHECK:STDOUT: %T.as.HasF.impl.F: %T.as.HasF.impl.F.type = struct_value () [symbolic] // CHECK:STDOUT: %HasF.facet: %HasF.type.901 = facet_value %T, (%HasF.impl_witness) [symbolic] // CHECK:STDOUT: %require_complete.4ae: = require_complete_type %T [symbolic] // CHECK:STDOUT: %A: type = class_type @A [concrete] @@ -1231,10 +1231,10 @@ fn G(x: A) { // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %HasF.type.2f5: type = facet_type <@HasF, @HasF(%B)> [concrete] // CHECK:STDOUT: %Self.188: %HasF.type.2f5 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %F.type.1c6: type = fn_type @F.loc5, @HasF(%B) [concrete] -// CHECK:STDOUT: %F.7cf: %F.type.1c6 = struct_value () [concrete] +// CHECK:STDOUT: %HasF.F.type.1c6: type = fn_type @HasF.F, @HasF(%B) [concrete] +// CHECK:STDOUT: %HasF.F.7cf: %HasF.F.type.1c6 = struct_value () [concrete] // CHECK:STDOUT: %HasF.assoc_type.1af: type = assoc_entity_type @HasF, @HasF(%B) [concrete] -// CHECK:STDOUT: %assoc0.402: %HasF.assoc_type.1af = assoc_entity element0, @HasF.%F.decl [concrete] +// CHECK:STDOUT: %assoc0.402: %HasF.assoc_type.1af = assoc_entity element0, @HasF.%HasF.F.decl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -1258,17 +1258,17 @@ fn G(x: A) { // CHECK:STDOUT: } { // CHECK:STDOUT: %T.loc4_16.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_16.1 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: impl_decl @HasF.impl [concrete] { +// CHECK:STDOUT: impl_decl @T.as.HasF.impl [concrete] { // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.ref.loc8_24: type = name_ref T, %T.loc8_14.1 [symbolic = %T.loc8_14.2 (constants.%T)] +// CHECK:STDOUT: %T.ref.loc8_24: type = name_ref T, %T.loc8_14.2 [symbolic = %T.loc8_14.1 (constants.%T)] // CHECK:STDOUT: %HasF.ref: %HasF.type.fe3 = name_ref HasF, file.%HasF.decl [concrete = constants.%HasF.generic] -// CHECK:STDOUT: %T.ref.loc8_34: type = name_ref T, %T.loc8_14.1 [symbolic = %T.loc8_14.2 (constants.%T)] -// CHECK:STDOUT: %HasF.type.loc8_35.1: type = facet_type <@HasF, @HasF(constants.%T)> [symbolic = %HasF.type.loc8_35.2 (constants.%HasF.type.901)] -// CHECK:STDOUT: %T.loc8_14.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc8_14.2 (constants.%T)] +// CHECK:STDOUT: %T.ref.loc8_34: type = name_ref T, %T.loc8_14.2 [symbolic = %T.loc8_14.1 (constants.%T)] +// CHECK:STDOUT: %HasF.type.loc8_35.2: type = facet_type <@HasF, @HasF(constants.%T)> [symbolic = %HasF.type.loc8_35.1 (constants.%HasF.type.901)] +// CHECK:STDOUT: %T.loc8_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc8_14.1 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %HasF.impl_witness_table = impl_witness_table (@HasF.impl.%F.decl), @HasF.impl [concrete] -// CHECK:STDOUT: %HasF.impl_witness: = impl_witness %HasF.impl_witness_table, @HasF.impl(constants.%T) [symbolic = @HasF.impl.%HasF.impl_witness (constants.%HasF.impl_witness)] +// CHECK:STDOUT: %HasF.impl_witness_table = impl_witness_table (@T.as.HasF.impl.%T.as.HasF.impl.F.decl), @T.as.HasF.impl [concrete] +// CHECK:STDOUT: %HasF.impl_witness: = impl_witness %HasF.impl_witness_table, @T.as.HasF.impl(constants.%T) [symbolic = @T.as.HasF.impl.%HasF.impl_witness (constants.%HasF.impl_witness)] // CHECK:STDOUT: %A.decl: type = class_decl @A [concrete = constants.%A] {} {} // CHECK:STDOUT: %B.decl: type = class_decl @B [concrete = constants.%B] {} {} // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { @@ -1287,57 +1287,57 @@ fn G(x: A) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %HasF.type: type = facet_type <@HasF, @HasF(%T.loc4_16.1)> [symbolic = %HasF.type (constants.%HasF.type.901)] // CHECK:STDOUT: %Self.2: @HasF.%HasF.type (%HasF.type.901) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.322)] -// CHECK:STDOUT: %F.type: type = fn_type @F.loc5, @HasF(%T.loc4_16.1) [symbolic = %F.type (constants.%F.type.46c)] -// CHECK:STDOUT: %F: @HasF.%F.type (%F.type.46c) = struct_value () [symbolic = %F (constants.%F.823)] +// CHECK:STDOUT: %HasF.F.type: type = fn_type @HasF.F, @HasF(%T.loc4_16.1) [symbolic = %HasF.F.type (constants.%HasF.F.type.46c)] +// CHECK:STDOUT: %HasF.F: @HasF.%HasF.F.type (%HasF.F.type.46c) = struct_value () [symbolic = %HasF.F (constants.%HasF.F.823)] // CHECK:STDOUT: %HasF.assoc_type: type = assoc_entity_type @HasF, @HasF(%T.loc4_16.1) [symbolic = %HasF.assoc_type (constants.%HasF.assoc_type.dd8)] -// CHECK:STDOUT: %assoc0.loc5_21.2: @HasF.%HasF.assoc_type (%HasF.assoc_type.dd8) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc5_21.2 (constants.%assoc0.d31)] +// CHECK:STDOUT: %assoc0.loc5_21.2: @HasF.%HasF.assoc_type (%HasF.assoc_type.dd8) = assoc_entity element0, %HasF.F.decl [symbolic = %assoc0.loc5_21.2 (constants.%assoc0.d31)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: %Self.1: @HasF.%HasF.type (%HasF.type.901) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.322)] -// CHECK:STDOUT: %F.decl: @HasF.%F.type (%F.type.46c) = fn_decl @F.loc5 [symbolic = @HasF.%F (constants.%F.823)] { -// CHECK:STDOUT: %self.patt: @F.loc5.%pattern_type (%pattern_type.dfb) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.loc5.%pattern_type (%pattern_type.dfb) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %HasF.F.decl: @HasF.%HasF.F.type (%HasF.F.type.46c) = fn_decl @HasF.F [symbolic = @HasF.%HasF.F (constants.%HasF.F.823)] { +// CHECK:STDOUT: %self.patt: @HasF.F.%pattern_type (%pattern_type.dfb) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @HasF.F.%pattern_type (%pattern_type.dfb) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @F.loc5.%Self.as_type.loc5_14.2 (%Self.as_type) = value_param call_param0 -// CHECK:STDOUT: %.loc5_14.1: type = splice_block %.loc5_14.3 [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type)] { -// CHECK:STDOUT: %.loc5_14.2: @F.loc5.%HasF.type (%HasF.type.901) = specific_constant @HasF.%Self.1, @HasF(constants.%T) [symbolic = %Self (constants.%Self.322)] -// CHECK:STDOUT: %Self.ref: @F.loc5.%HasF.type (%HasF.type.901) = name_ref Self, %.loc5_14.2 [symbolic = %Self (constants.%Self.322)] -// CHECK:STDOUT: %Self.as_type.loc5_14.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc5_14.3: type = converted %Self.ref, %Self.as_type.loc5_14.1 [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type)] +// CHECK:STDOUT: %self.param: @HasF.F.%Self.as_type.loc5_14.1 (%Self.as_type) = value_param call_param0 +// CHECK:STDOUT: %.loc5_14.1: type = splice_block %.loc5_14.3 [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] { +// CHECK:STDOUT: %.loc5_14.2: @HasF.F.%HasF.type (%HasF.type.901) = specific_constant @HasF.%Self.1, @HasF(constants.%T) [symbolic = %Self (constants.%Self.322)] +// CHECK:STDOUT: %Self.ref: @HasF.F.%HasF.type (%HasF.type.901) = name_ref Self, %.loc5_14.2 [symbolic = %Self (constants.%Self.322)] +// CHECK:STDOUT: %Self.as_type.loc5_14.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc5_14.3: type = converted %Self.ref, %Self.as_type.loc5_14.2 [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.loc5.%Self.as_type.loc5_14.2 (%Self.as_type) = bind_name self, %self.param +// CHECK:STDOUT: %self: @HasF.F.%Self.as_type.loc5_14.1 (%Self.as_type) = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0.loc5_21.1: @HasF.%HasF.assoc_type (%HasF.assoc_type.dd8) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc5_21.2 (constants.%assoc0.d31)] +// CHECK:STDOUT: %assoc0.loc5_21.1: @HasF.%HasF.assoc_type (%HasF.assoc_type.dd8) = assoc_entity element0, %HasF.F.decl [symbolic = %assoc0.loc5_21.2 (constants.%assoc0.d31)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 // CHECK:STDOUT: .F = %assoc0.loc5_21.1 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%HasF.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @HasF.impl(%T.loc8_14.1: type) { -// CHECK:STDOUT: %T.loc8_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc8_14.2 (constants.%T)] -// CHECK:STDOUT: %HasF.type.loc8_35.2: type = facet_type <@HasF, @HasF(%T.loc8_14.2)> [symbolic = %HasF.type.loc8_35.2 (constants.%HasF.type.901)] -// CHECK:STDOUT: %require_complete: = require_complete_type %HasF.type.loc8_35.2 [symbolic = %require_complete (constants.%require_complete.03f)] -// CHECK:STDOUT: %HasF.impl_witness: = impl_witness file.%HasF.impl_witness_table, @HasF.impl(%T.loc8_14.2) [symbolic = %HasF.impl_witness (constants.%HasF.impl_witness)] +// CHECK:STDOUT: generic impl @T.as.HasF.impl(%T.loc8_14.2: type) { +// CHECK:STDOUT: %T.loc8_14.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc8_14.1 (constants.%T)] +// CHECK:STDOUT: %HasF.type.loc8_35.1: type = facet_type <@HasF, @HasF(%T.loc8_14.1)> [symbolic = %HasF.type.loc8_35.1 (constants.%HasF.type.901)] +// CHECK:STDOUT: %require_complete: = require_complete_type %HasF.type.loc8_35.1 [symbolic = %require_complete (constants.%require_complete.03f)] +// CHECK:STDOUT: %HasF.impl_witness: = impl_witness file.%HasF.impl_witness_table, @T.as.HasF.impl(%T.loc8_14.1) [symbolic = %HasF.impl_witness (constants.%HasF.impl_witness)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type: type = fn_type @F.loc9, @HasF.impl(%T.loc8_14.2) [symbolic = %F.type (constants.%F.type.912)] -// CHECK:STDOUT: %F: @HasF.impl.%F.type (%F.type.912) = struct_value () [symbolic = %F (constants.%F.f30)] +// CHECK:STDOUT: %T.as.HasF.impl.F.type: type = fn_type @T.as.HasF.impl.F, @T.as.HasF.impl(%T.loc8_14.1) [symbolic = %T.as.HasF.impl.F.type (constants.%T.as.HasF.impl.F.type)] +// CHECK:STDOUT: %T.as.HasF.impl.F: @T.as.HasF.impl.%T.as.HasF.impl.F.type (%T.as.HasF.impl.F.type) = struct_value () [symbolic = %T.as.HasF.impl.F (constants.%T.as.HasF.impl.F)] // CHECK:STDOUT: -// CHECK:STDOUT: impl: %T.ref.loc8_24 as %HasF.type.loc8_35.1 { -// CHECK:STDOUT: %F.decl: @HasF.impl.%F.type (%F.type.912) = fn_decl @F.loc9 [symbolic = @HasF.impl.%F (constants.%F.f30)] { -// CHECK:STDOUT: %self.patt: @F.loc9.%pattern_type (%pattern_type.7dc) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.loc9.%pattern_type (%pattern_type.7dc) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: impl: %T.ref.loc8_24 as %HasF.type.loc8_35.2 { +// CHECK:STDOUT: %T.as.HasF.impl.F.decl: @T.as.HasF.impl.%T.as.HasF.impl.F.type (%T.as.HasF.impl.F.type) = fn_decl @T.as.HasF.impl.F [symbolic = @T.as.HasF.impl.%T.as.HasF.impl.F (constants.%T.as.HasF.impl.F)] { +// CHECK:STDOUT: %self.patt: @T.as.HasF.impl.F.%pattern_type (%pattern_type.7dc) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @T.as.HasF.impl.F.%pattern_type (%pattern_type.7dc) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @F.loc9.%T (%T) = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @HasF.impl.%T.ref.loc8_24 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %self: @F.loc9.%T (%T) = bind_name self, %self.param +// CHECK:STDOUT: %self.param: @T.as.HasF.impl.F.%T (%T) = value_param call_param0 +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @T.as.HasF.impl.%T.ref.loc8_24 [symbolic = %T (constants.%T)] +// CHECK:STDOUT: %self: @T.as.HasF.impl.F.%T (%T) = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %T.as.HasF.impl.F.decl // CHECK:STDOUT: witness = file.%HasF.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -1360,24 +1360,24 @@ fn G(x: A) { // CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc5(@HasF.%T.loc4_16.2: type, @HasF.%Self.1: @HasF.%HasF.type (%HasF.type.901)) { +// CHECK:STDOUT: generic fn @HasF.F(@HasF.%T.loc4_16.2: type, @HasF.%Self.1: @HasF.%HasF.type (%HasF.type.901)) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %HasF.type: type = facet_type <@HasF, @HasF(%T)> [symbolic = %HasF.type (constants.%HasF.type.901)] -// CHECK:STDOUT: %Self: @F.loc5.%HasF.type (%HasF.type.901) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.322)] -// CHECK:STDOUT: %Self.as_type.loc5_14.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc5_14.2 [symbolic = %pattern_type (constants.%pattern_type.dfb)] +// CHECK:STDOUT: %Self: @HasF.F.%HasF.type (%HasF.type.901) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.322)] +// CHECK:STDOUT: %Self.as_type.loc5_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc5_14.1 [symbolic = %pattern_type (constants.%pattern_type.dfb)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @F.loc5.%Self.as_type.loc5_14.2 (%Self.as_type)); +// CHECK:STDOUT: fn(%self.param: @HasF.F.%Self.as_type.loc5_14.1 (%Self.as_type)); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc9(@HasF.impl.%T.loc8_14.1: type) { +// CHECK:STDOUT: generic fn @T.as.HasF.impl.F(@T.as.HasF.impl.%T.loc8_14.2: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %pattern_type: type = pattern_type %T [symbolic = %pattern_type (constants.%pattern_type.7dc)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %T [symbolic = %require_complete (constants.%require_complete.4ae)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @F.loc9.%T (%T)) { +// CHECK:STDOUT: fn(%self.param: @T.as.HasF.impl.F.%T (%T)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -1400,41 +1400,41 @@ fn G(x: A) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %HasF.type => constants.%HasF.type.901 // CHECK:STDOUT: %Self.2 => constants.%Self.322 -// CHECK:STDOUT: %F.type => constants.%F.type.46c -// CHECK:STDOUT: %F => constants.%F.823 +// CHECK:STDOUT: %HasF.F.type => constants.%HasF.F.type.46c +// CHECK:STDOUT: %HasF.F => constants.%HasF.F.823 // CHECK:STDOUT: %HasF.assoc_type => constants.%HasF.assoc_type.dd8 // CHECK:STDOUT: %assoc0.loc5_21.2 => constants.%assoc0.d31 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%T, constants.%Self.322) { +// CHECK:STDOUT: specific @HasF.F(constants.%T, constants.%Self.322) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %HasF.type => constants.%HasF.type.901 // CHECK:STDOUT: %Self => constants.%Self.322 -// CHECK:STDOUT: %Self.as_type.loc5_14.2 => constants.%Self.as_type +// CHECK:STDOUT: %Self.as_type.loc5_14.1 => constants.%Self.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.dfb // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @HasF.impl(constants.%T) { -// CHECK:STDOUT: %T.loc8_14.2 => constants.%T -// CHECK:STDOUT: %HasF.type.loc8_35.2 => constants.%HasF.type.901 +// CHECK:STDOUT: specific @T.as.HasF.impl(constants.%T) { +// CHECK:STDOUT: %T.loc8_14.1 => constants.%T +// CHECK:STDOUT: %HasF.type.loc8_35.1 => constants.%HasF.type.901 // CHECK:STDOUT: %require_complete => constants.%require_complete.03f // CHECK:STDOUT: %HasF.impl_witness => constants.%HasF.impl_witness // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.912 -// CHECK:STDOUT: %F => constants.%F.f30 +// CHECK:STDOUT: %T.as.HasF.impl.F.type => constants.%T.as.HasF.impl.F.type +// CHECK:STDOUT: %T.as.HasF.impl.F => constants.%T.as.HasF.impl.F // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc9(constants.%T) { +// CHECK:STDOUT: specific @T.as.HasF.impl.F(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7dc // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%T, constants.%HasF.facet) { +// CHECK:STDOUT: specific @HasF.F(constants.%T, constants.%HasF.facet) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %HasF.type => constants.%HasF.type.901 // CHECK:STDOUT: %Self => constants.%HasF.facet -// CHECK:STDOUT: %Self.as_type.loc5_14.2 => constants.%T +// CHECK:STDOUT: %Self.as_type.loc5_14.1 => constants.%T // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7dc // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1444,8 +1444,8 @@ fn G(x: A) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %HasF.type => constants.%HasF.type.2f5 // CHECK:STDOUT: %Self.2 => constants.%Self.188 -// CHECK:STDOUT: %F.type => constants.%F.type.1c6 -// CHECK:STDOUT: %F => constants.%F.7cf +// CHECK:STDOUT: %HasF.F.type => constants.%HasF.F.type.1c6 +// CHECK:STDOUT: %HasF.F => constants.%HasF.F.7cf // CHECK:STDOUT: %HasF.assoc_type => constants.%HasF.assoc_type.1af // CHECK:STDOUT: %assoc0.loc5_21.2 => constants.%assoc0.402 // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/lookup/impl_forall.carbon b/toolchain/check/testdata/impl/lookup/impl_forall.carbon index 8e352c465222..26fc28c7f52c 100644 --- a/toolchain/check/testdata/impl/lookup/impl_forall.carbon +++ b/toolchain/check/testdata/impl/lookup/impl_forall.carbon @@ -58,24 +58,24 @@ fn TestSpecific(a: A({})) -> {} { // CHECK:STDOUT: %Self.as_type.928: type = facet_access_type %Self.209206.1 [symbolic] // CHECK:STDOUT: %pattern_type.4be: type = pattern_type %Self.as_type.928 [symbolic] // CHECK:STDOUT: %pattern_type.7dcd0a.1: type = pattern_type %U [symbolic] -// CHECK:STDOUT: %F.type.2aef59.1: type = fn_type @F.loc8, @I(%U) [symbolic] -// CHECK:STDOUT: %F.bb2dd4.1: %F.type.2aef59.1 = struct_value () [symbolic] +// CHECK:STDOUT: %I.F.type.2aef59.1: type = fn_type @I.F, @I(%U) [symbolic] +// CHECK:STDOUT: %I.F.bb2dd4.1: %I.F.type.2aef59.1 = struct_value () [symbolic] // CHECK:STDOUT: %I.assoc_type.1e5078.1: type = assoc_entity_type @I, @I(%U) [symbolic] -// CHECK:STDOUT: %assoc0.8f0422.1: %I.assoc_type.1e5078.1 = assoc_entity element0, @I.%F.decl [symbolic] +// CHECK:STDOUT: %assoc0.8f0422.1: %I.assoc_type.1e5078.1 = assoc_entity element0, @I.%I.F.decl [symbolic] // CHECK:STDOUT: %V: type = bind_symbolic_name V, 0 [symbolic] // CHECK:STDOUT: %A.13025a.2: type = class_type @A, @A(%V) [symbolic] // CHECK:STDOUT: %I.type.325e65.2: type = facet_type <@I, @I(%V)> [symbolic] // CHECK:STDOUT: %Self.209206.2: %I.type.325e65.2 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %F.type.2aef59.2: type = fn_type @F.loc8, @I(%V) [symbolic] -// CHECK:STDOUT: %F.bb2dd4.2: %F.type.2aef59.2 = struct_value () [symbolic] +// CHECK:STDOUT: %I.F.type.2aef59.2: type = fn_type @I.F, @I(%V) [symbolic] +// CHECK:STDOUT: %I.F.bb2dd4.2: %I.F.type.2aef59.2 = struct_value () [symbolic] // CHECK:STDOUT: %I.assoc_type.1e5078.2: type = assoc_entity_type @I, @I(%V) [symbolic] -// CHECK:STDOUT: %assoc0.8f0422.2: %I.assoc_type.1e5078.2 = assoc_entity element0, @I.%F.decl [symbolic] +// CHECK:STDOUT: %assoc0.8f0422.2: %I.assoc_type.1e5078.2 = assoc_entity element0, @I.%I.F.decl [symbolic] // CHECK:STDOUT: %require_complete.cfebb2.1: = require_complete_type %I.type.325e65.2 [symbolic] -// CHECK:STDOUT: %I.impl_witness.40ab31.1: = impl_witness file.%I.impl_witness_table, @I.impl(%V) [symbolic] +// CHECK:STDOUT: %I.impl_witness.40ab31.1: = impl_witness file.%I.impl_witness_table, @A.as.I.impl(%V) [symbolic] // CHECK:STDOUT: %pattern_type.68d8d3.1: type = pattern_type %A.13025a.2 [symbolic] // CHECK:STDOUT: %pattern_type.7dcd0a.2: type = pattern_type %V [symbolic] -// CHECK:STDOUT: %F.type.0fea45.1: type = fn_type @F.loc12, @I.impl(%V) [symbolic] -// CHECK:STDOUT: %F.d6ae34.1: %F.type.0fea45.1 = struct_value () [symbolic] +// CHECK:STDOUT: %A.as.I.impl.F.type.0fea45.1: type = fn_type @A.as.I.impl.F, @A.as.I.impl(%V) [symbolic] +// CHECK:STDOUT: %A.as.I.impl.F.d6ae34.1: %A.as.I.impl.F.type.0fea45.1 = struct_value () [symbolic] // CHECK:STDOUT: %I.facet.de3: %I.type.325e65.2 = facet_value %A.13025a.2, (%I.impl_witness.40ab31.1) [symbolic] // CHECK:STDOUT: %require_complete.4aeca8.2: = require_complete_type %V [symbolic] // CHECK:STDOUT: %A.elem.1ceb36.2: type = unbound_element_type %A.13025a.2, %V [symbolic] @@ -95,19 +95,19 @@ fn TestSpecific(a: A({})) -> {} { // CHECK:STDOUT: %require_complete.5b8aee.2: = require_complete_type %A.13025a.3 [symbolic] // CHECK:STDOUT: %I.type.325e65.3: type = facet_type <@I, @I(%W)> [symbolic] // CHECK:STDOUT: %Self.209206.3: %I.type.325e65.3 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %F.type.2aef59.3: type = fn_type @F.loc8, @I(%W) [symbolic] -// CHECK:STDOUT: %F.bb2dd4.3: %F.type.2aef59.3 = struct_value () [symbolic] +// CHECK:STDOUT: %I.F.type.2aef59.3: type = fn_type @I.F, @I(%W) [symbolic] +// CHECK:STDOUT: %I.F.bb2dd4.3: %I.F.type.2aef59.3 = struct_value () [symbolic] // CHECK:STDOUT: %I.assoc_type.1e5078.3: type = assoc_entity_type @I, @I(%W) [symbolic] -// CHECK:STDOUT: %assoc0.8f0422.3: %I.assoc_type.1e5078.3 = assoc_entity element0, @I.%F.decl [symbolic] +// CHECK:STDOUT: %assoc0.8f0422.3: %I.assoc_type.1e5078.3 = assoc_entity element0, @I.%I.F.decl [symbolic] // CHECK:STDOUT: %require_complete.cfebb2.2: = require_complete_type %I.type.325e65.3 [symbolic] -// CHECK:STDOUT: %I.impl_witness.40ab31.2: = impl_witness file.%I.impl_witness_table, @I.impl(%W) [symbolic] -// CHECK:STDOUT: %F.type.0fea45.2: type = fn_type @F.loc12, @I.impl(%W) [symbolic] -// CHECK:STDOUT: %F.d6ae34.2: %F.type.0fea45.2 = struct_value () [symbolic] +// CHECK:STDOUT: %I.impl_witness.40ab31.2: = impl_witness file.%I.impl_witness_table, @A.as.I.impl(%W) [symbolic] +// CHECK:STDOUT: %A.as.I.impl.F.type.0fea45.2: type = fn_type @A.as.I.impl.F, @A.as.I.impl(%W) [symbolic] +// CHECK:STDOUT: %A.as.I.impl.F.d6ae34.2: %A.as.I.impl.F.type.0fea45.2 = struct_value () [symbolic] // CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %A.13025a.3, @I, @I(%W) [symbolic] // CHECK:STDOUT: %I.facet.6d2: %I.type.325e65.3 = facet_value %A.13025a.3, (%I.lookup_impl_witness) [symbolic] -// CHECK:STDOUT: %.fe1: type = fn_type_with_self_type %F.type.2aef59.3, %I.facet.6d2 [symbolic] +// CHECK:STDOUT: %.fe1: type = fn_type_with_self_type %I.F.type.2aef59.3, %I.facet.6d2 [symbolic] // CHECK:STDOUT: %impl.elem0: %.fe1 = impl_witness_access %I.lookup_impl_witness, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @F.loc8(%W, %I.facet.6d2) [symbolic] +// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @I.F(%W, %I.facet.6d2) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %A.235: type = class_type @A, @A(%empty_struct_type) [concrete] // CHECK:STDOUT: %pattern_type.496: type = pattern_type %A.235 [concrete] @@ -120,23 +120,23 @@ fn TestSpecific(a: A({})) -> {} { // CHECK:STDOUT: %complete_type.0a6: = complete_type_witness %struct_type.n.91c [concrete] // CHECK:STDOUT: %I.type.885: type = facet_type <@I, @I(%empty_struct_type)> [concrete] // CHECK:STDOUT: %Self.4e2: %I.type.885 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %F.type.684: type = fn_type @F.loc8, @I(%empty_struct_type) [concrete] -// CHECK:STDOUT: %F.a8d: %F.type.684 = struct_value () [concrete] +// CHECK:STDOUT: %I.F.type.684: type = fn_type @I.F, @I(%empty_struct_type) [concrete] +// CHECK:STDOUT: %I.F.a8d: %I.F.type.684 = struct_value () [concrete] // CHECK:STDOUT: %I.assoc_type.22c: type = assoc_entity_type @I, @I(%empty_struct_type) [concrete] -// CHECK:STDOUT: %assoc0.722: %I.assoc_type.22c = assoc_entity element0, @I.%F.decl [concrete] +// CHECK:STDOUT: %assoc0.722: %I.assoc_type.22c = assoc_entity element0, @I.%I.F.decl [concrete] // CHECK:STDOUT: %complete_type.788: = complete_type_witness %I.type.885 [concrete] -// CHECK:STDOUT: %I.impl_witness.0f2: = impl_witness file.%I.impl_witness_table, @I.impl(%empty_struct_type) [concrete] -// CHECK:STDOUT: %F.type.875: type = fn_type @F.loc12, @I.impl(%empty_struct_type) [concrete] -// CHECK:STDOUT: %F.158: %F.type.875 = struct_value () [concrete] +// CHECK:STDOUT: %I.impl_witness.0f2: = impl_witness file.%I.impl_witness_table, @A.as.I.impl(%empty_struct_type) [concrete] +// CHECK:STDOUT: %A.as.I.impl.F.type.875: type = fn_type @A.as.I.impl.F, @A.as.I.impl(%empty_struct_type) [concrete] +// CHECK:STDOUT: %A.as.I.impl.F.158: %A.as.I.impl.F.type.875 = struct_value () [concrete] // CHECK:STDOUT: %I.facet.bd5: %I.type.885 = facet_value %A.235, (%I.impl_witness.0f2) [concrete] -// CHECK:STDOUT: %.8fd: type = fn_type_with_self_type %F.type.684, %I.facet.bd5 [concrete] -// CHECK:STDOUT: %F.specific_fn: = specific_function %F.158, @F.loc12(%empty_struct_type) [concrete] +// CHECK:STDOUT: %.8fd: type = fn_type_with_self_type %I.F.type.684, %I.facet.bd5 [concrete] +// CHECK:STDOUT: %A.as.I.impl.F.specific_fn: = specific_function %A.as.I.impl.F.158, @A.as.I.impl.F(%empty_struct_type) [concrete] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.069: type = fn_type @Op.1, @Destroy.impl(%empty_struct_type) [concrete] -// CHECK:STDOUT: %Op.d5a: %Op.type.069 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.069: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%empty_struct_type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.d5a: %T.as.Destroy.impl.Op.type.069 = struct_value () [concrete] // CHECK:STDOUT: %ptr.c28: type = ptr_type %empty_struct_type [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.d5a, @Op.1(%empty_struct_type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.d5a, @T.as.Destroy.impl.Op(%empty_struct_type) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -167,19 +167,19 @@ fn TestSpecific(a: A({})) -> {} { // CHECK:STDOUT: } { // CHECK:STDOUT: %U.loc7_13.2: type = bind_symbolic_name U, 0 [symbolic = %U.loc7_13.1 (constants.%U)] // CHECK:STDOUT: } -// CHECK:STDOUT: impl_decl @I.impl [concrete] { +// CHECK:STDOUT: impl_decl @A.as.I.impl [concrete] { // CHECK:STDOUT: %V.patt: %pattern_type.98f = symbolic_binding_pattern V, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %A.ref: %A.type = name_ref A, file.%A.decl [concrete = constants.%A.generic] -// CHECK:STDOUT: %V.ref.loc11_26: type = name_ref V, %V.loc11_14.1 [symbolic = %V.loc11_14.2 (constants.%V)] -// CHECK:STDOUT: %A.loc11_27.1: type = class_type @A, @A(constants.%V) [symbolic = %A.loc11_27.2 (constants.%A.13025a.2)] +// CHECK:STDOUT: %V.ref.loc11_26: type = name_ref V, %V.loc11_14.2 [symbolic = %V.loc11_14.1 (constants.%V)] +// CHECK:STDOUT: %A.loc11_27.2: type = class_type @A, @A(constants.%V) [symbolic = %A.loc11_27.1 (constants.%A.13025a.2)] // CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, file.%I.decl [concrete = constants.%I.generic] -// CHECK:STDOUT: %V.ref.loc11_34: type = name_ref V, %V.loc11_14.1 [symbolic = %V.loc11_14.2 (constants.%V)] -// CHECK:STDOUT: %I.type.loc11_35.1: type = facet_type <@I, @I(constants.%V)> [symbolic = %I.type.loc11_35.2 (constants.%I.type.325e65.2)] -// CHECK:STDOUT: %V.loc11_14.1: type = bind_symbolic_name V, 0 [symbolic = %V.loc11_14.2 (constants.%V)] +// CHECK:STDOUT: %V.ref.loc11_34: type = name_ref V, %V.loc11_14.2 [symbolic = %V.loc11_14.1 (constants.%V)] +// CHECK:STDOUT: %I.type.loc11_35.2: type = facet_type <@I, @I(constants.%V)> [symbolic = %I.type.loc11_35.1 (constants.%I.type.325e65.2)] +// CHECK:STDOUT: %V.loc11_14.2: type = bind_symbolic_name V, 0 [symbolic = %V.loc11_14.1 (constants.%V)] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (@I.impl.%F.decl), @I.impl [concrete] -// CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table, @I.impl(constants.%V) [symbolic = @I.impl.%I.impl_witness (constants.%I.impl_witness.40ab31.1)] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (@A.as.I.impl.%A.as.I.impl.F.decl), @A.as.I.impl [concrete] +// CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table, @A.as.I.impl(constants.%V) [symbolic = @A.as.I.impl.%I.impl_witness (constants.%I.impl_witness.40ab31.1)] // CHECK:STDOUT: %TestGeneric.decl: %TestGeneric.type = fn_decl @TestGeneric [concrete = constants.%TestGeneric] { // CHECK:STDOUT: %W.patt: %pattern_type.98f = symbolic_binding_pattern W, 0 [concrete] // CHECK:STDOUT: %a.patt: @TestGeneric.%pattern_type.loc17_26 (%pattern_type.68d8d3.2) = binding_pattern a [concrete] @@ -226,70 +226,70 @@ fn TestSpecific(a: A({})) -> {} { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%U.loc7_13.1)> [symbolic = %I.type (constants.%I.type.325e65.1)] // CHECK:STDOUT: %Self.2: @I.%I.type (%I.type.325e65.1) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.209206.1)] -// CHECK:STDOUT: %F.type: type = fn_type @F.loc8, @I(%U.loc7_13.1) [symbolic = %F.type (constants.%F.type.2aef59.1)] -// CHECK:STDOUT: %F: @I.%F.type (%F.type.2aef59.1) = struct_value () [symbolic = %F (constants.%F.bb2dd4.1)] +// CHECK:STDOUT: %I.F.type: type = fn_type @I.F, @I(%U.loc7_13.1) [symbolic = %I.F.type (constants.%I.F.type.2aef59.1)] +// CHECK:STDOUT: %I.F: @I.%I.F.type (%I.F.type.2aef59.1) = struct_value () [symbolic = %I.F (constants.%I.F.bb2dd4.1)] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I, @I(%U.loc7_13.1) [symbolic = %I.assoc_type (constants.%I.assoc_type.1e5078.1)] -// CHECK:STDOUT: %assoc0.loc8_26.2: @I.%I.assoc_type (%I.assoc_type.1e5078.1) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc8_26.2 (constants.%assoc0.8f0422.1)] +// CHECK:STDOUT: %assoc0.loc8_26.2: @I.%I.assoc_type (%I.assoc_type.1e5078.1) = assoc_entity element0, %I.F.decl [symbolic = %assoc0.loc8_26.2 (constants.%assoc0.8f0422.1)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: %Self.1: @I.%I.type (%I.type.325e65.1) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.209206.1)] -// CHECK:STDOUT: %F.decl: @I.%F.type (%F.type.2aef59.1) = fn_decl @F.loc8 [symbolic = @I.%F (constants.%F.bb2dd4.1)] { -// CHECK:STDOUT: %self.patt: @F.loc8.%pattern_type.loc8_8 (%pattern_type.4be) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.loc8.%pattern_type.loc8_8 (%pattern_type.4be) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: @F.loc8.%pattern_type.loc8_22 (%pattern_type.7dcd0a.1) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @F.loc8.%pattern_type.loc8_22 (%pattern_type.7dcd0a.1) = out_param_pattern %return.patt, call_param1 [concrete] +// CHECK:STDOUT: %I.F.decl: @I.%I.F.type (%I.F.type.2aef59.1) = fn_decl @I.F [symbolic = @I.%I.F (constants.%I.F.bb2dd4.1)] { +// CHECK:STDOUT: %self.patt: @I.F.%pattern_type.loc8_8 (%pattern_type.4be) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @I.F.%pattern_type.loc8_8 (%pattern_type.4be) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %return.patt: @I.F.%pattern_type.loc8_22 (%pattern_type.7dcd0a.1) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @I.F.%pattern_type.loc8_22 (%pattern_type.7dcd0a.1) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %U.ref: type = name_ref U, @I.%U.loc7_13.2 [symbolic = %U (constants.%U)] -// CHECK:STDOUT: %self.param: @F.loc8.%Self.as_type.loc8_14.2 (%Self.as_type.928) = value_param call_param0 -// CHECK:STDOUT: %.loc8_14.1: type = splice_block %.loc8_14.3 [symbolic = %Self.as_type.loc8_14.2 (constants.%Self.as_type.928)] { -// CHECK:STDOUT: %.loc8_14.2: @F.loc8.%I.type (%I.type.325e65.1) = specific_constant @I.%Self.1, @I(constants.%U) [symbolic = %Self (constants.%Self.209206.1)] -// CHECK:STDOUT: %Self.ref: @F.loc8.%I.type (%I.type.325e65.1) = name_ref Self, %.loc8_14.2 [symbolic = %Self (constants.%Self.209206.1)] -// CHECK:STDOUT: %Self.as_type.loc8_14.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc8_14.2 (constants.%Self.as_type.928)] -// CHECK:STDOUT: %.loc8_14.3: type = converted %Self.ref, %Self.as_type.loc8_14.1 [symbolic = %Self.as_type.loc8_14.2 (constants.%Self.as_type.928)] +// CHECK:STDOUT: %self.param: @I.F.%Self.as_type.loc8_14.1 (%Self.as_type.928) = value_param call_param0 +// CHECK:STDOUT: %.loc8_14.1: type = splice_block %.loc8_14.3 [symbolic = %Self.as_type.loc8_14.1 (constants.%Self.as_type.928)] { +// CHECK:STDOUT: %.loc8_14.2: @I.F.%I.type (%I.type.325e65.1) = specific_constant @I.%Self.1, @I(constants.%U) [symbolic = %Self (constants.%Self.209206.1)] +// CHECK:STDOUT: %Self.ref: @I.F.%I.type (%I.type.325e65.1) = name_ref Self, %.loc8_14.2 [symbolic = %Self (constants.%Self.209206.1)] +// CHECK:STDOUT: %Self.as_type.loc8_14.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc8_14.1 (constants.%Self.as_type.928)] +// CHECK:STDOUT: %.loc8_14.3: type = converted %Self.ref, %Self.as_type.loc8_14.2 [symbolic = %Self.as_type.loc8_14.1 (constants.%Self.as_type.928)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.loc8.%Self.as_type.loc8_14.2 (%Self.as_type.928) = bind_name self, %self.param -// CHECK:STDOUT: %return.param: ref @F.loc8.%U (%U) = out_param call_param1 -// CHECK:STDOUT: %return: ref @F.loc8.%U (%U) = return_slot %return.param +// CHECK:STDOUT: %self: @I.F.%Self.as_type.loc8_14.1 (%Self.as_type.928) = bind_name self, %self.param +// CHECK:STDOUT: %return.param: ref @I.F.%U (%U) = out_param call_param1 +// CHECK:STDOUT: %return: ref @I.F.%U (%U) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0.loc8_26.1: @I.%I.assoc_type (%I.assoc_type.1e5078.1) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc8_26.2 (constants.%assoc0.8f0422.1)] +// CHECK:STDOUT: %assoc0.loc8_26.1: @I.%I.assoc_type (%I.assoc_type.1e5078.1) = assoc_entity element0, %I.F.decl [symbolic = %assoc0.loc8_26.2 (constants.%assoc0.8f0422.1)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 // CHECK:STDOUT: .U = // CHECK:STDOUT: .F = %assoc0.loc8_26.1 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%I.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @I.impl(%V.loc11_14.1: type) { -// CHECK:STDOUT: %V.loc11_14.2: type = bind_symbolic_name V, 0 [symbolic = %V.loc11_14.2 (constants.%V)] -// CHECK:STDOUT: %A.loc11_27.2: type = class_type @A, @A(%V.loc11_14.2) [symbolic = %A.loc11_27.2 (constants.%A.13025a.2)] -// CHECK:STDOUT: %I.type.loc11_35.2: type = facet_type <@I, @I(%V.loc11_14.2)> [symbolic = %I.type.loc11_35.2 (constants.%I.type.325e65.2)] -// CHECK:STDOUT: %require_complete: = require_complete_type %I.type.loc11_35.2 [symbolic = %require_complete (constants.%require_complete.cfebb2.1)] -// CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table, @I.impl(%V.loc11_14.2) [symbolic = %I.impl_witness (constants.%I.impl_witness.40ab31.1)] +// CHECK:STDOUT: generic impl @A.as.I.impl(%V.loc11_14.2: type) { +// CHECK:STDOUT: %V.loc11_14.1: type = bind_symbolic_name V, 0 [symbolic = %V.loc11_14.1 (constants.%V)] +// CHECK:STDOUT: %A.loc11_27.1: type = class_type @A, @A(%V.loc11_14.1) [symbolic = %A.loc11_27.1 (constants.%A.13025a.2)] +// CHECK:STDOUT: %I.type.loc11_35.1: type = facet_type <@I, @I(%V.loc11_14.1)> [symbolic = %I.type.loc11_35.1 (constants.%I.type.325e65.2)] +// CHECK:STDOUT: %require_complete: = require_complete_type %I.type.loc11_35.1 [symbolic = %require_complete (constants.%require_complete.cfebb2.1)] +// CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table, @A.as.I.impl(%V.loc11_14.1) [symbolic = %I.impl_witness (constants.%I.impl_witness.40ab31.1)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type: type = fn_type @F.loc12, @I.impl(%V.loc11_14.2) [symbolic = %F.type (constants.%F.type.0fea45.1)] -// CHECK:STDOUT: %F: @I.impl.%F.type (%F.type.0fea45.1) = struct_value () [symbolic = %F (constants.%F.d6ae34.1)] +// CHECK:STDOUT: %A.as.I.impl.F.type: type = fn_type @A.as.I.impl.F, @A.as.I.impl(%V.loc11_14.1) [symbolic = %A.as.I.impl.F.type (constants.%A.as.I.impl.F.type.0fea45.1)] +// CHECK:STDOUT: %A.as.I.impl.F: @A.as.I.impl.%A.as.I.impl.F.type (%A.as.I.impl.F.type.0fea45.1) = struct_value () [symbolic = %A.as.I.impl.F (constants.%A.as.I.impl.F.d6ae34.1)] // CHECK:STDOUT: -// CHECK:STDOUT: impl: %A.loc11_27.1 as %I.type.loc11_35.1 { -// CHECK:STDOUT: %F.decl: @I.impl.%F.type (%F.type.0fea45.1) = fn_decl @F.loc12 [symbolic = @I.impl.%F (constants.%F.d6ae34.1)] { -// CHECK:STDOUT: %self.patt: @F.loc12.%pattern_type.loc12_8 (%pattern_type.68d8d3.1) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.loc12.%pattern_type.loc12_8 (%pattern_type.68d8d3.1) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: @F.loc12.%pattern_type.loc12_22 (%pattern_type.7dcd0a.2) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @F.loc12.%pattern_type.loc12_22 (%pattern_type.7dcd0a.2) = out_param_pattern %return.patt, call_param1 [concrete] +// CHECK:STDOUT: impl: %A.loc11_27.2 as %I.type.loc11_35.2 { +// CHECK:STDOUT: %A.as.I.impl.F.decl: @A.as.I.impl.%A.as.I.impl.F.type (%A.as.I.impl.F.type.0fea45.1) = fn_decl @A.as.I.impl.F [symbolic = @A.as.I.impl.%A.as.I.impl.F (constants.%A.as.I.impl.F.d6ae34.1)] { +// CHECK:STDOUT: %self.patt: @A.as.I.impl.F.%pattern_type.loc12_8 (%pattern_type.68d8d3.1) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @A.as.I.impl.F.%pattern_type.loc12_8 (%pattern_type.68d8d3.1) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %return.patt: @A.as.I.impl.F.%pattern_type.loc12_22 (%pattern_type.7dcd0a.2) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @A.as.I.impl.F.%pattern_type.loc12_22 (%pattern_type.7dcd0a.2) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %V.ref: type = name_ref V, @I.impl.%V.loc11_14.1 [symbolic = %V (constants.%V)] -// CHECK:STDOUT: %self.param: @F.loc12.%A (%A.13025a.2) = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @I.impl.%A.loc11_27.1 [symbolic = %A (constants.%A.13025a.2)] -// CHECK:STDOUT: %self: @F.loc12.%A (%A.13025a.2) = bind_name self, %self.param -// CHECK:STDOUT: %return.param: ref @F.loc12.%V (%V) = out_param call_param1 -// CHECK:STDOUT: %return: ref @F.loc12.%V (%V) = return_slot %return.param +// CHECK:STDOUT: %V.ref: type = name_ref V, @A.as.I.impl.%V.loc11_14.2 [symbolic = %V (constants.%V)] +// CHECK:STDOUT: %self.param: @A.as.I.impl.F.%A (%A.13025a.2) = value_param call_param0 +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @A.as.I.impl.%A.loc11_27.2 [symbolic = %A (constants.%A.13025a.2)] +// CHECK:STDOUT: %self: @A.as.I.impl.F.%A (%A.13025a.2) = bind_name self, %self.param +// CHECK:STDOUT: %return.param: ref @A.as.I.impl.F.%V (%V) = out_param call_param1 +// CHECK:STDOUT: %return: ref @A.as.I.impl.F.%V (%V) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .V = -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %A.as.I.impl.F.decl // CHECK:STDOUT: witness = file.%I.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -318,18 +318,18 @@ fn TestSpecific(a: A({})) -> {} { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc8(@I.%U.loc7_13.2: type, @I.%Self.1: @I.%I.type (%I.type.325e65.1)) { +// CHECK:STDOUT: generic fn @I.F(@I.%U.loc7_13.2: type, @I.%Self.1: @I.%I.type (%I.type.325e65.1)) { // CHECK:STDOUT: %U: type = bind_symbolic_name U, 0 [symbolic = %U (constants.%U)] // CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%U)> [symbolic = %I.type (constants.%I.type.325e65.1)] -// CHECK:STDOUT: %Self: @F.loc8.%I.type (%I.type.325e65.1) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.209206.1)] -// CHECK:STDOUT: %Self.as_type.loc8_14.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc8_14.2 (constants.%Self.as_type.928)] -// CHECK:STDOUT: %pattern_type.loc8_8: type = pattern_type %Self.as_type.loc8_14.2 [symbolic = %pattern_type.loc8_8 (constants.%pattern_type.4be)] +// CHECK:STDOUT: %Self: @I.F.%I.type (%I.type.325e65.1) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.209206.1)] +// CHECK:STDOUT: %Self.as_type.loc8_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc8_14.1 (constants.%Self.as_type.928)] +// CHECK:STDOUT: %pattern_type.loc8_8: type = pattern_type %Self.as_type.loc8_14.1 [symbolic = %pattern_type.loc8_8 (constants.%pattern_type.4be)] // CHECK:STDOUT: %pattern_type.loc8_22: type = pattern_type %U [symbolic = %pattern_type.loc8_22 (constants.%pattern_type.7dcd0a.1)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @F.loc8.%Self.as_type.loc8_14.2 (%Self.as_type.928)) -> @F.loc8.%U (%U); +// CHECK:STDOUT: fn(%self.param: @I.F.%Self.as_type.loc8_14.1 (%Self.as_type.928)) -> @I.F.%U (%U); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc12(@I.impl.%V.loc11_14.1: type) { +// CHECK:STDOUT: generic fn @A.as.I.impl.F(@A.as.I.impl.%V.loc11_14.2: type) { // CHECK:STDOUT: %V: type = bind_symbolic_name V, 0 [symbolic = %V (constants.%V)] // CHECK:STDOUT: %A: type = class_type @A, @A(%V) [symbolic = %A (constants.%A.13025a.2)] // CHECK:STDOUT: %pattern_type.loc12_8: type = pattern_type %A [symbolic = %pattern_type.loc12_8 (constants.%pattern_type.68d8d3.1)] @@ -340,12 +340,12 @@ fn TestSpecific(a: A({})) -> {} { // CHECK:STDOUT: %require_complete.loc12_12: = require_complete_type %A [symbolic = %require_complete.loc12_12 (constants.%require_complete.5b8aee.1)] // CHECK:STDOUT: %A.elem: type = unbound_element_type %A, %V [symbolic = %A.elem (constants.%A.elem.1ceb36.2)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @F.loc12.%A (%A.13025a.2)) -> @F.loc12.%V (%V) { +// CHECK:STDOUT: fn(%self.param: @A.as.I.impl.F.%A (%A.13025a.2)) -> @A.as.I.impl.F.%V (%V) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %self.ref: @F.loc12.%A (%A.13025a.2) = name_ref self, %self -// CHECK:STDOUT: %n.ref: @F.loc12.%A.elem (%A.elem.1ceb36.2) = name_ref n, @A.%.loc4 [concrete = @A.%.loc4] -// CHECK:STDOUT: %.loc13_16.1: ref @F.loc12.%V (%V) = class_element_access %self.ref, element0 -// CHECK:STDOUT: %.loc13_16.2: @F.loc12.%V (%V) = bind_value %.loc13_16.1 +// CHECK:STDOUT: %self.ref: @A.as.I.impl.F.%A (%A.13025a.2) = name_ref self, %self +// CHECK:STDOUT: %n.ref: @A.as.I.impl.F.%A.elem (%A.elem.1ceb36.2) = name_ref n, @A.%.loc4 [concrete = @A.%.loc4] +// CHECK:STDOUT: %.loc13_16.1: ref @A.as.I.impl.F.%V (%V) = class_element_access %self.ref, element0 +// CHECK:STDOUT: %.loc13_16.2: @A.as.I.impl.F.%V (%V) = bind_value %.loc13_16.1 // CHECK:STDOUT: return %.loc13_16.2 // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -362,13 +362,13 @@ fn TestSpecific(a: A({})) -> {} { // CHECK:STDOUT: %I.type.loc18_16.2: type = facet_type <@I, @I(%W.loc17_16.1)> [symbolic = %I.type.loc18_16.2 (constants.%I.type.325e65.3)] // CHECK:STDOUT: %require_complete.loc18: = require_complete_type %I.type.loc18_16.2 [symbolic = %require_complete.loc18 (constants.%require_complete.cfebb2.2)] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I, @I(%W.loc17_16.1) [symbolic = %I.assoc_type (constants.%I.assoc_type.1e5078.3)] -// CHECK:STDOUT: %assoc0: @TestGeneric.%I.assoc_type (%I.assoc_type.1e5078.3) = assoc_entity element0, @I.%F.decl [symbolic = %assoc0 (constants.%assoc0.8f0422.3)] +// CHECK:STDOUT: %assoc0: @TestGeneric.%I.assoc_type (%I.assoc_type.1e5078.3) = assoc_entity element0, @I.%I.F.decl [symbolic = %assoc0 (constants.%assoc0.8f0422.3)] // CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %A.loc17_32.1, @I, @I(%W.loc17_16.1) [symbolic = %I.lookup_impl_witness (constants.%I.lookup_impl_witness)] -// CHECK:STDOUT: %F.type: type = fn_type @F.loc8, @I(%W.loc17_16.1) [symbolic = %F.type (constants.%F.type.2aef59.3)] +// CHECK:STDOUT: %I.F.type: type = fn_type @I.F, @I(%W.loc17_16.1) [symbolic = %I.F.type (constants.%I.F.type.2aef59.3)] // CHECK:STDOUT: %I.facet: @TestGeneric.%I.type.loc18_16.2 (%I.type.325e65.3) = facet_value %A.loc17_32.1, (%I.lookup_impl_witness) [symbolic = %I.facet (constants.%I.facet.6d2)] -// CHECK:STDOUT: %.loc18_11: type = fn_type_with_self_type %F.type, %I.facet [symbolic = %.loc18_11 (constants.%.fe1)] +// CHECK:STDOUT: %.loc18_11: type = fn_type_with_self_type %I.F.type, %I.facet [symbolic = %.loc18_11 (constants.%.fe1)] // CHECK:STDOUT: %impl.elem0.loc18_11.2: @TestGeneric.%.loc18_11 (%.fe1) = impl_witness_access %I.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc18_11.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %specific_impl_fn.loc18_11.2: = specific_impl_function %impl.elem0.loc18_11.2, @F.loc8(%W.loc17_16.1, %I.facet) [symbolic = %specific_impl_fn.loc18_11.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc18_11.2: = specific_impl_function %impl.elem0.loc18_11.2, @I.F(%W.loc17_16.1, %I.facet) [symbolic = %specific_impl_fn.loc18_11.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%a.param: @TestGeneric.%A.loc17_32.1 (%A.13025a.3)) -> @TestGeneric.%W.loc17_16.1 (%W) { // CHECK:STDOUT: !entry: @@ -380,7 +380,7 @@ fn TestSpecific(a: A({})) -> {} { // CHECK:STDOUT: %F.ref: @TestGeneric.%I.assoc_type (%I.assoc_type.1e5078.3) = name_ref F, %.loc18_17 [symbolic = %assoc0 (constants.%assoc0.8f0422.3)] // CHECK:STDOUT: %impl.elem0.loc18_11.1: @TestGeneric.%.loc18_11 (%.fe1) = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc18_11.2 (constants.%impl.elem0)] // CHECK:STDOUT: %bound_method.loc18_11: = bound_method %a.ref, %impl.elem0.loc18_11.1 -// CHECK:STDOUT: %specific_impl_fn.loc18_11.1: = specific_impl_function %impl.elem0.loc18_11.1, @F.loc8(constants.%W, constants.%I.facet.6d2) [symbolic = %specific_impl_fn.loc18_11.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc18_11.1: = specific_impl_function %impl.elem0.loc18_11.1, @I.F(constants.%W, constants.%I.facet.6d2) [symbolic = %specific_impl_fn.loc18_11.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %bound_method.loc18_21: = bound_method %a.ref, %specific_impl_fn.loc18_11.1 // CHECK:STDOUT: %.loc18_21: init @TestGeneric.%W.loc17_16.1 (%W) = call %bound_method.loc18_21(%a.ref) // CHECK:STDOUT: %.loc18_22.1: @TestGeneric.%W.loc17_16.1 (%W) = value_of_initializer %.loc18_21 @@ -398,20 +398,20 @@ fn TestSpecific(a: A({})) -> {} { // CHECK:STDOUT: %I.type: type = facet_type <@I, @I(constants.%empty_struct_type)> [concrete = constants.%I.type.885] // CHECK:STDOUT: %.loc22_18: %I.assoc_type.22c = specific_constant @I.%assoc0.loc8_26.1, @I(constants.%empty_struct_type) [concrete = constants.%assoc0.722] // CHECK:STDOUT: %F.ref: %I.assoc_type.22c = name_ref F, %.loc22_18 [concrete = constants.%assoc0.722] -// CHECK:STDOUT: %impl.elem0: %.8fd = impl_witness_access constants.%I.impl_witness.0f2, element0 [concrete = constants.%F.158] +// CHECK:STDOUT: %impl.elem0: %.8fd = impl_witness_access constants.%I.impl_witness.0f2, element0 [concrete = constants.%A.as.I.impl.F.158] // CHECK:STDOUT: %bound_method.loc22_11: = bound_method %a.ref, %impl.elem0 -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @F.loc12(constants.%empty_struct_type) [concrete = constants.%F.specific_fn] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @A.as.I.impl.F(constants.%empty_struct_type) [concrete = constants.%A.as.I.impl.F.specific_fn] // CHECK:STDOUT: %bound_method.loc22_22.1: = bound_method %a.ref, %specific_fn -// CHECK:STDOUT: %F.call: init %empty_struct_type = call %bound_method.loc22_22.1(%a.ref) +// CHECK:STDOUT: %A.as.I.impl.F.call: init %empty_struct_type = call %bound_method.loc22_22.1(%a.ref) // CHECK:STDOUT: %.loc22_22.1: ref %empty_struct_type = temporary_storage -// CHECK:STDOUT: %.loc22_22.2: ref %empty_struct_type = temporary %.loc22_22.1, %F.call +// CHECK:STDOUT: %.loc22_22.2: ref %empty_struct_type = temporary %.loc22_22.1, %A.as.I.impl.F.call // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] -// CHECK:STDOUT: %.loc22_23: %empty_struct_type = converted %F.call, %empty_struct [concrete = constants.%empty_struct] -// CHECK:STDOUT: %Op.bound: = bound_method %.loc22_22.1, constants.%Op.d5a -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.d5a, @Op.1(constants.%empty_struct_type) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc22_22.2: = bound_method %.loc22_22.1, %Op.specific_fn +// CHECK:STDOUT: %.loc22_23: %empty_struct_type = converted %A.as.I.impl.F.call, %empty_struct [concrete = constants.%empty_struct] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc22_22.1, constants.%T.as.Destroy.impl.Op.d5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.d5a, @T.as.Destroy.impl.Op(constants.%empty_struct_type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc22_22.2: = bound_method %.loc22_22.1, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.c28 = addr_of %.loc22_22.1 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc22_22.2(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc22_22.2(%addr) // CHECK:STDOUT: return %.loc22_23 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -423,11 +423,11 @@ fn TestSpecific(a: A({})) -> {} { // CHECK:STDOUT: %U.loc7_13.1 => constants.%U // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc8(constants.%U, constants.%Self.209206.1) { +// CHECK:STDOUT: specific @I.F(constants.%U, constants.%Self.209206.1) { // CHECK:STDOUT: %U => constants.%U // CHECK:STDOUT: %I.type => constants.%I.type.325e65.1 // CHECK:STDOUT: %Self => constants.%Self.209206.1 -// CHECK:STDOUT: %Self.as_type.loc8_14.2 => constants.%Self.as_type.928 +// CHECK:STDOUT: %Self.as_type.loc8_14.1 => constants.%Self.as_type.928 // CHECK:STDOUT: %pattern_type.loc8_8 => constants.%pattern_type.4be // CHECK:STDOUT: %pattern_type.loc8_22 => constants.%pattern_type.7dcd0a.1 // CHECK:STDOUT: } @@ -449,36 +449,36 @@ fn TestSpecific(a: A({})) -> {} { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %I.type => constants.%I.type.325e65.2 // CHECK:STDOUT: %Self.2 => constants.%Self.209206.2 -// CHECK:STDOUT: %F.type => constants.%F.type.2aef59.2 -// CHECK:STDOUT: %F => constants.%F.bb2dd4.2 +// CHECK:STDOUT: %I.F.type => constants.%I.F.type.2aef59.2 +// CHECK:STDOUT: %I.F => constants.%I.F.bb2dd4.2 // CHECK:STDOUT: %I.assoc_type => constants.%I.assoc_type.1e5078.2 // CHECK:STDOUT: %assoc0.loc8_26.2 => constants.%assoc0.8f0422.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.impl(constants.%V) { -// CHECK:STDOUT: %V.loc11_14.2 => constants.%V -// CHECK:STDOUT: %A.loc11_27.2 => constants.%A.13025a.2 -// CHECK:STDOUT: %I.type.loc11_35.2 => constants.%I.type.325e65.2 +// CHECK:STDOUT: specific @A.as.I.impl(constants.%V) { +// CHECK:STDOUT: %V.loc11_14.1 => constants.%V +// CHECK:STDOUT: %A.loc11_27.1 => constants.%A.13025a.2 +// CHECK:STDOUT: %I.type.loc11_35.1 => constants.%I.type.325e65.2 // CHECK:STDOUT: %require_complete => constants.%require_complete.cfebb2.1 // CHECK:STDOUT: %I.impl_witness => constants.%I.impl_witness.40ab31.1 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.0fea45.1 -// CHECK:STDOUT: %F => constants.%F.d6ae34.1 +// CHECK:STDOUT: %A.as.I.impl.F.type => constants.%A.as.I.impl.F.type.0fea45.1 +// CHECK:STDOUT: %A.as.I.impl.F => constants.%A.as.I.impl.F.d6ae34.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc12(constants.%V) { +// CHECK:STDOUT: specific @A.as.I.impl.F(constants.%V) { // CHECK:STDOUT: %V => constants.%V // CHECK:STDOUT: %A => constants.%A.13025a.2 // CHECK:STDOUT: %pattern_type.loc12_8 => constants.%pattern_type.68d8d3.1 // CHECK:STDOUT: %pattern_type.loc12_22 => constants.%pattern_type.7dcd0a.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc8(constants.%V, constants.%I.facet.de3) { +// CHECK:STDOUT: specific @I.F(constants.%V, constants.%I.facet.de3) { // CHECK:STDOUT: %U => constants.%V // CHECK:STDOUT: %I.type => constants.%I.type.325e65.2 // CHECK:STDOUT: %Self => constants.%I.facet.de3 -// CHECK:STDOUT: %Self.as_type.loc8_14.2 => constants.%A.13025a.2 +// CHECK:STDOUT: %Self.as_type.loc8_14.1 => constants.%A.13025a.2 // CHECK:STDOUT: %pattern_type.loc8_8 => constants.%pattern_type.68d8d3.1 // CHECK:STDOUT: %pattern_type.loc8_22 => constants.%pattern_type.7dcd0a.2 // CHECK:STDOUT: } @@ -507,29 +507,29 @@ fn TestSpecific(a: A({})) -> {} { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %I.type => constants.%I.type.325e65.3 // CHECK:STDOUT: %Self.2 => constants.%Self.209206.3 -// CHECK:STDOUT: %F.type => constants.%F.type.2aef59.3 -// CHECK:STDOUT: %F => constants.%F.bb2dd4.3 +// CHECK:STDOUT: %I.F.type => constants.%I.F.type.2aef59.3 +// CHECK:STDOUT: %I.F => constants.%I.F.bb2dd4.3 // CHECK:STDOUT: %I.assoc_type => constants.%I.assoc_type.1e5078.3 // CHECK:STDOUT: %assoc0.loc8_26.2 => constants.%assoc0.8f0422.3 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.impl(constants.%W) { -// CHECK:STDOUT: %V.loc11_14.2 => constants.%W -// CHECK:STDOUT: %A.loc11_27.2 => constants.%A.13025a.3 -// CHECK:STDOUT: %I.type.loc11_35.2 => constants.%I.type.325e65.3 +// CHECK:STDOUT: specific @A.as.I.impl(constants.%W) { +// CHECK:STDOUT: %V.loc11_14.1 => constants.%W +// CHECK:STDOUT: %A.loc11_27.1 => constants.%A.13025a.3 +// CHECK:STDOUT: %I.type.loc11_35.1 => constants.%I.type.325e65.3 // CHECK:STDOUT: %require_complete => constants.%require_complete.cfebb2.2 // CHECK:STDOUT: %I.impl_witness => constants.%I.impl_witness.40ab31.2 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.0fea45.2 -// CHECK:STDOUT: %F => constants.%F.d6ae34.2 +// CHECK:STDOUT: %A.as.I.impl.F.type => constants.%A.as.I.impl.F.type.0fea45.2 +// CHECK:STDOUT: %A.as.I.impl.F => constants.%A.as.I.impl.F.d6ae34.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc8(constants.%W, constants.%I.facet.6d2) { +// CHECK:STDOUT: specific @I.F(constants.%W, constants.%I.facet.6d2) { // CHECK:STDOUT: %U => constants.%W // CHECK:STDOUT: %I.type => constants.%I.type.325e65.3 // CHECK:STDOUT: %Self => constants.%I.facet.6d2 -// CHECK:STDOUT: %Self.as_type.loc8_14.2 => constants.%A.13025a.3 +// CHECK:STDOUT: %Self.as_type.loc8_14.1 => constants.%A.13025a.3 // CHECK:STDOUT: %pattern_type.loc8_8 => constants.%pattern_type.68d8d3.2 // CHECK:STDOUT: %pattern_type.loc8_22 => constants.%pattern_type.7dcd0a.3 // CHECK:STDOUT: } @@ -551,25 +551,25 @@ fn TestSpecific(a: A({})) -> {} { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %I.type => constants.%I.type.885 // CHECK:STDOUT: %Self.2 => constants.%Self.4e2 -// CHECK:STDOUT: %F.type => constants.%F.type.684 -// CHECK:STDOUT: %F => constants.%F.a8d +// CHECK:STDOUT: %I.F.type => constants.%I.F.type.684 +// CHECK:STDOUT: %I.F => constants.%I.F.a8d // CHECK:STDOUT: %I.assoc_type => constants.%I.assoc_type.22c // CHECK:STDOUT: %assoc0.loc8_26.2 => constants.%assoc0.722 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.impl(constants.%empty_struct_type) { -// CHECK:STDOUT: %V.loc11_14.2 => constants.%empty_struct_type -// CHECK:STDOUT: %A.loc11_27.2 => constants.%A.235 -// CHECK:STDOUT: %I.type.loc11_35.2 => constants.%I.type.885 +// CHECK:STDOUT: specific @A.as.I.impl(constants.%empty_struct_type) { +// CHECK:STDOUT: %V.loc11_14.1 => constants.%empty_struct_type +// CHECK:STDOUT: %A.loc11_27.1 => constants.%A.235 +// CHECK:STDOUT: %I.type.loc11_35.1 => constants.%I.type.885 // CHECK:STDOUT: %require_complete => constants.%complete_type.788 // CHECK:STDOUT: %I.impl_witness => constants.%I.impl_witness.0f2 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.875 -// CHECK:STDOUT: %F => constants.%F.158 +// CHECK:STDOUT: %A.as.I.impl.F.type => constants.%A.as.I.impl.F.type.875 +// CHECK:STDOUT: %A.as.I.impl.F => constants.%A.as.I.impl.F.158 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc12(constants.%empty_struct_type) { +// CHECK:STDOUT: specific @A.as.I.impl.F(constants.%empty_struct_type) { // CHECK:STDOUT: %V => constants.%empty_struct_type // CHECK:STDOUT: %A => constants.%A.235 // CHECK:STDOUT: %pattern_type.loc12_8 => constants.%pattern_type.496 diff --git a/toolchain/check/testdata/impl/lookup/import.carbon b/toolchain/check/testdata/impl/lookup/import.carbon index 10934ebd3678..0252f7e95a13 100644 --- a/toolchain/check/testdata/impl/lookup/import.carbon +++ b/toolchain/check/testdata/impl/lookup/import.carbon @@ -230,17 +230,17 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic] // CHECK:STDOUT: %pattern_type.28f: type = pattern_type %Self.as_type [symbolic] -// CHECK:STDOUT: %F.type.b7b: type = fn_type @F.loc5 [concrete] -// CHECK:STDOUT: %F.f50: %F.type.b7b = struct_value () [concrete] +// CHECK:STDOUT: %HasF.F.type: type = fn_type @HasF.F [concrete] +// CHECK:STDOUT: %HasF.F: %HasF.F.type = struct_value () [concrete] // CHECK:STDOUT: %HasF.assoc_type: type = assoc_entity_type @HasF [concrete] -// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, @HasF.%F.decl [concrete] +// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, @HasF.%HasF.F.decl [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %HasF.impl_witness: = impl_witness file.%HasF.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] -// CHECK:STDOUT: %F.type.a02: type = fn_type @F.loc12 [concrete] -// CHECK:STDOUT: %F.dc7: %F.type.a02 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.HasF.impl.F.type: type = fn_type @C.as.HasF.impl.F [concrete] +// CHECK:STDOUT: %C.as.HasF.impl.F: %C.as.HasF.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %HasF.facet: %HasF.type = facet_value %C, (%HasF.impl_witness) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -260,48 +260,48 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %HasF.decl: type = interface_decl @HasF [concrete = constants.%HasF.type] {} {} // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} -// CHECK:STDOUT: impl_decl @HasF.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.HasF.impl [concrete] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [concrete = constants.%HasF.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %HasF.impl_witness_table = impl_witness_table (@HasF.impl.%F.decl), @HasF.impl [concrete] +// CHECK:STDOUT: %HasF.impl_witness_table = impl_witness_table (@C.as.HasF.impl.%C.as.HasF.impl.F.decl), @C.as.HasF.impl [concrete] // CHECK:STDOUT: %HasF.impl_witness: = impl_witness %HasF.impl_witness_table [concrete = constants.%HasF.impl_witness] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @HasF { // CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %F.decl: %F.type.b7b = fn_decl @F.loc5 [concrete = constants.%F.f50] { -// CHECK:STDOUT: %self.patt: @F.loc5.%pattern_type (%pattern_type.28f) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.loc5.%pattern_type (%pattern_type.28f) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %HasF.F.decl: %HasF.F.type = fn_decl @HasF.F [concrete = constants.%HasF.F] { +// CHECK:STDOUT: %self.patt: @HasF.F.%pattern_type (%pattern_type.28f) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @HasF.F.%pattern_type (%pattern_type.28f) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @F.loc5.%Self.as_type.loc5_14.2 (%Self.as_type) = value_param call_param0 -// CHECK:STDOUT: %.loc5_14.1: type = splice_block %.loc5_14.2 [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type)] { +// CHECK:STDOUT: %self.param: @HasF.F.%Self.as_type.loc5_14.1 (%Self.as_type) = value_param call_param0 +// CHECK:STDOUT: %.loc5_14.1: type = splice_block %.loc5_14.2 [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] { // CHECK:STDOUT: %Self.ref: %HasF.type = name_ref Self, @HasF.%Self [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc5_14.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc5_14.2: type = converted %Self.ref, %Self.as_type.loc5_14.1 [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type)] +// CHECK:STDOUT: %Self.as_type.loc5_14.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc5_14.2: type = converted %Self.ref, %Self.as_type.loc5_14.2 [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.loc5.%Self.as_type.loc5_14.2 (%Self.as_type) = bind_name self, %self.param +// CHECK:STDOUT: %self: @HasF.F.%Self.as_type.loc5_14.1 (%Self.as_type) = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, %HasF.F.decl [concrete = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F = %assoc0 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%HasF.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @HasF.impl: %C.ref as %HasF.ref { -// CHECK:STDOUT: %F.decl: %F.type.a02 = fn_decl @F.loc12 [concrete = constants.%F.dc7] { +// CHECK:STDOUT: impl @C.as.HasF.impl: %C.ref as %HasF.ref { +// CHECK:STDOUT: %C.as.HasF.impl.F.decl: %C.as.HasF.impl.F.type = fn_decl @C.as.HasF.impl.F [concrete = constants.%C.as.HasF.impl.F] { // CHECK:STDOUT: %self.patt: %pattern_type.c48 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.c48 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %self.param: %C = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @HasF.impl.%C.ref [concrete = constants.%C] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @C.as.HasF.impl.%C.ref [concrete = constants.%C] // CHECK:STDOUT: %self: %C = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %C.as.HasF.impl.F.decl // CHECK:STDOUT: witness = file.%HasF.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: @@ -314,28 +314,28 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc5(@HasF.%Self: %HasF.type) { +// CHECK:STDOUT: generic fn @HasF.F(@HasF.%Self: %HasF.type) { // CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc5_14.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc5_14.2 [symbolic = %pattern_type (constants.%pattern_type.28f)] +// CHECK:STDOUT: %Self.as_type.loc5_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc5_14.1 [symbolic = %pattern_type (constants.%pattern_type.28f)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @F.loc5.%Self.as_type.loc5_14.2 (%Self.as_type)); +// CHECK:STDOUT: fn(%self.param: @HasF.F.%Self.as_type.loc5_14.1 (%Self.as_type)); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc12(%self.param: %C) { +// CHECK:STDOUT: fn @C.as.HasF.impl.F(%self.param: %C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%Self) { +// CHECK:STDOUT: specific @HasF.F(constants.%Self) { // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %Self.as_type.loc5_14.2 => constants.%Self.as_type +// CHECK:STDOUT: %Self.as_type.loc5_14.1 => constants.%Self.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.28f // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%HasF.facet) { +// CHECK:STDOUT: specific @HasF.F(constants.%HasF.facet) { // CHECK:STDOUT: %Self => constants.%HasF.facet -// CHECK:STDOUT: %Self.as_type.loc5_14.2 => constants.%C +// CHECK:STDOUT: %Self.as_type.loc5_14.1 => constants.%C // CHECK:STDOUT: %pattern_type => constants.%pattern_type.c48 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -346,33 +346,33 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %Self.d42: %HasG.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type.133: type = facet_access_type %Self.d42 [symbolic] // CHECK:STDOUT: %pattern_type.293: type = pattern_type %Self.as_type.133 [symbolic] -// CHECK:STDOUT: %G.type.d27: type = fn_type @G.loc7 [concrete] -// CHECK:STDOUT: %G.688: %G.type.d27 = struct_value () [concrete] +// CHECK:STDOUT: %HasG.G.type: type = fn_type @HasG.G [concrete] +// CHECK:STDOUT: %HasG.G: %HasG.G.type = struct_value () [concrete] // CHECK:STDOUT: %HasG.assoc_type: type = assoc_entity_type @HasG [concrete] -// CHECK:STDOUT: %assoc0: %HasG.assoc_type = assoc_entity element0, @HasG.%G.decl [concrete] +// CHECK:STDOUT: %assoc0: %HasG.assoc_type = assoc_entity element0, @HasG.%HasG.G.decl [concrete] // CHECK:STDOUT: %D: type = class_type @D [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %HasG.impl_witness.69b: = impl_witness file.%HasG.impl_witness_table.loc13 [concrete] // CHECK:STDOUT: %pattern_type.8e5: type = pattern_type %C [concrete] -// CHECK:STDOUT: %G.type.05c: type = fn_type @G.loc14 [concrete] -// CHECK:STDOUT: %G.486: %G.type.05c = struct_value () [concrete] +// CHECK:STDOUT: %C.as.HasG.impl.G.type: type = fn_type @C.as.HasG.impl.G [concrete] +// CHECK:STDOUT: %C.as.HasG.impl.G: %C.as.HasG.impl.G.type = struct_value () [concrete] // CHECK:STDOUT: %HasG.facet.704: %HasG.type = facet_value %C, (%HasG.impl_witness.69b) [concrete] // CHECK:STDOUT: %HasF.type: type = facet_type <@HasF> [concrete] // CHECK:STDOUT: %Self.cf3: %HasF.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.dbc: type = fn_type @F.1 [concrete] -// CHECK:STDOUT: %F.a2b: %F.type.dbc = struct_value () [concrete] +// CHECK:STDOUT: %HasF.F.type: type = fn_type @HasF.F [concrete] +// CHECK:STDOUT: %HasF.F: %HasF.F.type = struct_value () [concrete] // CHECK:STDOUT: %Self.as_type.7cf: type = facet_access_type %Self.cf3 [symbolic] // CHECK:STDOUT: %pattern_type.dc3: type = pattern_type %Self.as_type.7cf [symbolic] // CHECK:STDOUT: %HasF.impl_witness: = impl_witness file.%HasF.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.510: type = pattern_type %D [concrete] -// CHECK:STDOUT: %F.type.bab: type = fn_type @F.loc19 [concrete] -// CHECK:STDOUT: %F.46f: %F.type.bab = struct_value () [concrete] +// CHECK:STDOUT: %D.as.HasF.impl.F.type: type = fn_type @D.as.HasF.impl.F [concrete] +// CHECK:STDOUT: %D.as.HasF.impl.F: %D.as.HasF.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %HasF.facet: %HasF.type = facet_value %D, (%HasF.impl_witness) [concrete] // CHECK:STDOUT: %HasG.impl_witness.b2b: = impl_witness file.%HasG.impl_witness_table.loc23 [concrete] -// CHECK:STDOUT: %G.type.c1d: type = fn_type @G.loc24 [concrete] -// CHECK:STDOUT: %G.294: %G.type.c1d = struct_value () [concrete] +// CHECK:STDOUT: %D.as.HasG.impl.G.type: type = fn_type @D.as.HasG.impl.G [concrete] +// CHECK:STDOUT: %D.as.HasG.impl.G: %D.as.HasG.impl.G.type = struct_value () [concrete] // CHECK:STDOUT: %HasG.facet.9c8: %HasG.type = facet_value %D, (%HasG.impl_witness.b2b) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -392,7 +392,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %PackageA.HasF: type = import_ref PackageA//default, HasF, loaded [concrete = constants.%HasF.type] // CHECK:STDOUT: %PackageA.import_ref.28c = import_ref PackageA//default, inst19 [no loc], unloaded // CHECK:STDOUT: %PackageA.import_ref.c63 = import_ref PackageA//default, loc5_21, unloaded -// CHECK:STDOUT: %PackageA.F: %F.type.dbc = import_ref PackageA//default, F, loaded [concrete = constants.%F.a2b] +// CHECK:STDOUT: %PackageA.F: %HasF.F.type = import_ref PackageA//default, F, loaded [concrete = constants.%HasF.F] // CHECK:STDOUT: %PackageA.import_ref.e73: %HasF.type = import_ref PackageA//default, inst19 [no loc], loaded [symbolic = constants.%Self.cf3] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -407,48 +407,48 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %PackageA.import = import PackageA // CHECK:STDOUT: %HasG.decl: type = interface_decl @HasG [concrete = constants.%HasG.type] {} {} // CHECK:STDOUT: %D.decl: type = class_decl @D [concrete = constants.%D] {} {} -// CHECK:STDOUT: impl_decl @HasG.impl.e95 [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.HasG.impl [concrete] {} { // CHECK:STDOUT: %PackageA.ref: = name_ref PackageA, imports.%PackageA [concrete = imports.%PackageA] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%PackageA.C [concrete = constants.%C] // CHECK:STDOUT: %HasG.ref: type = name_ref HasG, file.%HasG.decl [concrete = constants.%HasG.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %HasG.impl_witness_table.loc13 = impl_witness_table (@HasG.impl.e95.%G.decl), @HasG.impl.e95 [concrete] +// CHECK:STDOUT: %HasG.impl_witness_table.loc13 = impl_witness_table (@C.as.HasG.impl.%C.as.HasG.impl.G.decl), @C.as.HasG.impl [concrete] // CHECK:STDOUT: %HasG.impl_witness.loc13: = impl_witness %HasG.impl_witness_table.loc13 [concrete = constants.%HasG.impl_witness.69b] -// CHECK:STDOUT: impl_decl @HasF.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @D.as.HasF.impl [concrete] {} { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %PackageA.ref: = name_ref PackageA, imports.%PackageA [concrete = imports.%PackageA] // CHECK:STDOUT: %HasF.ref: type = name_ref HasF, imports.%PackageA.HasF [concrete = constants.%HasF.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %HasF.impl_witness_table = impl_witness_table (@HasF.impl.%F.decl), @HasF.impl [concrete] +// CHECK:STDOUT: %HasF.impl_witness_table = impl_witness_table (@D.as.HasF.impl.%D.as.HasF.impl.F.decl), @D.as.HasF.impl [concrete] // CHECK:STDOUT: %HasF.impl_witness: = impl_witness %HasF.impl_witness_table [concrete = constants.%HasF.impl_witness] -// CHECK:STDOUT: impl_decl @HasG.impl.da9 [concrete] {} { +// CHECK:STDOUT: impl_decl @D.as.HasG.impl [concrete] {} { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %HasG.ref: type = name_ref HasG, file.%HasG.decl [concrete = constants.%HasG.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %HasG.impl_witness_table.loc23 = impl_witness_table (@HasG.impl.da9.%G.decl), @HasG.impl.da9 [concrete] +// CHECK:STDOUT: %HasG.impl_witness_table.loc23 = impl_witness_table (@D.as.HasG.impl.%D.as.HasG.impl.G.decl), @D.as.HasG.impl [concrete] // CHECK:STDOUT: %HasG.impl_witness.loc23: = impl_witness %HasG.impl_witness_table.loc23 [concrete = constants.%HasG.impl_witness.b2b] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @HasG { // CHECK:STDOUT: %Self: %HasG.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.d42] -// CHECK:STDOUT: %G.decl: %G.type.d27 = fn_decl @G.loc7 [concrete = constants.%G.688] { -// CHECK:STDOUT: %self.patt: @G.loc7.%pattern_type (%pattern_type.293) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @G.loc7.%pattern_type (%pattern_type.293) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %HasG.G.decl: %HasG.G.type = fn_decl @HasG.G [concrete = constants.%HasG.G] { +// CHECK:STDOUT: %self.patt: @HasG.G.%pattern_type (%pattern_type.293) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @HasG.G.%pattern_type (%pattern_type.293) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @G.loc7.%Self.as_type.loc7_14.2 (%Self.as_type.133) = value_param call_param0 -// CHECK:STDOUT: %.loc7_14.1: type = splice_block %.loc7_14.2 [symbolic = %Self.as_type.loc7_14.2 (constants.%Self.as_type.133)] { +// CHECK:STDOUT: %self.param: @HasG.G.%Self.as_type.loc7_14.1 (%Self.as_type.133) = value_param call_param0 +// CHECK:STDOUT: %.loc7_14.1: type = splice_block %.loc7_14.2 [symbolic = %Self.as_type.loc7_14.1 (constants.%Self.as_type.133)] { // CHECK:STDOUT: %Self.ref: %HasG.type = name_ref Self, @HasG.%Self [symbolic = %Self (constants.%Self.d42)] -// CHECK:STDOUT: %Self.as_type.loc7_14.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc7_14.2 (constants.%Self.as_type.133)] -// CHECK:STDOUT: %.loc7_14.2: type = converted %Self.ref, %Self.as_type.loc7_14.1 [symbolic = %Self.as_type.loc7_14.2 (constants.%Self.as_type.133)] +// CHECK:STDOUT: %Self.as_type.loc7_14.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc7_14.1 (constants.%Self.as_type.133)] +// CHECK:STDOUT: %.loc7_14.2: type = converted %Self.ref, %Self.as_type.loc7_14.2 [symbolic = %Self.as_type.loc7_14.1 (constants.%Self.as_type.133)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @G.loc7.%Self.as_type.loc7_14.2 (%Self.as_type.133) = bind_name self, %self.param +// CHECK:STDOUT: %self: @HasG.G.%Self.as_type.loc7_14.1 (%Self.as_type.133) = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %HasG.assoc_type = assoc_entity element0, %G.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %assoc0: %HasG.assoc_type = assoc_entity element0, %HasG.G.decl [concrete = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .G = %assoc0 -// CHECK:STDOUT: witness = (%G.decl) +// CHECK:STDOUT: witness = (%HasG.G.decl) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @HasF [from "package_a.carbon"] { @@ -458,48 +458,48 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: witness = (imports.%PackageA.F) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @HasG.impl.e95: %C.ref as %HasG.ref { -// CHECK:STDOUT: %G.decl: %G.type.05c = fn_decl @G.loc14 [concrete = constants.%G.486] { +// CHECK:STDOUT: impl @C.as.HasG.impl: %C.ref as %HasG.ref { +// CHECK:STDOUT: %C.as.HasG.impl.G.decl: %C.as.HasG.impl.G.type = fn_decl @C.as.HasG.impl.G [concrete = constants.%C.as.HasG.impl.G] { // CHECK:STDOUT: %self.patt: %pattern_type.8e5 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.8e5 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %self.param: %C = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @HasG.impl.e95.%C.ref [concrete = constants.%C] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @C.as.HasG.impl.%C.ref [concrete = constants.%C] // CHECK:STDOUT: %self: %C = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .G = %C.as.HasG.impl.G.decl // CHECK:STDOUT: witness = file.%HasG.impl_witness.loc13 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @HasF.impl: %D.ref as %HasF.ref { -// CHECK:STDOUT: %F.decl: %F.type.bab = fn_decl @F.loc19 [concrete = constants.%F.46f] { +// CHECK:STDOUT: impl @D.as.HasF.impl: %D.ref as %HasF.ref { +// CHECK:STDOUT: %D.as.HasF.impl.F.decl: %D.as.HasF.impl.F.type = fn_decl @D.as.HasF.impl.F [concrete = constants.%D.as.HasF.impl.F] { // CHECK:STDOUT: %self.patt: %pattern_type.510 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.510 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %self.param: %D = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @HasF.impl.%D.ref [concrete = constants.%D] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @D.as.HasF.impl.%D.ref [concrete = constants.%D] // CHECK:STDOUT: %self: %D = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %D.as.HasF.impl.F.decl // CHECK:STDOUT: witness = file.%HasF.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @HasG.impl.da9: %D.ref as %HasG.ref { -// CHECK:STDOUT: %G.decl: %G.type.c1d = fn_decl @G.loc24 [concrete = constants.%G.294] { +// CHECK:STDOUT: impl @D.as.HasG.impl: %D.ref as %HasG.ref { +// CHECK:STDOUT: %D.as.HasG.impl.G.decl: %D.as.HasG.impl.G.type = fn_decl @D.as.HasG.impl.G [concrete = constants.%D.as.HasG.impl.G] { // CHECK:STDOUT: %self.patt: %pattern_type.510 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.510 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %self.param: %D = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @HasG.impl.da9.%D.ref [concrete = constants.%D] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @D.as.HasG.impl.%D.ref [concrete = constants.%D] // CHECK:STDOUT: %self: %D = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .G = %D.as.HasG.impl.G.decl // CHECK:STDOUT: witness = file.%HasG.impl_witness.loc23 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -519,20 +519,20 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: .Self = imports.%PackageA.import_ref.2c4 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @G.loc7(@HasG.%Self: %HasG.type) { +// CHECK:STDOUT: generic fn @HasG.G(@HasG.%Self: %HasG.type) { // CHECK:STDOUT: %Self: %HasG.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.d42)] -// CHECK:STDOUT: %Self.as_type.loc7_14.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc7_14.2 (constants.%Self.as_type.133)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc7_14.2 [symbolic = %pattern_type (constants.%pattern_type.293)] +// CHECK:STDOUT: %Self.as_type.loc7_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc7_14.1 (constants.%Self.as_type.133)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc7_14.1 [symbolic = %pattern_type (constants.%pattern_type.293)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @G.loc7.%Self.as_type.loc7_14.2 (%Self.as_type.133)); +// CHECK:STDOUT: fn(%self.param: @HasG.G.%Self.as_type.loc7_14.1 (%Self.as_type.133)); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G.loc14(%self.param: %C) { +// CHECK:STDOUT: fn @C.as.HasG.impl.G(%self.param: %C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.1(imports.%PackageA.import_ref.e73: %HasF.type) [from "package_a.carbon"] { +// CHECK:STDOUT: generic fn @HasF.F(imports.%PackageA.import_ref.e73: %HasF.type) [from "package_a.carbon"] { // CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.cf3)] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic = %Self.as_type (constants.%Self.as_type.7cf)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type [symbolic = %pattern_type (constants.%pattern_type.dc3)] @@ -540,43 +540,43 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc19(%self.param: %D) { +// CHECK:STDOUT: fn @D.as.HasF.impl.F(%self.param: %D) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G.loc24(%self.param: %D) { +// CHECK:STDOUT: fn @D.as.HasG.impl.G(%self.param: %D) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @G.loc7(constants.%Self.d42) { +// CHECK:STDOUT: specific @HasG.G(constants.%Self.d42) { // CHECK:STDOUT: %Self => constants.%Self.d42 -// CHECK:STDOUT: %Self.as_type.loc7_14.2 => constants.%Self.as_type.133 +// CHECK:STDOUT: %Self.as_type.loc7_14.1 => constants.%Self.as_type.133 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.293 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @G.loc7(constants.%HasG.facet.704) { +// CHECK:STDOUT: specific @HasG.G(constants.%HasG.facet.704) { // CHECK:STDOUT: %Self => constants.%HasG.facet.704 -// CHECK:STDOUT: %Self.as_type.loc7_14.2 => constants.%C +// CHECK:STDOUT: %Self.as_type.loc7_14.1 => constants.%C // CHECK:STDOUT: %pattern_type => constants.%pattern_type.8e5 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.1(constants.%Self.cf3) { +// CHECK:STDOUT: specific @HasF.F(constants.%Self.cf3) { // CHECK:STDOUT: %Self => constants.%Self.cf3 // CHECK:STDOUT: %Self.as_type => constants.%Self.as_type.7cf // CHECK:STDOUT: %pattern_type => constants.%pattern_type.dc3 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.1(constants.%HasF.facet) { +// CHECK:STDOUT: specific @HasF.F(constants.%HasF.facet) { // CHECK:STDOUT: %Self => constants.%HasF.facet // CHECK:STDOUT: %Self.as_type => constants.%D // CHECK:STDOUT: %pattern_type => constants.%pattern_type.510 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @G.loc7(constants.%HasG.facet.9c8) { +// CHECK:STDOUT: specific @HasG.G(constants.%HasG.facet.9c8) { // CHECK:STDOUT: %Self => constants.%HasG.facet.9c8 -// CHECK:STDOUT: %Self.as_type.loc7_14.2 => constants.%D +// CHECK:STDOUT: %Self.as_type.loc7_14.1 => constants.%D // CHECK:STDOUT: %pattern_type => constants.%pattern_type.510 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -594,15 +594,15 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %HasF.assoc_type: type = assoc_entity_type @HasF [concrete] // CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, imports.%PackageA.import_ref.ab2 [concrete] -// CHECK:STDOUT: %F.type.dbc: type = fn_type @F.2 [concrete] -// CHECK:STDOUT: %F.a2b: %F.type.dbc = struct_value () [concrete] +// CHECK:STDOUT: %HasF.F.type: type = fn_type @HasF.F [concrete] +// CHECK:STDOUT: %HasF.F: %HasF.F.type = struct_value () [concrete] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic] // CHECK:STDOUT: %pattern_type.dc3: type = pattern_type %Self.as_type [symbolic] // CHECK:STDOUT: %HasF.impl_witness: = impl_witness imports.%HasF.impl_witness_table [concrete] // CHECK:STDOUT: %HasF.facet: %HasF.type = facet_value %C, (%HasF.impl_witness) [concrete] -// CHECK:STDOUT: %.d3f: type = fn_type_with_self_type %F.type.dbc, %HasF.facet [concrete] -// CHECK:STDOUT: %F.type.4e3: type = fn_type @F.1 [concrete] -// CHECK:STDOUT: %F.857: %F.type.4e3 = struct_value () [concrete] +// CHECK:STDOUT: %.d3f: type = fn_type_with_self_type %HasF.F.type, %HasF.facet [concrete] +// CHECK:STDOUT: %C.as.HasF.impl.F.type: type = fn_type @C.as.HasF.impl.F [concrete] +// CHECK:STDOUT: %C.as.HasF.impl.F: %C.as.HasF.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -622,13 +622,13 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %PackageA.import_ref.28c = import_ref PackageA//default, inst19 [no loc], unloaded // CHECK:STDOUT: %PackageA.import_ref.b36: %HasF.assoc_type = import_ref PackageA//default, loc5_21, loaded [concrete = constants.%assoc0] // CHECK:STDOUT: %PackageA.F = import_ref PackageA//default, F, unloaded -// CHECK:STDOUT: %PackageA.import_ref.ab2: %F.type.dbc = import_ref PackageA//default, loc5_21, loaded [concrete = constants.%F.a2b] +// CHECK:STDOUT: %PackageA.import_ref.ab2: %HasF.F.type = import_ref PackageA//default, loc5_21, loaded [concrete = constants.%HasF.F] // CHECK:STDOUT: %PackageA.import_ref.e73: %HasF.type = import_ref PackageA//default, inst19 [no loc], loaded [symbolic = constants.%Self] // CHECK:STDOUT: %PackageA.import_ref.c12: = import_ref PackageA//default, loc11_16, loaded [concrete = constants.%HasF.impl_witness] // CHECK:STDOUT: %PackageA.import_ref.29a: type = import_ref PackageA//default, loc11_6, loaded [concrete = constants.%C] // CHECK:STDOUT: %PackageA.import_ref.e8c: type = import_ref PackageA//default, loc11_11, loaded [concrete = constants.%HasF.type] -// CHECK:STDOUT: %PackageA.import_ref.148: %F.type.4e3 = import_ref PackageA//default, loc12_22, loaded [concrete = constants.%F.857] -// CHECK:STDOUT: %HasF.impl_witness_table = impl_witness_table (%PackageA.import_ref.148), @HasF.impl [concrete] +// CHECK:STDOUT: %PackageA.import_ref.148: %C.as.HasF.impl.F.type = import_ref PackageA//default, loc12_22, loaded [concrete = constants.%C.as.HasF.impl.F] +// CHECK:STDOUT: %HasF.impl_witness_table = impl_witness_table (%PackageA.import_ref.148), @C.as.HasF.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -659,7 +659,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: witness = (imports.%PackageA.F) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @HasF.impl: imports.%PackageA.import_ref.29a as imports.%PackageA.import_ref.e8c [from "package_a.carbon"] { +// CHECK:STDOUT: impl @C.as.HasF.impl: imports.%PackageA.import_ref.29a as imports.%PackageA.import_ref.e8c [from "package_a.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = imports.%PackageA.import_ref.c12 // CHECK:STDOUT: } @@ -677,13 +677,13 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %PackageA.ref.loc7: = name_ref PackageA, imports.%PackageA [concrete = imports.%PackageA] // CHECK:STDOUT: %HasF.ref: type = name_ref HasF, imports.%PackageA.HasF [concrete = constants.%HasF.type] // CHECK:STDOUT: %F.ref: %HasF.assoc_type = name_ref F, imports.%PackageA.import_ref.b36 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: %.d3f = impl_witness_access constants.%HasF.impl_witness, element0 [concrete = constants.%F.857] +// CHECK:STDOUT: %impl.elem0: %.d3f = impl_witness_access constants.%HasF.impl_witness, element0 [concrete = constants.%C.as.HasF.impl.F] // CHECK:STDOUT: %bound_method: = bound_method %c.ref, %impl.elem0 -// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %bound_method(%c.ref) +// CHECK:STDOUT: %C.as.HasF.impl.F.call: init %empty_tuple.type = call %bound_method(%c.ref) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.2(imports.%PackageA.import_ref.e73: %HasF.type) [from "package_a.carbon"] { +// CHECK:STDOUT: generic fn @HasF.F(imports.%PackageA.import_ref.e73: %HasF.type) [from "package_a.carbon"] { // CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic = %Self.as_type (constants.%Self.as_type)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type [symbolic = %pattern_type (constants.%pattern_type.dc3)] @@ -691,9 +691,9 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.1 [from "package_a.carbon"]; +// CHECK:STDOUT: fn @C.as.HasF.impl.F [from "package_a.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.2(constants.%Self) { +// CHECK:STDOUT: specific @HasF.F(constants.%Self) { // CHECK:STDOUT: %Self => constants.%Self // CHECK:STDOUT: %Self.as_type => constants.%Self.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.dc3 @@ -713,17 +713,17 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %Self.cf3: %HasF.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %HasF.assoc_type: type = assoc_entity_type @HasF [concrete] // CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, imports.%PackageA.import_ref.ab2 [concrete] -// CHECK:STDOUT: %F.type.dbc: type = fn_type @F.2 [concrete] -// CHECK:STDOUT: %F.a2b: %F.type.dbc = struct_value () [concrete] +// CHECK:STDOUT: %HasF.F.type: type = fn_type @HasF.F [concrete] +// CHECK:STDOUT: %HasF.F: %HasF.F.type = struct_value () [concrete] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self.cf3 [symbolic] // CHECK:STDOUT: %pattern_type.dc3: type = pattern_type %Self.as_type [symbolic] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %HasG.type: type = facet_type <@HasG> [concrete] // CHECK:STDOUT: %HasF.impl_witness: = impl_witness imports.%HasF.impl_witness_table [concrete] // CHECK:STDOUT: %HasF.facet: %HasF.type = facet_value %D, (%HasF.impl_witness) [concrete] -// CHECK:STDOUT: %.bc0: type = fn_type_with_self_type %F.type.dbc, %HasF.facet [concrete] -// CHECK:STDOUT: %F.type.394: type = fn_type @F.1 [concrete] -// CHECK:STDOUT: %F.1fc: %F.type.394 = struct_value () [concrete] +// CHECK:STDOUT: %.bc0: type = fn_type_with_self_type %HasF.F.type, %HasF.facet [concrete] +// CHECK:STDOUT: %D.as.HasF.impl.F.type: type = fn_type @D.as.HasF.impl.F [concrete] +// CHECK:STDOUT: %D.as.HasF.impl.F: %D.as.HasF.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -746,7 +746,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %PackageA.import_ref.28c = import_ref PackageA//default, inst19 [no loc], unloaded // CHECK:STDOUT: %PackageA.import_ref.b36: %HasF.assoc_type = import_ref PackageA//default, loc5_21, loaded [concrete = constants.%assoc0] // CHECK:STDOUT: %PackageA.F = import_ref PackageA//default, F, unloaded -// CHECK:STDOUT: %PackageA.import_ref.ab2: %F.type.dbc = import_ref PackageA//default, loc5_21, loaded [concrete = constants.%F.a2b] +// CHECK:STDOUT: %PackageA.import_ref.ab2: %HasF.F.type = import_ref PackageA//default, loc5_21, loaded [concrete = constants.%HasF.F] // CHECK:STDOUT: %PackageA.import_ref.e73: %HasF.type = import_ref PackageA//default, inst19 [no loc], loaded [symbolic = constants.%Self.cf3] // CHECK:STDOUT: %PackageA.import_ref.5cd = import_ref PackageA//default, loc11_16, unloaded // CHECK:STDOUT: %PackageA.import_ref.8f2: = import_ref PackageA//default, loc8_10, loaded [concrete = constants.%complete_type] @@ -765,8 +765,8 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %PackageB.import_ref.569 = import_ref PackageB//default, loc23_16, unloaded // CHECK:STDOUT: %PackageB.import_ref.aa9f8a.2: type = import_ref PackageB//default, loc23_6, loaded [concrete = constants.%D] // CHECK:STDOUT: %PackageB.import_ref.cee586.2: type = import_ref PackageB//default, loc23_11, loaded [concrete = constants.%HasG.type] -// CHECK:STDOUT: %PackageB.import_ref.0cd: %F.type.394 = import_ref PackageB//default, loc19_22, loaded [concrete = constants.%F.1fc] -// CHECK:STDOUT: %HasF.impl_witness_table = impl_witness_table (%PackageB.import_ref.0cd), @HasF.impl.52b [concrete] +// CHECK:STDOUT: %PackageB.import_ref.0cd: %D.as.HasF.impl.F.type = import_ref PackageB//default, loc19_22, loaded [concrete = constants.%D.as.HasF.impl.F] +// CHECK:STDOUT: %HasF.impl_witness_table = impl_witness_table (%PackageB.import_ref.0cd), @D.as.HasF.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -806,22 +806,22 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: witness = (imports.%PackageB.G) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @HasF.impl.4b2: imports.%PackageA.import_ref.29a as imports.%PackageA.import_ref.e8c [from "package_a.carbon"] { +// CHECK:STDOUT: impl @C.as.HasF.impl: imports.%PackageA.import_ref.29a as imports.%PackageA.import_ref.e8c [from "package_a.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = imports.%PackageA.import_ref.5cd // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @HasG.impl.922: imports.%PackageB.import_ref.dfb as imports.%PackageB.import_ref.cee586.1 [from "package_b.carbon"] { +// CHECK:STDOUT: impl @C.as.HasG.impl: imports.%PackageB.import_ref.dfb as imports.%PackageB.import_ref.cee586.1 [from "package_b.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = imports.%PackageB.import_ref.ea7 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @HasF.impl.52b: imports.%PackageB.import_ref.aa9f8a.1 as imports.%PackageB.import_ref.831 [from "package_b.carbon"] { +// CHECK:STDOUT: impl @D.as.HasF.impl: imports.%PackageB.import_ref.aa9f8a.1 as imports.%PackageB.import_ref.831 [from "package_b.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = imports.%PackageB.import_ref.ce6 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @HasG.impl.47e: imports.%PackageB.import_ref.aa9f8a.2 as imports.%PackageB.import_ref.cee586.2 [from "package_b.carbon"] { +// CHECK:STDOUT: impl @D.as.HasG.impl: imports.%PackageB.import_ref.aa9f8a.2 as imports.%PackageB.import_ref.cee586.2 [from "package_b.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = imports.%PackageB.import_ref.569 // CHECK:STDOUT: } @@ -846,13 +846,13 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %PackageA.ref: = name_ref PackageA, imports.%PackageA [concrete = imports.%PackageA] // CHECK:STDOUT: %HasF.ref: type = name_ref HasF, imports.%PackageA.HasF [concrete = constants.%HasF.type] // CHECK:STDOUT: %F.ref: %HasF.assoc_type = name_ref F, imports.%PackageA.import_ref.b36 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: %.bc0 = impl_witness_access constants.%HasF.impl_witness, element0 [concrete = constants.%F.1fc] +// CHECK:STDOUT: %impl.elem0: %.bc0 = impl_witness_access constants.%HasF.impl_witness, element0 [concrete = constants.%D.as.HasF.impl.F] // CHECK:STDOUT: %bound_method: = bound_method %d.ref, %impl.elem0 -// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %bound_method(%d.ref) +// CHECK:STDOUT: %D.as.HasF.impl.F.call: init %empty_tuple.type = call %bound_method(%d.ref) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.2(imports.%PackageA.import_ref.e73: %HasF.type) [from "package_a.carbon"] { +// CHECK:STDOUT: generic fn @HasF.F(imports.%PackageA.import_ref.e73: %HasF.type) [from "package_a.carbon"] { // CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.cf3)] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic = %Self.as_type (constants.%Self.as_type)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type [symbolic = %pattern_type (constants.%pattern_type.dc3)] @@ -860,9 +860,9 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.1 [from "package_b.carbon"]; +// CHECK:STDOUT: fn @D.as.HasF.impl.F [from "package_b.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.2(constants.%Self.cf3) { +// CHECK:STDOUT: specific @HasF.F(constants.%Self.cf3) { // CHECK:STDOUT: %Self => constants.%Self.cf3 // CHECK:STDOUT: %Self.as_type => constants.%Self.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.dc3 @@ -882,17 +882,17 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %Self.fcb: %HasG.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %HasG.assoc_type: type = assoc_entity_type @HasG [concrete] // CHECK:STDOUT: %assoc0: %HasG.assoc_type = assoc_entity element0, imports.%PackageB.import_ref.70a [concrete] -// CHECK:STDOUT: %G.type.d9e: type = fn_type @G.2 [concrete] -// CHECK:STDOUT: %G.cd6: %G.type.d9e = struct_value () [concrete] +// CHECK:STDOUT: %HasG.G.type: type = fn_type @HasG.G [concrete] +// CHECK:STDOUT: %HasG.G: %HasG.G.type = struct_value () [concrete] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self.fcb [symbolic] // CHECK:STDOUT: %pattern_type.76a: type = pattern_type %Self.as_type [symbolic] // CHECK:STDOUT: %HasF.type: type = facet_type <@HasF> [concrete] // CHECK:STDOUT: %D: type = class_type @D [concrete] // CHECK:STDOUT: %HasG.impl_witness: = impl_witness imports.%HasG.impl_witness_table [concrete] // CHECK:STDOUT: %HasG.facet: %HasG.type = facet_value %C, (%HasG.impl_witness) [concrete] -// CHECK:STDOUT: %.a26: type = fn_type_with_self_type %G.type.d9e, %HasG.facet [concrete] -// CHECK:STDOUT: %G.type.18e: type = fn_type @G.1 [concrete] -// CHECK:STDOUT: %G.dbb: %G.type.18e = struct_value () [concrete] +// CHECK:STDOUT: %.a26: type = fn_type_with_self_type %HasG.G.type, %HasG.facet [concrete] +// CHECK:STDOUT: %C.as.HasG.impl.G.type: type = fn_type @C.as.HasG.impl.G [concrete] +// CHECK:STDOUT: %C.as.HasG.impl.G: %C.as.HasG.impl.G.type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -915,7 +915,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %PackageB.import_ref.5d8 = import_ref PackageB//default, inst21 [no loc], unloaded // CHECK:STDOUT: %PackageB.import_ref.6c2: %HasG.assoc_type = import_ref PackageB//default, loc7_21, loaded [concrete = constants.%assoc0] // CHECK:STDOUT: %PackageB.G = import_ref PackageB//default, G, unloaded -// CHECK:STDOUT: %PackageB.import_ref.70a: %G.type.d9e = import_ref PackageB//default, loc7_21, loaded [concrete = constants.%G.cd6] +// CHECK:STDOUT: %PackageB.import_ref.70a: %HasG.G.type = import_ref PackageB//default, loc7_21, loaded [concrete = constants.%HasG.G] // CHECK:STDOUT: %PackageB.import_ref.ef5: %HasG.type = import_ref PackageB//default, inst21 [no loc], loaded [symbolic = constants.%Self.fcb] // CHECK:STDOUT: %PackageA.import_ref.28c = import_ref PackageA//default, inst19 [no loc], unloaded // CHECK:STDOUT: %PackageA.import_ref.c63 = import_ref PackageA//default, loc5_21, unloaded @@ -934,8 +934,8 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %PackageB.import_ref.569 = import_ref PackageB//default, loc23_16, unloaded // CHECK:STDOUT: %PackageB.import_ref.aa9f8a.2: type = import_ref PackageB//default, loc23_6, loaded [concrete = constants.%D] // CHECK:STDOUT: %PackageB.import_ref.cee586.2: type = import_ref PackageB//default, loc23_11, loaded [concrete = constants.%HasG.type] -// CHECK:STDOUT: %PackageB.import_ref.9ec: %G.type.18e = import_ref PackageB//default, loc14_22, loaded [concrete = constants.%G.dbb] -// CHECK:STDOUT: %HasG.impl_witness_table = impl_witness_table (%PackageB.import_ref.9ec), @HasG.impl.922 [concrete] +// CHECK:STDOUT: %PackageB.import_ref.9ec: %C.as.HasG.impl.G.type = import_ref PackageB//default, loc14_22, loaded [concrete = constants.%C.as.HasG.impl.G] +// CHECK:STDOUT: %HasG.impl_witness_table = impl_witness_table (%PackageB.import_ref.9ec), @C.as.HasG.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -975,22 +975,22 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: witness = (imports.%PackageA.F) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @HasF.impl.4b2: imports.%PackageA.import_ref.29a as imports.%PackageA.import_ref.e8c [from "package_a.carbon"] { +// CHECK:STDOUT: impl @C.as.HasF.impl: imports.%PackageA.import_ref.29a as imports.%PackageA.import_ref.e8c [from "package_a.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = imports.%PackageA.import_ref.5cd // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @HasG.impl.922: imports.%PackageB.import_ref.dfb as imports.%PackageB.import_ref.cee586.1 [from "package_b.carbon"] { +// CHECK:STDOUT: impl @C.as.HasG.impl: imports.%PackageB.import_ref.dfb as imports.%PackageB.import_ref.cee586.1 [from "package_b.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = imports.%PackageB.import_ref.1f6 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @HasF.impl.52b: imports.%PackageB.import_ref.aa9f8a.1 as imports.%PackageB.import_ref.831 [from "package_b.carbon"] { +// CHECK:STDOUT: impl @D.as.HasF.impl: imports.%PackageB.import_ref.aa9f8a.1 as imports.%PackageB.import_ref.831 [from "package_b.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = imports.%PackageB.import_ref.5ba // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @HasG.impl.47e: imports.%PackageB.import_ref.aa9f8a.2 as imports.%PackageB.import_ref.cee586.2 [from "package_b.carbon"] { +// CHECK:STDOUT: impl @D.as.HasG.impl: imports.%PackageB.import_ref.aa9f8a.2 as imports.%PackageB.import_ref.cee586.2 [from "package_b.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = imports.%PackageB.import_ref.569 // CHECK:STDOUT: } @@ -1015,13 +1015,13 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %PackageB.ref: = name_ref PackageB, imports.%PackageB [concrete = imports.%PackageB] // CHECK:STDOUT: %HasG.ref: type = name_ref HasG, imports.%PackageB.HasG [concrete = constants.%HasG.type] // CHECK:STDOUT: %G.ref: %HasG.assoc_type = name_ref G, imports.%PackageB.import_ref.6c2 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: %.a26 = impl_witness_access constants.%HasG.impl_witness, element0 [concrete = constants.%G.dbb] +// CHECK:STDOUT: %impl.elem0: %.a26 = impl_witness_access constants.%HasG.impl_witness, element0 [concrete = constants.%C.as.HasG.impl.G] // CHECK:STDOUT: %bound_method: = bound_method %c.ref, %impl.elem0 -// CHECK:STDOUT: %G.call: init %empty_tuple.type = call %bound_method(%c.ref) +// CHECK:STDOUT: %C.as.HasG.impl.G.call: init %empty_tuple.type = call %bound_method(%c.ref) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @G.2(imports.%PackageB.import_ref.ef5: %HasG.type) [from "package_b.carbon"] { +// CHECK:STDOUT: generic fn @HasG.G(imports.%PackageB.import_ref.ef5: %HasG.type) [from "package_b.carbon"] { // CHECK:STDOUT: %Self: %HasG.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.fcb)] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic = %Self.as_type (constants.%Self.as_type)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type [symbolic = %pattern_type (constants.%pattern_type.76a)] @@ -1029,9 +1029,9 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G.1 [from "package_b.carbon"]; +// CHECK:STDOUT: fn @C.as.HasG.impl.G [from "package_b.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: specific @G.2(constants.%Self.fcb) { +// CHECK:STDOUT: specific @HasG.G(constants.%Self.fcb) { // CHECK:STDOUT: %Self => constants.%Self.fcb // CHECK:STDOUT: %Self.as_type => constants.%Self.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.76a @@ -1051,17 +1051,17 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %Self.fcb: %HasG.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %HasG.assoc_type: type = assoc_entity_type @HasG [concrete] // CHECK:STDOUT: %assoc0: %HasG.assoc_type = assoc_entity element0, imports.%PackageB.import_ref.70a [concrete] -// CHECK:STDOUT: %G.type.d9e: type = fn_type @G.2 [concrete] -// CHECK:STDOUT: %G.cd6: %G.type.d9e = struct_value () [concrete] +// CHECK:STDOUT: %HasG.G.type: type = fn_type @HasG.G [concrete] +// CHECK:STDOUT: %HasG.G: %HasG.G.type = struct_value () [concrete] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self.fcb [symbolic] // CHECK:STDOUT: %pattern_type.76a: type = pattern_type %Self.as_type [symbolic] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %HasF.type: type = facet_type <@HasF> [concrete] // CHECK:STDOUT: %HasG.impl_witness: = impl_witness imports.%HasG.impl_witness_table [concrete] // CHECK:STDOUT: %HasG.facet: %HasG.type = facet_value %D, (%HasG.impl_witness) [concrete] -// CHECK:STDOUT: %.132: type = fn_type_with_self_type %G.type.d9e, %HasG.facet [concrete] -// CHECK:STDOUT: %G.type.405: type = fn_type @G.1 [concrete] -// CHECK:STDOUT: %G.703: %G.type.405 = struct_value () [concrete] +// CHECK:STDOUT: %.132: type = fn_type_with_self_type %HasG.G.type, %HasG.facet [concrete] +// CHECK:STDOUT: %D.as.HasG.impl.G.type: type = fn_type @D.as.HasG.impl.G [concrete] +// CHECK:STDOUT: %D.as.HasG.impl.G: %D.as.HasG.impl.G.type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -1081,7 +1081,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %PackageB.import_ref.5d8 = import_ref PackageB//default, inst21 [no loc], unloaded // CHECK:STDOUT: %PackageB.import_ref.6c2: %HasG.assoc_type = import_ref PackageB//default, loc7_21, loaded [concrete = constants.%assoc0] // CHECK:STDOUT: %PackageB.G = import_ref PackageB//default, G, unloaded -// CHECK:STDOUT: %PackageB.import_ref.70a: %G.type.d9e = import_ref PackageB//default, loc7_21, loaded [concrete = constants.%G.cd6] +// CHECK:STDOUT: %PackageB.import_ref.70a: %HasG.G.type = import_ref PackageB//default, loc7_21, loaded [concrete = constants.%HasG.G] // CHECK:STDOUT: %PackageB.import_ref.ef5: %HasG.type = import_ref PackageB//default, inst21 [no loc], loaded [symbolic = constants.%Self.fcb] // CHECK:STDOUT: %PackageB.import_ref.ea7 = import_ref PackageB//default, loc13_25, unloaded // CHECK:STDOUT: %PackageB.import_ref.8db: = import_ref PackageB//default, inst54 [indirect], loaded [concrete = constants.%complete_type] @@ -1097,8 +1097,8 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %PackageB.import_ref.bb9: = import_ref PackageB//default, loc23_16, loaded [concrete = constants.%HasG.impl_witness] // CHECK:STDOUT: %PackageB.import_ref.aa9f8a.2: type = import_ref PackageB//default, loc23_6, loaded [concrete = constants.%D] // CHECK:STDOUT: %PackageB.import_ref.cee586.2: type = import_ref PackageB//default, loc23_11, loaded [concrete = constants.%HasG.type] -// CHECK:STDOUT: %PackageB.import_ref.b0a: %G.type.405 = import_ref PackageB//default, loc24_22, loaded [concrete = constants.%G.703] -// CHECK:STDOUT: %HasG.impl_witness_table = impl_witness_table (%PackageB.import_ref.b0a), @HasG.impl.47e [concrete] +// CHECK:STDOUT: %PackageB.import_ref.b0a: %D.as.HasG.impl.G.type = import_ref PackageB//default, loc24_22, loaded [concrete = constants.%D.as.HasG.impl.G] +// CHECK:STDOUT: %HasG.impl_witness_table = impl_witness_table (%PackageB.import_ref.b0a), @D.as.HasG.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1136,17 +1136,17 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: witness = (imports.%PackageB.F) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @HasG.impl.162: imports.%PackageB.import_ref.dfb as imports.%PackageB.import_ref.cee586.1 [from "package_b.carbon"] { +// CHECK:STDOUT: impl @C.as.HasG.impl: imports.%PackageB.import_ref.dfb as imports.%PackageB.import_ref.cee586.1 [from "package_b.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = imports.%PackageB.import_ref.ea7 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @HasF.impl: imports.%PackageB.import_ref.aa9f8a.1 as imports.%PackageB.import_ref.831 [from "package_b.carbon"] { +// CHECK:STDOUT: impl @D.as.HasF.impl: imports.%PackageB.import_ref.aa9f8a.1 as imports.%PackageB.import_ref.831 [from "package_b.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = imports.%PackageB.import_ref.5ba // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @HasG.impl.47e: imports.%PackageB.import_ref.aa9f8a.2 as imports.%PackageB.import_ref.cee586.2 [from "package_b.carbon"] { +// CHECK:STDOUT: impl @D.as.HasG.impl: imports.%PackageB.import_ref.aa9f8a.2 as imports.%PackageB.import_ref.cee586.2 [from "package_b.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = imports.%PackageB.import_ref.bb9 // CHECK:STDOUT: } @@ -1171,13 +1171,13 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %PackageB.ref.loc7: = name_ref PackageB, imports.%PackageB [concrete = imports.%PackageB] // CHECK:STDOUT: %HasG.ref: type = name_ref HasG, imports.%PackageB.HasG [concrete = constants.%HasG.type] // CHECK:STDOUT: %G.ref: %HasG.assoc_type = name_ref G, imports.%PackageB.import_ref.6c2 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: %.132 = impl_witness_access constants.%HasG.impl_witness, element0 [concrete = constants.%G.703] +// CHECK:STDOUT: %impl.elem0: %.132 = impl_witness_access constants.%HasG.impl_witness, element0 [concrete = constants.%D.as.HasG.impl.G] // CHECK:STDOUT: %bound_method: = bound_method %d.ref, %impl.elem0 -// CHECK:STDOUT: %G.call: init %empty_tuple.type = call %bound_method(%d.ref) +// CHECK:STDOUT: %D.as.HasG.impl.G.call: init %empty_tuple.type = call %bound_method(%d.ref) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @G.2(imports.%PackageB.import_ref.ef5: %HasG.type) [from "package_b.carbon"] { +// CHECK:STDOUT: generic fn @HasG.G(imports.%PackageB.import_ref.ef5: %HasG.type) [from "package_b.carbon"] { // CHECK:STDOUT: %Self: %HasG.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.fcb)] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic = %Self.as_type (constants.%Self.as_type)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type [symbolic = %pattern_type (constants.%pattern_type.76a)] @@ -1185,9 +1185,9 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G.1 [from "package_b.carbon"]; +// CHECK:STDOUT: fn @D.as.HasG.impl.G [from "package_b.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: specific @G.2(constants.%Self.fcb) { +// CHECK:STDOUT: specific @HasG.G(constants.%Self.fcb) { // CHECK:STDOUT: %Self => constants.%Self.fcb // CHECK:STDOUT: %Self.as_type => constants.%Self.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.76a @@ -1200,15 +1200,15 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %Self: %Z.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic] // CHECK:STDOUT: %pattern_type.a40: type = pattern_type %Self.as_type [symbolic] -// CHECK:STDOUT: %H.type.474: type = fn_type @H.loc5 [concrete] +// CHECK:STDOUT: %Z.H.type: type = fn_type @Z.H [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %H.c1d: %H.type.474 = struct_value () [concrete] +// CHECK:STDOUT: %Z.H: %Z.H.type = struct_value () [concrete] // CHECK:STDOUT: %Z.assoc_type: type = assoc_entity_type @Z [concrete] -// CHECK:STDOUT: %assoc0: %Z.assoc_type = assoc_entity element0, @Z.%H.decl [concrete] +// CHECK:STDOUT: %assoc0: %Z.assoc_type = assoc_entity element0, @Z.%Z.H.decl [concrete] // CHECK:STDOUT: %Z.impl_witness: = impl_witness file.%Z.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] -// CHECK:STDOUT: %H.type.707: type = fn_type @H.loc9 [concrete] -// CHECK:STDOUT: %H.8d7: %H.type.707 = struct_value () [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.Z.impl.H.type: type = fn_type @empty_tuple.type.as.Z.impl.H [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.Z.impl.H: %empty_tuple.type.as.Z.impl.H.type = struct_value () [concrete] // CHECK:STDOUT: %Z.facet: %Z.type = facet_value %empty_tuple.type, (%Z.impl_witness) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1226,74 +1226,74 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Z.decl: type = interface_decl @Z [concrete = constants.%Z.type] {} {} -// CHECK:STDOUT: impl_decl @Z.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @empty_tuple.type.as.Z.impl [concrete] {} { // CHECK:STDOUT: %.loc8_7.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc8_7.2: type = converted %.loc8_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %Z.ref: type = name_ref Z, file.%Z.decl [concrete = constants.%Z.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %Z.impl_witness_table = impl_witness_table (@Z.impl.%H.decl), @Z.impl [concrete] +// CHECK:STDOUT: %Z.impl_witness_table = impl_witness_table (@empty_tuple.type.as.Z.impl.%empty_tuple.type.as.Z.impl.H.decl), @empty_tuple.type.as.Z.impl [concrete] // CHECK:STDOUT: %Z.impl_witness: = impl_witness %Z.impl_witness_table [concrete = constants.%Z.impl_witness] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Z { // CHECK:STDOUT: %Self: %Z.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %H.decl: %H.type.474 = fn_decl @H.loc5 [concrete = constants.%H.c1d] { -// CHECK:STDOUT: %self.patt: @H.loc5.%pattern_type (%pattern_type.a40) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @H.loc5.%pattern_type (%pattern_type.a40) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %Z.H.decl: %Z.H.type = fn_decl @Z.H [concrete = constants.%Z.H] { +// CHECK:STDOUT: %self.patt: @Z.H.%pattern_type (%pattern_type.a40) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @Z.H.%pattern_type (%pattern_type.a40) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @H.loc5.%Self.as_type.loc5_14.2 (%Self.as_type) = value_param call_param0 -// CHECK:STDOUT: %.loc5_14.1: type = splice_block %.loc5_14.2 [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type)] { +// CHECK:STDOUT: %self.param: @Z.H.%Self.as_type.loc5_14.1 (%Self.as_type) = value_param call_param0 +// CHECK:STDOUT: %.loc5_14.1: type = splice_block %.loc5_14.2 [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] { // CHECK:STDOUT: %Self.ref: %Z.type = name_ref Self, @Z.%Self [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc5_14.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc5_14.2: type = converted %Self.ref, %Self.as_type.loc5_14.1 [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type)] +// CHECK:STDOUT: %Self.as_type.loc5_14.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc5_14.2: type = converted %Self.ref, %Self.as_type.loc5_14.2 [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @H.loc5.%Self.as_type.loc5_14.2 (%Self.as_type) = bind_name self, %self.param +// CHECK:STDOUT: %self: @Z.H.%Self.as_type.loc5_14.1 (%Self.as_type) = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %Z.assoc_type = assoc_entity element0, %H.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %assoc0: %Z.assoc_type = assoc_entity element0, %Z.H.decl [concrete = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .H = %assoc0 -// CHECK:STDOUT: witness = (%H.decl) +// CHECK:STDOUT: witness = (%Z.H.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Z.impl: %.loc8_7.2 as %Z.ref { -// CHECK:STDOUT: %H.decl: %H.type.707 = fn_decl @H.loc9 [concrete = constants.%H.8d7] { +// CHECK:STDOUT: impl @empty_tuple.type.as.Z.impl: %.loc8_7.2 as %Z.ref { +// CHECK:STDOUT: %empty_tuple.type.as.Z.impl.H.decl: %empty_tuple.type.as.Z.impl.H.type = fn_decl @empty_tuple.type.as.Z.impl.H [concrete = constants.%empty_tuple.type.as.Z.impl.H] { // CHECK:STDOUT: %self.patt: %pattern_type.cb1 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.cb1 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %self.param: %empty_tuple.type = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @Z.impl.%.loc8_7.2 [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @empty_tuple.type.as.Z.impl.%.loc8_7.2 [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %self: %empty_tuple.type = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .H = %H.decl +// CHECK:STDOUT: .H = %empty_tuple.type.as.Z.impl.H.decl // CHECK:STDOUT: witness = file.%Z.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @H.loc5(@Z.%Self: %Z.type) { +// CHECK:STDOUT: generic fn @Z.H(@Z.%Self: %Z.type) { // CHECK:STDOUT: %Self: %Z.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc5_14.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc5_14.2 [symbolic = %pattern_type (constants.%pattern_type.a40)] +// CHECK:STDOUT: %Self.as_type.loc5_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc5_14.1 [symbolic = %pattern_type (constants.%pattern_type.a40)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @H.loc5.%Self.as_type.loc5_14.2 (%Self.as_type)); +// CHECK:STDOUT: fn(%self.param: @Z.H.%Self.as_type.loc5_14.1 (%Self.as_type)); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @H.loc9(%self.param: %empty_tuple.type) { +// CHECK:STDOUT: fn @empty_tuple.type.as.Z.impl.H(%self.param: %empty_tuple.type) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @H.loc5(constants.%Self) { +// CHECK:STDOUT: specific @Z.H(constants.%Self) { // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %Self.as_type.loc5_14.2 => constants.%Self.as_type +// CHECK:STDOUT: %Self.as_type.loc5_14.1 => constants.%Self.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.a40 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @H.loc5(constants.%Z.facet) { +// CHECK:STDOUT: specific @Z.H(constants.%Z.facet) { // CHECK:STDOUT: %Self => constants.%Z.facet -// CHECK:STDOUT: %Self.as_type.loc5_14.2 => constants.%empty_tuple.type +// CHECK:STDOUT: %Self.as_type.loc5_14.1 => constants.%empty_tuple.type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.cb1 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1307,15 +1307,15 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %Self: %Z.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Z.assoc_type: type = assoc_entity_type @Z [concrete] // CHECK:STDOUT: %assoc0: %Z.assoc_type = assoc_entity element0, imports.%PackageAssociatedInterface.import_ref.250 [concrete] -// CHECK:STDOUT: %H.type.386: type = fn_type @H.2 [concrete] -// CHECK:STDOUT: %H.246: %H.type.386 = struct_value () [concrete] +// CHECK:STDOUT: %Z.H.type: type = fn_type @Z.H [concrete] +// CHECK:STDOUT: %Z.H: %Z.H.type = struct_value () [concrete] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic] // CHECK:STDOUT: %pattern_type.75f: type = pattern_type %Self.as_type [symbolic] // CHECK:STDOUT: %Z.impl_witness: = impl_witness imports.%Z.impl_witness_table [concrete] // CHECK:STDOUT: %Z.facet: %Z.type = facet_value %empty_tuple.type, (%Z.impl_witness) [concrete] -// CHECK:STDOUT: %.7f5: type = fn_type_with_self_type %H.type.386, %Z.facet [concrete] -// CHECK:STDOUT: %H.type.ab3: type = fn_type @H.1 [concrete] -// CHECK:STDOUT: %H.c25: %H.type.ab3 = struct_value () [concrete] +// CHECK:STDOUT: %.7f5: type = fn_type_with_self_type %Z.H.type, %Z.facet [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.Z.impl.H.type: type = fn_type @empty_tuple.type.as.Z.impl.H [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.Z.impl.H: %empty_tuple.type.as.Z.impl.H.type = struct_value () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1332,13 +1332,13 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %PackageAssociatedInterface.import_ref.f88 = import_ref PackageAssociatedInterface//default, inst19 [no loc], unloaded // CHECK:STDOUT: %PackageAssociatedInterface.import_ref.609: %Z.assoc_type = import_ref PackageAssociatedInterface//default, loc5_21, loaded [concrete = constants.%assoc0] // CHECK:STDOUT: %PackageAssociatedInterface.H = import_ref PackageAssociatedInterface//default, H, unloaded -// CHECK:STDOUT: %PackageAssociatedInterface.import_ref.250: %H.type.386 = import_ref PackageAssociatedInterface//default, loc5_21, loaded [concrete = constants.%H.246] +// CHECK:STDOUT: %PackageAssociatedInterface.import_ref.250: %Z.H.type = import_ref PackageAssociatedInterface//default, loc5_21, loaded [concrete = constants.%Z.H] // CHECK:STDOUT: %PackageAssociatedInterface.import_ref.d26: %Z.type = import_ref PackageAssociatedInterface//default, inst19 [no loc], loaded [symbolic = constants.%Self] // CHECK:STDOUT: %PackageAssociatedInterface.import_ref.d8c: = import_ref PackageAssociatedInterface//default, loc8_14, loaded [concrete = constants.%Z.impl_witness] // CHECK:STDOUT: %PackageAssociatedInterface.import_ref.e5c: type = import_ref PackageAssociatedInterface//default, loc8_7, loaded [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %PackageAssociatedInterface.import_ref.df1: type = import_ref PackageAssociatedInterface//default, loc8_12, loaded [concrete = constants.%Z.type] -// CHECK:STDOUT: %PackageAssociatedInterface.import_ref.6d7: %H.type.ab3 = import_ref PackageAssociatedInterface//default, loc9_22, loaded [concrete = constants.%H.c25] -// CHECK:STDOUT: %Z.impl_witness_table = impl_witness_table (%PackageAssociatedInterface.import_ref.6d7), @Z.impl [concrete] +// CHECK:STDOUT: %PackageAssociatedInterface.import_ref.6d7: %empty_tuple.type.as.Z.impl.H.type = import_ref PackageAssociatedInterface//default, loc9_22, loaded [concrete = constants.%empty_tuple.type.as.Z.impl.H] +// CHECK:STDOUT: %Z.impl_witness_table = impl_witness_table (%PackageAssociatedInterface.import_ref.6d7), @empty_tuple.type.as.Z.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1359,7 +1359,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: witness = (imports.%PackageAssociatedInterface.H) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Z.impl: imports.%PackageAssociatedInterface.import_ref.e5c as imports.%PackageAssociatedInterface.import_ref.df1 [from "associated_interface.carbon"] { +// CHECK:STDOUT: impl @empty_tuple.type.as.Z.impl: imports.%PackageAssociatedInterface.import_ref.e5c as imports.%PackageAssociatedInterface.import_ref.df1 [from "associated_interface.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = imports.%PackageAssociatedInterface.import_ref.d8c // CHECK:STDOUT: } @@ -1370,15 +1370,15 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %PackageAssociatedInterface.ref: = name_ref PackageAssociatedInterface, imports.%PackageAssociatedInterface [concrete = imports.%PackageAssociatedInterface] // CHECK:STDOUT: %Z.ref: type = name_ref Z, imports.%PackageAssociatedInterface.Z [concrete = constants.%Z.type] // CHECK:STDOUT: %H.ref: %Z.assoc_type = name_ref H, imports.%PackageAssociatedInterface.import_ref.609 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: %.7f5 = impl_witness_access constants.%Z.impl_witness, element0 [concrete = constants.%H.c25] +// CHECK:STDOUT: %impl.elem0: %.7f5 = impl_witness_access constants.%Z.impl_witness, element0 [concrete = constants.%empty_tuple.type.as.Z.impl.H] // CHECK:STDOUT: %bound_method: = bound_method %.loc7_4.1, %impl.elem0 // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_4.2: %empty_tuple.type = converted %.loc7_4.1, %empty_tuple [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %H.call: init %empty_tuple.type = call %bound_method(%.loc7_4.2) +// CHECK:STDOUT: %empty_tuple.type.as.Z.impl.H.call: init %empty_tuple.type = call %bound_method(%.loc7_4.2) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @H.2(imports.%PackageAssociatedInterface.import_ref.d26: %Z.type) [from "associated_interface.carbon"] { +// CHECK:STDOUT: generic fn @Z.H(imports.%PackageAssociatedInterface.import_ref.d26: %Z.type) [from "associated_interface.carbon"] { // CHECK:STDOUT: %Self: %Z.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic = %Self.as_type (constants.%Self.as_type)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type [symbolic = %pattern_type (constants.%pattern_type.75f)] @@ -1386,9 +1386,9 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @H.1 [from "associated_interface.carbon"]; +// CHECK:STDOUT: fn @empty_tuple.type.as.Z.impl.H [from "associated_interface.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: specific @H.2(constants.%Self) { +// CHECK:STDOUT: specific @Z.H(constants.%Self) { // CHECK:STDOUT: %Self => constants.%Self // CHECK:STDOUT: %Self.as_type => constants.%Self.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.75f @@ -1410,10 +1410,10 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %Self: %Y.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic] // CHECK:STDOUT: %pattern_type.f04: type = pattern_type %Self.as_type [symbolic] -// CHECK:STDOUT: %K.type: type = fn_type @K [concrete] -// CHECK:STDOUT: %K: %K.type = struct_value () [concrete] +// CHECK:STDOUT: %Y.K.type: type = fn_type @Y.K [concrete] +// CHECK:STDOUT: %Y.K: %Y.K.type = struct_value () [concrete] // CHECK:STDOUT: %Y.assoc_type: type = assoc_entity_type @Y [concrete] -// CHECK:STDOUT: %assoc0: %Y.assoc_type = assoc_entity element0, @Y.%K.decl [concrete] +// CHECK:STDOUT: %assoc0: %Y.assoc_type = assoc_entity element0, @Y.%Y.K.decl [concrete] // CHECK:STDOUT: %require_complete: = require_complete_type %Self.as_type [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1444,24 +1444,24 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: // CHECK:STDOUT: interface @Y { // CHECK:STDOUT: %Self: %Y.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %K.decl: %K.type = fn_decl @K [concrete = constants.%K] { -// CHECK:STDOUT: %self.patt: @K.%pattern_type (%pattern_type.f04) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @K.%pattern_type (%pattern_type.f04) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %Y.K.decl: %Y.K.type = fn_decl @Y.K [concrete = constants.%Y.K] { +// CHECK:STDOUT: %self.patt: @Y.K.%pattern_type (%pattern_type.f04) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @Y.K.%pattern_type (%pattern_type.f04) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @K.%Self.as_type.loc7_14.2 (%Self.as_type) = value_param call_param0 -// CHECK:STDOUT: %.loc7_14.1: type = splice_block %.loc7_14.2 [symbolic = %Self.as_type.loc7_14.2 (constants.%Self.as_type)] { +// CHECK:STDOUT: %self.param: @Y.K.%Self.as_type.loc7_14.1 (%Self.as_type) = value_param call_param0 +// CHECK:STDOUT: %.loc7_14.1: type = splice_block %.loc7_14.2 [symbolic = %Self.as_type.loc7_14.1 (constants.%Self.as_type)] { // CHECK:STDOUT: %Self.ref: %Y.type = name_ref Self, @Y.%Self [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc7_14.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc7_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc7_14.2: type = converted %Self.ref, %Self.as_type.loc7_14.1 [symbolic = %Self.as_type.loc7_14.2 (constants.%Self.as_type)] +// CHECK:STDOUT: %Self.as_type.loc7_14.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc7_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc7_14.2: type = converted %Self.ref, %Self.as_type.loc7_14.2 [symbolic = %Self.as_type.loc7_14.1 (constants.%Self.as_type)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @K.%Self.as_type.loc7_14.2 (%Self.as_type) = bind_name self, %self.param +// CHECK:STDOUT: %self: @Y.K.%Self.as_type.loc7_14.1 (%Self.as_type) = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %Y.assoc_type = assoc_entity element0, %K.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %assoc0: %Y.assoc_type = assoc_entity element0, %Y.K.decl [concrete = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .K = %assoc0 -// CHECK:STDOUT: witness = (%K.decl) +// CHECK:STDOUT: witness = (%Y.K.decl) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @AnyParam(%T.loc4_16.2: type, %X.loc4_26.2: @AnyParam.%T.loc4_16.1 (%T)) { @@ -1481,15 +1481,15 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @K(@Y.%Self: %Y.type) { +// CHECK:STDOUT: generic fn @Y.K(@Y.%Self: %Y.type) { // CHECK:STDOUT: %Self: %Y.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc7_14.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc7_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc7_14.2 [symbolic = %pattern_type (constants.%pattern_type.f04)] +// CHECK:STDOUT: %Self.as_type.loc7_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc7_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc7_14.1 [symbolic = %pattern_type (constants.%pattern_type.f04)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type %Self.as_type.loc7_14.2 [symbolic = %require_complete (constants.%require_complete)] +// CHECK:STDOUT: %require_complete: = require_complete_type %Self.as_type.loc7_14.1 [symbolic = %require_complete (constants.%require_complete)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @K.%Self.as_type.loc7_14.2 (%Self.as_type)) { +// CHECK:STDOUT: fn(%self.param: @Y.K.%Self.as_type.loc7_14.1 (%Self.as_type)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -1501,9 +1501,9 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7dc // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @K(constants.%Self) { +// CHECK:STDOUT: specific @Y.K(constants.%Self) { // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %Self.as_type.loc7_14.2 => constants.%Self.as_type +// CHECK:STDOUT: %Self.as_type.loc7_14.1 => constants.%Self.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.f04 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1528,27 +1528,27 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %AnyParam.241: type = class_type @AnyParam, @AnyParam(%GenericInterface.type.c92, %GenericInterface.generic) [concrete] // CHECK:STDOUT: %Y.type: type = facet_type <@Y> [concrete] // CHECK:STDOUT: %Self.f64: %Y.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %K.type.311: type = fn_type @K.1 [concrete] -// CHECK:STDOUT: %K.7a1: %K.type.311 = struct_value () [concrete] +// CHECK:STDOUT: %Y.K.type: type = fn_type @Y.K [concrete] +// CHECK:STDOUT: %Y.K: %Y.K.type = struct_value () [concrete] // CHECK:STDOUT: %Self.as_type.61d: type = facet_access_type %Self.f64 [symbolic] // CHECK:STDOUT: %pattern_type.cb4: type = pattern_type %Self.as_type.61d [symbolic] // CHECK:STDOUT: %require_complete.b14: = require_complete_type %Self.as_type.61d [symbolic] // CHECK:STDOUT: %Y.impl_witness: = impl_witness file.%Y.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.004: type = pattern_type %AnyParam.241 [concrete] -// CHECK:STDOUT: %K.type.dcd: type = fn_type @K.loc9 [concrete] -// CHECK:STDOUT: %K.2e9: %K.type.dcd = struct_value () [concrete] +// CHECK:STDOUT: %AnyParam.as.Y.impl.K.type: type = fn_type @AnyParam.as.Y.impl.K [concrete] +// CHECK:STDOUT: %AnyParam.as.Y.impl.K: %AnyParam.as.Y.impl.K.type = struct_value () [concrete] // CHECK:STDOUT: %Y.facet: %Y.type = facet_value %AnyParam.241, (%Y.impl_witness) [concrete] // CHECK:STDOUT: %L.type: type = fn_type @L [concrete] // CHECK:STDOUT: %L: %L.type = struct_value () [concrete] // CHECK:STDOUT: %AnyParam.val: %AnyParam.241 = struct_value () [concrete] // CHECK:STDOUT: %Y.assoc_type: type = assoc_entity_type @Y [concrete] // CHECK:STDOUT: %assoc0.494: %Y.assoc_type = assoc_entity element0, imports.%PackageHasParam.import_ref.ce2 [concrete] -// CHECK:STDOUT: %.0fb: type = fn_type_with_self_type %K.type.311, %Y.facet [concrete] +// CHECK:STDOUT: %.0fb: type = fn_type_with_self_type %Y.K.type, %Y.facet [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.5fc: type = fn_type @Op.1, @Destroy.impl(%AnyParam.241) [concrete] -// CHECK:STDOUT: %Op.6f3: %Op.type.5fc = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.5fc: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%AnyParam.241) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.6f3: %T.as.Destroy.impl.Op.type.5fc = struct_value () [concrete] // CHECK:STDOUT: %ptr.301: type = ptr_type %AnyParam.241 [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.6f3, @Op.1(%AnyParam.241) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.6f3, @T.as.Destroy.impl.Op(%AnyParam.241) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -1570,9 +1570,9 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %PackageHasParam.Y: type = import_ref PackageHasParam//default, Y, loaded [concrete = constants.%Y.type] // CHECK:STDOUT: %PackageHasParam.import_ref.dc1 = import_ref PackageHasParam//default, inst40 [no loc], unloaded // CHECK:STDOUT: %PackageHasParam.import_ref.f69: %Y.assoc_type = import_ref PackageHasParam//default, loc7_22, loaded [concrete = constants.%assoc0.494] -// CHECK:STDOUT: %PackageHasParam.K: %K.type.311 = import_ref PackageHasParam//default, K, loaded [concrete = constants.%K.7a1] +// CHECK:STDOUT: %PackageHasParam.K: %Y.K.type = import_ref PackageHasParam//default, K, loaded [concrete = constants.%Y.K] // CHECK:STDOUT: %PackageHasParam.import_ref.292: %Y.type = import_ref PackageHasParam//default, inst40 [no loc], loaded [symbolic = constants.%Self.f64] -// CHECK:STDOUT: %PackageHasParam.import_ref.ce2: %K.type.311 = import_ref PackageHasParam//default, loc7_22, loaded [concrete = constants.%K.7a1] +// CHECK:STDOUT: %PackageHasParam.import_ref.ce2: %Y.K.type = import_ref PackageHasParam//default, loc7_22, loaded [concrete = constants.%Y.K] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1590,7 +1590,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } { // CHECK:STDOUT: %U.loc6_28.2: type = bind_symbolic_name U, 0 [symbolic = %U.loc6_28.1 (constants.%U)] // CHECK:STDOUT: } -// CHECK:STDOUT: impl_decl @Y.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @AnyParam.as.Y.impl [concrete] {} { // CHECK:STDOUT: %PackageHasParam.ref.loc8_6: = name_ref PackageHasParam, imports.%PackageHasParam [concrete = imports.%PackageHasParam] // CHECK:STDOUT: %AnyParam.ref: %AnyParam.type = name_ref AnyParam, imports.%PackageHasParam.AnyParam [concrete = constants.%AnyParam.generic] // CHECK:STDOUT: %GenericInterface.ref: %GenericInterface.type.c92 = name_ref GenericInterface, file.%GenericInterface.decl [concrete = constants.%GenericInterface.generic] @@ -1598,7 +1598,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %PackageHasParam.ref.loc8_52: = name_ref PackageHasParam, imports.%PackageHasParam [concrete = imports.%PackageHasParam] // CHECK:STDOUT: %Y.ref: type = name_ref Y, imports.%PackageHasParam.Y [concrete = constants.%Y.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %Y.impl_witness_table = impl_witness_table (@Y.impl.%K.decl), @Y.impl [concrete] +// CHECK:STDOUT: %Y.impl_witness_table = impl_witness_table (@AnyParam.as.Y.impl.%AnyParam.as.Y.impl.K.decl), @AnyParam.as.Y.impl [concrete] // CHECK:STDOUT: %Y.impl_witness: = impl_witness %Y.impl_witness_table [concrete = constants.%Y.impl_witness] // CHECK:STDOUT: %L.decl: %L.type = fn_decl @L [concrete = constants.%L] {} {} // CHECK:STDOUT: } @@ -1626,18 +1626,18 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: witness = (imports.%PackageHasParam.K) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Y.impl: %AnyParam as %Y.ref { -// CHECK:STDOUT: %K.decl: %K.type.dcd = fn_decl @K.loc9 [concrete = constants.%K.2e9] { +// CHECK:STDOUT: impl @AnyParam.as.Y.impl: %AnyParam as %Y.ref { +// CHECK:STDOUT: %AnyParam.as.Y.impl.K.decl: %AnyParam.as.Y.impl.K.type = fn_decl @AnyParam.as.Y.impl.K [concrete = constants.%AnyParam.as.Y.impl.K] { // CHECK:STDOUT: %self.patt: %pattern_type.004 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.004 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %self.param: %AnyParam.241 = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @Y.impl.%AnyParam [concrete = constants.%AnyParam.241] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @AnyParam.as.Y.impl.%AnyParam [concrete = constants.%AnyParam.241] // CHECK:STDOUT: %self: %AnyParam.241 = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .K = %K.decl +// CHECK:STDOUT: .K = %AnyParam.as.Y.impl.K.decl // CHECK:STDOUT: witness = file.%Y.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1656,7 +1656,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @K.1(imports.%PackageHasParam.import_ref.292: %Y.type) [from "has_param.carbon"] { +// CHECK:STDOUT: generic fn @Y.K(imports.%PackageHasParam.import_ref.292: %Y.type) [from "has_param.carbon"] { // CHECK:STDOUT: %Self: %Y.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.f64)] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic = %Self.as_type (constants.%Self.as_type.61d)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type [symbolic = %pattern_type (constants.%pattern_type.cb4)] @@ -1667,7 +1667,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @K.loc9(%self.param: %AnyParam.241) { +// CHECK:STDOUT: fn @AnyParam.as.Y.impl.K(%self.param: %AnyParam.241) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -1694,15 +1694,15 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %PackageHasParam.ref.loc14: = name_ref PackageHasParam, imports.%PackageHasParam [concrete = imports.%PackageHasParam] // CHECK:STDOUT: %Y.ref: type = name_ref Y, imports.%PackageHasParam.Y [concrete = constants.%Y.type] // CHECK:STDOUT: %K.ref: %Y.assoc_type = name_ref K, imports.%PackageHasParam.import_ref.f69 [concrete = constants.%assoc0.494] -// CHECK:STDOUT: %impl.elem0: %.0fb = impl_witness_access constants.%Y.impl_witness, element0 [concrete = constants.%K.2e9] +// CHECK:STDOUT: %impl.elem0: %.0fb = impl_witness_access constants.%Y.impl_witness, element0 [concrete = constants.%AnyParam.as.Y.impl.K] // CHECK:STDOUT: %bound_method.loc14: = bound_method %obj.ref, %impl.elem0 // CHECK:STDOUT: %.loc14: %AnyParam.241 = bind_value %obj.ref -// CHECK:STDOUT: %K.call: init %empty_tuple.type = call %bound_method.loc14(%.loc14) -// CHECK:STDOUT: %Op.bound: = bound_method %obj.var, constants.%Op.6f3 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.6f3, @Op.1(constants.%AnyParam.241) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc13: = bound_method %obj.var, %Op.specific_fn +// CHECK:STDOUT: %AnyParam.as.Y.impl.K.call: init %empty_tuple.type = call %bound_method.loc14(%.loc14) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %obj.var, constants.%T.as.Destroy.impl.Op.6f3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.6f3, @T.as.Destroy.impl.Op(constants.%AnyParam.241) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc13: = bound_method %obj.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.301 = addr_of %obj.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc13(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc13(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1724,13 +1724,13 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @K.1(constants.%Self.f64) { +// CHECK:STDOUT: specific @Y.K(constants.%Self.f64) { // CHECK:STDOUT: %Self => constants.%Self.f64 // CHECK:STDOUT: %Self.as_type => constants.%Self.as_type.61d // CHECK:STDOUT: %pattern_type => constants.%pattern_type.cb4 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @K.1(constants.%Y.facet) { +// CHECK:STDOUT: specific @Y.K(constants.%Y.facet) { // CHECK:STDOUT: %Self => constants.%Y.facet // CHECK:STDOUT: %Self.as_type => constants.%AnyParam.241 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.004 @@ -1762,21 +1762,21 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %Self.f64: %Y.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Y.assoc_type: type = assoc_entity_type @Y [concrete] // CHECK:STDOUT: %assoc0.494: %Y.assoc_type = assoc_entity element0, imports.%PackageHasParam.import_ref.ce2 [concrete] -// CHECK:STDOUT: %K.type.311: type = fn_type @K.2 [concrete] -// CHECK:STDOUT: %K.7a1: %K.type.311 = struct_value () [concrete] +// CHECK:STDOUT: %Y.K.type: type = fn_type @Y.K [concrete] +// CHECK:STDOUT: %Y.K: %Y.K.type = struct_value () [concrete] // CHECK:STDOUT: %Self.as_type.61d: type = facet_access_type %Self.f64 [symbolic] // CHECK:STDOUT: %pattern_type.cb4: type = pattern_type %Self.as_type.61d [symbolic] // CHECK:STDOUT: %require_complete.b14: = require_complete_type %Self.as_type.61d [symbolic] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %Y.impl_witness: = impl_witness imports.%Y.impl_witness_table [concrete] // CHECK:STDOUT: %Y.facet: %Y.type = facet_value %AnyParam.861, (%Y.impl_witness) [concrete] -// CHECK:STDOUT: %.e17: type = fn_type_with_self_type %K.type.311, %Y.facet [concrete] -// CHECK:STDOUT: %K.type.7f9: type = fn_type @K.1 [concrete] -// CHECK:STDOUT: %K.c3c: %K.type.7f9 = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.77e: type = fn_type @Op.1, @Destroy.impl(%AnyParam.861) [concrete] -// CHECK:STDOUT: %Op.49f: %Op.type.77e = struct_value () [concrete] +// CHECK:STDOUT: %.e17: type = fn_type_with_self_type %Y.K.type, %Y.facet [concrete] +// CHECK:STDOUT: %AnyParam.as.Y.impl.K.type: type = fn_type @AnyParam.as.Y.impl.K [concrete] +// CHECK:STDOUT: %AnyParam.as.Y.impl.K: %AnyParam.as.Y.impl.K.type = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.77e: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%AnyParam.861) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.49f: %T.as.Destroy.impl.Op.type.77e = struct_value () [concrete] // CHECK:STDOUT: %ptr.1ef: type = ptr_type %AnyParam.861 [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.49f, @Op.1(%AnyParam.861) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.49f, @T.as.Destroy.impl.Op(%AnyParam.861) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -1806,13 +1806,13 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %PackageHasParam.import_ref.dc1 = import_ref PackageHasParam//default, inst40 [no loc], unloaded // CHECK:STDOUT: %PackageHasParam.import_ref.f69: %Y.assoc_type = import_ref PackageHasParam//default, loc7_22, loaded [concrete = constants.%assoc0.494] // CHECK:STDOUT: %PackageHasParam.K = import_ref PackageHasParam//default, K, unloaded -// CHECK:STDOUT: %PackageHasParam.import_ref.ce2: %K.type.311 = import_ref PackageHasParam//default, loc7_22, loaded [concrete = constants.%K.7a1] +// CHECK:STDOUT: %PackageHasParam.import_ref.ce2: %Y.K.type = import_ref PackageHasParam//default, loc7_22, loaded [concrete = constants.%Y.K] // CHECK:STDOUT: %PackageHasParam.import_ref.292: %Y.type = import_ref PackageHasParam//default, inst40 [no loc], loaded [symbolic = constants.%Self.f64] // CHECK:STDOUT: %PackageGenericInterface.import_ref.53c: = import_ref PackageGenericInterface//default, loc8_70, loaded [concrete = constants.%Y.impl_witness] // CHECK:STDOUT: %PackageGenericInterface.import_ref.321: type = import_ref PackageGenericInterface//default, loc8_47, loaded [concrete = constants.%AnyParam.861] // CHECK:STDOUT: %PackageGenericInterface.import_ref.ca6: type = import_ref PackageGenericInterface//default, loc8_67, loaded [concrete = constants.%Y.type] -// CHECK:STDOUT: %PackageGenericInterface.import_ref.456: %K.type.7f9 = import_ref PackageGenericInterface//default, loc9_22, loaded [concrete = constants.%K.c3c] -// CHECK:STDOUT: %Y.impl_witness_table = impl_witness_table (%PackageGenericInterface.import_ref.456), @Y.impl [concrete] +// CHECK:STDOUT: %PackageGenericInterface.import_ref.456: %AnyParam.as.Y.impl.K.type = import_ref PackageGenericInterface//default, loc9_22, loaded [concrete = constants.%AnyParam.as.Y.impl.K] +// CHECK:STDOUT: %Y.impl_witness_table = impl_witness_table (%PackageGenericInterface.import_ref.456), @AnyParam.as.Y.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1850,7 +1850,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: witness = (imports.%PackageHasParam.K) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Y.impl: imports.%PackageGenericInterface.import_ref.321 as imports.%PackageGenericInterface.import_ref.ca6 [from "has_generic_interface.carbon"] { +// CHECK:STDOUT: impl @AnyParam.as.Y.impl: imports.%PackageGenericInterface.import_ref.321 as imports.%PackageGenericInterface.import_ref.ca6 [from "has_generic_interface.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = imports.%PackageGenericInterface.import_ref.53c // CHECK:STDOUT: } @@ -1893,19 +1893,19 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %PackageHasParam.ref.loc10: = name_ref PackageHasParam, imports.%PackageHasParam [concrete = imports.%PackageHasParam] // CHECK:STDOUT: %Y.ref: type = name_ref Y, imports.%PackageHasParam.Y [concrete = constants.%Y.type] // CHECK:STDOUT: %K.ref: %Y.assoc_type = name_ref K, imports.%PackageHasParam.import_ref.f69 [concrete = constants.%assoc0.494] -// CHECK:STDOUT: %impl.elem0: %.e17 = impl_witness_access constants.%Y.impl_witness, element0 [concrete = constants.%K.c3c] +// CHECK:STDOUT: %impl.elem0: %.e17 = impl_witness_access constants.%Y.impl_witness, element0 [concrete = constants.%AnyParam.as.Y.impl.K] // CHECK:STDOUT: %bound_method.loc10: = bound_method %obj.ref, %impl.elem0 // CHECK:STDOUT: %.loc10: %AnyParam.861 = bind_value %obj.ref -// CHECK:STDOUT: %K.call: init %empty_tuple.type = call %bound_method.loc10(%.loc10) -// CHECK:STDOUT: %Op.bound: = bound_method %obj.var, constants.%Op.49f -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.49f, @Op.1(constants.%AnyParam.861) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc8: = bound_method %obj.var, %Op.specific_fn +// CHECK:STDOUT: %AnyParam.as.Y.impl.K.call: init %empty_tuple.type = call %bound_method.loc10(%.loc10) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %obj.var, constants.%T.as.Destroy.impl.Op.49f +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.49f, @T.as.Destroy.impl.Op(constants.%AnyParam.861) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc8: = bound_method %obj.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.1ef = addr_of %obj.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc8(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc8(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @K.2(imports.%PackageHasParam.import_ref.292: %Y.type) [from "has_param.carbon"] { +// CHECK:STDOUT: generic fn @Y.K(imports.%PackageHasParam.import_ref.292: %Y.type) [from "has_param.carbon"] { // CHECK:STDOUT: %Self: %Y.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.f64)] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic = %Self.as_type (constants.%Self.as_type.61d)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type [symbolic = %pattern_type (constants.%pattern_type.cb4)] @@ -1916,7 +1916,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @K.1 [from "has_generic_interface.carbon"]; +// CHECK:STDOUT: fn @AnyParam.as.Y.impl.K [from "has_generic_interface.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: specific @AnyParam(constants.%T, constants.%X) { // CHECK:STDOUT: %T => constants.%T @@ -1936,7 +1936,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @K.2(constants.%Self.f64) { +// CHECK:STDOUT: specific @Y.K(constants.%Self.f64) { // CHECK:STDOUT: %Self => constants.%Self.f64 // CHECK:STDOUT: %Self.as_type => constants.%Self.as_type.61d // CHECK:STDOUT: %pattern_type => constants.%pattern_type.cb4 @@ -1962,27 +1962,27 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %AnyParam.0dd: type = class_type @AnyParam, @AnyParam(%GenericClass.type, %GenericClass.generic) [concrete] // CHECK:STDOUT: %Y.type: type = facet_type <@Y> [concrete] // CHECK:STDOUT: %Self.f64: %Y.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %K.type.311: type = fn_type @K.1 [concrete] -// CHECK:STDOUT: %K.7a1: %K.type.311 = struct_value () [concrete] +// CHECK:STDOUT: %Y.K.type: type = fn_type @Y.K [concrete] +// CHECK:STDOUT: %Y.K: %Y.K.type = struct_value () [concrete] // CHECK:STDOUT: %Self.as_type.61d: type = facet_access_type %Self.f64 [symbolic] // CHECK:STDOUT: %pattern_type.cb4: type = pattern_type %Self.as_type.61d [symbolic] // CHECK:STDOUT: %require_complete.b14: = require_complete_type %Self.as_type.61d [symbolic] // CHECK:STDOUT: %Y.impl_witness: = impl_witness file.%Y.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.64f: type = pattern_type %AnyParam.0dd [concrete] -// CHECK:STDOUT: %K.type.965: type = fn_type @K.loc9 [concrete] -// CHECK:STDOUT: %K.5a9: %K.type.965 = struct_value () [concrete] +// CHECK:STDOUT: %AnyParam.as.Y.impl.K.type: type = fn_type @AnyParam.as.Y.impl.K [concrete] +// CHECK:STDOUT: %AnyParam.as.Y.impl.K: %AnyParam.as.Y.impl.K.type = struct_value () [concrete] // CHECK:STDOUT: %Y.facet: %Y.type = facet_value %AnyParam.0dd, (%Y.impl_witness) [concrete] // CHECK:STDOUT: %L.type: type = fn_type @L [concrete] // CHECK:STDOUT: %L: %L.type = struct_value () [concrete] // CHECK:STDOUT: %AnyParam.val: %AnyParam.0dd = struct_value () [concrete] // CHECK:STDOUT: %Y.assoc_type: type = assoc_entity_type @Y [concrete] // CHECK:STDOUT: %assoc0.494: %Y.assoc_type = assoc_entity element0, imports.%PackageHasParam.import_ref.ce2 [concrete] -// CHECK:STDOUT: %.701: type = fn_type_with_self_type %K.type.311, %Y.facet [concrete] +// CHECK:STDOUT: %.701: type = fn_type_with_self_type %Y.K.type, %Y.facet [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.f56: type = fn_type @Op.1, @Destroy.impl(%AnyParam.0dd) [concrete] -// CHECK:STDOUT: %Op.1fa: %Op.type.f56 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.f56: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%AnyParam.0dd) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.1fa: %T.as.Destroy.impl.Op.type.f56 = struct_value () [concrete] // CHECK:STDOUT: %ptr.d96: type = ptr_type %AnyParam.0dd [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.1fa, @Op.1(%AnyParam.0dd) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.1fa, @T.as.Destroy.impl.Op(%AnyParam.0dd) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -2004,9 +2004,9 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %PackageHasParam.Y: type = import_ref PackageHasParam//default, Y, loaded [concrete = constants.%Y.type] // CHECK:STDOUT: %PackageHasParam.import_ref.dc1 = import_ref PackageHasParam//default, inst40 [no loc], unloaded // CHECK:STDOUT: %PackageHasParam.import_ref.f69: %Y.assoc_type = import_ref PackageHasParam//default, loc7_22, loaded [concrete = constants.%assoc0.494] -// CHECK:STDOUT: %PackageHasParam.K: %K.type.311 = import_ref PackageHasParam//default, K, loaded [concrete = constants.%K.7a1] +// CHECK:STDOUT: %PackageHasParam.K: %Y.K.type = import_ref PackageHasParam//default, K, loaded [concrete = constants.%Y.K] // CHECK:STDOUT: %PackageHasParam.import_ref.292: %Y.type = import_ref PackageHasParam//default, inst40 [no loc], loaded [symbolic = constants.%Self.f64] -// CHECK:STDOUT: %PackageHasParam.import_ref.ce2: %K.type.311 = import_ref PackageHasParam//default, loc7_22, loaded [concrete = constants.%K.7a1] +// CHECK:STDOUT: %PackageHasParam.import_ref.ce2: %Y.K.type = import_ref PackageHasParam//default, loc7_22, loaded [concrete = constants.%Y.K] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -2024,7 +2024,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } { // CHECK:STDOUT: %U.loc6_20.2: type = bind_symbolic_name U, 0 [symbolic = %U.loc6_20.1 (constants.%U)] // CHECK:STDOUT: } -// CHECK:STDOUT: impl_decl @Y.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @AnyParam.as.Y.impl [concrete] {} { // CHECK:STDOUT: %PackageHasParam.ref.loc8_6: = name_ref PackageHasParam, imports.%PackageHasParam [concrete = imports.%PackageHasParam] // CHECK:STDOUT: %AnyParam.ref: %AnyParam.type = name_ref AnyParam, imports.%PackageHasParam.AnyParam [concrete = constants.%AnyParam.generic] // CHECK:STDOUT: %GenericClass.ref: %GenericClass.type = name_ref GenericClass, file.%GenericClass.decl [concrete = constants.%GenericClass.generic] @@ -2032,7 +2032,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %PackageHasParam.ref.loc8_48: = name_ref PackageHasParam, imports.%PackageHasParam [concrete = imports.%PackageHasParam] // CHECK:STDOUT: %Y.ref: type = name_ref Y, imports.%PackageHasParam.Y [concrete = constants.%Y.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %Y.impl_witness_table = impl_witness_table (@Y.impl.%K.decl), @Y.impl [concrete] +// CHECK:STDOUT: %Y.impl_witness_table = impl_witness_table (@AnyParam.as.Y.impl.%AnyParam.as.Y.impl.K.decl), @AnyParam.as.Y.impl [concrete] // CHECK:STDOUT: %Y.impl_witness: = impl_witness %Y.impl_witness_table [concrete = constants.%Y.impl_witness] // CHECK:STDOUT: %L.decl: %L.type = fn_decl @L [concrete = constants.%L] {} {} // CHECK:STDOUT: } @@ -2044,18 +2044,18 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: witness = (imports.%PackageHasParam.K) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Y.impl: %AnyParam as %Y.ref { -// CHECK:STDOUT: %K.decl: %K.type.965 = fn_decl @K.loc9 [concrete = constants.%K.5a9] { +// CHECK:STDOUT: impl @AnyParam.as.Y.impl: %AnyParam as %Y.ref { +// CHECK:STDOUT: %AnyParam.as.Y.impl.K.decl: %AnyParam.as.Y.impl.K.type = fn_decl @AnyParam.as.Y.impl.K [concrete = constants.%AnyParam.as.Y.impl.K] { // CHECK:STDOUT: %self.patt: %pattern_type.64f = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.64f = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %self.param: %AnyParam.0dd = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @Y.impl.%AnyParam [concrete = constants.%AnyParam.0dd] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @AnyParam.as.Y.impl.%AnyParam [concrete = constants.%AnyParam.0dd] // CHECK:STDOUT: %self: %AnyParam.0dd = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .K = %K.decl +// CHECK:STDOUT: .K = %AnyParam.as.Y.impl.K.decl // CHECK:STDOUT: witness = file.%Y.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: @@ -2089,7 +2089,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @K.1(imports.%PackageHasParam.import_ref.292: %Y.type) [from "has_param.carbon"] { +// CHECK:STDOUT: generic fn @Y.K(imports.%PackageHasParam.import_ref.292: %Y.type) [from "has_param.carbon"] { // CHECK:STDOUT: %Self: %Y.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.f64)] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic = %Self.as_type (constants.%Self.as_type.61d)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type [symbolic = %pattern_type (constants.%pattern_type.cb4)] @@ -2100,7 +2100,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @K.loc9(%self.param: %AnyParam.0dd) { +// CHECK:STDOUT: fn @AnyParam.as.Y.impl.K(%self.param: %AnyParam.0dd) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -2127,15 +2127,15 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %PackageHasParam.ref.loc14: = name_ref PackageHasParam, imports.%PackageHasParam [concrete = imports.%PackageHasParam] // CHECK:STDOUT: %Y.ref: type = name_ref Y, imports.%PackageHasParam.Y [concrete = constants.%Y.type] // CHECK:STDOUT: %K.ref: %Y.assoc_type = name_ref K, imports.%PackageHasParam.import_ref.f69 [concrete = constants.%assoc0.494] -// CHECK:STDOUT: %impl.elem0: %.701 = impl_witness_access constants.%Y.impl_witness, element0 [concrete = constants.%K.5a9] +// CHECK:STDOUT: %impl.elem0: %.701 = impl_witness_access constants.%Y.impl_witness, element0 [concrete = constants.%AnyParam.as.Y.impl.K] // CHECK:STDOUT: %bound_method.loc14: = bound_method %obj.ref, %impl.elem0 // CHECK:STDOUT: %.loc14: %AnyParam.0dd = bind_value %obj.ref -// CHECK:STDOUT: %K.call: init %empty_tuple.type = call %bound_method.loc14(%.loc14) -// CHECK:STDOUT: %Op.bound: = bound_method %obj.var, constants.%Op.1fa -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.1fa, @Op.1(constants.%AnyParam.0dd) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc13: = bound_method %obj.var, %Op.specific_fn +// CHECK:STDOUT: %AnyParam.as.Y.impl.K.call: init %empty_tuple.type = call %bound_method.loc14(%.loc14) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %obj.var, constants.%T.as.Destroy.impl.Op.1fa +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.1fa, @T.as.Destroy.impl.Op(constants.%AnyParam.0dd) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc13: = bound_method %obj.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.d96 = addr_of %obj.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc13(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc13(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -2157,13 +2157,13 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @K.1(constants.%Self.f64) { +// CHECK:STDOUT: specific @Y.K(constants.%Self.f64) { // CHECK:STDOUT: %Self => constants.%Self.f64 // CHECK:STDOUT: %Self.as_type => constants.%Self.as_type.61d // CHECK:STDOUT: %pattern_type => constants.%pattern_type.cb4 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @K.1(constants.%Y.facet) { +// CHECK:STDOUT: specific @Y.K(constants.%Y.facet) { // CHECK:STDOUT: %Self => constants.%Y.facet // CHECK:STDOUT: %Self.as_type => constants.%AnyParam.0dd // CHECK:STDOUT: %pattern_type => constants.%pattern_type.64f @@ -2193,21 +2193,21 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %Self.f64: %Y.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Y.assoc_type: type = assoc_entity_type @Y [concrete] // CHECK:STDOUT: %assoc0.494: %Y.assoc_type = assoc_entity element0, imports.%PackageHasParam.import_ref.ce2 [concrete] -// CHECK:STDOUT: %K.type.311: type = fn_type @K.2 [concrete] -// CHECK:STDOUT: %K.7a1: %K.type.311 = struct_value () [concrete] +// CHECK:STDOUT: %Y.K.type: type = fn_type @Y.K [concrete] +// CHECK:STDOUT: %Y.K: %Y.K.type = struct_value () [concrete] // CHECK:STDOUT: %Self.as_type.61d: type = facet_access_type %Self.f64 [symbolic] // CHECK:STDOUT: %pattern_type.cb4: type = pattern_type %Self.as_type.61d [symbolic] // CHECK:STDOUT: %require_complete.b14: = require_complete_type %Self.as_type.61d [symbolic] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %Y.impl_witness: = impl_witness imports.%Y.impl_witness_table [concrete] // CHECK:STDOUT: %Y.facet: %Y.type = facet_value %AnyParam.d71, (%Y.impl_witness) [concrete] -// CHECK:STDOUT: %.0dd: type = fn_type_with_self_type %K.type.311, %Y.facet [concrete] -// CHECK:STDOUT: %K.type.9cf: type = fn_type @K.1 [concrete] -// CHECK:STDOUT: %K.039: %K.type.9cf = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.051: type = fn_type @Op.1, @Destroy.impl(%AnyParam.d71) [concrete] -// CHECK:STDOUT: %Op.d0b: %Op.type.051 = struct_value () [concrete] +// CHECK:STDOUT: %.0dd: type = fn_type_with_self_type %Y.K.type, %Y.facet [concrete] +// CHECK:STDOUT: %AnyParam.as.Y.impl.K.type: type = fn_type @AnyParam.as.Y.impl.K [concrete] +// CHECK:STDOUT: %AnyParam.as.Y.impl.K: %AnyParam.as.Y.impl.K.type = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.051: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%AnyParam.d71) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.d0b: %T.as.Destroy.impl.Op.type.051 = struct_value () [concrete] // CHECK:STDOUT: %ptr.8ee: type = ptr_type %AnyParam.d71 [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.d0b, @Op.1(%AnyParam.d71) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.d0b, @T.as.Destroy.impl.Op(%AnyParam.d71) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -2238,13 +2238,13 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %PackageHasParam.import_ref.dc1 = import_ref PackageHasParam//default, inst40 [no loc], unloaded // CHECK:STDOUT: %PackageHasParam.import_ref.f69: %Y.assoc_type = import_ref PackageHasParam//default, loc7_22, loaded [concrete = constants.%assoc0.494] // CHECK:STDOUT: %PackageHasParam.K = import_ref PackageHasParam//default, K, unloaded -// CHECK:STDOUT: %PackageHasParam.import_ref.ce2: %K.type.311 = import_ref PackageHasParam//default, loc7_22, loaded [concrete = constants.%K.7a1] +// CHECK:STDOUT: %PackageHasParam.import_ref.ce2: %Y.K.type = import_ref PackageHasParam//default, loc7_22, loaded [concrete = constants.%Y.K] // CHECK:STDOUT: %PackageHasParam.import_ref.292: %Y.type = import_ref PackageHasParam//default, inst40 [no loc], loaded [symbolic = constants.%Self.f64] // CHECK:STDOUT: %PackageGenericClass.import_ref.246: = import_ref PackageGenericClass//default, loc8_66, loaded [concrete = constants.%Y.impl_witness] // CHECK:STDOUT: %PackageGenericClass.import_ref.a0e: type = import_ref PackageGenericClass//default, loc8_43, loaded [concrete = constants.%AnyParam.d71] // CHECK:STDOUT: %PackageGenericClass.import_ref.ca6: type = import_ref PackageGenericClass//default, loc8_63, loaded [concrete = constants.%Y.type] -// CHECK:STDOUT: %PackageGenericClass.import_ref.fbf: %K.type.9cf = import_ref PackageGenericClass//default, loc9_22, loaded [concrete = constants.%K.039] -// CHECK:STDOUT: %Y.impl_witness_table = impl_witness_table (%PackageGenericClass.import_ref.fbf), @Y.impl [concrete] +// CHECK:STDOUT: %PackageGenericClass.import_ref.fbf: %AnyParam.as.Y.impl.K.type = import_ref PackageGenericClass//default, loc9_22, loaded [concrete = constants.%AnyParam.as.Y.impl.K] +// CHECK:STDOUT: %Y.impl_witness_table = impl_witness_table (%PackageGenericClass.import_ref.fbf), @AnyParam.as.Y.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -2268,7 +2268,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: witness = (imports.%PackageHasParam.K) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Y.impl: imports.%PackageGenericClass.import_ref.a0e as imports.%PackageGenericClass.import_ref.ca6 [from "has_generic_class.carbon"] { +// CHECK:STDOUT: impl @AnyParam.as.Y.impl: imports.%PackageGenericClass.import_ref.a0e as imports.%PackageGenericClass.import_ref.ca6 [from "has_generic_class.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = imports.%PackageGenericClass.import_ref.246 // CHECK:STDOUT: } @@ -2324,19 +2324,19 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %PackageHasParam.ref.loc9: = name_ref PackageHasParam, imports.%PackageHasParam [concrete = imports.%PackageHasParam] // CHECK:STDOUT: %Y.ref: type = name_ref Y, imports.%PackageHasParam.Y [concrete = constants.%Y.type] // CHECK:STDOUT: %K.ref: %Y.assoc_type = name_ref K, imports.%PackageHasParam.import_ref.f69 [concrete = constants.%assoc0.494] -// CHECK:STDOUT: %impl.elem0: %.0dd = impl_witness_access constants.%Y.impl_witness, element0 [concrete = constants.%K.039] +// CHECK:STDOUT: %impl.elem0: %.0dd = impl_witness_access constants.%Y.impl_witness, element0 [concrete = constants.%AnyParam.as.Y.impl.K] // CHECK:STDOUT: %bound_method.loc9: = bound_method %obj.ref, %impl.elem0 // CHECK:STDOUT: %.loc9: %AnyParam.d71 = bind_value %obj.ref -// CHECK:STDOUT: %K.call: init %empty_tuple.type = call %bound_method.loc9(%.loc9) -// CHECK:STDOUT: %Op.bound: = bound_method %obj.var, constants.%Op.d0b -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.d0b, @Op.1(constants.%AnyParam.d71) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc8: = bound_method %obj.var, %Op.specific_fn +// CHECK:STDOUT: %AnyParam.as.Y.impl.K.call: init %empty_tuple.type = call %bound_method.loc9(%.loc9) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %obj.var, constants.%T.as.Destroy.impl.Op.d0b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.d0b, @T.as.Destroy.impl.Op(constants.%AnyParam.d71) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc8: = bound_method %obj.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.8ee = addr_of %obj.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc8(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc8(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @K.2(imports.%PackageHasParam.import_ref.292: %Y.type) [from "has_param.carbon"] { +// CHECK:STDOUT: generic fn @Y.K(imports.%PackageHasParam.import_ref.292: %Y.type) [from "has_param.carbon"] { // CHECK:STDOUT: %Self: %Y.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.f64)] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic = %Self.as_type (constants.%Self.as_type.61d)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type [symbolic = %pattern_type (constants.%pattern_type.cb4)] @@ -2347,7 +2347,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @K.1 [from "has_generic_class.carbon"]; +// CHECK:STDOUT: fn @AnyParam.as.Y.impl.K [from "has_generic_class.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: specific @AnyParam(constants.%T, constants.%X) { // CHECK:STDOUT: %T => constants.%T @@ -2367,7 +2367,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @K.2(constants.%Self.f64) { +// CHECK:STDOUT: specific @Y.K(constants.%Self.f64) { // CHECK:STDOUT: %Self => constants.%Self.f64 // CHECK:STDOUT: %Self.as_type => constants.%Self.as_type.61d // CHECK:STDOUT: %pattern_type => constants.%pattern_type.cb4 @@ -2403,17 +2403,17 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %Self.826: %I.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self.826 [symbolic] // CHECK:STDOUT: %pattern_type.6de: type = pattern_type %Self.as_type [symbolic] -// CHECK:STDOUT: %F.type.cf0: type = fn_type @F.loc14 [concrete] -// CHECK:STDOUT: %F.bc6: %F.type.cf0 = struct_value () [concrete] +// CHECK:STDOUT: %I.F.type: type = fn_type @I.F [concrete] +// CHECK:STDOUT: %I.F: %I.F.type = struct_value () [concrete] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] -// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%F.decl [concrete] +// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%I.F.decl [concrete] // CHECK:STDOUT: %tuple.type.c53: type = tuple_type (type, type, type, type, type, type, type, type) [concrete] // CHECK:STDOUT: %tuple.type.15d: type = tuple_type (%Extra1.type, %Extra2.type, %Extra3.type, %Extra4.type, %Extra5.type, %Extra6.type, %Extra7.type, %Extra8.type) [concrete] // CHECK:STDOUT: %C.69b: type = class_type @C, @C(%tuple.type.15d) [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.e23: type = pattern_type %C.69b [concrete] -// CHECK:STDOUT: %F.type.06f: type = fn_type @F.loc17 [concrete] -// CHECK:STDOUT: %F.13c: %F.type.06f = struct_value () [concrete] +// CHECK:STDOUT: %C.as.I.impl.F.type: type = fn_type @C.as.I.impl.F [concrete] +// CHECK:STDOUT: %C.as.I.impl.F: %C.as.I.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %I.facet: %I.type = facet_value %C.69b, (%I.impl_witness) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -2453,7 +2453,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %T.loc13_9.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc13_9.1 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.I.impl [concrete] {} { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] // CHECK:STDOUT: %Extra1.ref: type = name_ref Extra1, file.%Extra1.decl [concrete = constants.%Extra1.type] // CHECK:STDOUT: %Extra2.ref: type = name_ref Extra2, file.%Extra2.decl [concrete = constants.%Extra2.type] @@ -2468,7 +2468,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%tuple.type.15d) [concrete = constants.%C.69b] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (@I.impl.%F.decl), @I.impl [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (@C.as.I.impl.%C.as.I.impl.F.decl), @C.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -2538,38 +2538,38 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: // CHECK:STDOUT: interface @I { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.826] -// CHECK:STDOUT: %F.decl: %F.type.cf0 = fn_decl @F.loc14 [concrete = constants.%F.bc6] { -// CHECK:STDOUT: %self.patt: @F.loc14.%pattern_type (%pattern_type.6de) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.loc14.%pattern_type (%pattern_type.6de) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %I.F.decl: %I.F.type = fn_decl @I.F [concrete = constants.%I.F] { +// CHECK:STDOUT: %self.patt: @I.F.%pattern_type (%pattern_type.6de) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @I.F.%pattern_type (%pattern_type.6de) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @F.loc14.%Self.as_type.loc14_26.2 (%Self.as_type) = value_param call_param0 -// CHECK:STDOUT: %.loc14_26.1: type = splice_block %.loc14_26.2 [symbolic = %Self.as_type.loc14_26.2 (constants.%Self.as_type)] { +// CHECK:STDOUT: %self.param: @I.F.%Self.as_type.loc14_26.1 (%Self.as_type) = value_param call_param0 +// CHECK:STDOUT: %.loc14_26.1: type = splice_block %.loc14_26.2 [symbolic = %Self.as_type.loc14_26.1 (constants.%Self.as_type)] { // CHECK:STDOUT: %Self.ref: %I.type = name_ref Self, @I.%Self [symbolic = %Self (constants.%Self.826)] -// CHECK:STDOUT: %Self.as_type.loc14_26.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc14_26.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc14_26.2: type = converted %Self.ref, %Self.as_type.loc14_26.1 [symbolic = %Self.as_type.loc14_26.2 (constants.%Self.as_type)] +// CHECK:STDOUT: %Self.as_type.loc14_26.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc14_26.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc14_26.2: type = converted %Self.ref, %Self.as_type.loc14_26.2 [symbolic = %Self.as_type.loc14_26.1 (constants.%Self.as_type)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.loc14.%Self.as_type.loc14_26.2 (%Self.as_type) = bind_name self, %self.param +// CHECK:STDOUT: %self: @I.F.%Self.as_type.loc14_26.1 (%Self.as_type) = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %I.F.decl [concrete = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F = %assoc0 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%I.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: %C as %I.ref { -// CHECK:STDOUT: %F.decl: %F.type.06f = fn_decl @F.loc17 [concrete = constants.%F.13c] { +// CHECK:STDOUT: impl @C.as.I.impl: %C as %I.ref { +// CHECK:STDOUT: %C.as.I.impl.F.decl: %C.as.I.impl.F.type = fn_decl @C.as.I.impl.F [concrete = constants.%C.as.I.impl.F] { // CHECK:STDOUT: %self.patt: %pattern_type.e23 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.e23 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %self.param: %C.69b = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @I.impl.%C [concrete = constants.%C.69b] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @C.as.I.impl.%C [concrete = constants.%C.69b] // CHECK:STDOUT: %self: %C.69b = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %C.as.I.impl.F.decl // CHECK:STDOUT: witness = file.%I.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: @@ -2588,15 +2588,15 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc14(@I.%Self: %I.type) { +// CHECK:STDOUT: generic fn @I.F(@I.%Self: %I.type) { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.826)] -// CHECK:STDOUT: %Self.as_type.loc14_26.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc14_26.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc14_26.2 [symbolic = %pattern_type (constants.%pattern_type.6de)] +// CHECK:STDOUT: %Self.as_type.loc14_26.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc14_26.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc14_26.1 [symbolic = %pattern_type (constants.%pattern_type.6de)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @F.loc14.%Self.as_type.loc14_26.2 (%Self.as_type)); +// CHECK:STDOUT: fn(%self.param: @I.F.%Self.as_type.loc14_26.1 (%Self.as_type)); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc17(%self.param: %C.69b) { +// CHECK:STDOUT: fn @C.as.I.impl.F(%self.param: %C.69b) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -2605,9 +2605,9 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %T.loc13_9.1 => constants.%T // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc14(constants.%Self.826) { +// CHECK:STDOUT: specific @I.F(constants.%Self.826) { // CHECK:STDOUT: %Self => constants.%Self.826 -// CHECK:STDOUT: %Self.as_type.loc14_26.2 => constants.%Self.as_type +// CHECK:STDOUT: %Self.as_type.loc14_26.1 => constants.%Self.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.6de // CHECK:STDOUT: } // CHECK:STDOUT: @@ -2617,9 +2617,9 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc14(constants.%I.facet) { +// CHECK:STDOUT: specific @I.F(constants.%I.facet) { // CHECK:STDOUT: %Self => constants.%I.facet -// CHECK:STDOUT: %Self.as_type.loc14_26.2 => constants.%C.69b +// CHECK:STDOUT: %Self.as_type.loc14_26.1 => constants.%C.69b // CHECK:STDOUT: %pattern_type => constants.%pattern_type.e23 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -2639,8 +2639,8 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %Self.013: %I.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] // CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, imports.%HasExtraInterfaces.import_ref.d54 [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %I.F.type: type = fn_type @I.F [concrete] +// CHECK:STDOUT: %I.F: %I.F.type = struct_value () [concrete] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self.013 [symbolic] // CHECK:STDOUT: %pattern_type.e10: type = pattern_type %Self.as_type [symbolic] // CHECK:STDOUT: %Extra8.type: type = facet_type <@Extra8> [concrete] @@ -2673,7 +2673,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %HasExtraInterfaces.import_ref.e5d = import_ref HasExtraInterfaces//default, inst73 [no loc], unloaded // CHECK:STDOUT: %HasExtraInterfaces.import_ref.be9: %I.assoc_type = import_ref HasExtraInterfaces//default, loc14_33, loaded [concrete = constants.%assoc0] // CHECK:STDOUT: %HasExtraInterfaces.F = import_ref HasExtraInterfaces//default, F, unloaded -// CHECK:STDOUT: %HasExtraInterfaces.import_ref.d54: %F.type = import_ref HasExtraInterfaces//default, loc14_33, loaded [concrete = constants.%F] +// CHECK:STDOUT: %HasExtraInterfaces.import_ref.d54: %I.F.type = import_ref HasExtraInterfaces//default, loc14_33, loaded [concrete = constants.%I.F] // CHECK:STDOUT: %HasExtraInterfaces.import_ref.1db: %I.type = import_ref HasExtraInterfaces//default, inst73 [no loc], loaded [symbolic = constants.%Self.013] // CHECK:STDOUT: %HasExtraInterfaces.import_ref.bca = import_ref HasExtraInterfaces//default, loc16_79, unloaded // CHECK:STDOUT: %HasExtraInterfaces.import_ref.9c8 = import_ref HasExtraInterfaces//default, inst54 [no loc], unloaded @@ -2765,7 +2765,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: imports.%HasExtraInterfaces.import_ref.aa8 as imports.%HasExtraInterfaces.import_ref.301 [from "has_extra_interfaces.carbon"] { +// CHECK:STDOUT: impl @C.as.I.impl: imports.%HasExtraInterfaces.import_ref.aa8 as imports.%HasExtraInterfaces.import_ref.301 [from "has_extra_interfaces.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = imports.%HasExtraInterfaces.import_ref.bca // CHECK:STDOUT: } @@ -2792,7 +2792,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(imports.%HasExtraInterfaces.import_ref.1db: %I.type) [from "has_extra_interfaces.carbon"] { +// CHECK:STDOUT: generic fn @I.F(imports.%HasExtraInterfaces.import_ref.1db: %I.type) [from "has_extra_interfaces.carbon"] { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.013)] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic = %Self.as_type (constants.%Self.as_type)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type [symbolic = %pattern_type (constants.%pattern_type.e10)] @@ -2810,7 +2810,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%Self.013) { +// CHECK:STDOUT: specific @I.F(constants.%Self.013) { // CHECK:STDOUT: %Self => constants.%Self.013 // CHECK:STDOUT: %Self.as_type => constants.%Self.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.e10 diff --git a/toolchain/check/testdata/impl/lookup/instance_method.carbon b/toolchain/check/testdata/impl/lookup/instance_method.carbon index 6c02409f47ff..17c35003bab9 100644 --- a/toolchain/check/testdata/impl/lookup/instance_method.carbon +++ b/toolchain/check/testdata/impl/lookup/instance_method.carbon @@ -41,20 +41,20 @@ fn F(c: C) -> i32 { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %F.type.cf0: type = fn_type @F.loc18 [concrete] -// CHECK:STDOUT: %F.bc6: %F.type.cf0 = struct_value () [concrete] +// CHECK:STDOUT: %I.F.type: type = fn_type @I.F [concrete] +// CHECK:STDOUT: %I.F: %I.F.type = struct_value () [concrete] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] -// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%F.decl [concrete] +// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%I.F.decl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @C.%I.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] -// CHECK:STDOUT: %F.type.f36: type = fn_type @F.loc23 [concrete] -// CHECK:STDOUT: %F.4c3: %F.type.f36 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.I.impl.F.type: type = fn_type @C.as.I.impl.F [concrete] +// CHECK:STDOUT: %C.as.I.impl.F: %C.as.I.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %I.facet: %I.type = facet_value %C, (%I.impl_witness) [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] -// CHECK:STDOUT: %F.type.b25: type = fn_type @F.loc27 [concrete] -// CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [concrete] -// CHECK:STDOUT: %.832: type = fn_type_with_self_type %F.type.cf0, %I.facet [concrete] +// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] +// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %.832: type = fn_type_with_self_type %I.F.type, %I.facet [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -77,7 +77,7 @@ fn F(c: C) -> i32 { // CHECK:STDOUT: %C.decl.loc15: type = class_decl @C [concrete = constants.%C] {} {} // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} // CHECK:STDOUT: %C.decl.loc21: type = class_decl @C [concrete = constants.%C] {} {} -// CHECK:STDOUT: %F.decl: %F.type.b25 = fn_decl @F.loc27 [concrete = constants.%F.c41] { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { // CHECK:STDOUT: %c.patt: %pattern_type.c48 = binding_pattern c [concrete] // CHECK:STDOUT: %c.param_patt: %pattern_type.c48 = value_param_pattern %c.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] @@ -95,34 +95,34 @@ fn F(c: C) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: interface @I { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %F.decl: %F.type.cf0 = fn_decl @F.loc18 [concrete = constants.%F.bc6] { -// CHECK:STDOUT: %self.patt: @F.loc18.%pattern_type (%pattern_type.6de) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.loc18.%pattern_type (%pattern_type.6de) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %I.F.decl: %I.F.type = fn_decl @I.F [concrete = constants.%I.F] { +// CHECK:STDOUT: %self.patt: @I.F.%pattern_type (%pattern_type.6de) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @I.F.%pattern_type (%pattern_type.6de) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %self.param: @F.loc18.%Self.as_type.loc18_14.2 (%Self.as_type) = value_param call_param0 -// CHECK:STDOUT: %.loc18_14.1: type = splice_block %.loc18_14.2 [symbolic = %Self.as_type.loc18_14.2 (constants.%Self.as_type)] { +// CHECK:STDOUT: %self.param: @I.F.%Self.as_type.loc18_14.1 (%Self.as_type) = value_param call_param0 +// CHECK:STDOUT: %.loc18_14.1: type = splice_block %.loc18_14.2 [symbolic = %Self.as_type.loc18_14.1 (constants.%Self.as_type)] { // CHECK:STDOUT: %Self.ref: %I.type = name_ref Self, @I.%Self [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc18_14.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc18_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc18_14.2: type = converted %Self.ref, %Self.as_type.loc18_14.1 [symbolic = %Self.as_type.loc18_14.2 (constants.%Self.as_type)] +// CHECK:STDOUT: %Self.as_type.loc18_14.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc18_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc18_14.2: type = converted %Self.ref, %Self.as_type.loc18_14.2 [symbolic = %Self.as_type.loc18_14.1 (constants.%Self.as_type)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.loc18.%Self.as_type.loc18_14.2 (%Self.as_type) = bind_name self, %self.param +// CHECK:STDOUT: %self: @I.F.%Self.as_type.loc18_14.1 (%Self.as_type) = bind_name self, %self.param // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param1 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %I.F.decl [concrete = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F = %assoc0 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%I.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: %Self.ref as %I.ref { -// CHECK:STDOUT: %F.decl: %F.type.f36 = fn_decl @F.loc23 [concrete = constants.%F.4c3] { +// CHECK:STDOUT: impl @C.as.I.impl: %Self.ref as %I.ref { +// CHECK:STDOUT: %C.as.I.impl.F.decl: %C.as.I.impl.F.type = fn_decl @C.as.I.impl.F [concrete = constants.%C.as.I.impl.F] { // CHECK:STDOUT: %self.patt: %pattern_type.c48 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.c48 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] @@ -138,16 +138,16 @@ fn F(c: C) -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %C.as.I.impl.F.decl // CHECK:STDOUT: witness = @C.%I.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.I.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (@I.impl.%F.decl), @I.impl [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (@C.as.I.impl.%C.as.I.impl.F.decl), @C.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] @@ -157,40 +157,40 @@ fn F(c: C) -> i32 { // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .I = // CHECK:STDOUT: .F = -// CHECK:STDOUT: extend @I.impl.%I.ref +// CHECK:STDOUT: extend @C.as.I.impl.%I.ref // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc18(@I.%Self: %I.type) { +// CHECK:STDOUT: generic fn @I.F(@I.%Self: %I.type) { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc18_14.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc18_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc18_14.2 [symbolic = %pattern_type (constants.%pattern_type.6de)] +// CHECK:STDOUT: %Self.as_type.loc18_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc18_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc18_14.1 [symbolic = %pattern_type (constants.%pattern_type.6de)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @F.loc18.%Self.as_type.loc18_14.2 (%Self.as_type)) -> %i32; +// CHECK:STDOUT: fn(%self.param: @I.F.%Self.as_type.loc18_14.1 (%Self.as_type)) -> %i32; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc23(%self.param: %C) -> %i32; +// CHECK:STDOUT: fn @C.as.I.impl.F(%self.param: %C) -> %i32; // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc27(%c.param: %C) -> %i32 { +// CHECK:STDOUT: fn @F(%c.param: %C) -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %c.ref: %C = name_ref c, %c // CHECK:STDOUT: %F.ref: %I.assoc_type = name_ref F, @I.%assoc0 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: %.832 = impl_witness_access constants.%I.impl_witness, element0 [concrete = constants.%F.4c3] +// CHECK:STDOUT: %impl.elem0: %.832 = impl_witness_access constants.%I.impl_witness, element0 [concrete = constants.%C.as.I.impl.F] // CHECK:STDOUT: %bound_method: = bound_method %c.ref, %impl.elem0 -// CHECK:STDOUT: %F.call: init %i32 = call %bound_method(%c.ref) -// CHECK:STDOUT: %.loc28_15.1: %i32 = value_of_initializer %F.call -// CHECK:STDOUT: %.loc28_15.2: %i32 = converted %F.call, %.loc28_15.1 +// CHECK:STDOUT: %C.as.I.impl.F.call: init %i32 = call %bound_method(%c.ref) +// CHECK:STDOUT: %.loc28_15.1: %i32 = value_of_initializer %C.as.I.impl.F.call +// CHECK:STDOUT: %.loc28_15.2: %i32 = converted %C.as.I.impl.F.call, %.loc28_15.1 // CHECK:STDOUT: return %.loc28_15.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc18(constants.%Self) { +// CHECK:STDOUT: specific @I.F(constants.%Self) { // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %Self.as_type.loc18_14.2 => constants.%Self.as_type +// CHECK:STDOUT: %Self.as_type.loc18_14.1 => constants.%Self.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.6de // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc18(constants.%I.facet) { +// CHECK:STDOUT: specific @I.F(constants.%I.facet) { // CHECK:STDOUT: %Self => constants.%I.facet -// CHECK:STDOUT: %Self.as_type.loc18_14.2 => constants.%C +// CHECK:STDOUT: %Self.as_type.loc18_14.1 => constants.%C // CHECK:STDOUT: %pattern_type => constants.%pattern_type.c48 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/lookup/lookup_interface_with_enclosing_generic_inside_rewrite_constraint.carbon b/toolchain/check/testdata/impl/lookup/lookup_interface_with_enclosing_generic_inside_rewrite_constraint.carbon index 14deebdb5c5a..cab6192ac335 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 @@ -122,15 +122,15 @@ fn F() { // CHECK:STDOUT: %Y_where.type.324: type = facet_type <@Y, @Y(%OuterParam) where %impl.elem0.409 = %empty_tuple.type> [symbolic] // CHECK:STDOUT: %H: %Y_where.type.324 = bind_symbolic_name H, 1 [symbolic] // CHECK:STDOUT: %pattern_type.f71: type = pattern_type %Y_where.type.324 [symbolic] -// CHECK:STDOUT: %G.type.d49: type = fn_type @G, @Outer(%OuterParam) [symbolic] -// CHECK:STDOUT: %G.f3c: %G.type.d49 = struct_value () [symbolic] +// CHECK:STDOUT: %Outer.G.type.d49: type = fn_type @Outer.G, @Outer(%OuterParam) [symbolic] +// CHECK:STDOUT: %Outer.G.f3c: %Outer.G.type.d49 = 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: %C: type = class_type @C [concrete] // CHECK:STDOUT: %Outer.8f5: type = class_type @Outer, @Outer(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Y.type.080: type = facet_type <@Y, @Y(%empty_tuple.type)> [concrete] -// CHECK:STDOUT: %G.type.96c: type = fn_type @G, @Outer(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %G.510: %G.type.96c = struct_value () [concrete] +// CHECK:STDOUT: %Outer.G.type.96c: type = fn_type @Outer.G, @Outer(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %Outer.G.510: %Outer.G.type.96c = struct_value () [concrete] // CHECK:STDOUT: %.Self.37b: %Y.type.080 = bind_symbolic_name .Self [symbolic_self] // CHECK:STDOUT: %Self.3a4: %Y.type.080 = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %Y.assoc_type.06e: type = assoc_entity_type @Y, @Y(%empty_tuple.type) [concrete] @@ -146,7 +146,7 @@ fn F() { // CHECK:STDOUT: %facet_value: %Y_where.type.8eb = facet_value %C, (%Y.impl_witness) [concrete] // CHECK:STDOUT: %complete_type.12f: = complete_type_witness %Y.type.080 [concrete] // CHECK:STDOUT: %pattern_type.ce4: type = pattern_type %Y_where.type.8eb [concrete] -// CHECK:STDOUT: %G.specific_fn: = specific_function %G.510, @G(%empty_tuple.type, %facet_value) [concrete] +// CHECK:STDOUT: %Outer.G.specific_fn: = specific_function %Outer.G.510, @Outer.G(%empty_tuple.type, %facet_value) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -170,7 +170,7 @@ fn F() { // CHECK:STDOUT: %OuterParam.loc49_13.2: type = bind_symbolic_name OuterParam, 0 [symbolic = %OuterParam.loc49_13.1 (constants.%OuterParam)] // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} -// CHECK:STDOUT: impl_decl @Y.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.Y.impl [concrete] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %Outer.ref: %Outer.type = name_ref Outer, file.%Outer.decl [concrete = constants.%Outer.generic] // CHECK:STDOUT: %.loc58_18: %empty_tuple.type = tuple_literal () @@ -191,7 +191,7 @@ fn F() { // CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc58_35.2 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %Y.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @Y.impl [concrete] +// CHECK:STDOUT: %Y.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @C.as.Y.impl [concrete] // CHECK:STDOUT: %Y.impl_witness: = impl_witness %Y.impl_witness_table [concrete = constants.%Y.impl_witness] // CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} @@ -222,7 +222,7 @@ fn F() { // CHECK:STDOUT: assoc_const T:! type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Y.impl: %C.ref as %.loc58_23 { +// CHECK:STDOUT: impl @C.as.Y.impl: %C.ref as %.loc58_23 { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%Y.impl_witness // CHECK:STDOUT: } @@ -232,31 +232,31 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Y.type: type = facet_type <@Y, @Y(%OuterParam.loc49_13.1)> [symbolic = %Y.type (constants.%Y.type.49b)] -// CHECK:STDOUT: %G.type: type = fn_type @G, @Outer(%OuterParam.loc49_13.1) [symbolic = %G.type (constants.%G.type.d49)] -// CHECK:STDOUT: %G: @Outer.%G.type (%G.type.d49) = struct_value () [symbolic = %G (constants.%G.f3c)] +// CHECK:STDOUT: %Outer.G.type: type = fn_type @Outer.G, @Outer(%OuterParam.loc49_13.1) [symbolic = %Outer.G.type (constants.%Outer.G.type.d49)] +// CHECK:STDOUT: %Outer.G: @Outer.%Outer.G.type (%Outer.G.type.d49) = struct_value () [symbolic = %Outer.G (constants.%Outer.G.f3c)] // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: %Y.decl: type = interface_decl @Y [symbolic = @Outer.%Y.type (constants.%Y.type.49b)] {} {} -// CHECK:STDOUT: %G.decl: @Outer.%G.type (%G.type.d49) = fn_decl @G [symbolic = @Outer.%G (constants.%G.f3c)] { -// CHECK:STDOUT: %H.patt: @G.%pattern_type (%pattern_type.f71) = symbolic_binding_pattern H, 1 [concrete] +// CHECK:STDOUT: %Outer.G.decl: @Outer.%Outer.G.type (%Outer.G.type.d49) = fn_decl @Outer.G [symbolic = @Outer.%Outer.G (constants.%Outer.G.f3c)] { +// CHECK:STDOUT: %H.patt: @Outer.G.%pattern_type (%pattern_type.f71) = symbolic_binding_pattern H, 1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc54_14.1: type = splice_block %.loc54_14.2 [symbolic = %Y_where.type (constants.%Y_where.type.324)] { // CHECK:STDOUT: %.loc54_12: type = specific_constant @Outer.%Y.decl, @Outer(constants.%OuterParam) [symbolic = %Y.type (constants.%Y.type.49b)] // CHECK:STDOUT: %Y.ref: type = name_ref Y, %.loc54_12 [symbolic = %Y.type (constants.%Y.type.49b)] -// CHECK:STDOUT: %.Self.1: @G.%Y.type (%Y.type.49b) = bind_symbolic_name .Self [symbolic = %.Self.2 (constants.%.Self.c19)] -// CHECK:STDOUT: %.Self.ref: @G.%Y.type (%Y.type.49b) = name_ref .Self, %.Self.1 [symbolic = %.Self.2 (constants.%.Self.c19)] -// CHECK:STDOUT: %.loc54_20.1: @G.%Y.assoc_type (%Y.assoc_type.56e) = specific_constant @T.%assoc0, @Y(constants.%OuterParam) [symbolic = %assoc0 (constants.%assoc0.044)] -// CHECK:STDOUT: %T.ref: @G.%Y.assoc_type (%Y.assoc_type.56e) = name_ref T, %.loc54_20.1 [symbolic = %assoc0 (constants.%assoc0.044)] -// CHECK:STDOUT: %.Self.as_type.loc54_20.1: type = facet_access_type %.Self.ref [symbolic = %.Self.as_type.loc54_20.2 (constants.%.Self.as_type.4b2)] -// CHECK:STDOUT: %.loc54_20.2: type = converted %.Self.ref, %.Self.as_type.loc54_20.1 [symbolic = %.Self.as_type.loc54_20.2 (constants.%.Self.as_type.4b2)] -// CHECK:STDOUT: %impl.elem0.loc54_20.1: type = impl_witness_access constants.%Y.lookup_impl_witness.369, element0 [symbolic = %impl.elem0.loc54_20.2 (constants.%impl.elem0.409)] +// CHECK:STDOUT: %.Self.2: @Outer.G.%Y.type (%Y.type.49b) = bind_symbolic_name .Self [symbolic = %.Self.1 (constants.%.Self.c19)] +// CHECK:STDOUT: %.Self.ref: @Outer.G.%Y.type (%Y.type.49b) = name_ref .Self, %.Self.2 [symbolic = %.Self.1 (constants.%.Self.c19)] +// CHECK:STDOUT: %.loc54_20.1: @Outer.G.%Y.assoc_type (%Y.assoc_type.56e) = specific_constant @T.%assoc0, @Y(constants.%OuterParam) [symbolic = %assoc0 (constants.%assoc0.044)] +// CHECK:STDOUT: %T.ref: @Outer.G.%Y.assoc_type (%Y.assoc_type.56e) = name_ref T, %.loc54_20.1 [symbolic = %assoc0 (constants.%assoc0.044)] +// CHECK:STDOUT: %.Self.as_type.loc54_20.2: type = facet_access_type %.Self.ref [symbolic = %.Self.as_type.loc54_20.1 (constants.%.Self.as_type.4b2)] +// CHECK:STDOUT: %.loc54_20.2: type = converted %.Self.ref, %.Self.as_type.loc54_20.2 [symbolic = %.Self.as_type.loc54_20.1 (constants.%.Self.as_type.4b2)] +// CHECK:STDOUT: %impl.elem0.loc54_20.2: type = impl_witness_access constants.%Y.lookup_impl_witness.369, element0 [symbolic = %impl.elem0.loc54_20.1 (constants.%impl.elem0.409)] // CHECK:STDOUT: %.loc54_26.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc54_26.2: type = converted %.loc54_26.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc54_14.2: type = where_expr %.Self.1 [symbolic = %Y_where.type (constants.%Y_where.type.324)] { -// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc54_20.1, %.loc54_26.2 +// CHECK:STDOUT: %.loc54_14.2: type = where_expr %.Self.2 [symbolic = %Y_where.type (constants.%Y_where.type.324)] { +// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc54_20.2, %.loc54_26.2 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %H.loc54_8.1: @G.%Y_where.type (%Y_where.type.324) = bind_symbolic_name H, 1 [symbolic = %H.loc54_8.2 (constants.%H)] +// CHECK:STDOUT: %H.loc54_8.2: @Outer.G.%Y_where.type (%Y_where.type.324) = bind_symbolic_name H, 1 [symbolic = %H.loc54_8.1 (constants.%H)] // CHECK:STDOUT: } // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] @@ -265,24 +265,24 @@ fn F() { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Outer.9d6 // CHECK:STDOUT: .Y = %Y.decl -// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .G = %Outer.G.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C; // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @G(@Outer.%OuterParam.loc49_13.2: type, %H.loc54_8.1: @G.%Y_where.type (%Y_where.type.324)) { +// CHECK:STDOUT: generic fn @Outer.G(@Outer.%OuterParam.loc49_13.2: type, %H.loc54_8.2: @Outer.G.%Y_where.type (%Y_where.type.324)) { // CHECK:STDOUT: %OuterParam: type = bind_symbolic_name OuterParam, 0 [symbolic = %OuterParam (constants.%OuterParam)] // CHECK:STDOUT: %Y.type: type = facet_type <@Y, @Y(%OuterParam)> [symbolic = %Y.type (constants.%Y.type.49b)] -// CHECK:STDOUT: %.Self.2: @G.%Y.type (%Y.type.49b) = bind_symbolic_name .Self [symbolic = %.Self.2 (constants.%.Self.c19)] +// CHECK:STDOUT: %.Self.1: @Outer.G.%Y.type (%Y.type.49b) = bind_symbolic_name .Self [symbolic = %.Self.1 (constants.%.Self.c19)] // CHECK:STDOUT: %require_complete: = require_complete_type %Y.type [symbolic = %require_complete (constants.%require_complete)] // CHECK:STDOUT: %Y.assoc_type: type = assoc_entity_type @Y, @Y(%OuterParam) [symbolic = %Y.assoc_type (constants.%Y.assoc_type.56e)] -// CHECK:STDOUT: %assoc0: @G.%Y.assoc_type (%Y.assoc_type.56e) = assoc_entity element0, @Y.%T [symbolic = %assoc0 (constants.%assoc0.044)] -// CHECK:STDOUT: %.Self.as_type.loc54_20.2: type = facet_access_type %.Self.2 [symbolic = %.Self.as_type.loc54_20.2 (constants.%.Self.as_type.4b2)] -// CHECK:STDOUT: %Y.lookup_impl_witness: = lookup_impl_witness %.Self.2, @Y, @Y(%OuterParam) [symbolic = %Y.lookup_impl_witness (constants.%Y.lookup_impl_witness.369)] -// CHECK:STDOUT: %impl.elem0.loc54_20.2: type = impl_witness_access %Y.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc54_20.2 (constants.%impl.elem0.409)] -// CHECK:STDOUT: %Y_where.type: type = facet_type <@Y, @Y(%OuterParam) where %impl.elem0.loc54_20.2 = constants.%empty_tuple.type> [symbolic = %Y_where.type (constants.%Y_where.type.324)] -// CHECK:STDOUT: %H.loc54_8.2: @G.%Y_where.type (%Y_where.type.324) = bind_symbolic_name H, 1 [symbolic = %H.loc54_8.2 (constants.%H)] +// CHECK:STDOUT: %assoc0: @Outer.G.%Y.assoc_type (%Y.assoc_type.56e) = assoc_entity element0, @Y.%T [symbolic = %assoc0 (constants.%assoc0.044)] +// CHECK:STDOUT: %.Self.as_type.loc54_20.1: type = facet_access_type %.Self.1 [symbolic = %.Self.as_type.loc54_20.1 (constants.%.Self.as_type.4b2)] +// CHECK:STDOUT: %Y.lookup_impl_witness: = lookup_impl_witness %.Self.1, @Y, @Y(%OuterParam) [symbolic = %Y.lookup_impl_witness (constants.%Y.lookup_impl_witness.369)] +// CHECK:STDOUT: %impl.elem0.loc54_20.1: type = impl_witness_access %Y.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc54_20.1 (constants.%impl.elem0.409)] +// CHECK:STDOUT: %Y_where.type: type = facet_type <@Y, @Y(%OuterParam) where %impl.elem0.loc54_20.1 = constants.%empty_tuple.type> [symbolic = %Y_where.type (constants.%Y_where.type.324)] +// CHECK:STDOUT: %H.loc54_8.1: @Outer.G.%Y_where.type (%Y_where.type.324) = bind_symbolic_name H, 1 [symbolic = %H.loc54_8.1 (constants.%H)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Y_where.type [symbolic = %pattern_type (constants.%pattern_type.f71)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -299,13 +299,13 @@ fn F() { // CHECK:STDOUT: %.loc61_10: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc61_11: type = converted %.loc61_10, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %Outer: type = class_type @Outer, @Outer(constants.%empty_tuple.type) [concrete = constants.%Outer.8f5] -// CHECK:STDOUT: %.loc61_12: %G.type.96c = specific_constant @Outer.%G.decl, @Outer(constants.%empty_tuple.type) [concrete = constants.%G.510] -// CHECK:STDOUT: %G.ref: %G.type.96c = name_ref G, %.loc61_12 [concrete = constants.%G.510] +// CHECK:STDOUT: %.loc61_12: %Outer.G.type.96c = specific_constant @Outer.%Outer.G.decl, @Outer(constants.%empty_tuple.type) [concrete = constants.%Outer.G.510] +// CHECK:STDOUT: %G.ref: %Outer.G.type.96c = name_ref G, %.loc61_12 [concrete = constants.%Outer.G.510] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %facet_value: %Y_where.type.8eb = facet_value constants.%C, (constants.%Y.impl_witness) [concrete = constants.%facet_value] // CHECK:STDOUT: %.loc61_16: %Y_where.type.8eb = converted constants.%C, %facet_value [concrete = constants.%facet_value] -// CHECK:STDOUT: %G.specific_fn: = specific_function %G.ref, @G(constants.%empty_tuple.type, constants.%facet_value) [concrete = constants.%G.specific_fn] -// CHECK:STDOUT: %G.call: init %empty_tuple.type = call %G.specific_fn() +// CHECK:STDOUT: %Outer.G.specific_fn: = specific_function %G.ref, @Outer.G(constants.%empty_tuple.type, constants.%facet_value) [concrete = constants.%Outer.G.specific_fn] +// CHECK:STDOUT: %Outer.G.call: init %empty_tuple.type = call %Outer.G.specific_fn() // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -314,8 +314,8 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Y.type => constants.%Y.type.49b -// CHECK:STDOUT: %G.type => constants.%G.type.d49 -// CHECK:STDOUT: %G => constants.%G.f3c +// CHECK:STDOUT: %Outer.G.type => constants.%Outer.G.type.d49 +// CHECK:STDOUT: %Outer.G => constants.%Outer.G.f3c // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Y(constants.%OuterParam) { @@ -331,18 +331,18 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: specific @T(constants.%OuterParam, constants.%Y.facet.1b9) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @G(constants.%OuterParam, constants.%H) { +// CHECK:STDOUT: specific @Outer.G(constants.%OuterParam, constants.%H) { // CHECK:STDOUT: %OuterParam => constants.%OuterParam // CHECK:STDOUT: %Y.type => constants.%Y.type.49b -// CHECK:STDOUT: %.Self.2 => constants.%.Self.c19 +// CHECK:STDOUT: %.Self.1 => constants.%.Self.c19 // CHECK:STDOUT: %require_complete => constants.%require_complete // CHECK:STDOUT: %Y.assoc_type => constants.%Y.assoc_type.56e // CHECK:STDOUT: %assoc0 => constants.%assoc0.044 -// CHECK:STDOUT: %.Self.as_type.loc54_20.2 => constants.%.Self.as_type.4b2 +// CHECK:STDOUT: %.Self.as_type.loc54_20.1 => constants.%.Self.as_type.4b2 // CHECK:STDOUT: %Y.lookup_impl_witness => constants.%Y.lookup_impl_witness.369 -// CHECK:STDOUT: %impl.elem0.loc54_20.2 => constants.%impl.elem0.409 +// CHECK:STDOUT: %impl.elem0.loc54_20.1 => constants.%impl.elem0.409 // CHECK:STDOUT: %Y_where.type => constants.%Y_where.type.324 -// CHECK:STDOUT: %H.loc54_8.2 => constants.%H +// CHECK:STDOUT: %H.loc54_8.1 => constants.%H // CHECK:STDOUT: %pattern_type => constants.%pattern_type.f71 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -351,8 +351,8 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Y.type => constants.%Y.type.080 -// CHECK:STDOUT: %G.type => constants.%G.type.96c -// CHECK:STDOUT: %G => constants.%G.510 +// CHECK:STDOUT: %Outer.G.type => constants.%Outer.G.type.96c +// CHECK:STDOUT: %Outer.G => constants.%Outer.G.510 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Y(constants.%empty_tuple.type) { @@ -366,18 +366,18 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: specific @T(constants.%empty_tuple.type, constants.%Y.facet.1bc) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @G(constants.%empty_tuple.type, constants.%facet_value) { +// CHECK:STDOUT: specific @Outer.G(constants.%empty_tuple.type, constants.%facet_value) { // CHECK:STDOUT: %OuterParam => constants.%empty_tuple.type // CHECK:STDOUT: %Y.type => constants.%Y.type.080 -// CHECK:STDOUT: %.Self.2 => constants.%.Self.37b +// CHECK:STDOUT: %.Self.1 => constants.%.Self.37b // CHECK:STDOUT: %require_complete => constants.%complete_type.12f // CHECK:STDOUT: %Y.assoc_type => constants.%Y.assoc_type.06e // CHECK:STDOUT: %assoc0 => constants.%assoc0.0a6 -// CHECK:STDOUT: %.Self.as_type.loc54_20.2 => constants.%.Self.as_type.03a +// CHECK:STDOUT: %.Self.as_type.loc54_20.1 => constants.%.Self.as_type.03a // CHECK:STDOUT: %Y.lookup_impl_witness => constants.%Y.lookup_impl_witness.218 -// CHECK:STDOUT: %impl.elem0.loc54_20.2 => constants.%impl.elem0.a8c +// CHECK:STDOUT: %impl.elem0.loc54_20.1 => constants.%impl.elem0.a8c // CHECK:STDOUT: %Y_where.type => constants.%Y_where.type.8eb -// CHECK:STDOUT: %H.loc54_8.2 => constants.%facet_value +// CHECK:STDOUT: %H.loc54_8.1 => constants.%facet_value // CHECK:STDOUT: %pattern_type => constants.%pattern_type.ce4 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -409,11 +409,11 @@ fn F() { // CHECK:STDOUT: %Y_where.type.fee: type = facet_type <@Y, @Y(%OuterParam) where %impl.elem0.23d = %empty_tuple.type> [symbolic] // CHECK:STDOUT: %H: %Y_where.type.fee = bind_symbolic_name H, 1 [symbolic] // CHECK:STDOUT: %pattern_type.b86: type = pattern_type %Y_where.type.fee [symbolic] -// CHECK:STDOUT: %G.type.854: type = fn_type @G, @Outer(%OuterParam) [symbolic] -// CHECK:STDOUT: %G.e2b: %G.type.854 = struct_value () [symbolic] +// CHECK:STDOUT: %Outer.G.type.854: type = fn_type @Outer.G, @Outer(%OuterParam) [symbolic] +// CHECK:STDOUT: %Outer.G.e2b: %Outer.G.type.854 = struct_value () [symbolic] // CHECK:STDOUT: %C.4b0: type = class_type @C, @C(%OuterParam) [symbolic] // CHECK:STDOUT: %require_complete.1fd: = require_complete_type %Y_where.type.fee [symbolic] -// CHECK:STDOUT: %Y.impl_witness.f45: = impl_witness @Outer.%Y.impl_witness_table, @Y.impl(%OuterParam) [symbolic] +// CHECK:STDOUT: %Y.impl_witness.f45: = impl_witness @Outer.%Y.impl_witness_table, @C.as.Y.impl(%OuterParam) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %Z1.impl_witness: = impl_witness file.%Z1.impl_witness_table [concrete] @@ -423,20 +423,20 @@ fn F() { // CHECK:STDOUT: %BitAndWith.type.f2e: type = generic_interface_type @BitAndWith [concrete] // CHECK:STDOUT: %BitAndWith.generic: %BitAndWith.type.f2e = struct_value () [concrete] // CHECK:STDOUT: %BitAndWith.type.e8c: type = facet_type <@BitAndWith, @BitAndWith(type)> [concrete] -// CHECK:STDOUT: %Op.type.9a3: type = fn_type @Op.2, @BitAndWith(type) [concrete] +// CHECK:STDOUT: %BitAndWith.Op.type.9a3: type = fn_type @BitAndWith.Op, @BitAndWith(type) [concrete] // CHECK:STDOUT: %BitAndWith.impl_witness: = impl_witness imports.%BitAndWith.impl_witness_table [concrete] // CHECK:STDOUT: %BitAndWith.facet: %BitAndWith.type.e8c = facet_value type, (%BitAndWith.impl_witness) [concrete] -// CHECK:STDOUT: %.2af: type = fn_type_with_self_type %Op.type.9a3, %BitAndWith.facet [concrete] -// CHECK:STDOUT: %Op.type.1cc: type = fn_type @Op.1 [concrete] -// CHECK:STDOUT: %Op.ff4: %Op.type.1cc = struct_value () [concrete] -// CHECK:STDOUT: %Op.bound: = bound_method %Z1.type, %Op.ff4 [concrete] +// CHECK:STDOUT: %.2af: type = fn_type_with_self_type %BitAndWith.Op.type.9a3, %BitAndWith.facet [concrete] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.type: type = fn_type @type.as.BitAndWith.impl.Op [concrete] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op: %type.as.BitAndWith.impl.Op.type = struct_value () [concrete] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.bound: = bound_method %Z1.type, %type.as.BitAndWith.impl.Op [concrete] // CHECK:STDOUT: %facet_type: type = facet_type <@Z1 & @Z2> [concrete] // CHECK:STDOUT: %facet_value.74b: %facet_type = facet_value %empty_tuple.type, (%Z1.impl_witness, %Z2.impl_witness) [concrete] // CHECK:STDOUT: %Z1.facet: %Z1.type = facet_value %empty_tuple.type, (%Z1.impl_witness) [concrete] // CHECK:STDOUT: %Outer.aff: type = class_type @Outer, @Outer(%Z1.facet) [concrete] // CHECK:STDOUT: %Y.type.927: type = facet_type <@Y, @Y(%Z1.facet)> [concrete] -// CHECK:STDOUT: %G.type.663: type = fn_type @G, @Outer(%Z1.facet) [concrete] -// CHECK:STDOUT: %G.ba4: %G.type.663 = struct_value () [concrete] +// CHECK:STDOUT: %Outer.G.type.663: type = fn_type @Outer.G, @Outer(%Z1.facet) [concrete] +// CHECK:STDOUT: %Outer.G.ba4: %Outer.G.type.663 = struct_value () [concrete] // CHECK:STDOUT: %C.e73: type = class_type @C, @C(%Z1.facet) [concrete] // CHECK:STDOUT: %.Self.3de: %Y.type.927 = bind_symbolic_name .Self [symbolic_self] // CHECK:STDOUT: %Y.lookup_impl_witness.a49: = lookup_impl_witness %.Self.3de, @Y, @Y(%Z1.facet) [symbolic_self] @@ -448,10 +448,10 @@ fn F() { // CHECK:STDOUT: %complete_type.066: = complete_type_witness %Y.type.927 [concrete] // CHECK:STDOUT: %.Self.as_type.7ce: type = facet_access_type %.Self.3de [symbolic_self] // CHECK:STDOUT: %complete_type.997: = complete_type_witness %Y_where.type.6af [concrete] -// CHECK:STDOUT: %Y.impl_witness.997: = impl_witness @Outer.%Y.impl_witness_table, @Y.impl(%Z1.facet) [concrete] +// CHECK:STDOUT: %Y.impl_witness.997: = impl_witness @Outer.%Y.impl_witness_table, @C.as.Y.impl(%Z1.facet) [concrete] // CHECK:STDOUT: %facet_value.ed1: %Y_where.type.6af = facet_value %C.e73, (%Y.impl_witness.997) [concrete] // CHECK:STDOUT: %pattern_type.b1a: type = pattern_type %Y_where.type.6af [concrete] -// CHECK:STDOUT: %G.specific_fn: = specific_function %G.ba4, @G(%Z1.facet, %facet_value.ed1) [concrete] +// CHECK:STDOUT: %Outer.G.specific_fn: = specific_function %Outer.G.ba4, @Outer.G(%Z1.facet, %facet_value.ed1) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -461,8 +461,8 @@ fn F() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.BitAndWith: %BitAndWith.type.f2e = import_ref Core//prelude, BitAndWith, loaded [concrete = constants.%BitAndWith.generic] -// CHECK:STDOUT: %Core.import_ref.012: %Op.type.1cc = import_ref Core//prelude, loc13_42, loaded [concrete = constants.%Op.ff4] -// CHECK:STDOUT: %BitAndWith.impl_witness_table = impl_witness_table (%Core.import_ref.012), @BitAndWith.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.012: %type.as.BitAndWith.impl.Op.type = import_ref Core//prelude, loc13_42, loaded [concrete = constants.%type.as.BitAndWith.impl.Op] +// CHECK:STDOUT: %BitAndWith.impl_witness_table = impl_witness_table (%Core.import_ref.012), @type.as.BitAndWith.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -482,19 +482,19 @@ fn F() { // CHECK:STDOUT: %Z1.ref: type = name_ref Z1, file.%Z1.decl [concrete = constants.%Z1.type] // CHECK:STDOUT: %OuterParam.loc6_13.2: %Z1.type = bind_symbolic_name OuterParam, 0 [symbolic = %OuterParam.loc6_13.1 (constants.%OuterParam)] // CHECK:STDOUT: } -// CHECK:STDOUT: impl_decl @Z1.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @empty_tuple.type.as.Z1.impl [concrete] {} { // CHECK:STDOUT: %.loc17_7.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc17_7.2: type = converted %.loc17_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %Z1.ref: type = name_ref Z1, file.%Z1.decl [concrete = constants.%Z1.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %Z1.impl_witness_table = impl_witness_table (), @Z1.impl [concrete] +// CHECK:STDOUT: %Z1.impl_witness_table = impl_witness_table (), @empty_tuple.type.as.Z1.impl [concrete] // CHECK:STDOUT: %Z1.impl_witness: = impl_witness %Z1.impl_witness_table [concrete = constants.%Z1.impl_witness] -// CHECK:STDOUT: impl_decl @Z2.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @empty_tuple.type.as.Z2.impl [concrete] {} { // CHECK:STDOUT: %.loc18_7.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc18_7.2: type = converted %.loc18_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %Z2.ref: type = name_ref Z2, file.%Z2.decl [concrete = constants.%Z2.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %Z2.impl_witness_table = impl_witness_table (), @Z2.impl [concrete] +// CHECK:STDOUT: %Z2.impl_witness_table = impl_witness_table (), @empty_tuple.type.as.Z2.impl [concrete] // CHECK:STDOUT: %Z2.impl_witness: = impl_witness %Z2.impl_witness_table [concrete = constants.%Z2.impl_witness] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} // CHECK:STDOUT: } @@ -540,20 +540,20 @@ fn F() { // CHECK:STDOUT: assoc_const T:! type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @Y.impl(@Outer.%OuterParam.loc6_13.2: %Z1.type) { +// CHECK:STDOUT: generic impl @C.as.Y.impl(@Outer.%OuterParam.loc6_13.2: %Z1.type) { // CHECK:STDOUT: %OuterParam: %Z1.type = bind_symbolic_name OuterParam, 0 [symbolic = %OuterParam (constants.%OuterParam)] // CHECK:STDOUT: %C: type = class_type @C, @C(%OuterParam) [symbolic = %C (constants.%C.4b0)] // CHECK:STDOUT: %Y.type: type = facet_type <@Y, @Y(%OuterParam)> [symbolic = %Y.type (constants.%Y.type.5e4)] -// CHECK:STDOUT: %.Self.2: @Y.impl.%Y.type (%Y.type.5e4) = bind_symbolic_name .Self [symbolic = %.Self.2 (constants.%.Self.99e)] +// CHECK:STDOUT: %.Self.2: @C.as.Y.impl.%Y.type (%Y.type.5e4) = bind_symbolic_name .Self [symbolic = %.Self.2 (constants.%.Self.99e)] // CHECK:STDOUT: %require_complete.loc14_21: = require_complete_type %Y.type [symbolic = %require_complete.loc14_21 (constants.%require_complete.d37)] // CHECK:STDOUT: %Y.assoc_type: type = assoc_entity_type @Y, @Y(%OuterParam) [symbolic = %Y.assoc_type (constants.%Y.assoc_type.2a6)] -// CHECK:STDOUT: %assoc0: @Y.impl.%Y.assoc_type (%Y.assoc_type.2a6) = assoc_entity element0, @Y.%T [symbolic = %assoc0 (constants.%assoc0.603)] +// CHECK:STDOUT: %assoc0: @C.as.Y.impl.%Y.assoc_type (%Y.assoc_type.2a6) = assoc_entity element0, @Y.%T [symbolic = %assoc0 (constants.%assoc0.603)] // CHECK:STDOUT: %.Self.as_type.loc14_21.2: type = facet_access_type %.Self.2 [symbolic = %.Self.as_type.loc14_21.2 (constants.%.Self.as_type.3b9)] // CHECK:STDOUT: %Y.lookup_impl_witness: = lookup_impl_witness %.Self.2, @Y, @Y(%OuterParam) [symbolic = %Y.lookup_impl_witness (constants.%Y.lookup_impl_witness.c65)] // CHECK:STDOUT: %impl.elem0.loc14_21.2: type = impl_witness_access %Y.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc14_21.2 (constants.%impl.elem0.23d)] // CHECK:STDOUT: %Y_where.type: type = facet_type <@Y, @Y(%OuterParam) where %impl.elem0.loc14_21.2 = constants.%empty_tuple.type> [symbolic = %Y_where.type (constants.%Y_where.type.fee)] // CHECK:STDOUT: %require_complete.loc14_15: = require_complete_type %Y_where.type [symbolic = %require_complete.loc14_15 (constants.%require_complete.1fd)] -// CHECK:STDOUT: %Y.impl_witness: = impl_witness @Outer.%Y.impl_witness_table, @Y.impl(%OuterParam) [symbolic = %Y.impl_witness (constants.%Y.impl_witness.f45)] +// CHECK:STDOUT: %Y.impl_witness: = impl_witness @Outer.%Y.impl_witness_table, @C.as.Y.impl(%OuterParam) [symbolic = %Y.impl_witness (constants.%Y.impl_witness.f45)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -563,12 +563,12 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Z1.impl: %.loc17_7.2 as %Z1.ref { +// CHECK:STDOUT: impl @empty_tuple.type.as.Z1.impl: %.loc17_7.2 as %Z1.ref { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%Z1.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Z2.impl: %.loc18_7.2 as %Z2.ref { +// CHECK:STDOUT: impl @empty_tuple.type.as.Z2.impl: %.loc18_7.2 as %Z2.ref { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%Z2.impl_witness // CHECK:STDOUT: } @@ -578,43 +578,43 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Y.type: type = facet_type <@Y, @Y(%OuterParam.loc6_13.1)> [symbolic = %Y.type (constants.%Y.type.5e4)] -// CHECK:STDOUT: %G.type: type = fn_type @G, @Outer(%OuterParam.loc6_13.1) [symbolic = %G.type (constants.%G.type.854)] -// CHECK:STDOUT: %G: @Outer.%G.type (%G.type.854) = struct_value () [symbolic = %G (constants.%G.e2b)] +// CHECK:STDOUT: %Outer.G.type: type = fn_type @Outer.G, @Outer(%OuterParam.loc6_13.1) [symbolic = %Outer.G.type (constants.%Outer.G.type.854)] +// CHECK:STDOUT: %Outer.G: @Outer.%Outer.G.type (%Outer.G.type.854) = struct_value () [symbolic = %Outer.G (constants.%Outer.G.e2b)] // CHECK:STDOUT: %C: type = class_type @C, @C(%OuterParam.loc6_13.1) [symbolic = %C (constants.%C.4b0)] // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: %Y.decl: type = interface_decl @Y [symbolic = @Outer.%Y.type (constants.%Y.type.5e4)] {} {} -// CHECK:STDOUT: %G.decl: @Outer.%G.type (%G.type.854) = fn_decl @G [symbolic = @Outer.%G (constants.%G.e2b)] { -// CHECK:STDOUT: %H.patt: @G.%pattern_type (%pattern_type.b86) = symbolic_binding_pattern H, 1 [concrete] +// CHECK:STDOUT: %Outer.G.decl: @Outer.%Outer.G.type (%Outer.G.type.854) = fn_decl @Outer.G [symbolic = @Outer.%Outer.G (constants.%Outer.G.e2b)] { +// CHECK:STDOUT: %H.patt: @Outer.G.%pattern_type (%pattern_type.b86) = symbolic_binding_pattern H, 1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc11_14.1: type = splice_block %.loc11_14.2 [symbolic = %Y_where.type (constants.%Y_where.type.fee)] { // CHECK:STDOUT: %.loc11_12: type = specific_constant @Outer.%Y.decl, @Outer(constants.%OuterParam) [symbolic = %Y.type (constants.%Y.type.5e4)] // CHECK:STDOUT: %Y.ref: type = name_ref Y, %.loc11_12 [symbolic = %Y.type (constants.%Y.type.5e4)] -// CHECK:STDOUT: %.Self.1: @G.%Y.type (%Y.type.5e4) = bind_symbolic_name .Self [symbolic = %.Self.2 (constants.%.Self.99e)] -// CHECK:STDOUT: %.Self.ref: @G.%Y.type (%Y.type.5e4) = name_ref .Self, %.Self.1 [symbolic = %.Self.2 (constants.%.Self.99e)] -// CHECK:STDOUT: %.loc11_20.1: @G.%Y.assoc_type (%Y.assoc_type.2a6) = specific_constant @T.%assoc0, @Y(constants.%OuterParam) [symbolic = %assoc0 (constants.%assoc0.603)] -// CHECK:STDOUT: %T.ref: @G.%Y.assoc_type (%Y.assoc_type.2a6) = name_ref T, %.loc11_20.1 [symbolic = %assoc0 (constants.%assoc0.603)] -// CHECK:STDOUT: %.Self.as_type.loc11_20.1: type = facet_access_type %.Self.ref [symbolic = %.Self.as_type.loc11_20.2 (constants.%.Self.as_type.3b9)] -// CHECK:STDOUT: %.loc11_20.2: type = converted %.Self.ref, %.Self.as_type.loc11_20.1 [symbolic = %.Self.as_type.loc11_20.2 (constants.%.Self.as_type.3b9)] -// CHECK:STDOUT: %impl.elem0.loc11_20.1: type = impl_witness_access constants.%Y.lookup_impl_witness.c65, element0 [symbolic = %impl.elem0.loc11_20.2 (constants.%impl.elem0.23d)] +// CHECK:STDOUT: %.Self.2: @Outer.G.%Y.type (%Y.type.5e4) = bind_symbolic_name .Self [symbolic = %.Self.1 (constants.%.Self.99e)] +// CHECK:STDOUT: %.Self.ref: @Outer.G.%Y.type (%Y.type.5e4) = name_ref .Self, %.Self.2 [symbolic = %.Self.1 (constants.%.Self.99e)] +// CHECK:STDOUT: %.loc11_20.1: @Outer.G.%Y.assoc_type (%Y.assoc_type.2a6) = specific_constant @T.%assoc0, @Y(constants.%OuterParam) [symbolic = %assoc0 (constants.%assoc0.603)] +// CHECK:STDOUT: %T.ref: @Outer.G.%Y.assoc_type (%Y.assoc_type.2a6) = name_ref T, %.loc11_20.1 [symbolic = %assoc0 (constants.%assoc0.603)] +// CHECK:STDOUT: %.Self.as_type.loc11_20.2: type = facet_access_type %.Self.ref [symbolic = %.Self.as_type.loc11_20.1 (constants.%.Self.as_type.3b9)] +// CHECK:STDOUT: %.loc11_20.2: type = converted %.Self.ref, %.Self.as_type.loc11_20.2 [symbolic = %.Self.as_type.loc11_20.1 (constants.%.Self.as_type.3b9)] +// CHECK:STDOUT: %impl.elem0.loc11_20.2: type = impl_witness_access constants.%Y.lookup_impl_witness.c65, element0 [symbolic = %impl.elem0.loc11_20.1 (constants.%impl.elem0.23d)] // CHECK:STDOUT: %.loc11_26.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc11_26.2: type = converted %.loc11_26.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc11_14.2: type = where_expr %.Self.1 [symbolic = %Y_where.type (constants.%Y_where.type.fee)] { -// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc11_20.1, %.loc11_26.2 +// CHECK:STDOUT: %.loc11_14.2: type = where_expr %.Self.2 [symbolic = %Y_where.type (constants.%Y_where.type.fee)] { +// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc11_20.2, %.loc11_26.2 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %H.loc11_8.1: @G.%Y_where.type (%Y_where.type.fee) = bind_symbolic_name H, 1 [symbolic = %H.loc11_8.2 (constants.%H)] +// CHECK:STDOUT: %H.loc11_8.2: @Outer.G.%Y_where.type (%Y_where.type.fee) = bind_symbolic_name H, 1 [symbolic = %H.loc11_8.1 (constants.%H)] // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: type = class_decl @C [symbolic = @Outer.%C (constants.%C.4b0)] {} {} -// CHECK:STDOUT: impl_decl @Y.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.Y.impl [concrete] {} { // CHECK:STDOUT: %.loc14_8: type = specific_constant @Outer.%C.decl, @Outer(constants.%OuterParam) [symbolic = %C (constants.%C.4b0)] // CHECK:STDOUT: %C.ref: type = name_ref C, %.loc14_8 [symbolic = %C (constants.%C.4b0)] // CHECK:STDOUT: %.loc14_13: type = specific_constant @Outer.%Y.decl, @Outer(constants.%OuterParam) [symbolic = %Y.type (constants.%Y.type.5e4)] // CHECK:STDOUT: %Y.ref: type = name_ref Y, %.loc14_13 [symbolic = %Y.type (constants.%Y.type.5e4)] -// CHECK:STDOUT: %.Self.1: @Y.impl.%Y.type (%Y.type.5e4) = bind_symbolic_name .Self [symbolic = %.Self.2 (constants.%.Self.99e)] -// CHECK:STDOUT: %.Self.ref: @Y.impl.%Y.type (%Y.type.5e4) = name_ref .Self, %.Self.1 [symbolic = %.Self.2 (constants.%.Self.99e)] -// CHECK:STDOUT: %.loc14_21.1: @Y.impl.%Y.assoc_type (%Y.assoc_type.2a6) = specific_constant @T.%assoc0, @Y(constants.%OuterParam) [symbolic = %assoc0 (constants.%assoc0.603)] -// CHECK:STDOUT: %T.ref: @Y.impl.%Y.assoc_type (%Y.assoc_type.2a6) = name_ref T, %.loc14_21.1 [symbolic = %assoc0 (constants.%assoc0.603)] +// CHECK:STDOUT: %.Self.1: @C.as.Y.impl.%Y.type (%Y.type.5e4) = bind_symbolic_name .Self [symbolic = %.Self.2 (constants.%.Self.99e)] +// CHECK:STDOUT: %.Self.ref: @C.as.Y.impl.%Y.type (%Y.type.5e4) = name_ref .Self, %.Self.1 [symbolic = %.Self.2 (constants.%.Self.99e)] +// CHECK:STDOUT: %.loc14_21.1: @C.as.Y.impl.%Y.assoc_type (%Y.assoc_type.2a6) = specific_constant @T.%assoc0, @Y(constants.%OuterParam) [symbolic = %assoc0 (constants.%assoc0.603)] +// CHECK:STDOUT: %T.ref: @C.as.Y.impl.%Y.assoc_type (%Y.assoc_type.2a6) = name_ref T, %.loc14_21.1 [symbolic = %assoc0 (constants.%assoc0.603)] // CHECK:STDOUT: %.Self.as_type.loc14_21.1: type = facet_access_type %.Self.ref [symbolic = %.Self.as_type.loc14_21.2 (constants.%.Self.as_type.3b9)] // CHECK:STDOUT: %.loc14_21.2: type = converted %.Self.ref, %.Self.as_type.loc14_21.1 [symbolic = %.Self.as_type.loc14_21.2 (constants.%.Self.as_type.3b9)] // CHECK:STDOUT: %impl.elem0.loc14_21.1: type = impl_witness_access constants.%Y.lookup_impl_witness.c65, element0 [symbolic = %impl.elem0.loc14_21.2 (constants.%impl.elem0.23d)] @@ -624,8 +624,8 @@ fn F() { // CHECK:STDOUT: requirement_rewrite %impl.elem0.loc14_21.1, %.loc14_27.2 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %Y.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @Y.impl [concrete] -// CHECK:STDOUT: %Y.impl_witness: = impl_witness %Y.impl_witness_table, @Y.impl(constants.%OuterParam) [symbolic = @Y.impl.%Y.impl_witness (constants.%Y.impl_witness.f45)] +// CHECK:STDOUT: %Y.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @C.as.Y.impl [concrete] +// CHECK:STDOUT: %Y.impl_witness: = impl_witness %Y.impl_witness_table, @C.as.Y.impl(constants.%OuterParam) [symbolic = @C.as.Y.impl.%Y.impl_witness (constants.%Y.impl_witness.f45)] // CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] @@ -634,7 +634,7 @@ fn F() { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Outer.fea // CHECK:STDOUT: .Y = %Y.decl -// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .G = %Outer.G.decl // CHECK:STDOUT: .C = %C.decl // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -643,18 +643,18 @@ fn F() { // CHECK:STDOUT: class; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @G(@Outer.%OuterParam.loc6_13.2: %Z1.type, %H.loc11_8.1: @G.%Y_where.type (%Y_where.type.fee)) { +// CHECK:STDOUT: generic fn @Outer.G(@Outer.%OuterParam.loc6_13.2: %Z1.type, %H.loc11_8.2: @Outer.G.%Y_where.type (%Y_where.type.fee)) { // CHECK:STDOUT: %OuterParam: %Z1.type = bind_symbolic_name OuterParam, 0 [symbolic = %OuterParam (constants.%OuterParam)] // CHECK:STDOUT: %Y.type: type = facet_type <@Y, @Y(%OuterParam)> [symbolic = %Y.type (constants.%Y.type.5e4)] -// CHECK:STDOUT: %.Self.2: @G.%Y.type (%Y.type.5e4) = bind_symbolic_name .Self [symbolic = %.Self.2 (constants.%.Self.99e)] +// CHECK:STDOUT: %.Self.1: @Outer.G.%Y.type (%Y.type.5e4) = bind_symbolic_name .Self [symbolic = %.Self.1 (constants.%.Self.99e)] // CHECK:STDOUT: %require_complete: = require_complete_type %Y.type [symbolic = %require_complete (constants.%require_complete.d37)] // CHECK:STDOUT: %Y.assoc_type: type = assoc_entity_type @Y, @Y(%OuterParam) [symbolic = %Y.assoc_type (constants.%Y.assoc_type.2a6)] -// CHECK:STDOUT: %assoc0: @G.%Y.assoc_type (%Y.assoc_type.2a6) = assoc_entity element0, @Y.%T [symbolic = %assoc0 (constants.%assoc0.603)] -// CHECK:STDOUT: %.Self.as_type.loc11_20.2: type = facet_access_type %.Self.2 [symbolic = %.Self.as_type.loc11_20.2 (constants.%.Self.as_type.3b9)] -// CHECK:STDOUT: %Y.lookup_impl_witness: = lookup_impl_witness %.Self.2, @Y, @Y(%OuterParam) [symbolic = %Y.lookup_impl_witness (constants.%Y.lookup_impl_witness.c65)] -// CHECK:STDOUT: %impl.elem0.loc11_20.2: type = impl_witness_access %Y.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc11_20.2 (constants.%impl.elem0.23d)] -// CHECK:STDOUT: %Y_where.type: type = facet_type <@Y, @Y(%OuterParam) where %impl.elem0.loc11_20.2 = constants.%empty_tuple.type> [symbolic = %Y_where.type (constants.%Y_where.type.fee)] -// CHECK:STDOUT: %H.loc11_8.2: @G.%Y_where.type (%Y_where.type.fee) = bind_symbolic_name H, 1 [symbolic = %H.loc11_8.2 (constants.%H)] +// CHECK:STDOUT: %assoc0: @Outer.G.%Y.assoc_type (%Y.assoc_type.2a6) = assoc_entity element0, @Y.%T [symbolic = %assoc0 (constants.%assoc0.603)] +// CHECK:STDOUT: %.Self.as_type.loc11_20.1: type = facet_access_type %.Self.1 [symbolic = %.Self.as_type.loc11_20.1 (constants.%.Self.as_type.3b9)] +// CHECK:STDOUT: %Y.lookup_impl_witness: = lookup_impl_witness %.Self.1, @Y, @Y(%OuterParam) [symbolic = %Y.lookup_impl_witness (constants.%Y.lookup_impl_witness.c65)] +// CHECK:STDOUT: %impl.elem0.loc11_20.1: type = impl_witness_access %Y.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc11_20.1 (constants.%impl.elem0.23d)] +// CHECK:STDOUT: %Y_where.type: type = facet_type <@Y, @Y(%OuterParam) where %impl.elem0.loc11_20.1 = constants.%empty_tuple.type> [symbolic = %Y_where.type (constants.%Y_where.type.fee)] +// CHECK:STDOUT: %H.loc11_8.1: @Outer.G.%Y_where.type (%Y_where.type.fee) = bind_symbolic_name H, 1 [symbolic = %H.loc11_8.1 (constants.%H)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Y_where.type [symbolic = %pattern_type (constants.%pattern_type.b86)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -671,28 +671,28 @@ fn F() { // CHECK:STDOUT: %.loc21_10: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %Z1.ref.loc21_16: type = name_ref Z1, file.%Z1.decl [concrete = constants.%Z1.type] // CHECK:STDOUT: %Z2.ref.loc21_21: type = name_ref Z2, file.%Z2.decl [concrete = constants.%Z2.type] -// CHECK:STDOUT: %impl.elem0.loc21_19: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%Op.ff4] -// CHECK:STDOUT: %bound_method.loc21_19: = bound_method %Z1.ref.loc21_16, %impl.elem0.loc21_19 [concrete = constants.%Op.bound] -// CHECK:STDOUT: %type.and.loc21_19: init type = call %bound_method.loc21_19(%Z1.ref.loc21_16, %Z2.ref.loc21_21) [concrete = constants.%facet_type] -// CHECK:STDOUT: %.loc21_23.1: type = value_of_initializer %type.and.loc21_19 [concrete = constants.%facet_type] -// CHECK:STDOUT: %.loc21_23.2: type = converted %type.and.loc21_19, %.loc21_23.1 [concrete = constants.%facet_type] +// CHECK:STDOUT: %impl.elem0.loc21_19: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%type.as.BitAndWith.impl.Op] +// CHECK:STDOUT: %bound_method.loc21_19: = bound_method %Z1.ref.loc21_16, %impl.elem0.loc21_19 [concrete = constants.%type.as.BitAndWith.impl.Op.bound] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.call.loc21_19: init type = call %bound_method.loc21_19(%Z1.ref.loc21_16, %Z2.ref.loc21_21) [concrete = constants.%facet_type] +// CHECK:STDOUT: %.loc21_23.1: type = value_of_initializer %type.as.BitAndWith.impl.Op.call.loc21_19 [concrete = constants.%facet_type] +// CHECK:STDOUT: %.loc21_23.2: type = converted %type.as.BitAndWith.impl.Op.call.loc21_19, %.loc21_23.1 [concrete = constants.%facet_type] // CHECK:STDOUT: %facet_value.loc21_12: %facet_type = facet_value constants.%empty_tuple.type, (constants.%Z1.impl_witness, constants.%Z2.impl_witness) [concrete = constants.%facet_value.74b] // CHECK:STDOUT: %.loc21_12: %facet_type = converted %.loc21_10, %facet_value.loc21_12 [concrete = constants.%facet_value.74b] // CHECK:STDOUT: %as_type.loc21_24: type = facet_access_type constants.%facet_value.74b [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %Z1.facet.loc21_24: %Z1.type = facet_value %as_type.loc21_24, (constants.%Z1.impl_witness) [concrete = constants.%Z1.facet] // CHECK:STDOUT: %.loc21_24: %Z1.type = converted %.loc21_12, %Z1.facet.loc21_24 [concrete = constants.%Z1.facet] // CHECK:STDOUT: %Outer.loc21_24: type = class_type @Outer, @Outer(constants.%Z1.facet) [concrete = constants.%Outer.aff] -// CHECK:STDOUT: %.loc21_25: %G.type.663 = specific_constant @Outer.%G.decl, @Outer(constants.%Z1.facet) [concrete = constants.%G.ba4] -// CHECK:STDOUT: %G.ref: %G.type.663 = name_ref G, %.loc21_25 [concrete = constants.%G.ba4] +// CHECK:STDOUT: %.loc21_25: %Outer.G.type.663 = specific_constant @Outer.%Outer.G.decl, @Outer(constants.%Z1.facet) [concrete = constants.%Outer.G.ba4] +// CHECK:STDOUT: %G.ref: %Outer.G.type.663 = name_ref G, %.loc21_25 [concrete = constants.%Outer.G.ba4] // CHECK:STDOUT: %Outer.ref.loc21_28: %Outer.type = name_ref Outer, file.%Outer.decl [concrete = constants.%Outer.generic] // CHECK:STDOUT: %.loc21_35: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %Z1.ref.loc21_41: type = name_ref Z1, file.%Z1.decl [concrete = constants.%Z1.type] // CHECK:STDOUT: %Z2.ref.loc21_46: type = name_ref Z2, file.%Z2.decl [concrete = constants.%Z2.type] -// CHECK:STDOUT: %impl.elem0.loc21_44: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%Op.ff4] -// CHECK:STDOUT: %bound_method.loc21_44: = bound_method %Z1.ref.loc21_41, %impl.elem0.loc21_44 [concrete = constants.%Op.bound] -// CHECK:STDOUT: %type.and.loc21_44: init type = call %bound_method.loc21_44(%Z1.ref.loc21_41, %Z2.ref.loc21_46) [concrete = constants.%facet_type] -// CHECK:STDOUT: %.loc21_48.1: type = value_of_initializer %type.and.loc21_44 [concrete = constants.%facet_type] -// CHECK:STDOUT: %.loc21_48.2: type = converted %type.and.loc21_44, %.loc21_48.1 [concrete = constants.%facet_type] +// CHECK:STDOUT: %impl.elem0.loc21_44: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%type.as.BitAndWith.impl.Op] +// CHECK:STDOUT: %bound_method.loc21_44: = bound_method %Z1.ref.loc21_41, %impl.elem0.loc21_44 [concrete = constants.%type.as.BitAndWith.impl.Op.bound] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.call.loc21_44: init type = call %bound_method.loc21_44(%Z1.ref.loc21_41, %Z2.ref.loc21_46) [concrete = constants.%facet_type] +// CHECK:STDOUT: %.loc21_48.1: type = value_of_initializer %type.as.BitAndWith.impl.Op.call.loc21_44 [concrete = constants.%facet_type] +// CHECK:STDOUT: %.loc21_48.2: type = converted %type.as.BitAndWith.impl.Op.call.loc21_44, %.loc21_48.1 [concrete = constants.%facet_type] // CHECK:STDOUT: %facet_value.loc21_37: %facet_type = facet_value constants.%empty_tuple.type, (constants.%Z1.impl_witness, constants.%Z2.impl_witness) [concrete = constants.%facet_value.74b] // CHECK:STDOUT: %.loc21_37: %facet_type = converted %.loc21_35, %facet_value.loc21_37 [concrete = constants.%facet_value.74b] // CHECK:STDOUT: %as_type.loc21_49: type = facet_access_type constants.%facet_value.74b [concrete = constants.%empty_tuple.type] @@ -703,8 +703,8 @@ fn F() { // CHECK:STDOUT: %C.ref: type = name_ref C, %.loc21_50 [concrete = constants.%C.e73] // CHECK:STDOUT: %facet_value.loc21_52: %Y_where.type.6af = facet_value constants.%C.e73, (constants.%Y.impl_witness.997) [concrete = constants.%facet_value.ed1] // CHECK:STDOUT: %.loc21_52: %Y_where.type.6af = converted constants.%C.e73, %facet_value.loc21_52 [concrete = constants.%facet_value.ed1] -// CHECK:STDOUT: %G.specific_fn: = specific_function %G.ref, @G(constants.%Z1.facet, constants.%facet_value.ed1) [concrete = constants.%G.specific_fn] -// CHECK:STDOUT: %G.call: init %empty_tuple.type = call %G.specific_fn() +// CHECK:STDOUT: %Outer.G.specific_fn: = specific_function %G.ref, @Outer.G(constants.%Z1.facet, constants.%facet_value.ed1) [concrete = constants.%Outer.G.specific_fn] +// CHECK:STDOUT: %Outer.G.call: init %empty_tuple.type = call %Outer.G.specific_fn() // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -713,8 +713,8 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Y.type => constants.%Y.type.5e4 -// CHECK:STDOUT: %G.type => constants.%G.type.854 -// CHECK:STDOUT: %G => constants.%G.e2b +// CHECK:STDOUT: %Outer.G.type => constants.%Outer.G.type.854 +// CHECK:STDOUT: %Outer.G => constants.%Outer.G.e2b // CHECK:STDOUT: %C => constants.%C.4b0 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -731,24 +731,24 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: specific @T(constants.%OuterParam, constants.%Y.facet) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @G(constants.%OuterParam, constants.%H) { +// CHECK:STDOUT: specific @Outer.G(constants.%OuterParam, constants.%H) { // CHECK:STDOUT: %OuterParam => constants.%OuterParam // CHECK:STDOUT: %Y.type => constants.%Y.type.5e4 -// CHECK:STDOUT: %.Self.2 => constants.%.Self.99e +// CHECK:STDOUT: %.Self.1 => constants.%.Self.99e // CHECK:STDOUT: %require_complete => constants.%require_complete.d37 // CHECK:STDOUT: %Y.assoc_type => constants.%Y.assoc_type.2a6 // CHECK:STDOUT: %assoc0 => constants.%assoc0.603 -// CHECK:STDOUT: %.Self.as_type.loc11_20.2 => constants.%.Self.as_type.3b9 +// CHECK:STDOUT: %.Self.as_type.loc11_20.1 => constants.%.Self.as_type.3b9 // CHECK:STDOUT: %Y.lookup_impl_witness => constants.%Y.lookup_impl_witness.c65 -// CHECK:STDOUT: %impl.elem0.loc11_20.2 => constants.%impl.elem0.23d +// CHECK:STDOUT: %impl.elem0.loc11_20.1 => constants.%impl.elem0.23d // CHECK:STDOUT: %Y_where.type => constants.%Y_where.type.fee -// CHECK:STDOUT: %H.loc11_8.2 => constants.%H +// CHECK:STDOUT: %H.loc11_8.1 => constants.%H // CHECK:STDOUT: %pattern_type => constants.%pattern_type.b86 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @C(constants.%OuterParam) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @Y.impl(constants.%OuterParam) { +// CHECK:STDOUT: specific @C.as.Y.impl(constants.%OuterParam) { // CHECK:STDOUT: %OuterParam => constants.%OuterParam // CHECK:STDOUT: %C => constants.%C.4b0 // CHECK:STDOUT: %Y.type => constants.%Y.type.5e4 @@ -769,8 +769,8 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Y.type => constants.%Y.type.927 -// CHECK:STDOUT: %G.type => constants.%G.type.663 -// CHECK:STDOUT: %G => constants.%G.ba4 +// CHECK:STDOUT: %Outer.G.type => constants.%Outer.G.type.663 +// CHECK:STDOUT: %Outer.G => constants.%Outer.G.ba4 // CHECK:STDOUT: %C => constants.%C.e73 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -785,7 +785,7 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: specific @C(constants.%Z1.facet) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @Y.impl(constants.%Z1.facet) { +// CHECK:STDOUT: specific @C.as.Y.impl(constants.%Z1.facet) { // CHECK:STDOUT: %OuterParam => constants.%Z1.facet // CHECK:STDOUT: %C => constants.%C.e73 // CHECK:STDOUT: %Y.type => constants.%Y.type.927 @@ -803,18 +803,18 @@ fn F() { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @G(constants.%Z1.facet, constants.%facet_value.ed1) { +// CHECK:STDOUT: specific @Outer.G(constants.%Z1.facet, constants.%facet_value.ed1) { // CHECK:STDOUT: %OuterParam => constants.%Z1.facet // CHECK:STDOUT: %Y.type => constants.%Y.type.927 -// CHECK:STDOUT: %.Self.2 => constants.%.Self.3de +// CHECK:STDOUT: %.Self.1 => constants.%.Self.3de // CHECK:STDOUT: %require_complete => constants.%complete_type.066 // CHECK:STDOUT: %Y.assoc_type => constants.%Y.assoc_type.93b // CHECK:STDOUT: %assoc0 => constants.%assoc0.aa8 -// CHECK:STDOUT: %.Self.as_type.loc11_20.2 => constants.%.Self.as_type.7ce +// CHECK:STDOUT: %.Self.as_type.loc11_20.1 => constants.%.Self.as_type.7ce // CHECK:STDOUT: %Y.lookup_impl_witness => constants.%Y.lookup_impl_witness.a49 -// CHECK:STDOUT: %impl.elem0.loc11_20.2 => constants.%impl.elem0.8ce +// CHECK:STDOUT: %impl.elem0.loc11_20.1 => constants.%impl.elem0.8ce // CHECK:STDOUT: %Y_where.type => constants.%Y_where.type.6af -// CHECK:STDOUT: %H.loc11_8.2 => constants.%facet_value.ed1 +// CHECK:STDOUT: %H.loc11_8.1 => constants.%facet_value.ed1 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.b1a // CHECK:STDOUT: // CHECK:STDOUT: !definition: diff --git a/toolchain/check/testdata/impl/lookup/specialization_with_symbolic_rewrite.carbon b/toolchain/check/testdata/impl/lookup/specialization_with_symbolic_rewrite.carbon index fcaf038a6b7f..cb2f5c054115 100644 --- a/toolchain/check/testdata/impl/lookup/specialization_with_symbolic_rewrite.carbon +++ b/toolchain/check/testdata/impl/lookup/specialization_with_symbolic_rewrite.carbon @@ -122,7 +122,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %impl.elem0.240: type = impl_witness_access %Z.lookup_impl_witness.597, element0 [symbolic] // CHECK:STDOUT: %Z_where.type.80d: type = facet_type <@Z, @Z(%S) where %impl.elem0.240 = %empty_tuple.type> [symbolic] // CHECK:STDOUT: %require_complete.9ea: = require_complete_type %Z_where.type.80d [symbolic] -// CHECK:STDOUT: %Z.impl_witness.d59: = impl_witness file.%Z.impl_witness_table.loc9, @Z.impl.119(%T.8b3, %S) [symbolic] +// CHECK:STDOUT: %Z.impl_witness.d59: = impl_witness file.%Z.impl_witness_table.loc9, @T.as.Z.impl.119(%T.8b3, %S) [symbolic] // CHECK:STDOUT: %Z.type.049: type = facet_type <@Z, @Z(%C)> [concrete] // CHECK:STDOUT: %.Self.3c5: %Z.type.049 = bind_symbolic_name .Self [symbolic_self] // CHECK:STDOUT: %Self.a38: %Z.type.049 = bind_symbolic_name Self, 1 [symbolic] @@ -134,7 +134,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %impl.elem0.e29: type = impl_witness_access %Z.lookup_impl_witness.9cc, element0 [symbolic_self] // CHECK:STDOUT: %Z_where.type.692: type = facet_type <@Z, @Z(%C) where %impl.elem0.e29 = %T.8b3> [symbolic] // CHECK:STDOUT: %require_complete.202: = require_complete_type %Z_where.type.692 [symbolic] -// CHECK:STDOUT: %Z.impl_witness.093: = impl_witness file.%Z.impl_witness_table.loc11, @Z.impl.62c(%T.8b3) [symbolic] +// CHECK:STDOUT: %Z.impl_witness.093: = impl_witness file.%Z.impl_witness_table.loc11, @T.as.Z.impl.62c(%T.8b3) [symbolic] // CHECK:STDOUT: %T.62d: %Z.type.049 = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.c1f: type = pattern_type %Z.type.049 [concrete] // CHECK:STDOUT: %T.as_type: type = facet_access_type %T.62d [symbolic] @@ -144,7 +144,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %require_complete.2b1: = require_complete_type %T.as_type [symbolic] // CHECK:STDOUT: %Z_where.type.272: type = facet_type <@Z, @Z(%C) where %impl.elem0.e29 = %T.as_type> [symbolic] // CHECK:STDOUT: %require_complete.915: = require_complete_type %Z_where.type.272 [symbolic] -// CHECK:STDOUT: %Z.impl_witness.7c2: = impl_witness file.%Z.impl_witness_table.loc11, @Z.impl.62c(%T.as_type) [symbolic] +// CHECK:STDOUT: %Z.impl_witness.7c2: = impl_witness file.%Z.impl_witness_table.loc11, @T.as.Z.impl.62c(%T.as_type) [symbolic] // CHECK:STDOUT: %Z.facet.2aa: %Z.type.049 = facet_value %T.as_type, (%Z.impl_witness.7c2) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -169,7 +169,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %T.loc3_13.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc3_13.1 (constants.%T.8b3)] // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} -// CHECK:STDOUT: impl_decl @Z.impl.119 [concrete] { +// CHECK:STDOUT: impl_decl @T.as.Z.impl.119 [concrete] { // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: %S.patt: %pattern_type.98f = symbolic_binding_pattern S, 1 [concrete] // CHECK:STDOUT: } { @@ -177,10 +177,10 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %Z.ref: %Z.type.9fb = name_ref Z, file.%Z.decl [concrete = constants.%Z.generic] // CHECK:STDOUT: %S.ref: type = name_ref S, %S.loc9_24.1 [symbolic = %S.loc9_24.2 (constants.%S)] // CHECK:STDOUT: %Z.type.loc9_42.1: type = facet_type <@Z, @Z(constants.%S)> [symbolic = %Z.type.loc9_42.2 (constants.%Z.type.8e9)] -// CHECK:STDOUT: %.Self.1: @Z.impl.119.%Z.type.loc9_42.2 (%Z.type.8e9) = bind_symbolic_name .Self [symbolic = %.Self.2 (constants.%.Self.eb1)] -// CHECK:STDOUT: %.Self.ref: @Z.impl.119.%Z.type.loc9_42.2 (%Z.type.8e9) = name_ref .Self, %.Self.1 [symbolic = %.Self.2 (constants.%.Self.eb1)] -// CHECK:STDOUT: %.loc9_50.1: @Z.impl.119.%Z.assoc_type (%Z.assoc_type.0e7) = specific_constant @X.%assoc0, @Z(constants.%S) [symbolic = %assoc0 (constants.%assoc0.abb)] -// CHECK:STDOUT: %X.ref: @Z.impl.119.%Z.assoc_type (%Z.assoc_type.0e7) = name_ref X, %.loc9_50.1 [symbolic = %assoc0 (constants.%assoc0.abb)] +// CHECK:STDOUT: %.Self.1: @T.as.Z.impl.119.%Z.type.loc9_42.2 (%Z.type.8e9) = bind_symbolic_name .Self [symbolic = %.Self.2 (constants.%.Self.eb1)] +// CHECK:STDOUT: %.Self.ref: @T.as.Z.impl.119.%Z.type.loc9_42.2 (%Z.type.8e9) = name_ref .Self, %.Self.1 [symbolic = %.Self.2 (constants.%.Self.eb1)] +// CHECK:STDOUT: %.loc9_50.1: @T.as.Z.impl.119.%Z.assoc_type (%Z.assoc_type.0e7) = specific_constant @X.%assoc0, @Z(constants.%S) [symbolic = %assoc0 (constants.%assoc0.abb)] +// CHECK:STDOUT: %X.ref: @T.as.Z.impl.119.%Z.assoc_type (%Z.assoc_type.0e7) = name_ref X, %.loc9_50.1 [symbolic = %assoc0 (constants.%assoc0.abb)] // CHECK:STDOUT: %.Self.as_type.loc9_50.1: type = facet_access_type %.Self.ref [symbolic = %.Self.as_type.loc9_50.2 (constants.%.Self.as_type.ffd)] // CHECK:STDOUT: %.loc9_50.2: type = converted %.Self.ref, %.Self.as_type.loc9_50.1 [symbolic = %.Self.as_type.loc9_50.2 (constants.%.Self.as_type.ffd)] // CHECK:STDOUT: %impl.elem0.loc9_50.1: type = impl_witness_access constants.%Z.lookup_impl_witness.597, element0 [symbolic = %impl.elem0.loc9_50.2 (constants.%impl.elem0.240)] @@ -192,10 +192,10 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %T.loc9_14.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc9_14.2 (constants.%T.8b3)] // CHECK:STDOUT: %S.loc9_24.1: type = bind_symbolic_name S, 1 [symbolic = %S.loc9_24.2 (constants.%S)] // CHECK:STDOUT: } -// CHECK:STDOUT: %Z.impl_witness_table.loc9 = impl_witness_table (%impl_witness_assoc_constant.loc9), @Z.impl.119 [concrete] -// CHECK:STDOUT: %Z.impl_witness.loc9: = impl_witness %Z.impl_witness_table.loc9, @Z.impl.119(constants.%T.8b3, constants.%S) [symbolic = @Z.impl.119.%Z.impl_witness (constants.%Z.impl_witness.d59)] +// CHECK:STDOUT: %Z.impl_witness_table.loc9 = impl_witness_table (%impl_witness_assoc_constant.loc9), @T.as.Z.impl.119 [concrete] +// CHECK:STDOUT: %Z.impl_witness.loc9: = impl_witness %Z.impl_witness_table.loc9, @T.as.Z.impl.119(constants.%T.8b3, constants.%S) [symbolic = @T.as.Z.impl.119.%Z.impl_witness (constants.%Z.impl_witness.d59)] // CHECK:STDOUT: %impl_witness_assoc_constant.loc9: type = impl_witness_assoc_constant constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: impl_decl @Z.impl.62c [concrete] { +// CHECK:STDOUT: impl_decl @T.as.Z.impl.62c [concrete] { // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc11_30: type = name_ref T, %T.loc11_20.1 [symbolic = %T.loc11_20.2 (constants.%T.8b3)] @@ -215,9 +215,9 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc11_20.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc11_20.2 (constants.%T.8b3)] // CHECK:STDOUT: } -// CHECK:STDOUT: %Z.impl_witness_table.loc11 = impl_witness_table (%impl_witness_assoc_constant.loc11), @Z.impl.62c [concrete] -// CHECK:STDOUT: %Z.impl_witness.loc11: = impl_witness %Z.impl_witness_table.loc11, @Z.impl.62c(constants.%T.8b3) [symbolic = @Z.impl.62c.%Z.impl_witness (constants.%Z.impl_witness.093)] -// CHECK:STDOUT: %impl_witness_assoc_constant.loc11: type = impl_witness_assoc_constant constants.%T.8b3 [symbolic = @Z.impl.62c.%T.loc11_20.2 (constants.%T.8b3)] +// CHECK:STDOUT: %Z.impl_witness_table.loc11 = impl_witness_table (%impl_witness_assoc_constant.loc11), @T.as.Z.impl.62c [concrete] +// CHECK:STDOUT: %Z.impl_witness.loc11: = impl_witness %Z.impl_witness_table.loc11, @T.as.Z.impl.62c(constants.%T.8b3) [symbolic = @T.as.Z.impl.62c.%Z.impl_witness (constants.%Z.impl_witness.093)] +// CHECK:STDOUT: %impl_witness_assoc_constant.loc11: type = impl_witness_assoc_constant constants.%T.8b3 [symbolic = @T.as.Z.impl.62c.%T.loc11_20.2 (constants.%T.8b3)] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { // CHECK:STDOUT: %T.patt: %pattern_type.c1f = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: %t.patt: @F.%pattern_type (%pattern_type.d8b) = binding_pattern t [concrete] @@ -265,20 +265,20 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: assoc_const X:! type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @Z.impl.119(%T.loc9_14.1: type, %S.loc9_24.1: type) { +// CHECK:STDOUT: generic impl @T.as.Z.impl.119(%T.loc9_14.1: type, %S.loc9_24.1: type) { // CHECK:STDOUT: %T.loc9_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc9_14.2 (constants.%T.8b3)] // CHECK:STDOUT: %S.loc9_24.2: type = bind_symbolic_name S, 1 [symbolic = %S.loc9_24.2 (constants.%S)] // CHECK:STDOUT: %Z.type.loc9_42.2: type = facet_type <@Z, @Z(%S.loc9_24.2)> [symbolic = %Z.type.loc9_42.2 (constants.%Z.type.8e9)] -// CHECK:STDOUT: %.Self.2: @Z.impl.119.%Z.type.loc9_42.2 (%Z.type.8e9) = bind_symbolic_name .Self [symbolic = %.Self.2 (constants.%.Self.eb1)] +// CHECK:STDOUT: %.Self.2: @T.as.Z.impl.119.%Z.type.loc9_42.2 (%Z.type.8e9) = bind_symbolic_name .Self [symbolic = %.Self.2 (constants.%.Self.eb1)] // CHECK:STDOUT: %require_complete.loc9_50: = require_complete_type %Z.type.loc9_42.2 [symbolic = %require_complete.loc9_50 (constants.%require_complete.b87)] // CHECK:STDOUT: %Z.assoc_type: type = assoc_entity_type @Z, @Z(%S.loc9_24.2) [symbolic = %Z.assoc_type (constants.%Z.assoc_type.0e7)] -// CHECK:STDOUT: %assoc0: @Z.impl.119.%Z.assoc_type (%Z.assoc_type.0e7) = assoc_entity element0, @Z.%X [symbolic = %assoc0 (constants.%assoc0.abb)] +// CHECK:STDOUT: %assoc0: @T.as.Z.impl.119.%Z.assoc_type (%Z.assoc_type.0e7) = assoc_entity element0, @Z.%X [symbolic = %assoc0 (constants.%assoc0.abb)] // CHECK:STDOUT: %.Self.as_type.loc9_50.2: type = facet_access_type %.Self.2 [symbolic = %.Self.as_type.loc9_50.2 (constants.%.Self.as_type.ffd)] // CHECK:STDOUT: %Z.lookup_impl_witness: = lookup_impl_witness %.Self.2, @Z, @Z(%S.loc9_24.2) [symbolic = %Z.lookup_impl_witness (constants.%Z.lookup_impl_witness.597)] // CHECK:STDOUT: %impl.elem0.loc9_50.2: type = impl_witness_access %Z.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc9_50.2 (constants.%impl.elem0.240)] // CHECK:STDOUT: %Z_where.type: type = facet_type <@Z, @Z(%S.loc9_24.2) where %impl.elem0.loc9_50.2 = constants.%empty_tuple.type> [symbolic = %Z_where.type (constants.%Z_where.type.80d)] // CHECK:STDOUT: %require_complete.loc9_44: = require_complete_type %Z_where.type [symbolic = %require_complete.loc9_44 (constants.%require_complete.9ea)] -// CHECK:STDOUT: %Z.impl_witness: = impl_witness file.%Z.impl_witness_table.loc9, @Z.impl.119(%T.loc9_14.2, %S.loc9_24.2) [symbolic = %Z.impl_witness (constants.%Z.impl_witness.d59)] +// CHECK:STDOUT: %Z.impl_witness: = impl_witness file.%Z.impl_witness_table.loc9, @T.as.Z.impl.119(%T.loc9_14.2, %S.loc9_24.2) [symbolic = %Z.impl_witness (constants.%Z.impl_witness.d59)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -288,11 +288,11 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @Z.impl.62c(%T.loc11_20.1: type) { +// CHECK:STDOUT: generic impl @T.as.Z.impl.62c(%T.loc11_20.1: type) { // CHECK:STDOUT: %T.loc11_20.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc11_20.2 (constants.%T.8b3)] // CHECK:STDOUT: %Z_where.type: type = facet_type <@Z, @Z(constants.%C) where constants.%impl.elem0.e29 = %T.loc11_20.2> [symbolic = %Z_where.type (constants.%Z_where.type.692)] // CHECK:STDOUT: %require_complete: = require_complete_type %Z_where.type [symbolic = %require_complete (constants.%require_complete.202)] -// CHECK:STDOUT: %Z.impl_witness: = impl_witness file.%Z.impl_witness_table.loc11, @Z.impl.62c(%T.loc11_20.2) [symbolic = %Z.impl_witness (constants.%Z.impl_witness.093)] +// CHECK:STDOUT: %Z.impl_witness: = impl_witness file.%Z.impl_witness_table.loc11, @T.as.Z.impl.62c(%T.loc11_20.2) [symbolic = %Z.impl_witness (constants.%Z.impl_witness.093)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -318,7 +318,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %T.as_type.loc13_19.1 [symbolic = %require_complete (constants.%require_complete.2b1)] -// CHECK:STDOUT: %Z.impl_witness: = impl_witness file.%Z.impl_witness_table.loc11, @Z.impl.62c(%T.as_type.loc13_19.1) [symbolic = %Z.impl_witness (constants.%Z.impl_witness.7c2)] +// CHECK:STDOUT: %Z.impl_witness: = impl_witness file.%Z.impl_witness_table.loc11, @T.as.Z.impl.62c(%T.as_type.loc13_19.1) [symbolic = %Z.impl_witness (constants.%Z.impl_witness.7c2)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%t.param: @F.%T.as_type.loc13_19.1 (%T.as_type)) { // CHECK:STDOUT: !entry: @@ -359,7 +359,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: // CHECK:STDOUT: specific @X(constants.%S, constants.%Z.facet.4f7) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @Z.impl.119(constants.%T.8b3, constants.%S) { +// CHECK:STDOUT: specific @T.as.Z.impl.119(constants.%T.8b3, constants.%S) { // CHECK:STDOUT: %T.loc9_14.2 => constants.%T.8b3 // CHECK:STDOUT: %S.loc9_24.2 => constants.%S // CHECK:STDOUT: %Z.type.loc9_42.2 => constants.%Z.type.8e9 @@ -387,7 +387,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: // CHECK:STDOUT: specific @X(constants.%C, constants.%Z.facet.eb4) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @Z.impl.62c(constants.%T.8b3) { +// CHECK:STDOUT: specific @T.as.Z.impl.62c(constants.%T.8b3) { // CHECK:STDOUT: %T.loc11_20.2 => constants.%T.8b3 // CHECK:STDOUT: %Z_where.type => constants.%Z_where.type.692 // CHECK:STDOUT: %require_complete => constants.%require_complete.202 @@ -400,7 +400,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %pattern_type => constants.%pattern_type.d8b // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Z.impl.62c(constants.%T.as_type) { +// CHECK:STDOUT: specific @T.as.Z.impl.62c(constants.%T.as_type) { // CHECK:STDOUT: %T.loc11_20.2 => constants.%T.as_type // CHECK:STDOUT: %Z_where.type => constants.%Z_where.type.272 // CHECK:STDOUT: %require_complete => constants.%require_complete.915 @@ -441,7 +441,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %impl.elem0.240: type = impl_witness_access %Z.lookup_impl_witness.597, element0 [symbolic] // CHECK:STDOUT: %Z_where.type.80d: type = facet_type <@Z, @Z(%S) where %impl.elem0.240 = %empty_tuple.type> [symbolic] // CHECK:STDOUT: %require_complete.9ea: = require_complete_type %Z_where.type.80d [symbolic] -// CHECK:STDOUT: %Z.impl_witness.d59: = impl_witness file.%Z.impl_witness_table.loc10, @Z.impl.119(%T.8b3, %S) [symbolic] +// CHECK:STDOUT: %Z.impl_witness.d59: = impl_witness file.%Z.impl_witness_table.loc10, @T.as.Z.impl.119(%T.8b3, %S) [symbolic] // CHECK:STDOUT: %Z.type.049: type = facet_type <@Z, @Z(%C)> [concrete] // CHECK:STDOUT: %.Self.3c5: %Z.type.049 = bind_symbolic_name .Self [symbolic_self] // CHECK:STDOUT: %Self.a38: %Z.type.049 = bind_symbolic_name Self, 1 [symbolic] @@ -453,7 +453,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %impl.elem0.e29: type = impl_witness_access %Z.lookup_impl_witness.9cc, element0 [symbolic_self] // CHECK:STDOUT: %Z_where.type.692: type = facet_type <@Z, @Z(%C) where %impl.elem0.e29 = %T.8b3> [symbolic] // CHECK:STDOUT: %require_complete.202: = require_complete_type %Z_where.type.692 [symbolic] -// CHECK:STDOUT: %Z.impl_witness.093: = impl_witness file.%Z.impl_witness_table.loc12, @Z.impl.62c(%T.8b3) [symbolic] +// CHECK:STDOUT: %Z.impl_witness.093: = impl_witness file.%Z.impl_witness_table.loc12, @T.as.Z.impl.62c(%T.8b3) [symbolic] // CHECK:STDOUT: %T.62d: %Z.type.049 = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.c1f: type = pattern_type %Z.type.049 [concrete] // CHECK:STDOUT: %T.as_type: type = facet_access_type %T.62d [symbolic] @@ -469,8 +469,8 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %Dest: type = bind_symbolic_name Dest, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.275: type = fn_type @Convert, @ImplicitAs(%Dest) [symbolic] -// CHECK:STDOUT: %Convert.42e: %Convert.type.275 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.Convert.type.275: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%Dest) [symbolic] +// CHECK:STDOUT: %ImplicitAs.Convert.42e: %ImplicitAs.Convert.type.275 = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.assoc_type.ca0: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%Dest) [symbolic] // CHECK:STDOUT: %ImplicitAs.type.199: type = facet_type <@ImplicitAs, @ImplicitAs(%impl.elem0.284)> [symbolic] // CHECK:STDOUT: %ImplicitAs.assoc_type.bd9: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%impl.elem0.284) [symbolic] @@ -487,7 +487,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] // CHECK:STDOUT: %Core.import_ref.492: @ImplicitAs.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type.ca0) = import_ref Core//prelude/parts/as, loc12_35, loaded [symbolic = @ImplicitAs.%assoc0 (constants.%assoc0.dc0)] -// CHECK:STDOUT: %Core.import_ref.1c7: @ImplicitAs.%Convert.type (%Convert.type.275) = import_ref Core//prelude/parts/as, loc12_35, loaded [symbolic = @ImplicitAs.%Convert (constants.%Convert.42e)] +// CHECK:STDOUT: %Core.import_ref.1c7: @ImplicitAs.%ImplicitAs.Convert.type (%ImplicitAs.Convert.type.275) = import_ref Core//prelude/parts/as, loc12_35, loaded [symbolic = @ImplicitAs.%ImplicitAs.Convert (constants.%ImplicitAs.Convert.42e)] // CHECK:STDOUT: %Core.import_ref.207 = import_ref Core//prelude/parts/as, loc12_35, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: @@ -507,7 +507,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: } // CHECK:STDOUT: %Y.decl: type = interface_decl @Y [concrete = constants.%Y.type] {} {} // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} -// CHECK:STDOUT: impl_decl @Z.impl.119 [concrete] { +// CHECK:STDOUT: impl_decl @T.as.Z.impl.119 [concrete] { // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: %S.patt: %pattern_type.98f = symbolic_binding_pattern S, 1 [concrete] // CHECK:STDOUT: } { @@ -515,10 +515,10 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %Z.ref: %Z.type.9fb = name_ref Z, file.%Z.decl [concrete = constants.%Z.generic] // CHECK:STDOUT: %S.ref: type = name_ref S, %S.loc10_24.1 [symbolic = %S.loc10_24.2 (constants.%S)] // CHECK:STDOUT: %Z.type.loc10_42.1: type = facet_type <@Z, @Z(constants.%S)> [symbolic = %Z.type.loc10_42.2 (constants.%Z.type.8e9)] -// CHECK:STDOUT: %.Self.1: @Z.impl.119.%Z.type.loc10_42.2 (%Z.type.8e9) = bind_symbolic_name .Self [symbolic = %.Self.2 (constants.%.Self.eb1)] -// CHECK:STDOUT: %.Self.ref: @Z.impl.119.%Z.type.loc10_42.2 (%Z.type.8e9) = name_ref .Self, %.Self.1 [symbolic = %.Self.2 (constants.%.Self.eb1)] -// CHECK:STDOUT: %.loc10_50.1: @Z.impl.119.%Z.assoc_type (%Z.assoc_type.0e7) = specific_constant @X.%assoc0, @Z(constants.%S) [symbolic = %assoc0 (constants.%assoc0.abb)] -// CHECK:STDOUT: %X.ref: @Z.impl.119.%Z.assoc_type (%Z.assoc_type.0e7) = name_ref X, %.loc10_50.1 [symbolic = %assoc0 (constants.%assoc0.abb)] +// CHECK:STDOUT: %.Self.1: @T.as.Z.impl.119.%Z.type.loc10_42.2 (%Z.type.8e9) = bind_symbolic_name .Self [symbolic = %.Self.2 (constants.%.Self.eb1)] +// CHECK:STDOUT: %.Self.ref: @T.as.Z.impl.119.%Z.type.loc10_42.2 (%Z.type.8e9) = name_ref .Self, %.Self.1 [symbolic = %.Self.2 (constants.%.Self.eb1)] +// CHECK:STDOUT: %.loc10_50.1: @T.as.Z.impl.119.%Z.assoc_type (%Z.assoc_type.0e7) = specific_constant @X.%assoc0, @Z(constants.%S) [symbolic = %assoc0 (constants.%assoc0.abb)] +// CHECK:STDOUT: %X.ref: @T.as.Z.impl.119.%Z.assoc_type (%Z.assoc_type.0e7) = name_ref X, %.loc10_50.1 [symbolic = %assoc0 (constants.%assoc0.abb)] // CHECK:STDOUT: %.Self.as_type.loc10_50.1: type = facet_access_type %.Self.ref [symbolic = %.Self.as_type.loc10_50.2 (constants.%.Self.as_type.ffd)] // CHECK:STDOUT: %.loc10_50.2: type = converted %.Self.ref, %.Self.as_type.loc10_50.1 [symbolic = %.Self.as_type.loc10_50.2 (constants.%.Self.as_type.ffd)] // CHECK:STDOUT: %impl.elem0.loc10_50.1: type = impl_witness_access constants.%Z.lookup_impl_witness.597, element0 [symbolic = %impl.elem0.loc10_50.2 (constants.%impl.elem0.240)] @@ -530,10 +530,10 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %T.loc10_14.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc10_14.2 (constants.%T.8b3)] // CHECK:STDOUT: %S.loc10_24.1: type = bind_symbolic_name S, 1 [symbolic = %S.loc10_24.2 (constants.%S)] // CHECK:STDOUT: } -// CHECK:STDOUT: %Z.impl_witness_table.loc10 = impl_witness_table (%impl_witness_assoc_constant.loc10), @Z.impl.119 [concrete] -// CHECK:STDOUT: %Z.impl_witness.loc10: = impl_witness %Z.impl_witness_table.loc10, @Z.impl.119(constants.%T.8b3, constants.%S) [symbolic = @Z.impl.119.%Z.impl_witness (constants.%Z.impl_witness.d59)] +// CHECK:STDOUT: %Z.impl_witness_table.loc10 = impl_witness_table (%impl_witness_assoc_constant.loc10), @T.as.Z.impl.119 [concrete] +// CHECK:STDOUT: %Z.impl_witness.loc10: = impl_witness %Z.impl_witness_table.loc10, @T.as.Z.impl.119(constants.%T.8b3, constants.%S) [symbolic = @T.as.Z.impl.119.%Z.impl_witness (constants.%Z.impl_witness.d59)] // CHECK:STDOUT: %impl_witness_assoc_constant.loc10: type = impl_witness_assoc_constant constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: impl_decl @Z.impl.62c [concrete] { +// CHECK:STDOUT: impl_decl @T.as.Z.impl.62c [concrete] { // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc12_24: type = name_ref T, %T.loc12_14.1 [symbolic = %T.loc12_14.2 (constants.%T.8b3)] @@ -553,9 +553,9 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc12_14.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc12_14.2 (constants.%T.8b3)] // CHECK:STDOUT: } -// CHECK:STDOUT: %Z.impl_witness_table.loc12 = impl_witness_table (%impl_witness_assoc_constant.loc12), @Z.impl.62c [concrete] -// CHECK:STDOUT: %Z.impl_witness.loc12: = impl_witness %Z.impl_witness_table.loc12, @Z.impl.62c(constants.%T.8b3) [symbolic = @Z.impl.62c.%Z.impl_witness (constants.%Z.impl_witness.093)] -// CHECK:STDOUT: %impl_witness_assoc_constant.loc12: type = impl_witness_assoc_constant constants.%T.8b3 [symbolic = @Z.impl.62c.%T.loc12_14.2 (constants.%T.8b3)] +// CHECK:STDOUT: %Z.impl_witness_table.loc12 = impl_witness_table (%impl_witness_assoc_constant.loc12), @T.as.Z.impl.62c [concrete] +// CHECK:STDOUT: %Z.impl_witness.loc12: = impl_witness %Z.impl_witness_table.loc12, @T.as.Z.impl.62c(constants.%T.8b3) [symbolic = @T.as.Z.impl.62c.%Z.impl_witness (constants.%Z.impl_witness.093)] +// CHECK:STDOUT: %impl_witness_assoc_constant.loc12: type = impl_witness_assoc_constant constants.%T.8b3 [symbolic = @T.as.Z.impl.62c.%T.loc12_14.2 (constants.%T.8b3)] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { // CHECK:STDOUT: %T.patt: %pattern_type.c1f = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: %t.patt: @F.%pattern_type.loc14 (%pattern_type.d8b) = binding_pattern t [concrete] @@ -611,20 +611,20 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: assoc_const X:! type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @Z.impl.119(%T.loc10_14.1: type, %S.loc10_24.1: type) { +// CHECK:STDOUT: generic impl @T.as.Z.impl.119(%T.loc10_14.1: type, %S.loc10_24.1: type) { // CHECK:STDOUT: %T.loc10_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc10_14.2 (constants.%T.8b3)] // CHECK:STDOUT: %S.loc10_24.2: type = bind_symbolic_name S, 1 [symbolic = %S.loc10_24.2 (constants.%S)] // CHECK:STDOUT: %Z.type.loc10_42.2: type = facet_type <@Z, @Z(%S.loc10_24.2)> [symbolic = %Z.type.loc10_42.2 (constants.%Z.type.8e9)] -// CHECK:STDOUT: %.Self.2: @Z.impl.119.%Z.type.loc10_42.2 (%Z.type.8e9) = bind_symbolic_name .Self [symbolic = %.Self.2 (constants.%.Self.eb1)] +// CHECK:STDOUT: %.Self.2: @T.as.Z.impl.119.%Z.type.loc10_42.2 (%Z.type.8e9) = bind_symbolic_name .Self [symbolic = %.Self.2 (constants.%.Self.eb1)] // CHECK:STDOUT: %require_complete.loc10_50: = require_complete_type %Z.type.loc10_42.2 [symbolic = %require_complete.loc10_50 (constants.%require_complete.b87)] // CHECK:STDOUT: %Z.assoc_type: type = assoc_entity_type @Z, @Z(%S.loc10_24.2) [symbolic = %Z.assoc_type (constants.%Z.assoc_type.0e7)] -// CHECK:STDOUT: %assoc0: @Z.impl.119.%Z.assoc_type (%Z.assoc_type.0e7) = assoc_entity element0, @Z.%X [symbolic = %assoc0 (constants.%assoc0.abb)] +// CHECK:STDOUT: %assoc0: @T.as.Z.impl.119.%Z.assoc_type (%Z.assoc_type.0e7) = assoc_entity element0, @Z.%X [symbolic = %assoc0 (constants.%assoc0.abb)] // CHECK:STDOUT: %.Self.as_type.loc10_50.2: type = facet_access_type %.Self.2 [symbolic = %.Self.as_type.loc10_50.2 (constants.%.Self.as_type.ffd)] // CHECK:STDOUT: %Z.lookup_impl_witness: = lookup_impl_witness %.Self.2, @Z, @Z(%S.loc10_24.2) [symbolic = %Z.lookup_impl_witness (constants.%Z.lookup_impl_witness.597)] // CHECK:STDOUT: %impl.elem0.loc10_50.2: type = impl_witness_access %Z.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc10_50.2 (constants.%impl.elem0.240)] // CHECK:STDOUT: %Z_where.type: type = facet_type <@Z, @Z(%S.loc10_24.2) where %impl.elem0.loc10_50.2 = constants.%empty_tuple.type> [symbolic = %Z_where.type (constants.%Z_where.type.80d)] // CHECK:STDOUT: %require_complete.loc10_44: = require_complete_type %Z_where.type [symbolic = %require_complete.loc10_44 (constants.%require_complete.9ea)] -// CHECK:STDOUT: %Z.impl_witness: = impl_witness file.%Z.impl_witness_table.loc10, @Z.impl.119(%T.loc10_14.2, %S.loc10_24.2) [symbolic = %Z.impl_witness (constants.%Z.impl_witness.d59)] +// CHECK:STDOUT: %Z.impl_witness: = impl_witness file.%Z.impl_witness_table.loc10, @T.as.Z.impl.119(%T.loc10_14.2, %S.loc10_24.2) [symbolic = %Z.impl_witness (constants.%Z.impl_witness.d59)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -634,11 +634,11 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @Z.impl.62c(%T.loc12_14.1: type) { +// CHECK:STDOUT: generic impl @T.as.Z.impl.62c(%T.loc12_14.1: type) { // CHECK:STDOUT: %T.loc12_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc12_14.2 (constants.%T.8b3)] // CHECK:STDOUT: %Z_where.type: type = facet_type <@Z, @Z(constants.%C) where constants.%impl.elem0.e29 = %T.loc12_14.2> [symbolic = %Z_where.type (constants.%Z_where.type.692)] // CHECK:STDOUT: %require_complete: = require_complete_type %Z_where.type [symbolic = %require_complete (constants.%require_complete.202)] -// CHECK:STDOUT: %Z.impl_witness: = impl_witness file.%Z.impl_witness_table.loc12, @Z.impl.62c(%T.loc12_14.2) [symbolic = %Z.impl_witness (constants.%Z.impl_witness.093)] +// CHECK:STDOUT: %Z.impl_witness: = impl_witness file.%Z.impl_witness_table.loc12, @T.as.Z.impl.62c(%T.loc12_14.2) [symbolic = %Z.impl_witness (constants.%Z.impl_witness.093)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -714,7 +714,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: // CHECK:STDOUT: specific @X(constants.%S, constants.%Z.facet.4f7) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @Z.impl.119(constants.%T.8b3, constants.%S) { +// CHECK:STDOUT: specific @T.as.Z.impl.119(constants.%T.8b3, constants.%S) { // CHECK:STDOUT: %T.loc10_14.2 => constants.%T.8b3 // CHECK:STDOUT: %S.loc10_24.2 => constants.%S // CHECK:STDOUT: %Z.type.loc10_42.2 => constants.%Z.type.8e9 @@ -742,7 +742,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: // CHECK:STDOUT: specific @X(constants.%C, constants.%Z.facet.eb4) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @Z.impl.62c(constants.%T.8b3) { +// CHECK:STDOUT: specific @T.as.Z.impl.62c(constants.%T.8b3) { // CHECK:STDOUT: %T.loc12_14.2 => constants.%T.8b3 // CHECK:STDOUT: %Z_where.type => constants.%Z_where.type.692 // CHECK:STDOUT: %require_complete => constants.%require_complete.202 @@ -774,13 +774,13 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %ptr.79f131.1: type = ptr_type %U [symbolic] // CHECK:STDOUT: %Ptr_where.type.bd48cc.1: type = facet_type <@Ptr where %impl.elem0 = %ptr.79f131.1> [symbolic] // CHECK:STDOUT: %require_complete.465bad.1: = require_complete_type %Ptr_where.type.bd48cc.1 [symbolic] -// CHECK:STDOUT: %Ptr.impl_witness.e8ce81.1: = impl_witness file.%Ptr.impl_witness_table, @Ptr.impl(%U) [symbolic] +// CHECK:STDOUT: %Ptr.impl_witness.e8ce81.1: = impl_witness file.%Ptr.impl_witness_table, @U.as.Ptr.impl(%U) [symbolic] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %T [symbolic] // CHECK:STDOUT: %ptr.79f131.2: type = ptr_type %T [symbolic] // CHECK:STDOUT: %Ptr_where.type.bd48cc.2: type = facet_type <@Ptr where %impl.elem0 = %ptr.79f131.2> [symbolic] // CHECK:STDOUT: %require_complete.465bad.2: = require_complete_type %Ptr_where.type.bd48cc.2 [symbolic] -// CHECK:STDOUT: %Ptr.impl_witness.e8ce81.2: = impl_witness file.%Ptr.impl_witness_table, @Ptr.impl(%T) [symbolic] +// CHECK:STDOUT: %Ptr.impl_witness.e8ce81.2: = impl_witness file.%Ptr.impl_witness_table, @U.as.Ptr.impl(%T) [symbolic] // CHECK:STDOUT: %Ptr.facet.bbf: %Ptr.type = facet_value %T, (%Ptr.impl_witness.e8ce81.2) [symbolic] // CHECK:STDOUT: %pattern_type.afe: type = pattern_type %ptr.79f131.2 [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] @@ -804,7 +804,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Ptr.decl: type = interface_decl @Ptr [concrete = constants.%Ptr.type] {} {} -// CHECK:STDOUT: impl_decl @Ptr.impl [concrete] { +// CHECK:STDOUT: impl_decl @U.as.Ptr.impl [concrete] { // CHECK:STDOUT: %U.patt: %pattern_type.98f = symbolic_binding_pattern U, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %U.ref.loc7_30: type = name_ref U, %U.loc7_20.1 [symbolic = %U.loc7_20.2 (constants.%U)] @@ -822,9 +822,9 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc7_20.1: type = bind_symbolic_name U, 0 [symbolic = %U.loc7_20.2 (constants.%U)] // CHECK:STDOUT: } -// CHECK:STDOUT: %Ptr.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @Ptr.impl [concrete] -// CHECK:STDOUT: %Ptr.impl_witness: = impl_witness %Ptr.impl_witness_table, @Ptr.impl(constants.%U) [symbolic = @Ptr.impl.%Ptr.impl_witness (constants.%Ptr.impl_witness.e8ce81.1)] -// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%ptr.79f131.1 [symbolic = @Ptr.impl.%ptr.loc7_54.2 (constants.%ptr.79f131.1)] +// CHECK:STDOUT: %Ptr.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @U.as.Ptr.impl [concrete] +// CHECK:STDOUT: %Ptr.impl_witness: = impl_witness %Ptr.impl_witness_table, @U.as.Ptr.impl(constants.%U) [symbolic = @U.as.Ptr.impl.%Ptr.impl_witness (constants.%Ptr.impl_witness.e8ce81.1)] +// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%ptr.79f131.1 [symbolic = @U.as.Ptr.impl.%ptr.loc7_54.2 (constants.%ptr.79f131.1)] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: %t.patt: @F.%pattern_type.loc9_20 (%pattern_type.7dc) = binding_pattern t [concrete] @@ -864,12 +864,12 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: assoc_const Type:! type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @Ptr.impl(%U.loc7_20.1: type) { +// CHECK:STDOUT: generic impl @U.as.Ptr.impl(%U.loc7_20.1: type) { // CHECK:STDOUT: %U.loc7_20.2: type = bind_symbolic_name U, 0 [symbolic = %U.loc7_20.2 (constants.%U)] // CHECK:STDOUT: %ptr.loc7_54.2: type = ptr_type %U.loc7_20.2 [symbolic = %ptr.loc7_54.2 (constants.%ptr.79f131.1)] // CHECK:STDOUT: %Ptr_where.type: type = facet_type <@Ptr where constants.%impl.elem0 = %ptr.loc7_54.2> [symbolic = %Ptr_where.type (constants.%Ptr_where.type.bd48cc.1)] // CHECK:STDOUT: %require_complete: = require_complete_type %Ptr_where.type [symbolic = %require_complete (constants.%require_complete.465bad.1)] -// CHECK:STDOUT: %Ptr.impl_witness: = impl_witness file.%Ptr.impl_witness_table, @Ptr.impl(%U.loc7_20.2) [symbolic = %Ptr.impl_witness (constants.%Ptr.impl_witness.e8ce81.1)] +// CHECK:STDOUT: %Ptr.impl_witness: = impl_witness file.%Ptr.impl_witness_table, @U.as.Ptr.impl(%U.loc7_20.2) [symbolic = %Ptr.impl_witness (constants.%Ptr.impl_witness.e8ce81.1)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -882,7 +882,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: generic fn @F(%T.loc9_6.2: type) { // CHECK:STDOUT: %T.loc9_6.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc9_6.1 (constants.%T)] // CHECK:STDOUT: %pattern_type.loc9_20: type = pattern_type %T.loc9_6.1 [symbolic = %pattern_type.loc9_20 (constants.%pattern_type.7dc)] -// CHECK:STDOUT: %Ptr.impl_witness: = impl_witness file.%Ptr.impl_witness_table, @Ptr.impl(%T.loc9_6.1) [symbolic = %Ptr.impl_witness (constants.%Ptr.impl_witness.e8ce81.2)] +// CHECK:STDOUT: %Ptr.impl_witness: = impl_witness file.%Ptr.impl_witness_table, @U.as.Ptr.impl(%T.loc9_6.1) [symbolic = %Ptr.impl_witness (constants.%Ptr.impl_witness.e8ce81.2)] // CHECK:STDOUT: %Ptr.facet.loc9_30.1: %Ptr.type = facet_value %T.loc9_6.1, (%Ptr.impl_witness) [symbolic = %Ptr.facet.loc9_30.1 (constants.%Ptr.facet.bbf)] // CHECK:STDOUT: %ptr: type = ptr_type %T.loc9_6.1 [symbolic = %ptr (constants.%ptr.79f131.2)] // CHECK:STDOUT: %pattern_type.loc9_26: type = pattern_type %ptr [symbolic = %pattern_type.loc9_26 (constants.%pattern_type.afe)] @@ -903,7 +903,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: // CHECK:STDOUT: specific @Type(constants.%Ptr.facet.b6e) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @Ptr.impl(constants.%U) { +// CHECK:STDOUT: specific @U.as.Ptr.impl(constants.%U) { // CHECK:STDOUT: %U.loc7_20.2 => constants.%U // CHECK:STDOUT: %ptr.loc7_54.2 => constants.%ptr.79f131.1 // CHECK:STDOUT: %Ptr_where.type => constants.%Ptr_where.type.bd48cc.1 @@ -911,7 +911,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %Ptr.impl_witness => constants.%Ptr.impl_witness.e8ce81.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Ptr.impl(constants.%T) { +// CHECK:STDOUT: specific @U.as.Ptr.impl(constants.%T) { // CHECK:STDOUT: %U.loc7_20.2 => constants.%T // CHECK:STDOUT: %ptr.loc7_54.2 => constants.%ptr.79f131.2 // CHECK:STDOUT: %Ptr_where.type => constants.%Ptr_where.type.bd48cc.2 @@ -949,7 +949,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %ptr.79f: type = ptr_type %U [symbolic] // CHECK:STDOUT: %Ptr_where.type.bd4: type = facet_type <@Ptr where %impl.elem0 = %ptr.79f> [symbolic] // CHECK:STDOUT: %require_complete.465: = require_complete_type %Ptr_where.type.bd4 [symbolic] -// CHECK:STDOUT: %Ptr.impl_witness.e8c: = impl_witness file.%Ptr.impl_witness_table, @Ptr.impl(%U) [symbolic] +// CHECK:STDOUT: %Ptr.impl_witness.e8c: = impl_witness file.%Ptr.impl_witness_table, @U.as.Ptr.impl(%U) [symbolic] // CHECK:STDOUT: %T: %Ptr.type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.9bb: type = pattern_type %Ptr.type [concrete] // CHECK:STDOUT: %T.as_type: type = facet_access_type %T [symbolic] @@ -957,7 +957,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %ptr.900: type = ptr_type %T.as_type [symbolic] // CHECK:STDOUT: %Ptr_where.type.0d6: type = facet_type <@Ptr where %impl.elem0 = %ptr.900> [symbolic] // CHECK:STDOUT: %require_complete.d01: = require_complete_type %Ptr_where.type.0d6 [symbolic] -// CHECK:STDOUT: %Ptr.impl_witness.5aa: = impl_witness file.%Ptr.impl_witness_table, @Ptr.impl(%T.as_type) [symbolic] +// CHECK:STDOUT: %Ptr.impl_witness.5aa: = impl_witness file.%Ptr.impl_witness_table, @U.as.Ptr.impl(%T.as_type) [symbolic] // CHECK:STDOUT: %Ptr.facet.db8: %Ptr.type = facet_value %T.as_type, (%Ptr.impl_witness.5aa) [symbolic] // CHECK:STDOUT: %pattern_type.a95: type = pattern_type %ptr.900 [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] @@ -981,7 +981,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Ptr.decl: type = interface_decl @Ptr [concrete = constants.%Ptr.type] {} {} -// CHECK:STDOUT: impl_decl @Ptr.impl [concrete] { +// CHECK:STDOUT: impl_decl @U.as.Ptr.impl [concrete] { // CHECK:STDOUT: %U.patt: %pattern_type.98f = symbolic_binding_pattern U, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %U.ref.loc7_30: type = name_ref U, %U.loc7_20.1 [symbolic = %U.loc7_20.2 (constants.%U)] @@ -999,9 +999,9 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc7_20.1: type = bind_symbolic_name U, 0 [symbolic = %U.loc7_20.2 (constants.%U)] // CHECK:STDOUT: } -// CHECK:STDOUT: %Ptr.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @Ptr.impl [concrete] -// CHECK:STDOUT: %Ptr.impl_witness: = impl_witness %Ptr.impl_witness_table, @Ptr.impl(constants.%U) [symbolic = @Ptr.impl.%Ptr.impl_witness (constants.%Ptr.impl_witness.e8c)] -// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%ptr.79f [symbolic = @Ptr.impl.%ptr.loc7_54.2 (constants.%ptr.79f)] +// CHECK:STDOUT: %Ptr.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @U.as.Ptr.impl [concrete] +// CHECK:STDOUT: %Ptr.impl_witness: = impl_witness %Ptr.impl_witness_table, @U.as.Ptr.impl(constants.%U) [symbolic = @U.as.Ptr.impl.%Ptr.impl_witness (constants.%Ptr.impl_witness.e8c)] +// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%ptr.79f [symbolic = @U.as.Ptr.impl.%ptr.loc7_54.2 (constants.%ptr.79f)] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { // CHECK:STDOUT: %T.patt: %pattern_type.9bb = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: %t.patt: @F.%pattern_type.loc9_19 (%pattern_type.87e) = binding_pattern t [concrete] @@ -1047,12 +1047,12 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: assoc_const Type:! type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @Ptr.impl(%U.loc7_20.1: type) { +// CHECK:STDOUT: generic impl @U.as.Ptr.impl(%U.loc7_20.1: type) { // CHECK:STDOUT: %U.loc7_20.2: type = bind_symbolic_name U, 0 [symbolic = %U.loc7_20.2 (constants.%U)] // CHECK:STDOUT: %ptr.loc7_54.2: type = ptr_type %U.loc7_20.2 [symbolic = %ptr.loc7_54.2 (constants.%ptr.79f)] // CHECK:STDOUT: %Ptr_where.type: type = facet_type <@Ptr where constants.%impl.elem0 = %ptr.loc7_54.2> [symbolic = %Ptr_where.type (constants.%Ptr_where.type.bd4)] // CHECK:STDOUT: %require_complete: = require_complete_type %Ptr_where.type [symbolic = %require_complete (constants.%require_complete.465)] -// CHECK:STDOUT: %Ptr.impl_witness: = impl_witness file.%Ptr.impl_witness_table, @Ptr.impl(%U.loc7_20.2) [symbolic = %Ptr.impl_witness (constants.%Ptr.impl_witness.e8c)] +// CHECK:STDOUT: %Ptr.impl_witness: = impl_witness file.%Ptr.impl_witness_table, @U.as.Ptr.impl(%U.loc7_20.2) [symbolic = %Ptr.impl_witness (constants.%Ptr.impl_witness.e8c)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -1066,7 +1066,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %T.loc9_6.1: %Ptr.type = bind_symbolic_name T, 0 [symbolic = %T.loc9_6.1 (constants.%T)] // CHECK:STDOUT: %T.as_type.loc9_22.1: type = facet_access_type %T.loc9_6.1 [symbolic = %T.as_type.loc9_22.1 (constants.%T.as_type)] // CHECK:STDOUT: %pattern_type.loc9_19: type = pattern_type %T.as_type.loc9_22.1 [symbolic = %pattern_type.loc9_19 (constants.%pattern_type.87e)] -// CHECK:STDOUT: %Ptr.impl_witness: = impl_witness file.%Ptr.impl_witness_table, @Ptr.impl(%T.as_type.loc9_22.1) [symbolic = %Ptr.impl_witness (constants.%Ptr.impl_witness.5aa)] +// CHECK:STDOUT: %Ptr.impl_witness: = impl_witness file.%Ptr.impl_witness_table, @U.as.Ptr.impl(%T.as_type.loc9_22.1) [symbolic = %Ptr.impl_witness (constants.%Ptr.impl_witness.5aa)] // CHECK:STDOUT: %ptr: type = ptr_type %T.as_type.loc9_22.1 [symbolic = %ptr (constants.%ptr.900)] // CHECK:STDOUT: %pattern_type.loc9_25: type = pattern_type %ptr [symbolic = %pattern_type.loc9_25 (constants.%pattern_type.a95)] // CHECK:STDOUT: @@ -1086,7 +1086,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: // CHECK:STDOUT: specific @Type(constants.%Ptr.facet.b6e) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @Ptr.impl(constants.%U) { +// CHECK:STDOUT: specific @U.as.Ptr.impl(constants.%U) { // CHECK:STDOUT: %U.loc7_20.2 => constants.%U // CHECK:STDOUT: %ptr.loc7_54.2 => constants.%ptr.79f // CHECK:STDOUT: %Ptr_where.type => constants.%Ptr_where.type.bd4 @@ -1094,7 +1094,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %Ptr.impl_witness => constants.%Ptr.impl_witness.e8c // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Ptr.impl(constants.%T.as_type) { +// CHECK:STDOUT: specific @U.as.Ptr.impl(constants.%T.as_type) { // CHECK:STDOUT: %U.loc7_20.2 => constants.%T.as_type // CHECK:STDOUT: %ptr.loc7_54.2 => constants.%ptr.900 // CHECK:STDOUT: %Ptr_where.type => constants.%Ptr_where.type.0d6 @@ -1132,7 +1132,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %ptr.79f: type = ptr_type %U [symbolic] // CHECK:STDOUT: %Ptr_where.type.bd4: type = facet_type <@Ptr where %impl.elem0 = %ptr.79f> [symbolic] // CHECK:STDOUT: %require_complete.465: = require_complete_type %Ptr_where.type.bd4 [symbolic] -// CHECK:STDOUT: %Ptr.impl_witness.e8c: = impl_witness file.%Ptr.impl_witness_table, @Ptr.impl(%U) [symbolic] +// CHECK:STDOUT: %Ptr.impl_witness.e8c: = impl_witness file.%Ptr.impl_witness_table, @U.as.Ptr.impl(%U) [symbolic] // CHECK:STDOUT: %T: %Ptr.type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.9bb: type = pattern_type %Ptr.type [concrete] // CHECK:STDOUT: %T.as_type: type = facet_access_type %T [symbolic] @@ -1140,7 +1140,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %ptr.900: type = ptr_type %T.as_type [symbolic] // CHECK:STDOUT: %Ptr_where.type.0d6: type = facet_type <@Ptr where %impl.elem0 = %ptr.900> [symbolic] // CHECK:STDOUT: %require_complete.d01: = require_complete_type %Ptr_where.type.0d6 [symbolic] -// CHECK:STDOUT: %Ptr.impl_witness.5aa: = impl_witness file.%Ptr.impl_witness_table, @Ptr.impl(%T.as_type) [symbolic] +// CHECK:STDOUT: %Ptr.impl_witness.5aa: = impl_witness file.%Ptr.impl_witness_table, @U.as.Ptr.impl(%T.as_type) [symbolic] // CHECK:STDOUT: %Ptr.facet.db8: %Ptr.type = facet_value %T.as_type, (%Ptr.impl_witness.5aa) [symbolic] // CHECK:STDOUT: %pattern_type.a95: type = pattern_type %ptr.900 [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] @@ -1164,7 +1164,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Ptr.decl: type = interface_decl @Ptr [concrete = constants.%Ptr.type] {} {} -// CHECK:STDOUT: impl_decl @Ptr.impl [concrete] { +// CHECK:STDOUT: impl_decl @U.as.Ptr.impl [concrete] { // CHECK:STDOUT: %U.patt: %pattern_type.98f = symbolic_binding_pattern U, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %U.ref.loc7_30: type = name_ref U, %U.loc7_20.1 [symbolic = %U.loc7_20.2 (constants.%U)] @@ -1182,9 +1182,9 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc7_20.1: type = bind_symbolic_name U, 0 [symbolic = %U.loc7_20.2 (constants.%U)] // CHECK:STDOUT: } -// CHECK:STDOUT: %Ptr.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @Ptr.impl [concrete] -// CHECK:STDOUT: %Ptr.impl_witness: = impl_witness %Ptr.impl_witness_table, @Ptr.impl(constants.%U) [symbolic = @Ptr.impl.%Ptr.impl_witness (constants.%Ptr.impl_witness.e8c)] -// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%ptr.79f [symbolic = @Ptr.impl.%ptr.loc7_54.2 (constants.%ptr.79f)] +// CHECK:STDOUT: %Ptr.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @U.as.Ptr.impl [concrete] +// CHECK:STDOUT: %Ptr.impl_witness: = impl_witness %Ptr.impl_witness_table, @U.as.Ptr.impl(constants.%U) [symbolic = @U.as.Ptr.impl.%Ptr.impl_witness (constants.%Ptr.impl_witness.e8c)] +// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%ptr.79f [symbolic = @U.as.Ptr.impl.%ptr.loc7_54.2 (constants.%ptr.79f)] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { // CHECK:STDOUT: %T.patt: %pattern_type.9bb = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: %t.patt: @F.%pattern_type.loc9_19 (%pattern_type.87e) = binding_pattern t [concrete] @@ -1229,12 +1229,12 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: assoc_const Type:! type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @Ptr.impl(%U.loc7_20.1: type) { +// CHECK:STDOUT: generic impl @U.as.Ptr.impl(%U.loc7_20.1: type) { // CHECK:STDOUT: %U.loc7_20.2: type = bind_symbolic_name U, 0 [symbolic = %U.loc7_20.2 (constants.%U)] // CHECK:STDOUT: %ptr.loc7_54.2: type = ptr_type %U.loc7_20.2 [symbolic = %ptr.loc7_54.2 (constants.%ptr.79f)] // CHECK:STDOUT: %Ptr_where.type: type = facet_type <@Ptr where constants.%impl.elem0 = %ptr.loc7_54.2> [symbolic = %Ptr_where.type (constants.%Ptr_where.type.bd4)] // CHECK:STDOUT: %require_complete: = require_complete_type %Ptr_where.type [symbolic = %require_complete (constants.%require_complete.465)] -// CHECK:STDOUT: %Ptr.impl_witness: = impl_witness file.%Ptr.impl_witness_table, @Ptr.impl(%U.loc7_20.2) [symbolic = %Ptr.impl_witness (constants.%Ptr.impl_witness.e8c)] +// CHECK:STDOUT: %Ptr.impl_witness: = impl_witness file.%Ptr.impl_witness_table, @U.as.Ptr.impl(%U.loc7_20.2) [symbolic = %Ptr.impl_witness (constants.%Ptr.impl_witness.e8c)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -1248,7 +1248,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %T.loc9_6.1: %Ptr.type = bind_symbolic_name T, 0 [symbolic = %T.loc9_6.1 (constants.%T)] // CHECK:STDOUT: %T.as_type.loc9_22.1: type = facet_access_type %T.loc9_6.1 [symbolic = %T.as_type.loc9_22.1 (constants.%T.as_type)] // CHECK:STDOUT: %pattern_type.loc9_19: type = pattern_type %T.as_type.loc9_22.1 [symbolic = %pattern_type.loc9_19 (constants.%pattern_type.87e)] -// CHECK:STDOUT: %Ptr.impl_witness: = impl_witness file.%Ptr.impl_witness_table, @Ptr.impl(%T.as_type.loc9_22.1) [symbolic = %Ptr.impl_witness (constants.%Ptr.impl_witness.5aa)] +// CHECK:STDOUT: %Ptr.impl_witness: = impl_witness file.%Ptr.impl_witness_table, @U.as.Ptr.impl(%T.as_type.loc9_22.1) [symbolic = %Ptr.impl_witness (constants.%Ptr.impl_witness.5aa)] // CHECK:STDOUT: %ptr: type = ptr_type %T.as_type.loc9_22.1 [symbolic = %ptr (constants.%ptr.900)] // CHECK:STDOUT: %pattern_type.loc9_25: type = pattern_type %ptr [symbolic = %pattern_type.loc9_25 (constants.%pattern_type.a95)] // CHECK:STDOUT: @@ -1268,7 +1268,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: // CHECK:STDOUT: specific @Type(constants.%Ptr.facet.b6e) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @Ptr.impl(constants.%U) { +// CHECK:STDOUT: specific @U.as.Ptr.impl(constants.%U) { // CHECK:STDOUT: %U.loc7_20.2 => constants.%U // CHECK:STDOUT: %ptr.loc7_54.2 => constants.%ptr.79f // CHECK:STDOUT: %Ptr_where.type => constants.%Ptr_where.type.bd4 @@ -1276,7 +1276,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %Ptr.impl_witness => constants.%Ptr.impl_witness.e8c // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Ptr.impl(constants.%T.as_type) { +// CHECK:STDOUT: specific @U.as.Ptr.impl(constants.%T.as_type) { // CHECK:STDOUT: %U.loc7_20.2 => constants.%T.as_type // CHECK:STDOUT: %ptr.loc7_54.2 => constants.%ptr.900 // CHECK:STDOUT: %Ptr_where.type => constants.%Ptr_where.type.0d6 diff --git a/toolchain/check/testdata/impl/lookup/specific_args.carbon b/toolchain/check/testdata/impl/lookup/specific_args.carbon index c41dc2942dd5..d9409288b381 100644 --- a/toolchain/check/testdata/impl/lookup/specific_args.carbon +++ b/toolchain/check/testdata/impl/lookup/specific_args.carbon @@ -66,10 +66,10 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %Self: %I.type.325 = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic] // CHECK:STDOUT: %pattern_type.4be: type = pattern_type %Self.as_type [symbolic] -// CHECK:STDOUT: %F.type: type = fn_type @F, @I(%T) [symbolic] -// CHECK:STDOUT: %F: %F.type = struct_value () [symbolic] +// CHECK:STDOUT: %I.F.type: type = fn_type @I.F, @I(%T) [symbolic] +// CHECK:STDOUT: %I.F: %I.F.type = struct_value () [symbolic] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I, @I(%T) [symbolic] -// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%F.decl [symbolic] +// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%I.F.decl [symbolic] // CHECK:STDOUT: %C.type: type = generic_class_type @C [concrete] // CHECK:STDOUT: %C.generic: %C.type = struct_value () [concrete] // CHECK:STDOUT: %C: type = class_type @C, @C(%T) [symbolic] @@ -103,32 +103,32 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: !definition: // CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T.loc4_13.1)> [symbolic = %I.type (constants.%I.type.325)] // CHECK:STDOUT: %Self.2: @I.%I.type (%I.type.325) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] -// CHECK:STDOUT: %F.type: type = fn_type @F, @I(%T.loc4_13.1) [symbolic = %F.type (constants.%F.type)] -// CHECK:STDOUT: %F: @I.%F.type (%F.type) = struct_value () [symbolic = %F (constants.%F)] +// CHECK:STDOUT: %I.F.type: type = fn_type @I.F, @I(%T.loc4_13.1) [symbolic = %I.F.type (constants.%I.F.type)] +// CHECK:STDOUT: %I.F: @I.%I.F.type (%I.F.type) = struct_value () [symbolic = %I.F (constants.%I.F)] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I, @I(%T.loc4_13.1) [symbolic = %I.assoc_type (constants.%I.assoc_type)] -// CHECK:STDOUT: %assoc0.loc4_43.2: @I.%I.assoc_type (%I.assoc_type) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc4_43.2 (constants.%assoc0)] +// CHECK:STDOUT: %assoc0.loc4_43.2: @I.%I.assoc_type (%I.assoc_type) = assoc_entity element0, %I.F.decl [symbolic = %assoc0.loc4_43.2 (constants.%assoc0)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: %Self.1: @I.%I.type (%I.type.325) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] -// CHECK:STDOUT: %F.decl: @I.%F.type (%F.type) = fn_decl @F [symbolic = @I.%F (constants.%F)] { -// CHECK:STDOUT: %self.patt: @F.%pattern_type (%pattern_type.4be) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.%pattern_type (%pattern_type.4be) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %I.F.decl: @I.%I.F.type (%I.F.type) = fn_decl @I.F [symbolic = @I.%I.F (constants.%I.F)] { +// CHECK:STDOUT: %self.patt: @I.F.%pattern_type (%pattern_type.4be) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @I.F.%pattern_type (%pattern_type.4be) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @F.%Self.as_type.loc4_36.2 (%Self.as_type) = value_param call_param0 -// CHECK:STDOUT: %.loc4_36.1: type = splice_block %.loc4_36.3 [symbolic = %Self.as_type.loc4_36.2 (constants.%Self.as_type)] { -// CHECK:STDOUT: %.loc4_36.2: @F.%I.type (%I.type.325) = specific_constant @I.%Self.1, @I(constants.%T) [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.ref: @F.%I.type (%I.type.325) = name_ref Self, %.loc4_36.2 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc4_36.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc4_36.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc4_36.3: type = converted %Self.ref, %Self.as_type.loc4_36.1 [symbolic = %Self.as_type.loc4_36.2 (constants.%Self.as_type)] +// CHECK:STDOUT: %self.param: @I.F.%Self.as_type.loc4_36.1 (%Self.as_type) = value_param call_param0 +// CHECK:STDOUT: %.loc4_36.1: type = splice_block %.loc4_36.3 [symbolic = %Self.as_type.loc4_36.1 (constants.%Self.as_type)] { +// CHECK:STDOUT: %.loc4_36.2: @I.F.%I.type (%I.type.325) = specific_constant @I.%Self.1, @I(constants.%T) [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %Self.ref: @I.F.%I.type (%I.type.325) = name_ref Self, %.loc4_36.2 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %Self.as_type.loc4_36.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc4_36.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc4_36.3: type = converted %Self.ref, %Self.as_type.loc4_36.2 [symbolic = %Self.as_type.loc4_36.1 (constants.%Self.as_type)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.%Self.as_type.loc4_36.2 (%Self.as_type) = bind_name self, %self.param +// CHECK:STDOUT: %self: @I.F.%Self.as_type.loc4_36.1 (%Self.as_type) = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0.loc4_43.1: @I.%I.assoc_type (%I.assoc_type) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc4_43.2 (constants.%assoc0)] +// CHECK:STDOUT: %assoc0.loc4_43.1: @I.%I.assoc_type (%I.assoc_type) = assoc_entity element0, %I.F.decl [symbolic = %assoc0.loc4_43.2 (constants.%assoc0)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 // CHECK:STDOUT: .F = %assoc0.loc4_43.1 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%I.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -156,25 +156,25 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: .Self = constants.%X // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(@I.%T.loc4_13.2: type, @I.%Self.1: @I.%I.type (%I.type.325)) { +// CHECK:STDOUT: generic fn @I.F(@I.%T.loc4_13.2: type, @I.%Self.1: @I.%I.type (%I.type.325)) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T)> [symbolic = %I.type (constants.%I.type.325)] -// CHECK:STDOUT: %Self: @F.%I.type (%I.type.325) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc4_36.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc4_36.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc4_36.2 [symbolic = %pattern_type (constants.%pattern_type.4be)] +// CHECK:STDOUT: %Self: @I.F.%I.type (%I.type.325) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %Self.as_type.loc4_36.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc4_36.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc4_36.1 [symbolic = %pattern_type (constants.%pattern_type.4be)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @F.%Self.as_type.loc4_36.2 (%Self.as_type)); +// CHECK:STDOUT: fn(%self.param: @I.F.%Self.as_type.loc4_36.1 (%Self.as_type)); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @I(constants.%T) { // CHECK:STDOUT: %T.loc4_13.1 => constants.%T // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%T, constants.%Self) { +// CHECK:STDOUT: specific @I.F(constants.%T, constants.%Self) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %I.type => constants.%I.type.325 // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %Self.as_type.loc4_36.2 => constants.%Self.as_type +// CHECK:STDOUT: %Self.as_type.loc4_36.1 => constants.%Self.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.4be // CHECK:STDOUT: } // CHECK:STDOUT: @@ -194,22 +194,22 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %I.type.325: type = facet_type <@I, @I(%T)> [symbolic] // CHECK:STDOUT: %Self.209: %I.type.325 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %F.type.2ae: type = fn_type @F.1, @I(%T) [symbolic] -// CHECK:STDOUT: %F.bb2: %F.type.2ae = struct_value () [symbolic] +// CHECK:STDOUT: %I.F.type.2ae: type = fn_type @I.F, @I(%T) [symbolic] +// CHECK:STDOUT: %I.F.bb2: %I.F.type.2ae = struct_value () [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self.209 [symbolic] // CHECK:STDOUT: %pattern_type.4be: type = pattern_type %Self.as_type [symbolic] // CHECK:STDOUT: %I.assoc_type.1e5: type = assoc_entity_type @I, @I(%T) [symbolic] // CHECK:STDOUT: %assoc0.688: %I.assoc_type.1e5 = assoc_entity element0, imports.%Main.import_ref.479 [symbolic] // CHECK:STDOUT: %I.type.e45: type = facet_type <@I, @I(%InInterfaceArgs)> [concrete] // CHECK:STDOUT: %Self.061: %I.type.e45 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %F.type.14f: type = fn_type @F.1, @I(%InInterfaceArgs) [concrete] -// CHECK:STDOUT: %F.b81: %F.type.14f = struct_value () [concrete] +// CHECK:STDOUT: %I.F.type.14f: type = fn_type @I.F, @I(%InInterfaceArgs) [concrete] +// CHECK:STDOUT: %I.F.b81: %I.F.type.14f = struct_value () [concrete] // CHECK:STDOUT: %I.assoc_type.521: type = assoc_entity_type @I, @I(%InInterfaceArgs) [concrete] // CHECK:STDOUT: %assoc0.676: %I.assoc_type.521 = assoc_entity element0, imports.%Main.import_ref.479 [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.019: type = pattern_type %X [concrete] -// CHECK:STDOUT: %F.type.b63: type = fn_type @F.loc7 [concrete] -// CHECK:STDOUT: %F.d5f: %F.type.b63 = struct_value () [concrete] +// CHECK:STDOUT: %X.as.I.impl.F.type: type = fn_type @X.as.I.impl.F [concrete] +// CHECK:STDOUT: %X.as.I.impl.F: %X.as.I.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %I.facet: %I.type.e45 = facet_value %X, (%I.impl_witness) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -222,7 +222,7 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %Main.import_ref.5ab3ec.1: type = import_ref Main//types, loc4_13, loaded [symbolic = @I.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.884 = import_ref Main//types, inst25 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.2bb = import_ref Main//types, loc4_43, unloaded -// CHECK:STDOUT: %Main.F: @I.%F.type (%F.type.2ae) = import_ref Main//types, F, loaded [symbolic = @I.%F (constants.%F.bb2)] +// CHECK:STDOUT: %Main.F: @I.%I.F.type (%I.F.type.2ae) = import_ref Main//types, F, loaded [symbolic = @I.%I.F (constants.%I.F.bb2)] // CHECK:STDOUT: %Main.import_ref.5ab3ec.2: type = import_ref Main//types, loc4_13, loaded [symbolic = @I.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.38e: @I.%I.type (%I.type.325) = import_ref Main//types, inst25 [no loc], loaded [symbolic = @I.%Self (constants.%Self.209)] // CHECK:STDOUT: %Main.import_ref.479 = import_ref Main//types, loc4_43, unloaded @@ -237,13 +237,13 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %InInterfaceArgs.decl: type = class_decl @InInterfaceArgs [concrete = constants.%InInterfaceArgs] {} {} -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @X.as.I.impl [concrete] {} { // CHECK:STDOUT: %X.ref: type = name_ref X, imports.%Main.X [concrete = constants.%X] // CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, imports.%Main.I [concrete = constants.%I.generic] // CHECK:STDOUT: %InInterfaceArgs.ref: type = name_ref InInterfaceArgs, file.%InInterfaceArgs.decl [concrete = constants.%InInterfaceArgs] // CHECK:STDOUT: %I.type: type = facet_type <@I, @I(constants.%InInterfaceArgs)> [concrete = constants.%I.type.e45] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (@I.impl.%F.decl), @I.impl [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (@X.as.I.impl.%X.as.I.impl.F.decl), @X.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -253,8 +253,8 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: !definition: // CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T)> [symbolic = %I.type (constants.%I.type.325)] // CHECK:STDOUT: %Self: @I.%I.type (%I.type.325) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.209)] -// CHECK:STDOUT: %F.type: type = fn_type @F.1, @I(%T) [symbolic = %F.type (constants.%F.type.2ae)] -// CHECK:STDOUT: %F: @I.%F.type (%F.type.2ae) = struct_value () [symbolic = %F (constants.%F.bb2)] +// CHECK:STDOUT: %I.F.type: type = fn_type @I.F, @I(%T) [symbolic = %I.F.type (constants.%I.F.type.2ae)] +// CHECK:STDOUT: %I.F: @I.%I.F.type (%I.F.type.2ae) = struct_value () [symbolic = %I.F (constants.%I.F.bb2)] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I, @I(%T) [symbolic = %I.assoc_type (constants.%I.assoc_type.1e5)] // CHECK:STDOUT: %assoc0: @I.%I.assoc_type (%I.assoc_type.1e5) = assoc_entity element0, imports.%Main.import_ref.479 [symbolic = %assoc0 (constants.%assoc0.688)] // CHECK:STDOUT: @@ -266,18 +266,18 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: %X.ref as %I.type { -// CHECK:STDOUT: %F.decl: %F.type.b63 = fn_decl @F.loc7 [concrete = constants.%F.d5f] { +// CHECK:STDOUT: impl @X.as.I.impl: %X.ref as %I.type { +// CHECK:STDOUT: %X.as.I.impl.F.decl: %X.as.I.impl.F.type = fn_decl @X.as.I.impl.F [concrete = constants.%X.as.I.impl.F] { // CHECK:STDOUT: %self.patt: %pattern_type.019 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.019 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %self.param: %X = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @I.impl.%X.ref [concrete = constants.%X] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @X.as.I.impl.%X.ref [concrete = constants.%X] // CHECK:STDOUT: %self: %X = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %X.as.I.impl.F.decl // CHECK:STDOUT: witness = file.%I.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: @@ -297,17 +297,17 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: .Self = imports.%Main.import_ref.acf // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.1(imports.%Main.import_ref.5ab3ec.2: type, imports.%Main.import_ref.38e: @I.%I.type (%I.type.325)) [from "types.carbon"] { +// CHECK:STDOUT: generic fn @I.F(imports.%Main.import_ref.5ab3ec.2: type, imports.%Main.import_ref.38e: @I.%I.type (%I.type.325)) [from "types.carbon"] { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T)> [symbolic = %I.type (constants.%I.type.325)] -// CHECK:STDOUT: %Self: @F.1.%I.type (%I.type.325) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.209)] +// CHECK:STDOUT: %Self: @I.F.%I.type (%I.type.325) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.209)] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic = %Self.as_type (constants.%Self.as_type)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type [symbolic = %pattern_type (constants.%pattern_type.4be)] // CHECK:STDOUT: // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc7(%self.param: %X) { +// CHECK:STDOUT: fn @X.as.I.impl.F(%self.param: %X) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -316,7 +316,7 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.1(constants.%T, constants.%Self.209) { +// CHECK:STDOUT: specific @I.F(constants.%T, constants.%Self.209) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %I.type => constants.%I.type.325 // CHECK:STDOUT: %Self => constants.%Self.209 @@ -330,13 +330,13 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: !definition: // CHECK:STDOUT: %I.type => constants.%I.type.e45 // CHECK:STDOUT: %Self => constants.%Self.061 -// CHECK:STDOUT: %F.type => constants.%F.type.14f -// CHECK:STDOUT: %F => constants.%F.b81 +// CHECK:STDOUT: %I.F.type => constants.%I.F.type.14f +// CHECK:STDOUT: %I.F => constants.%I.F.b81 // CHECK:STDOUT: %I.assoc_type => constants.%I.assoc_type.521 // CHECK:STDOUT: %assoc0 => constants.%assoc0.676 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.1(constants.%InInterfaceArgs, constants.%I.facet) { +// CHECK:STDOUT: specific @I.F(constants.%InInterfaceArgs, constants.%I.facet) { // CHECK:STDOUT: %T => constants.%InInterfaceArgs // CHECK:STDOUT: %I.type => constants.%I.type.e45 // CHECK:STDOUT: %Self => constants.%I.facet @@ -359,8 +359,8 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %I.type.325: type = facet_type <@I, @I(%T)> [symbolic] // CHECK:STDOUT: %Self.209: %I.type.325 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %F.type.2ae: type = fn_type @F.1, @I(%T) [symbolic] -// CHECK:STDOUT: %F.bb2: %F.type.2ae = struct_value () [symbolic] +// CHECK:STDOUT: %I.F.type.2ae: type = fn_type @I.F, @I(%T) [symbolic] +// CHECK:STDOUT: %I.F.bb2: %I.F.type.2ae = struct_value () [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self.209 [symbolic] // CHECK:STDOUT: %pattern_type.4be: type = pattern_type %Self.as_type [symbolic] // CHECK:STDOUT: %I.assoc_type.1e5: type = assoc_entity_type @I, @I(%T) [symbolic] @@ -368,16 +368,16 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %InInterfaceArgs: type = class_type @InInterfaceArgs [concrete] // CHECK:STDOUT: %I.type.e45: type = facet_type <@I, @I(%InInterfaceArgs)> [concrete] // CHECK:STDOUT: %Self.061: %I.type.e45 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %F.type.14f: type = fn_type @F.1, @I(%InInterfaceArgs) [concrete] -// CHECK:STDOUT: %F.b81: %F.type.14f = struct_value () [concrete] +// CHECK:STDOUT: %I.F.type.14f: type = fn_type @I.F, @I(%InInterfaceArgs) [concrete] +// CHECK:STDOUT: %I.F.b81: %I.F.type.14f = struct_value () [concrete] // CHECK:STDOUT: %I.assoc_type.521: type = assoc_entity_type @I, @I(%InInterfaceArgs) [concrete] // CHECK:STDOUT: %assoc0.63d: %I.assoc_type.521 = assoc_entity element0, imports.%Main.import_ref.e54 [concrete] // CHECK:STDOUT: %assoc0.688: %I.assoc_type.1e5 = assoc_entity element0, imports.%Main.import_ref.479 [symbolic] // CHECK:STDOUT: %I.impl_witness: = impl_witness imports.%I.impl_witness_table [concrete] // CHECK:STDOUT: %I.facet: %I.type.e45 = facet_value %X, (%I.impl_witness) [concrete] -// CHECK:STDOUT: %.658: type = fn_type_with_self_type %F.type.14f, %I.facet [concrete] -// CHECK:STDOUT: %F.type.b63: type = fn_type @F.2 [concrete] -// CHECK:STDOUT: %F.d5f: %F.type.b63 = struct_value () [concrete] +// CHECK:STDOUT: %.658: type = fn_type_with_self_type %I.F.type.14f, %I.facet [concrete] +// CHECK:STDOUT: %X.as.I.impl.F.type: type = fn_type @X.as.I.impl.F [concrete] +// CHECK:STDOUT: %X.as.I.impl.F: %X.as.I.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -393,15 +393,15 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %Main.F = import_ref Main//types, F, unloaded // CHECK:STDOUT: %Main.import_ref.5ab3ec.2: type = import_ref Main//types, loc4_13, loaded [symbolic = @I.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.38e: @I.%I.type (%I.type.325) = import_ref Main//types, inst25 [no loc], loaded [symbolic = @I.%Self (constants.%Self.209)] -// CHECK:STDOUT: %Main.import_ref.e54: @I.%F.type (%F.type.2ae) = import_ref Main//types, loc4_43, loaded [symbolic = @I.%F (constants.%F.bb2)] +// CHECK:STDOUT: %Main.import_ref.e54: @I.%I.F.type (%I.F.type.2ae) = import_ref Main//types, loc4_43, loaded [symbolic = @I.%I.F (constants.%I.F.bb2)] // CHECK:STDOUT: %Main.import_ref.8f24d3.2: = import_ref Main//impl_in_interface_args, loc5_24, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.bf8 = import_ref Main//impl_in_interface_args, inst20 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.479 = import_ref Main//types, loc4_43, unloaded // CHECK:STDOUT: %Main.import_ref.e08: = import_ref Main//impl_in_interface_args, loc7_30, loaded [concrete = constants.%I.impl_witness] // CHECK:STDOUT: %Main.import_ref.956: type = import_ref Main//impl_in_interface_args, loc7_6, loaded [concrete = constants.%X] // CHECK:STDOUT: %Main.import_ref.e8c: type = import_ref Main//impl_in_interface_args, loc7_28, loaded [concrete = constants.%I.type.e45] -// CHECK:STDOUT: %Main.import_ref.7f5: %F.type.b63 = import_ref Main//impl_in_interface_args, loc7_51, loaded [concrete = constants.%F.d5f] -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%Main.import_ref.7f5), @I.impl [concrete] +// CHECK:STDOUT: %Main.import_ref.7f5: %X.as.I.impl.F.type = import_ref Main//impl_in_interface_args, loc7_51, loaded [concrete = constants.%X.as.I.impl.F] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%Main.import_ref.7f5), @X.as.I.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -429,8 +429,8 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: !definition: // CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T)> [symbolic = %I.type (constants.%I.type.325)] // CHECK:STDOUT: %Self: @I.%I.type (%I.type.325) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.209)] -// CHECK:STDOUT: %F.type: type = fn_type @F.1, @I(%T) [symbolic = %F.type (constants.%F.type.2ae)] -// CHECK:STDOUT: %F: @I.%F.type (%F.type.2ae) = struct_value () [symbolic = %F (constants.%F.bb2)] +// CHECK:STDOUT: %I.F.type: type = fn_type @I.F, @I(%T) [symbolic = %I.F.type (constants.%I.F.type.2ae)] +// CHECK:STDOUT: %I.F: @I.%I.F.type (%I.F.type.2ae) = struct_value () [symbolic = %I.F (constants.%I.F.bb2)] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I, @I(%T) [symbolic = %I.assoc_type (constants.%I.assoc_type.1e5)] // CHECK:STDOUT: %assoc0: @I.%I.assoc_type (%I.assoc_type.1e5) = assoc_entity element0, imports.%Main.import_ref.e54 [symbolic = %assoc0 (constants.%assoc0.429)] // CHECK:STDOUT: @@ -442,7 +442,7 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: imports.%Main.import_ref.956 as imports.%Main.import_ref.e8c [from "impl_in_interface_args.carbon"] { +// CHECK:STDOUT: impl @X.as.I.impl: imports.%Main.import_ref.956 as imports.%Main.import_ref.e8c [from "impl_in_interface_args.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = imports.%Main.import_ref.e08 // CHECK:STDOUT: } @@ -469,29 +469,29 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %I.type: type = facet_type <@I, @I(constants.%InInterfaceArgs)> [concrete = constants.%I.type.e45] // CHECK:STDOUT: %.loc6: %I.assoc_type.521 = specific_constant imports.%Main.import_ref.474, @I(constants.%InInterfaceArgs) [concrete = constants.%assoc0.63d] // CHECK:STDOUT: %F.ref: %I.assoc_type.521 = name_ref F, %.loc6 [concrete = constants.%assoc0.63d] -// CHECK:STDOUT: %impl.elem0: %.658 = impl_witness_access constants.%I.impl_witness, element0 [concrete = constants.%F.d5f] +// CHECK:STDOUT: %impl.elem0: %.658 = impl_witness_access constants.%I.impl_witness, element0 [concrete = constants.%X.as.I.impl.F] // CHECK:STDOUT: %bound_method: = bound_method %x.ref, %impl.elem0 -// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %bound_method(%x.ref) +// CHECK:STDOUT: %X.as.I.impl.F.call: init %empty_tuple.type = call %bound_method(%x.ref) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.1(imports.%Main.import_ref.5ab3ec.2: type, imports.%Main.import_ref.38e: @I.%I.type (%I.type.325)) [from "types.carbon"] { +// CHECK:STDOUT: generic fn @I.F(imports.%Main.import_ref.5ab3ec.2: type, imports.%Main.import_ref.38e: @I.%I.type (%I.type.325)) [from "types.carbon"] { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T)> [symbolic = %I.type (constants.%I.type.325)] -// CHECK:STDOUT: %Self: @F.1.%I.type (%I.type.325) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.209)] +// CHECK:STDOUT: %Self: @I.F.%I.type (%I.type.325) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.209)] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic = %Self.as_type (constants.%Self.as_type)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type [symbolic = %pattern_type (constants.%pattern_type.4be)] // CHECK:STDOUT: // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.2 [from "impl_in_interface_args.carbon"]; +// CHECK:STDOUT: fn @X.as.I.impl.F [from "impl_in_interface_args.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: specific @I(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.1(constants.%T, constants.%Self.209) { +// CHECK:STDOUT: specific @I.F(constants.%T, constants.%Self.209) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %I.type => constants.%I.type.325 // CHECK:STDOUT: %Self => constants.%Self.209 @@ -505,8 +505,8 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: !definition: // CHECK:STDOUT: %I.type => constants.%I.type.e45 // CHECK:STDOUT: %Self => constants.%Self.061 -// CHECK:STDOUT: %F.type => constants.%F.type.14f -// CHECK:STDOUT: %F => constants.%F.b81 +// CHECK:STDOUT: %I.F.type => constants.%I.F.type.14f +// CHECK:STDOUT: %I.F => constants.%I.F.b81 // CHECK:STDOUT: %I.assoc_type => constants.%I.assoc_type.521 // CHECK:STDOUT: %assoc0 => constants.%assoc0.63d // CHECK:STDOUT: } @@ -525,8 +525,8 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %I.generic: %I.type.dac = struct_value () [concrete] // CHECK:STDOUT: %I.type.325: type = facet_type <@I, @I(%T)> [symbolic] // CHECK:STDOUT: %Self.209: %I.type.325 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %F.type.2ae: type = fn_type @F.1, @I(%T) [symbolic] -// CHECK:STDOUT: %F.bb2: %F.type.2ae = struct_value () [symbolic] +// CHECK:STDOUT: %I.F.type.2ae: type = fn_type @I.F, @I(%T) [symbolic] +// CHECK:STDOUT: %I.F.bb2: %I.F.type.2ae = struct_value () [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self.209 [symbolic] // CHECK:STDOUT: %pattern_type.4be: type = pattern_type %Self.as_type [symbolic] // CHECK:STDOUT: %I.assoc_type.1e5: type = assoc_entity_type @I, @I(%T) [symbolic] @@ -534,14 +534,14 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %X: type = class_type @X [concrete] // CHECK:STDOUT: %I.type.45c: type = facet_type <@I, @I(%X)> [concrete] // CHECK:STDOUT: %Self.a34: %I.type.45c = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %F.type.56a: type = fn_type @F.1, @I(%X) [concrete] -// CHECK:STDOUT: %F.a79: %F.type.56a = struct_value () [concrete] +// CHECK:STDOUT: %I.F.type.56a: type = fn_type @I.F, @I(%X) [concrete] +// CHECK:STDOUT: %I.F.a79: %I.F.type.56a = struct_value () [concrete] // CHECK:STDOUT: %I.assoc_type.2db: type = assoc_entity_type @I, @I(%X) [concrete] // CHECK:STDOUT: %assoc0.8c1: %I.assoc_type.2db = assoc_entity element0, imports.%Main.import_ref.479 [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.e06: type = pattern_type %C.23b [concrete] -// CHECK:STDOUT: %F.type.fab: type = fn_type @F.loc7 [concrete] -// CHECK:STDOUT: %F.7ab: %F.type.fab = struct_value () [concrete] +// CHECK:STDOUT: %C.as.I.impl.F.type: type = fn_type @C.as.I.impl.F [concrete] +// CHECK:STDOUT: %C.as.I.impl.F: %C.as.I.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %I.facet: %I.type.45c = facet_value %C.23b, (%I.impl_witness) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -555,7 +555,7 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %Main.import_ref.5ab3ec.2: type = import_ref Main//types, loc4_13, loaded [symbolic = @I.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.884 = import_ref Main//types, inst25 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.2bb = import_ref Main//types, loc4_43, unloaded -// CHECK:STDOUT: %Main.F: @I.%F.type (%F.type.2ae) = import_ref Main//types, F, loaded [symbolic = @I.%F (constants.%F.bb2)] +// CHECK:STDOUT: %Main.F: @I.%I.F.type (%I.F.type.2ae) = import_ref Main//types, F, loaded [symbolic = @I.%I.F (constants.%I.F.bb2)] // CHECK:STDOUT: %Main.import_ref.5ab3ec.3: type = import_ref Main//types, loc4_13, loaded [symbolic = @I.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.38e: @I.%I.type (%I.type.325) = import_ref Main//types, inst25 [no loc], loaded [symbolic = @I.%Self (constants.%Self.209)] // CHECK:STDOUT: %Main.import_ref.479 = import_ref Main//types, loc4_43, unloaded @@ -572,7 +572,7 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %InClassArgs.decl: type = class_decl @InClassArgs [concrete = constants.%InClassArgs] {} {} -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.I.impl [concrete] {} { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%Main.C [concrete = constants.%C.generic] // CHECK:STDOUT: %InClassArgs.ref: type = name_ref InClassArgs, file.%InClassArgs.decl [concrete = constants.%InClassArgs] // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%InClassArgs) [concrete = constants.%C.23b] @@ -580,7 +580,7 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %X.ref: type = name_ref X, imports.%Main.X [concrete = constants.%X] // CHECK:STDOUT: %I.type: type = facet_type <@I, @I(constants.%X)> [concrete = constants.%I.type.45c] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (@I.impl.%F.decl), @I.impl [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (@C.as.I.impl.%C.as.I.impl.F.decl), @C.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -590,8 +590,8 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: !definition: // CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T)> [symbolic = %I.type (constants.%I.type.325)] // CHECK:STDOUT: %Self: @I.%I.type (%I.type.325) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.209)] -// CHECK:STDOUT: %F.type: type = fn_type @F.1, @I(%T) [symbolic = %F.type (constants.%F.type.2ae)] -// CHECK:STDOUT: %F: @I.%F.type (%F.type.2ae) = struct_value () [symbolic = %F (constants.%F.bb2)] +// CHECK:STDOUT: %I.F.type: type = fn_type @I.F, @I(%T) [symbolic = %I.F.type (constants.%I.F.type.2ae)] +// CHECK:STDOUT: %I.F: @I.%I.F.type (%I.F.type.2ae) = struct_value () [symbolic = %I.F (constants.%I.F.bb2)] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I, @I(%T) [symbolic = %I.assoc_type (constants.%I.assoc_type.1e5)] // CHECK:STDOUT: %assoc0: @I.%I.assoc_type (%I.assoc_type.1e5) = assoc_entity element0, imports.%Main.import_ref.479 [symbolic = %assoc0 (constants.%assoc0.688)] // CHECK:STDOUT: @@ -603,18 +603,18 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: %C as %I.type { -// CHECK:STDOUT: %F.decl: %F.type.fab = fn_decl @F.loc7 [concrete = constants.%F.7ab] { +// CHECK:STDOUT: impl @C.as.I.impl: %C as %I.type { +// CHECK:STDOUT: %C.as.I.impl.F.decl: %C.as.I.impl.F.type = fn_decl @C.as.I.impl.F [concrete = constants.%C.as.I.impl.F] { // CHECK:STDOUT: %self.patt: %pattern_type.e06 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.e06 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %self.param: %C.23b = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @I.impl.%C [concrete = constants.%C.23b] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @C.as.I.impl.%C [concrete = constants.%C.23b] // CHECK:STDOUT: %self: %C.23b = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %C.as.I.impl.F.decl // CHECK:STDOUT: witness = file.%I.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: @@ -647,17 +647,17 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: .Self = imports.%Main.import_ref.acf // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.1(imports.%Main.import_ref.5ab3ec.3: type, imports.%Main.import_ref.38e: @I.%I.type (%I.type.325)) [from "types.carbon"] { +// CHECK:STDOUT: generic fn @I.F(imports.%Main.import_ref.5ab3ec.3: type, imports.%Main.import_ref.38e: @I.%I.type (%I.type.325)) [from "types.carbon"] { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T)> [symbolic = %I.type (constants.%I.type.325)] -// CHECK:STDOUT: %Self: @F.1.%I.type (%I.type.325) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.209)] +// CHECK:STDOUT: %Self: @I.F.%I.type (%I.type.325) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.209)] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic = %Self.as_type (constants.%Self.as_type)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type [symbolic = %pattern_type (constants.%pattern_type.4be)] // CHECK:STDOUT: // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc7(%self.param: %C.23b) { +// CHECK:STDOUT: fn @C.as.I.impl.F(%self.param: %C.23b) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -676,7 +676,7 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.1(constants.%T, constants.%Self.209) { +// CHECK:STDOUT: specific @I.F(constants.%T, constants.%Self.209) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %I.type => constants.%I.type.325 // CHECK:STDOUT: %Self => constants.%Self.209 @@ -690,13 +690,13 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: !definition: // CHECK:STDOUT: %I.type => constants.%I.type.45c // CHECK:STDOUT: %Self => constants.%Self.a34 -// CHECK:STDOUT: %F.type => constants.%F.type.56a -// CHECK:STDOUT: %F => constants.%F.a79 +// CHECK:STDOUT: %I.F.type => constants.%I.F.type.56a +// CHECK:STDOUT: %I.F => constants.%I.F.a79 // CHECK:STDOUT: %I.assoc_type => constants.%I.assoc_type.2db // CHECK:STDOUT: %assoc0 => constants.%assoc0.8c1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.1(constants.%X, constants.%I.facet) { +// CHECK:STDOUT: specific @I.F(constants.%X, constants.%I.facet) { // CHECK:STDOUT: %T => constants.%X // CHECK:STDOUT: %I.type => constants.%I.type.45c // CHECK:STDOUT: %Self => constants.%I.facet @@ -722,8 +722,8 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %I.generic: %I.type.dac = struct_value () [concrete] // CHECK:STDOUT: %I.type.325: type = facet_type <@I, @I(%T)> [symbolic] // CHECK:STDOUT: %Self.209: %I.type.325 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %F.type.2ae: type = fn_type @F.1, @I(%T) [symbolic] -// CHECK:STDOUT: %F.bb2: %F.type.2ae = struct_value () [symbolic] +// CHECK:STDOUT: %I.F.type.2ae: type = fn_type @I.F, @I(%T) [symbolic] +// CHECK:STDOUT: %I.F.bb2: %I.F.type.2ae = struct_value () [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self.209 [symbolic] // CHECK:STDOUT: %pattern_type.4be: type = pattern_type %Self.as_type [symbolic] // CHECK:STDOUT: %I.assoc_type.1e5: type = assoc_entity_type @I, @I(%T) [symbolic] @@ -731,16 +731,16 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %X: type = class_type @X [concrete] // CHECK:STDOUT: %I.type.45c: type = facet_type <@I, @I(%X)> [concrete] // CHECK:STDOUT: %Self.a34: %I.type.45c = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %F.type.56a: type = fn_type @F.1, @I(%X) [concrete] -// CHECK:STDOUT: %F.a79: %F.type.56a = struct_value () [concrete] +// CHECK:STDOUT: %I.F.type.56a: type = fn_type @I.F, @I(%X) [concrete] +// CHECK:STDOUT: %I.F.a79: %I.F.type.56a = struct_value () [concrete] // CHECK:STDOUT: %I.assoc_type.2db: type = assoc_entity_type @I, @I(%X) [concrete] // CHECK:STDOUT: %assoc0.071: %I.assoc_type.2db = assoc_entity element0, imports.%Main.import_ref.e54 [concrete] // CHECK:STDOUT: %assoc0.688: %I.assoc_type.1e5 = assoc_entity element0, imports.%Main.import_ref.479 [symbolic] // CHECK:STDOUT: %I.impl_witness: = impl_witness imports.%I.impl_witness_table [concrete] // CHECK:STDOUT: %I.facet: %I.type.45c = facet_value %C.23b, (%I.impl_witness) [concrete] -// CHECK:STDOUT: %.d3f: type = fn_type_with_self_type %F.type.56a, %I.facet [concrete] -// CHECK:STDOUT: %F.type.fab: type = fn_type @F.2 [concrete] -// CHECK:STDOUT: %F.7ab: %F.type.fab = struct_value () [concrete] +// CHECK:STDOUT: %.d3f: type = fn_type_with_self_type %I.F.type.56a, %I.facet [concrete] +// CHECK:STDOUT: %C.as.I.impl.F.type: type = fn_type @C.as.I.impl.F [concrete] +// CHECK:STDOUT: %C.as.I.impl.F: %C.as.I.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -759,15 +759,15 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %Main.F = import_ref Main//types, F, unloaded // CHECK:STDOUT: %Main.import_ref.5ab3ec.3: type = import_ref Main//types, loc4_13, loaded [symbolic = @I.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.38e: @I.%I.type (%I.type.325) = import_ref Main//types, inst25 [no loc], loaded [symbolic = @I.%Self (constants.%Self.209)] -// CHECK:STDOUT: %Main.import_ref.e54: @I.%F.type (%F.type.2ae) = import_ref Main//types, loc4_43, loaded [symbolic = @I.%F (constants.%F.bb2)] +// CHECK:STDOUT: %Main.import_ref.e54: @I.%I.F.type (%I.F.type.2ae) = import_ref Main//types, loc4_43, loaded [symbolic = @I.%I.F (constants.%I.F.bb2)] // CHECK:STDOUT: %Main.import_ref.8f24d3.3: = import_ref Main//types, loc7_10, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.acf = import_ref Main//types, inst67 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.479 = import_ref Main//types, loc4_43, unloaded // CHECK:STDOUT: %Main.import_ref.a72: = import_ref Main//impl_in_class_args, loc7_29, loaded [concrete = constants.%I.impl_witness] // CHECK:STDOUT: %Main.import_ref.d6e: type = import_ref Main//impl_in_class_args, loc7_19, loaded [concrete = constants.%C.23b] // CHECK:STDOUT: %Main.import_ref.208: type = import_ref Main//impl_in_class_args, loc7_27, loaded [concrete = constants.%I.type.45c] -// CHECK:STDOUT: %Main.import_ref.ae4: %F.type.fab = import_ref Main//impl_in_class_args, loc7_50, loaded [concrete = constants.%F.7ab] -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%Main.import_ref.ae4), @I.impl [concrete] +// CHECK:STDOUT: %Main.import_ref.ae4: %C.as.I.impl.F.type = import_ref Main//impl_in_class_args, loc7_50, loaded [concrete = constants.%C.as.I.impl.F] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%Main.import_ref.ae4), @C.as.I.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -799,8 +799,8 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: !definition: // CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T)> [symbolic = %I.type (constants.%I.type.325)] // CHECK:STDOUT: %Self: @I.%I.type (%I.type.325) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.209)] -// CHECK:STDOUT: %F.type: type = fn_type @F.1, @I(%T) [symbolic = %F.type (constants.%F.type.2ae)] -// CHECK:STDOUT: %F: @I.%F.type (%F.type.2ae) = struct_value () [symbolic = %F (constants.%F.bb2)] +// CHECK:STDOUT: %I.F.type: type = fn_type @I.F, @I(%T) [symbolic = %I.F.type (constants.%I.F.type.2ae)] +// CHECK:STDOUT: %I.F: @I.%I.F.type (%I.F.type.2ae) = struct_value () [symbolic = %I.F (constants.%I.F.bb2)] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I, @I(%T) [symbolic = %I.assoc_type (constants.%I.assoc_type.1e5)] // CHECK:STDOUT: %assoc0: @I.%I.assoc_type (%I.assoc_type.1e5) = assoc_entity element0, imports.%Main.import_ref.e54 [symbolic = %assoc0 (constants.%assoc0.429)] // CHECK:STDOUT: @@ -812,7 +812,7 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: imports.%Main.import_ref.d6e as imports.%Main.import_ref.208 [from "impl_in_class_args.carbon"] { +// CHECK:STDOUT: impl @C.as.I.impl: imports.%Main.import_ref.d6e as imports.%Main.import_ref.208 [from "impl_in_class_args.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = imports.%Main.import_ref.a72 // CHECK:STDOUT: } @@ -852,23 +852,23 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %I.type: type = facet_type <@I, @I(constants.%X)> [concrete = constants.%I.type.45c] // CHECK:STDOUT: %.loc6_34: %I.assoc_type.2db = specific_constant imports.%Main.import_ref.474, @I(constants.%X) [concrete = constants.%assoc0.071] // CHECK:STDOUT: %F.ref: %I.assoc_type.2db = name_ref F, %.loc6_34 [concrete = constants.%assoc0.071] -// CHECK:STDOUT: %impl.elem0: %.d3f = impl_witness_access constants.%I.impl_witness, element0 [concrete = constants.%F.7ab] +// CHECK:STDOUT: %impl.elem0: %.d3f = impl_witness_access constants.%I.impl_witness, element0 [concrete = constants.%C.as.I.impl.F] // CHECK:STDOUT: %bound_method: = bound_method %c.ref, %impl.elem0 -// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %bound_method(%c.ref) +// CHECK:STDOUT: %C.as.I.impl.F.call: init %empty_tuple.type = call %bound_method(%c.ref) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.1(imports.%Main.import_ref.5ab3ec.3: type, imports.%Main.import_ref.38e: @I.%I.type (%I.type.325)) [from "types.carbon"] { +// CHECK:STDOUT: generic fn @I.F(imports.%Main.import_ref.5ab3ec.3: type, imports.%Main.import_ref.38e: @I.%I.type (%I.type.325)) [from "types.carbon"] { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T)> [symbolic = %I.type (constants.%I.type.325)] -// CHECK:STDOUT: %Self: @F.1.%I.type (%I.type.325) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.209)] +// CHECK:STDOUT: %Self: @I.F.%I.type (%I.type.325) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.209)] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic = %Self.as_type (constants.%Self.as_type)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type [symbolic = %pattern_type (constants.%pattern_type.4be)] // CHECK:STDOUT: // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.2 [from "impl_in_class_args.carbon"]; +// CHECK:STDOUT: fn @C.as.I.impl.F [from "impl_in_class_args.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: specific @C(constants.%T) { // CHECK:STDOUT: %T => constants.%T @@ -884,7 +884,7 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.1(constants.%T, constants.%Self.209) { +// CHECK:STDOUT: specific @I.F(constants.%T, constants.%Self.209) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %I.type => constants.%I.type.325 // CHECK:STDOUT: %Self => constants.%Self.209 @@ -898,8 +898,8 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: !definition: // CHECK:STDOUT: %I.type => constants.%I.type.45c // CHECK:STDOUT: %Self => constants.%Self.a34 -// CHECK:STDOUT: %F.type => constants.%F.type.56a -// CHECK:STDOUT: %F => constants.%F.a79 +// CHECK:STDOUT: %I.F.type => constants.%I.F.type.56a +// CHECK:STDOUT: %I.F => constants.%I.F.a79 // CHECK:STDOUT: %I.assoc_type => constants.%I.assoc_type.2db // CHECK:STDOUT: %assoc0 => constants.%assoc0.071 // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/lookup/transitive.carbon b/toolchain/check/testdata/impl/lookup/transitive.carbon index 5efbf01453c5..d8a3d8a81ea6 100644 --- a/toolchain/check/testdata/impl/lookup/transitive.carbon +++ b/toolchain/check/testdata/impl/lookup/transitive.carbon @@ -54,10 +54,10 @@ fn Call() { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type [symbolic] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %I.F.type: type = fn_type @I.F [concrete] +// CHECK:STDOUT: %I.F: %I.F.type = struct_value () [concrete] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] -// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%F.decl [concrete] +// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%I.F.decl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -78,37 +78,37 @@ fn Call() { // CHECK:STDOUT: // CHECK:STDOUT: interface @I { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { -// CHECK:STDOUT: %self.patt: @F.%pattern_type (%pattern_type) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.%pattern_type (%pattern_type) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %I.F.decl: %I.F.type = fn_decl @I.F [concrete = constants.%I.F] { +// CHECK:STDOUT: %self.patt: @I.F.%pattern_type (%pattern_type) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @I.F.%pattern_type (%pattern_type) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @F.%Self.as_type.loc4_26.2 (%Self.as_type) = value_param call_param0 -// CHECK:STDOUT: %.loc4_26.1: type = splice_block %.loc4_26.2 [symbolic = %Self.as_type.loc4_26.2 (constants.%Self.as_type)] { +// CHECK:STDOUT: %self.param: @I.F.%Self.as_type.loc4_26.1 (%Self.as_type) = value_param call_param0 +// CHECK:STDOUT: %.loc4_26.1: type = splice_block %.loc4_26.2 [symbolic = %Self.as_type.loc4_26.1 (constants.%Self.as_type)] { // CHECK:STDOUT: %Self.ref: %I.type = name_ref Self, @I.%Self [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc4_26.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc4_26.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc4_26.2: type = converted %Self.ref, %Self.as_type.loc4_26.1 [symbolic = %Self.as_type.loc4_26.2 (constants.%Self.as_type)] +// CHECK:STDOUT: %Self.as_type.loc4_26.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc4_26.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc4_26.2: type = converted %Self.ref, %Self.as_type.loc4_26.2 [symbolic = %Self.as_type.loc4_26.1 (constants.%Self.as_type)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.%Self.as_type.loc4_26.2 (%Self.as_type) = bind_name self, %self.param +// CHECK:STDOUT: %self: @I.F.%Self.as_type.loc4_26.1 (%Self.as_type) = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %I.F.decl [concrete = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F = %assoc0 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%I.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(@I.%Self: %I.type) { +// CHECK:STDOUT: generic fn @I.F(@I.%Self: %I.type) { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc4_26.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc4_26.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc4_26.2 [symbolic = %pattern_type (constants.%pattern_type)] +// CHECK:STDOUT: %Self.as_type.loc4_26.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc4_26.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc4_26.1 [symbolic = %pattern_type (constants.%pattern_type)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @F.%Self.as_type.loc4_26.2 (%Self.as_type)); +// CHECK:STDOUT: fn(%self.param: @I.F.%Self.as_type.loc4_26.1 (%Self.as_type)); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%Self) { +// CHECK:STDOUT: specific @I.F(constants.%Self) { // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %Self.as_type.loc4_26.2 => constants.%Self.as_type +// CHECK:STDOUT: %Self.as_type.loc4_26.1 => constants.%Self.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type // CHECK:STDOUT: } // CHECK:STDOUT: @@ -120,14 +120,14 @@ fn Call() { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.cf0: type = fn_type @F.1 [concrete] -// CHECK:STDOUT: %F.bc6: %F.type.cf0 = struct_value () [concrete] +// CHECK:STDOUT: %I.F.type: type = fn_type @I.F [concrete] +// CHECK:STDOUT: %I.F: %I.F.type = struct_value () [concrete] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic] // CHECK:STDOUT: %pattern_type.6de: type = pattern_type %Self.as_type [symbolic] // CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] -// CHECK:STDOUT: %F.type.5d6: type = fn_type @F.loc7 [concrete] -// CHECK:STDOUT: %F.a2e: %F.type.5d6 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.I.impl.F.type: type = fn_type @C.as.I.impl.F [concrete] +// CHECK:STDOUT: %C.as.I.impl.F: %C.as.I.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %I.facet: %I.type = facet_value %C, (%I.impl_witness) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -139,7 +139,7 @@ fn Call() { // CHECK:STDOUT: } // CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//i, inst19 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.507 = import_ref Main//i, loc4_33, unloaded -// CHECK:STDOUT: %Main.F: %F.type.cf0 = import_ref Main//i, F, loaded [concrete = constants.%F.bc6] +// CHECK:STDOUT: %Main.F: %I.F.type = import_ref Main//i, F, loaded [concrete = constants.%I.F] // CHECK:STDOUT: %Main.import_ref.5dd: %I.type = import_ref Main//i, inst19 [no loc], loaded [symbolic = constants.%Self] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -152,11 +152,11 @@ fn Call() { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.I.impl [concrete] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [concrete = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (@I.impl.%F.decl), @I.impl [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (@C.as.I.impl.%C.as.I.impl.F.decl), @C.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -167,18 +167,18 @@ fn Call() { // CHECK:STDOUT: witness = (imports.%Main.F) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: %C.ref as %I.ref { -// CHECK:STDOUT: %F.decl: %F.type.5d6 = fn_decl @F.loc7 [concrete = constants.%F.a2e] { +// CHECK:STDOUT: impl @C.as.I.impl: %C.ref as %I.ref { +// CHECK:STDOUT: %C.as.I.impl.F.decl: %C.as.I.impl.F.type = fn_decl @C.as.I.impl.F [concrete = constants.%C.as.I.impl.F] { // CHECK:STDOUT: %self.patt: %pattern_type.c48 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.c48 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %self.param: %C = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @I.impl.%C.ref [concrete = constants.%C] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @C.as.I.impl.%C.ref [concrete = constants.%C] // CHECK:STDOUT: %self: %C = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %C.as.I.impl.F.decl // CHECK:STDOUT: witness = file.%I.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: @@ -191,7 +191,7 @@ fn Call() { // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.1(imports.%Main.import_ref.5dd: %I.type) [from "i.carbon"] { +// CHECK:STDOUT: generic fn @I.F(imports.%Main.import_ref.5dd: %I.type) [from "i.carbon"] { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic = %Self.as_type (constants.%Self.as_type)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type [symbolic = %pattern_type (constants.%pattern_type.6de)] @@ -199,18 +199,18 @@ fn Call() { // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc7(%self.param: %C) { +// CHECK:STDOUT: fn @C.as.I.impl.F(%self.param: %C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.1(constants.%Self) { +// CHECK:STDOUT: specific @I.F(constants.%Self) { // CHECK:STDOUT: %Self => constants.%Self // CHECK:STDOUT: %Self.as_type => constants.%Self.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.6de // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.1(constants.%I.facet) { +// CHECK:STDOUT: specific @I.F(constants.%I.facet) { // CHECK:STDOUT: %Self => constants.%I.facet // CHECK:STDOUT: %Self.as_type => constants.%C // CHECK:STDOUT: %pattern_type => constants.%pattern_type.c48 @@ -279,20 +279,20 @@ fn Call() { // CHECK:STDOUT: %Self.826: %I.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] // CHECK:STDOUT: %assoc0.3f3: %I.assoc_type = assoc_entity element0, imports.%Main.import_ref.e03 [concrete] -// CHECK:STDOUT: %F.type.cf0: type = fn_type @F.2 [concrete] -// CHECK:STDOUT: %F.bc6: %F.type.cf0 = struct_value () [concrete] +// CHECK:STDOUT: %I.F.type: type = fn_type @I.F [concrete] +// CHECK:STDOUT: %I.F: %I.F.type = struct_value () [concrete] // CHECK:STDOUT: %Self.as_type.b70: type = facet_access_type %Self.826 [symbolic] // CHECK:STDOUT: %pattern_type.6de: type = pattern_type %Self.as_type.b70 [symbolic] // CHECK:STDOUT: %I.impl_witness: = impl_witness imports.%I.impl_witness_table [concrete] // CHECK:STDOUT: %I.facet: %I.type = facet_value %C, (%I.impl_witness) [concrete] -// CHECK:STDOUT: %.1b3: type = fn_type_with_self_type %F.type.cf0, %I.facet [concrete] -// CHECK:STDOUT: %F.type.5d6: type = fn_type @F.1 [concrete] -// CHECK:STDOUT: %F.a2e: %F.type.5d6 = struct_value () [concrete] +// CHECK:STDOUT: %.1b3: type = fn_type_with_self_type %I.F.type, %I.facet [concrete] +// CHECK:STDOUT: %C.as.I.impl.F.type: type = fn_type @C.as.I.impl.F [concrete] +// CHECK:STDOUT: %C.as.I.impl.F: %C.as.I.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.153: type = fn_type @Op.1, @Destroy.impl(%C) [concrete] -// CHECK:STDOUT: %Op.5d7: %Op.type.153 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.153: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.5d7: %T.as.Destroy.impl.Op.type.153 = struct_value () [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.5d7, @Op.1(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(%C) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -308,13 +308,13 @@ fn Call() { // CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//i, inst19 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.c44: %I.assoc_type = import_ref Main//i, loc4_33, loaded [concrete = constants.%assoc0.3f3] // CHECK:STDOUT: %Main.F = import_ref Main//i, F, unloaded -// CHECK:STDOUT: %Main.import_ref.e03: %F.type.cf0 = import_ref Main//i, loc4_33, loaded [concrete = constants.%F.bc6] +// CHECK:STDOUT: %Main.import_ref.e03: %I.F.type = import_ref Main//i, loc4_33, loaded [concrete = constants.%I.F] // CHECK:STDOUT: %Main.import_ref.5dd: %I.type = import_ref Main//i, inst19 [no loc], loaded [symbolic = constants.%Self.826] // CHECK:STDOUT: %Main.import_ref.f0d: = import_ref Main//c, loc7_13, loaded [concrete = constants.%I.impl_witness] // CHECK:STDOUT: %Main.import_ref.29a: type = import_ref Main//c, loc7_6, loaded [concrete = constants.%C] // CHECK:STDOUT: %Main.import_ref.f50: type = import_ref Main//c, loc7_11, loaded [concrete = constants.%I.type] -// CHECK:STDOUT: %Main.import_ref.742: %F.type.5d6 = import_ref Main//c, loc7_34, loaded [concrete = constants.%F.a2e] -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%Main.import_ref.742), @I.impl [concrete] +// CHECK:STDOUT: %Main.import_ref.742: %C.as.I.impl.F.type = import_ref Main//c, loc7_34, loaded [concrete = constants.%C.as.I.impl.F] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%Main.import_ref.742), @C.as.I.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -337,7 +337,7 @@ fn Call() { // CHECK:STDOUT: witness = (imports.%Main.F) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: imports.%Main.import_ref.29a as imports.%Main.import_ref.f50 [from "c.carbon"] { +// CHECK:STDOUT: impl @C.as.I.impl: imports.%Main.import_ref.29a as imports.%Main.import_ref.f50 [from "c.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = imports.%Main.import_ref.f0d // CHECK:STDOUT: } @@ -356,22 +356,22 @@ fn Call() { // CHECK:STDOUT: %Get.call: init %C = call %Get.ref() to %.loc9_7.1 // CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [concrete = constants.%I.type] // CHECK:STDOUT: %F.ref: %I.assoc_type = name_ref F, imports.%Main.import_ref.c44 [concrete = constants.%assoc0.3f3] -// CHECK:STDOUT: %impl.elem0: %.1b3 = impl_witness_access constants.%I.impl_witness, element0 [concrete = constants.%F.a2e] +// CHECK:STDOUT: %impl.elem0: %.1b3 = impl_witness_access constants.%I.impl_witness, element0 [concrete = constants.%C.as.I.impl.F] // CHECK:STDOUT: %bound_method.loc9_8: = bound_method %Get.call, %impl.elem0 // CHECK:STDOUT: %.loc9_7.2: ref %C = temporary %.loc9_7.1, %Get.call // CHECK:STDOUT: %.loc9_7.3: %C = bind_value %.loc9_7.2 -// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %bound_method.loc9_8(%.loc9_7.3) -// CHECK:STDOUT: %Op.bound: = bound_method %.loc9_7.1, constants.%Op.5d7 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.5d7, @Op.1(constants.%C) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc9_7: = bound_method %.loc9_7.1, %Op.specific_fn +// CHECK:STDOUT: %C.as.I.impl.F.call: init %empty_tuple.type = call %bound_method.loc9_8(%.loc9_7.3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc9_7.1, constants.%T.as.Destroy.impl.Op.5d7 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(constants.%C) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc9_7: = bound_method %.loc9_7.1, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc9_7.1 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc9_7(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc9_7(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Get [from "get.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.2(imports.%Main.import_ref.5dd: %I.type) [from "i.carbon"] { +// CHECK:STDOUT: generic fn @I.F(imports.%Main.import_ref.5dd: %I.type) [from "i.carbon"] { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.826)] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic = %Self.as_type (constants.%Self.as_type.b70)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type [symbolic = %pattern_type (constants.%pattern_type.6de)] @@ -379,9 +379,9 @@ fn Call() { // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.1 [from "c.carbon"]; +// CHECK:STDOUT: fn @C.as.I.impl.F [from "c.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.2(constants.%Self.826) { +// CHECK:STDOUT: specific @I.F(constants.%Self.826) { // CHECK:STDOUT: %Self => constants.%Self.826 // CHECK:STDOUT: %Self.as_type => constants.%Self.as_type.b70 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.6de diff --git a/toolchain/check/testdata/impl/multiple_extend.carbon b/toolchain/check/testdata/impl/multiple_extend.carbon index 64a8e33ceb88..1c8356d85a6a 100644 --- a/toolchain/check/testdata/impl/multiple_extend.carbon +++ b/toolchain/check/testdata/impl/multiple_extend.carbon @@ -169,33 +169,33 @@ fn P(o: O) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %HasF.type: type = facet_type <@HasF> [concrete] // CHECK:STDOUT: %Self.f0c: %HasF.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.b7b: type = fn_type @F.loc5 [concrete] +// CHECK:STDOUT: %HasF.F.type: type = fn_type @HasF.F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F.f50: %F.type.b7b = struct_value () [concrete] +// CHECK:STDOUT: %HasF.F: %HasF.F.type = struct_value () [concrete] // CHECK:STDOUT: %HasF.assoc_type: type = assoc_entity_type @HasF [concrete] -// CHECK:STDOUT: %assoc0.97a: %HasF.assoc_type = assoc_entity element0, @HasF.%F.decl [concrete] +// CHECK:STDOUT: %assoc0.97a: %HasF.assoc_type = assoc_entity element0, @HasF.%HasF.F.decl [concrete] // CHECK:STDOUT: %HasG.type: type = facet_type <@HasG> [concrete] // CHECK:STDOUT: %Self.d42: %HasG.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %G.type.d27: type = fn_type @G.loc9 [concrete] -// CHECK:STDOUT: %G.688: %G.type.d27 = struct_value () [concrete] +// CHECK:STDOUT: %HasG.G.type: type = fn_type @HasG.G [concrete] +// CHECK:STDOUT: %HasG.G: %HasG.G.type = struct_value () [concrete] // CHECK:STDOUT: %HasG.assoc_type: type = assoc_entity_type @HasG [concrete] -// CHECK:STDOUT: %assoc0.319: %HasG.assoc_type = assoc_entity element0, @HasG.%G.decl [concrete] +// CHECK:STDOUT: %assoc0.319: %HasG.assoc_type = assoc_entity element0, @HasG.%HasG.G.decl [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %HasF.impl_witness: = impl_witness @C.%HasF.impl_witness_table [concrete] -// CHECK:STDOUT: %F.type.a65: type = fn_type @F.loc14 [concrete] -// CHECK:STDOUT: %F.ad8: %F.type.a65 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.HasF.impl.F.type: type = fn_type @C.as.HasF.impl.F [concrete] +// CHECK:STDOUT: %C.as.HasF.impl.F: %C.as.HasF.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %HasF.facet: %HasF.type = facet_value %C, (%HasF.impl_witness) [concrete] // CHECK:STDOUT: %HasG.impl_witness: = impl_witness @C.%HasG.impl_witness_table [concrete] -// CHECK:STDOUT: %G.type.cf6: type = fn_type @G.loc17 [concrete] -// CHECK:STDOUT: %G.957: %G.type.cf6 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.HasG.impl.G.type: type = fn_type @C.as.HasG.impl.G [concrete] +// CHECK:STDOUT: %C.as.HasG.impl.G: %C.as.HasG.impl.G.type = struct_value () [concrete] // CHECK:STDOUT: %HasG.facet: %HasG.type = facet_value %C, (%HasG.impl_witness) [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] // CHECK:STDOUT: %H.type: type = fn_type @H [concrete] // CHECK:STDOUT: %H: %H.type = struct_value () [concrete] -// CHECK:STDOUT: %.a44: type = fn_type_with_self_type %F.type.b7b, %HasF.facet [concrete] -// CHECK:STDOUT: %.521: type = fn_type_with_self_type %G.type.d27, %HasG.facet [concrete] +// CHECK:STDOUT: %.a44: type = fn_type_with_self_type %HasF.F.type, %HasF.facet [concrete] +// CHECK:STDOUT: %.521: type = fn_type_with_self_type %HasG.G.type, %HasG.facet [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -220,57 +220,57 @@ fn P(o: O) { // CHECK:STDOUT: // CHECK:STDOUT: interface @HasF { // CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.f0c] -// CHECK:STDOUT: %F.decl: %F.type.b7b = fn_decl @F.loc5 [concrete = constants.%F.f50] {} {} -// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0.97a] +// CHECK:STDOUT: %HasF.F.decl: %HasF.F.type = fn_decl @HasF.F [concrete = constants.%HasF.F] {} {} +// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, %HasF.F.decl [concrete = constants.%assoc0.97a] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F = %assoc0 // CHECK:STDOUT: .HasG = // CHECK:STDOUT: .G = -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%HasF.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @HasG { // CHECK:STDOUT: %Self: %HasG.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.d42] -// CHECK:STDOUT: %G.decl: %G.type.d27 = fn_decl @G.loc9 [concrete = constants.%G.688] {} {} -// CHECK:STDOUT: %assoc0: %HasG.assoc_type = assoc_entity element0, %G.decl [concrete = constants.%assoc0.319] +// CHECK:STDOUT: %HasG.G.decl: %HasG.G.type = fn_decl @HasG.G [concrete = constants.%HasG.G] {} {} +// CHECK:STDOUT: %assoc0: %HasG.assoc_type = assoc_entity element0, %HasG.G.decl [concrete = constants.%assoc0.319] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .G = %assoc0 // CHECK:STDOUT: .F = -// CHECK:STDOUT: witness = (%G.decl) +// CHECK:STDOUT: witness = (%HasG.G.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @HasF.impl: %Self.ref as %HasF.ref { -// CHECK:STDOUT: %F.decl: %F.type.a65 = fn_decl @F.loc14 [concrete = constants.%F.ad8] {} {} +// CHECK:STDOUT: impl @C.as.HasF.impl: %Self.ref as %HasF.ref { +// CHECK:STDOUT: %C.as.HasF.impl.F.decl: %C.as.HasF.impl.F.type = fn_decl @C.as.HasF.impl.F [concrete = constants.%C.as.HasF.impl.F] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %C.as.HasF.impl.F.decl // CHECK:STDOUT: witness = @C.%HasF.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @HasG.impl: %Self.ref as %HasG.ref { -// CHECK:STDOUT: %G.decl: %G.type.cf6 = fn_decl @G.loc17 [concrete = constants.%G.957] {} {} +// CHECK:STDOUT: impl @C.as.HasG.impl: %Self.ref as %HasG.ref { +// CHECK:STDOUT: %C.as.HasG.impl.G.decl: %C.as.HasG.impl.G.type = fn_decl @C.as.HasG.impl.G [concrete = constants.%C.as.HasG.impl.G] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .G = %C.as.HasG.impl.G.decl // CHECK:STDOUT: witness = @C.%HasG.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: impl_decl @HasF.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.HasF.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] // CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [concrete = constants.%HasF.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %HasF.impl_witness_table = impl_witness_table (@HasF.impl.%F.decl), @HasF.impl [concrete] +// CHECK:STDOUT: %HasF.impl_witness_table = impl_witness_table (@C.as.HasF.impl.%C.as.HasF.impl.F.decl), @C.as.HasF.impl [concrete] // CHECK:STDOUT: %HasF.impl_witness: = impl_witness %HasF.impl_witness_table [concrete = constants.%HasF.impl_witness] -// CHECK:STDOUT: impl_decl @HasG.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.HasG.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] // CHECK:STDOUT: %HasG.ref: type = name_ref HasG, file.%HasG.decl [concrete = constants.%HasG.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %HasG.impl_witness_table = impl_witness_table (@HasG.impl.%G.decl), @HasG.impl [concrete] +// CHECK:STDOUT: %HasG.impl_witness_table = impl_witness_table (@C.as.HasG.impl.%C.as.HasG.impl.G.decl), @C.as.HasG.impl [concrete] // CHECK:STDOUT: %HasG.impl_witness: = impl_witness %HasG.impl_witness_table [concrete = constants.%HasG.impl_witness] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] @@ -282,24 +282,24 @@ fn P(o: O) { // CHECK:STDOUT: .HasG = // CHECK:STDOUT: .F = // CHECK:STDOUT: .G = -// CHECK:STDOUT: extend @HasF.impl.%HasF.ref -// CHECK:STDOUT: extend @HasG.impl.%HasG.ref +// CHECK:STDOUT: extend @C.as.HasF.impl.%HasF.ref +// CHECK:STDOUT: extend @C.as.HasG.impl.%HasG.ref // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc5(@HasF.%Self: %HasF.type) { +// CHECK:STDOUT: generic fn @HasF.F(@HasF.%Self: %HasF.type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @G.loc9(@HasG.%Self: %HasG.type) { +// CHECK:STDOUT: generic fn @HasG.G(@HasG.%Self: %HasG.type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc14() { +// CHECK:STDOUT: fn @C.as.HasF.impl.F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G.loc17() { +// CHECK:STDOUT: fn @C.as.HasG.impl.G() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -308,54 +308,54 @@ fn P(o: O) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %C.ref.loc22: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %F.ref.loc22: %HasF.assoc_type = name_ref F, @HasF.%assoc0 [concrete = constants.%assoc0.97a] -// CHECK:STDOUT: %impl.elem0.loc22: %.a44 = impl_witness_access constants.%HasF.impl_witness, element0 [concrete = constants.%F.ad8] -// CHECK:STDOUT: %F.call.loc22: init %empty_tuple.type = call %impl.elem0.loc22() +// CHECK:STDOUT: %impl.elem0.loc22: %.a44 = impl_witness_access constants.%HasF.impl_witness, element0 [concrete = constants.%C.as.HasF.impl.F] +// CHECK:STDOUT: %C.as.HasF.impl.F.call.loc22: init %empty_tuple.type = call %impl.elem0.loc22() // CHECK:STDOUT: %c.ref.loc23: %C = name_ref c, %c // CHECK:STDOUT: %F.ref.loc23: %HasF.assoc_type = name_ref F, @HasF.%assoc0 [concrete = constants.%assoc0.97a] -// CHECK:STDOUT: %impl.elem0.loc23: %.a44 = impl_witness_access constants.%HasF.impl_witness, element0 [concrete = constants.%F.ad8] -// CHECK:STDOUT: %F.call.loc23: init %empty_tuple.type = call %impl.elem0.loc23() +// CHECK:STDOUT: %impl.elem0.loc23: %.a44 = impl_witness_access constants.%HasF.impl_witness, element0 [concrete = constants.%C.as.HasF.impl.F] +// CHECK:STDOUT: %C.as.HasF.impl.F.call.loc23: init %empty_tuple.type = call %impl.elem0.loc23() // CHECK:STDOUT: %C.ref.loc24: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %G.ref.loc24: %HasG.assoc_type = name_ref G, @HasG.%assoc0 [concrete = constants.%assoc0.319] -// CHECK:STDOUT: %impl.elem0.loc24: %.521 = impl_witness_access constants.%HasG.impl_witness, element0 [concrete = constants.%G.957] -// CHECK:STDOUT: %G.call.loc24: init %empty_tuple.type = call %impl.elem0.loc24() +// CHECK:STDOUT: %impl.elem0.loc24: %.521 = impl_witness_access constants.%HasG.impl_witness, element0 [concrete = constants.%C.as.HasG.impl.G] +// CHECK:STDOUT: %C.as.HasG.impl.G.call.loc24: init %empty_tuple.type = call %impl.elem0.loc24() // CHECK:STDOUT: %c.ref.loc25: %C = name_ref c, %c // CHECK:STDOUT: %G.ref.loc25: %HasG.assoc_type = name_ref G, @HasG.%assoc0 [concrete = constants.%assoc0.319] -// CHECK:STDOUT: %impl.elem0.loc25: %.521 = impl_witness_access constants.%HasG.impl_witness, element0 [concrete = constants.%G.957] -// CHECK:STDOUT: %G.call.loc25: init %empty_tuple.type = call %impl.elem0.loc25() +// CHECK:STDOUT: %impl.elem0.loc25: %.521 = impl_witness_access constants.%HasG.impl_witness, element0 [concrete = constants.%C.as.HasG.impl.G] +// CHECK:STDOUT: %C.as.HasG.impl.G.call.loc25: init %empty_tuple.type = call %impl.elem0.loc25() // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%Self.f0c) {} +// CHECK:STDOUT: specific @HasF.F(constants.%Self.f0c) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @G.loc9(constants.%Self.d42) {} +// CHECK:STDOUT: specific @HasG.G(constants.%Self.d42) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%HasF.facet) {} +// CHECK:STDOUT: specific @HasF.F(constants.%HasF.facet) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @G.loc9(constants.%HasG.facet) {} +// CHECK:STDOUT: specific @HasG.G(constants.%HasG.facet) {} // CHECK:STDOUT: // CHECK:STDOUT: --- fail_ambiguous_impls.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %HasA1.type: type = facet_type <@HasA1> [concrete] // CHECK:STDOUT: %Self.90d: %HasA1.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %A.type.9c4: type = fn_type @A.loc5 [concrete] -// CHECK:STDOUT: %A.c3c: %A.type.9c4 = struct_value () [concrete] +// CHECK:STDOUT: %HasA1.A.type: type = fn_type @HasA1.A [concrete] +// CHECK:STDOUT: %HasA1.A: %HasA1.A.type = struct_value () [concrete] // CHECK:STDOUT: %HasA1.assoc_type: type = assoc_entity_type @HasA1 [concrete] -// CHECK:STDOUT: %assoc0.34b: %HasA1.assoc_type = assoc_entity element0, @HasA1.%A.decl [concrete] +// CHECK:STDOUT: %assoc0.34b: %HasA1.assoc_type = assoc_entity element0, @HasA1.%HasA1.A.decl [concrete] // CHECK:STDOUT: %HasA2.type: type = facet_type <@HasA2> [concrete] // CHECK:STDOUT: %Self.bdc: %HasA2.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %A.type.f71: type = fn_type @A.loc9 [concrete] -// CHECK:STDOUT: %A.0eb: %A.type.f71 = struct_value () [concrete] +// CHECK:STDOUT: %HasA2.A.type: type = fn_type @HasA2.A [concrete] +// CHECK:STDOUT: %HasA2.A: %HasA2.A.type = struct_value () [concrete] // CHECK:STDOUT: %HasA2.assoc_type: type = assoc_entity_type @HasA2 [concrete] -// CHECK:STDOUT: %assoc0.316: %HasA2.assoc_type = assoc_entity element0, @HasA2.%A.decl [concrete] +// CHECK:STDOUT: %assoc0.316: %HasA2.assoc_type = assoc_entity element0, @HasA2.%HasA2.A.decl [concrete] // CHECK:STDOUT: %D: type = class_type @D [concrete] // CHECK:STDOUT: %HasA1.impl_witness: = impl_witness @D.%HasA1.impl_witness_table [concrete] -// CHECK:STDOUT: %A.type.468: type = fn_type @A.loc14 [concrete] -// CHECK:STDOUT: %A.efc: %A.type.468 = struct_value () [concrete] +// CHECK:STDOUT: %D.as.HasA1.impl.A.type: type = fn_type @D.as.HasA1.impl.A [concrete] +// CHECK:STDOUT: %D.as.HasA1.impl.A: %D.as.HasA1.impl.A.type = struct_value () [concrete] // CHECK:STDOUT: %HasA1.facet: %HasA1.type = facet_value %D, (%HasA1.impl_witness) [concrete] // CHECK:STDOUT: %HasA2.impl_witness: = impl_witness @D.%HasA2.impl_witness_table [concrete] -// CHECK:STDOUT: %A.type.938: type = fn_type @A.loc17 [concrete] -// CHECK:STDOUT: %A.890: %A.type.938 = struct_value () [concrete] +// CHECK:STDOUT: %D.as.HasA2.impl.A.type: type = fn_type @D.as.HasA2.impl.A [concrete] +// CHECK:STDOUT: %D.as.HasA2.impl.A: %D.as.HasA2.impl.A.type = struct_value () [concrete] // CHECK:STDOUT: %HasA2.facet: %HasA2.type = facet_value %D, (%HasA2.impl_witness) [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] @@ -386,55 +386,55 @@ fn P(o: O) { // CHECK:STDOUT: // CHECK:STDOUT: interface @HasA1 { // CHECK:STDOUT: %Self: %HasA1.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.90d] -// CHECK:STDOUT: %A.decl: %A.type.9c4 = fn_decl @A.loc5 [concrete = constants.%A.c3c] {} {} -// CHECK:STDOUT: %assoc0: %HasA1.assoc_type = assoc_entity element0, %A.decl [concrete = constants.%assoc0.34b] +// CHECK:STDOUT: %HasA1.A.decl: %HasA1.A.type = fn_decl @HasA1.A [concrete = constants.%HasA1.A] {} {} +// CHECK:STDOUT: %assoc0: %HasA1.assoc_type = assoc_entity element0, %HasA1.A.decl [concrete = constants.%assoc0.34b] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .A = %assoc0 // CHECK:STDOUT: .HasA2 = -// CHECK:STDOUT: witness = (%A.decl) +// CHECK:STDOUT: witness = (%HasA1.A.decl) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @HasA2 { // CHECK:STDOUT: %Self: %HasA2.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.bdc] -// CHECK:STDOUT: %A.decl: %A.type.f71 = fn_decl @A.loc9 [concrete = constants.%A.0eb] {} {} -// CHECK:STDOUT: %assoc0: %HasA2.assoc_type = assoc_entity element0, %A.decl [concrete = constants.%assoc0.316] +// CHECK:STDOUT: %HasA2.A.decl: %HasA2.A.type = fn_decl @HasA2.A [concrete = constants.%HasA2.A] {} {} +// CHECK:STDOUT: %assoc0: %HasA2.assoc_type = assoc_entity element0, %HasA2.A.decl [concrete = constants.%assoc0.316] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .A = %assoc0 -// CHECK:STDOUT: witness = (%A.decl) +// CHECK:STDOUT: witness = (%HasA2.A.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @HasA1.impl: %Self.ref as %HasA1.ref { -// CHECK:STDOUT: %A.decl: %A.type.468 = fn_decl @A.loc14 [concrete = constants.%A.efc] {} {} +// CHECK:STDOUT: impl @D.as.HasA1.impl: %Self.ref as %HasA1.ref { +// CHECK:STDOUT: %D.as.HasA1.impl.A.decl: %D.as.HasA1.impl.A.type = fn_decl @D.as.HasA1.impl.A [concrete = constants.%D.as.HasA1.impl.A] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .A = %A.decl +// CHECK:STDOUT: .A = %D.as.HasA1.impl.A.decl // CHECK:STDOUT: witness = @D.%HasA1.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @HasA2.impl: %Self.ref as %HasA2.ref { -// CHECK:STDOUT: %A.decl: %A.type.938 = fn_decl @A.loc17 [concrete = constants.%A.890] {} {} +// CHECK:STDOUT: impl @D.as.HasA2.impl: %Self.ref as %HasA2.ref { +// CHECK:STDOUT: %D.as.HasA2.impl.A.decl: %D.as.HasA2.impl.A.type = fn_decl @D.as.HasA2.impl.A [concrete = constants.%D.as.HasA2.impl.A] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .A = %A.decl +// CHECK:STDOUT: .A = %D.as.HasA2.impl.A.decl // CHECK:STDOUT: witness = @D.%HasA2.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { -// CHECK:STDOUT: impl_decl @HasA1.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @D.as.HasA1.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%D [concrete = constants.%D] // CHECK:STDOUT: %HasA1.ref: type = name_ref HasA1, file.%HasA1.decl [concrete = constants.%HasA1.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %HasA1.impl_witness_table = impl_witness_table (@HasA1.impl.%A.decl), @HasA1.impl [concrete] +// CHECK:STDOUT: %HasA1.impl_witness_table = impl_witness_table (@D.as.HasA1.impl.%D.as.HasA1.impl.A.decl), @D.as.HasA1.impl [concrete] // CHECK:STDOUT: %HasA1.impl_witness: = impl_witness %HasA1.impl_witness_table [concrete = constants.%HasA1.impl_witness] -// CHECK:STDOUT: impl_decl @HasA2.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @D.as.HasA2.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%D [concrete = constants.%D] // CHECK:STDOUT: %HasA2.ref: type = name_ref HasA2, file.%HasA2.decl [concrete = constants.%HasA2.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %HasA2.impl_witness_table = impl_witness_table (@HasA2.impl.%A.decl), @HasA2.impl [concrete] +// CHECK:STDOUT: %HasA2.impl_witness_table = impl_witness_table (@D.as.HasA2.impl.%D.as.HasA2.impl.A.decl), @D.as.HasA2.impl [concrete] // CHECK:STDOUT: %HasA2.impl_witness: = impl_witness %HasA2.impl_witness_table [concrete = constants.%HasA2.impl_witness] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] @@ -445,24 +445,24 @@ fn P(o: O) { // CHECK:STDOUT: .HasA1 = // CHECK:STDOUT: .HasA2 = // CHECK:STDOUT: .A = -// CHECK:STDOUT: extend @HasA1.impl.%HasA1.ref -// CHECK:STDOUT: extend @HasA2.impl.%HasA2.ref +// CHECK:STDOUT: extend @D.as.HasA1.impl.%HasA1.ref +// CHECK:STDOUT: extend @D.as.HasA2.impl.%HasA2.ref // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @A.loc5(@HasA1.%Self: %HasA1.type) { +// CHECK:STDOUT: generic fn @HasA1.A(@HasA1.%Self: %HasA1.type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @A.loc9(@HasA2.%Self: %HasA2.type) { +// CHECK:STDOUT: generic fn @HasA2.A(@HasA2.%Self: %HasA2.type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @A.loc14() { +// CHECK:STDOUT: fn @D.as.HasA1.impl.A() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @A.loc17() { +// CHECK:STDOUT: fn @D.as.HasA2.impl.A() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -476,41 +476,41 @@ fn P(o: O) { // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @A.loc5(constants.%Self.90d) {} +// CHECK:STDOUT: specific @HasA1.A(constants.%Self.90d) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @A.loc9(constants.%Self.bdc) {} +// CHECK:STDOUT: specific @HasA2.A(constants.%Self.bdc) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @A.loc5(constants.%HasA1.facet) {} +// CHECK:STDOUT: specific @HasA1.A(constants.%HasA1.facet) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @A.loc9(constants.%HasA2.facet) {} +// CHECK:STDOUT: specific @HasA2.A(constants.%HasA2.facet) {} // CHECK:STDOUT: // CHECK:STDOUT: --- different_impl_and_base.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %HasI.type: type = facet_type <@HasI> [concrete] // CHECK:STDOUT: %Self: %HasI.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %I.type.9bd: type = fn_type @I.loc5 [concrete] +// CHECK:STDOUT: %HasI.I.type: type = fn_type @HasI.I [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %I.0a6: %I.type.9bd = struct_value () [concrete] +// CHECK:STDOUT: %HasI.I: %HasI.I.type = struct_value () [concrete] // CHECK:STDOUT: %HasI.assoc_type: type = assoc_entity_type @HasI [concrete] -// CHECK:STDOUT: %assoc0: %HasI.assoc_type = assoc_entity element0, @HasI.%I.decl [concrete] +// CHECK:STDOUT: %assoc0: %HasI.assoc_type = assoc_entity element0, @HasI.%HasI.I.decl [concrete] // CHECK:STDOUT: %B: type = class_type @B [concrete] -// CHECK:STDOUT: %J.type: type = fn_type @J [concrete] -// CHECK:STDOUT: %J: %J.type = struct_value () [concrete] +// CHECK:STDOUT: %B.J.type: type = fn_type @B.J [concrete] +// CHECK:STDOUT: %B.J: %B.J.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %E: type = class_type @E [concrete] // CHECK:STDOUT: %E.elem: type = unbound_element_type %E, %B [concrete] // CHECK:STDOUT: %HasI.impl_witness: = impl_witness @E.%HasI.impl_witness_table [concrete] -// CHECK:STDOUT: %I.type.395: type = fn_type @I.loc15 [concrete] -// CHECK:STDOUT: %I.e74: %I.type.395 = struct_value () [concrete] +// CHECK:STDOUT: %E.as.HasI.impl.I.type: type = fn_type @E.as.HasI.impl.I [concrete] +// CHECK:STDOUT: %E.as.HasI.impl.I: %E.as.HasI.impl.I.type = struct_value () [concrete] // CHECK:STDOUT: %HasI.facet: %HasI.type = facet_value %E, (%HasI.impl_witness) [concrete] // CHECK:STDOUT: %struct_type.base.0ff: type = struct_type {.base: %B} [concrete] // CHECK:STDOUT: %complete_type.98e: = complete_type_witness %struct_type.base.0ff [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %E [concrete] // CHECK:STDOUT: %H.type: type = fn_type @H [concrete] // CHECK:STDOUT: %H: %H.type = struct_value () [concrete] -// CHECK:STDOUT: %.06f: type = fn_type_with_self_type %I.type.9bd, %HasI.facet [concrete] +// CHECK:STDOUT: %.06f: type = fn_type_with_self_type %HasI.I.type, %HasI.facet [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -535,33 +535,33 @@ fn P(o: O) { // CHECK:STDOUT: // CHECK:STDOUT: interface @HasI { // CHECK:STDOUT: %Self: %HasI.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %I.decl: %I.type.9bd = fn_decl @I.loc5 [concrete = constants.%I.0a6] {} {} -// CHECK:STDOUT: %assoc0: %HasI.assoc_type = assoc_entity element0, %I.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %HasI.I.decl: %HasI.I.type = fn_decl @HasI.I [concrete = constants.%HasI.I] {} {} +// CHECK:STDOUT: %assoc0: %HasI.assoc_type = assoc_entity element0, %HasI.I.decl [concrete = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .I = %assoc0 // CHECK:STDOUT: .J = -// CHECK:STDOUT: witness = (%I.decl) +// CHECK:STDOUT: witness = (%HasI.I.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @HasI.impl: %Self.ref as %HasI.ref { -// CHECK:STDOUT: %I.decl: %I.type.395 = fn_decl @I.loc15 [concrete = constants.%I.e74] {} {} +// CHECK:STDOUT: impl @E.as.HasI.impl: %Self.ref as %HasI.ref { +// CHECK:STDOUT: %E.as.HasI.impl.I.decl: %E.as.HasI.impl.I.type = fn_decl @E.as.HasI.impl.I [concrete = constants.%E.as.HasI.impl.I] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .I = %I.decl +// CHECK:STDOUT: .I = %E.as.HasI.impl.I.decl // CHECK:STDOUT: witness = @E.%HasI.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { -// CHECK:STDOUT: %J.decl: %J.type = fn_decl @J [concrete = constants.%J] {} {} +// CHECK:STDOUT: %B.J.decl: %B.J.type = fn_decl @B.J [concrete = constants.%B.J] {} {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B -// CHECK:STDOUT: .J = %J.decl +// CHECK:STDOUT: .J = %B.J.decl // CHECK:STDOUT: .HasI = // CHECK:STDOUT: .I = // CHECK:STDOUT: } @@ -569,11 +569,11 @@ fn P(o: O) { // CHECK:STDOUT: class @E { // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B] // CHECK:STDOUT: %.loc13: %E.elem = base_decl %B.ref, element0 [concrete] -// CHECK:STDOUT: impl_decl @HasI.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @E.as.HasI.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%E [concrete = constants.%E] // CHECK:STDOUT: %HasI.ref: type = name_ref HasI, file.%HasI.decl [concrete = constants.%HasI.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %HasI.impl_witness_table = impl_witness_table (@HasI.impl.%I.decl), @HasI.impl [concrete] +// CHECK:STDOUT: %HasI.impl_witness_table = impl_witness_table (@E.as.HasI.impl.%E.as.HasI.impl.I.decl), @E.as.HasI.impl [concrete] // CHECK:STDOUT: %HasI.impl_witness: = impl_witness %HasI.impl_witness_table [concrete = constants.%HasI.impl_witness] // CHECK:STDOUT: %struct_type.base: type = struct_type {.base: %B} [concrete = constants.%struct_type.base.0ff] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [concrete = constants.%complete_type.98e] @@ -587,19 +587,19 @@ fn P(o: O) { // CHECK:STDOUT: .I = // CHECK:STDOUT: .J = // CHECK:STDOUT: extend %B.ref -// CHECK:STDOUT: extend @HasI.impl.%HasI.ref +// CHECK:STDOUT: extend @E.as.HasI.impl.%HasI.ref // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @I.loc5(@HasI.%Self: %HasI.type) { +// CHECK:STDOUT: generic fn @HasI.I(@HasI.%Self: %HasI.type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @J() { +// CHECK:STDOUT: fn @B.J() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @I.loc15() { +// CHECK:STDOUT: fn @E.as.HasI.impl.I() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -608,44 +608,44 @@ fn P(o: O) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %E.ref.loc20: type = name_ref E, file.%E.decl [concrete = constants.%E] // CHECK:STDOUT: %I.ref.loc20: %HasI.assoc_type = name_ref I, @HasI.%assoc0 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc20: %.06f = impl_witness_access constants.%HasI.impl_witness, element0 [concrete = constants.%I.e74] -// CHECK:STDOUT: %I.call.loc20: init %empty_tuple.type = call %impl.elem0.loc20() +// CHECK:STDOUT: %impl.elem0.loc20: %.06f = impl_witness_access constants.%HasI.impl_witness, element0 [concrete = constants.%E.as.HasI.impl.I] +// CHECK:STDOUT: %E.as.HasI.impl.I.call.loc20: init %empty_tuple.type = call %impl.elem0.loc20() // CHECK:STDOUT: %e.ref.loc21: %E = name_ref e, %e // CHECK:STDOUT: %I.ref.loc21: %HasI.assoc_type = name_ref I, @HasI.%assoc0 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc21: %.06f = impl_witness_access constants.%HasI.impl_witness, element0 [concrete = constants.%I.e74] -// CHECK:STDOUT: %I.call.loc21: init %empty_tuple.type = call %impl.elem0.loc21() +// CHECK:STDOUT: %impl.elem0.loc21: %.06f = impl_witness_access constants.%HasI.impl_witness, element0 [concrete = constants.%E.as.HasI.impl.I] +// CHECK:STDOUT: %E.as.HasI.impl.I.call.loc21: init %empty_tuple.type = call %impl.elem0.loc21() // CHECK:STDOUT: %E.ref.loc22: type = name_ref E, file.%E.decl [concrete = constants.%E] -// CHECK:STDOUT: %J.ref.loc22: %J.type = name_ref J, @B.%J.decl [concrete = constants.%J] -// CHECK:STDOUT: %J.call.loc22: init %empty_tuple.type = call %J.ref.loc22() +// CHECK:STDOUT: %J.ref.loc22: %B.J.type = name_ref J, @B.%B.J.decl [concrete = constants.%B.J] +// CHECK:STDOUT: %B.J.call.loc22: init %empty_tuple.type = call %J.ref.loc22() // CHECK:STDOUT: %e.ref.loc23: %E = name_ref e, %e -// CHECK:STDOUT: %J.ref.loc23: %J.type = name_ref J, @B.%J.decl [concrete = constants.%J] -// CHECK:STDOUT: %J.call.loc23: init %empty_tuple.type = call %J.ref.loc23() +// CHECK:STDOUT: %J.ref.loc23: %B.J.type = name_ref J, @B.%B.J.decl [concrete = constants.%B.J] +// CHECK:STDOUT: %B.J.call.loc23: init %empty_tuple.type = call %J.ref.loc23() // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.loc5(constants.%Self) {} +// CHECK:STDOUT: specific @HasI.I(constants.%Self) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.loc5(constants.%HasI.facet) {} +// CHECK:STDOUT: specific @HasI.I(constants.%HasI.facet) {} // CHECK:STDOUT: // CHECK:STDOUT: --- fail_ambiguous_impl_and_base.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %Base: type = class_type @Base [concrete] -// CHECK:STDOUT: %K.type.5a4: type = fn_type @K.loc5 [concrete] -// CHECK:STDOUT: %K.801: %K.type.5a4 = struct_value () [concrete] +// CHECK:STDOUT: %Base.K.type: type = fn_type @Base.K [concrete] +// CHECK:STDOUT: %Base.K: %Base.K.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %HasK.type: type = facet_type <@HasK> [concrete] // CHECK:STDOUT: %Self: %HasK.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %K.type.76f: type = fn_type @K.loc9 [concrete] -// CHECK:STDOUT: %K.c0e: %K.type.76f = struct_value () [concrete] +// CHECK:STDOUT: %HasK.K.type: type = fn_type @HasK.K [concrete] +// CHECK:STDOUT: %HasK.K: %HasK.K.type = struct_value () [concrete] // CHECK:STDOUT: %HasK.assoc_type: type = assoc_entity_type @HasK [concrete] -// CHECK:STDOUT: %assoc0: %HasK.assoc_type = assoc_entity element0, @HasK.%K.decl [concrete] +// CHECK:STDOUT: %assoc0: %HasK.assoc_type = assoc_entity element0, @HasK.%HasK.K.decl [concrete] // CHECK:STDOUT: %L: type = class_type @L [concrete] // CHECK:STDOUT: %L.elem: type = unbound_element_type %L, %Base [concrete] // CHECK:STDOUT: %HasK.impl_witness: = impl_witness @L.%HasK.impl_witness_table [concrete] -// CHECK:STDOUT: %K.type.bc2: type = fn_type @K.loc15 [concrete] -// CHECK:STDOUT: %K.bd6: %K.type.bc2 = struct_value () [concrete] +// CHECK:STDOUT: %L.as.HasK.impl.K.type: type = fn_type @L.as.HasK.impl.K [concrete] +// CHECK:STDOUT: %L.as.HasK.impl.K: %L.as.HasK.impl.K.type = struct_value () [concrete] // CHECK:STDOUT: %HasK.facet: %HasK.type = facet_value %L, (%HasK.impl_witness) [concrete] // CHECK:STDOUT: %struct_type.base.b1e: type = struct_type {.base: %Base} [concrete] // CHECK:STDOUT: %complete_type.15c: = complete_type_witness %struct_type.base.b1e [concrete] @@ -676,43 +676,43 @@ fn P(o: O) { // CHECK:STDOUT: // CHECK:STDOUT: interface @HasK { // CHECK:STDOUT: %Self: %HasK.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %K.decl: %K.type.76f = fn_decl @K.loc9 [concrete = constants.%K.c0e] {} {} -// CHECK:STDOUT: %assoc0: %HasK.assoc_type = assoc_entity element0, %K.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %HasK.K.decl: %HasK.K.type = fn_decl @HasK.K [concrete = constants.%HasK.K] {} {} +// CHECK:STDOUT: %assoc0: %HasK.assoc_type = assoc_entity element0, %HasK.K.decl [concrete = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .K = %assoc0 -// CHECK:STDOUT: witness = (%K.decl) +// CHECK:STDOUT: witness = (%HasK.K.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @HasK.impl: %Self.ref as %HasK.ref { -// CHECK:STDOUT: %K.decl: %K.type.bc2 = fn_decl @K.loc15 [concrete = constants.%K.bd6] {} {} +// CHECK:STDOUT: impl @L.as.HasK.impl: %Self.ref as %HasK.ref { +// CHECK:STDOUT: %L.as.HasK.impl.K.decl: %L.as.HasK.impl.K.type = fn_decl @L.as.HasK.impl.K [concrete = constants.%L.as.HasK.impl.K] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .K = %K.decl +// CHECK:STDOUT: .K = %L.as.HasK.impl.K.decl // CHECK:STDOUT: witness = @L.%HasK.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Base { -// CHECK:STDOUT: %K.decl: %K.type.5a4 = fn_decl @K.loc5 [concrete = constants.%K.801] {} {} +// CHECK:STDOUT: %Base.K.decl: %Base.K.type = fn_decl @Base.K [concrete = constants.%Base.K] {} {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base -// CHECK:STDOUT: .K = %K.decl +// CHECK:STDOUT: .K = %Base.K.decl // CHECK:STDOUT: .HasK = // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @L { // CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [concrete = constants.%Base] // CHECK:STDOUT: %.loc13: %L.elem = base_decl %Base.ref, element0 [concrete] -// CHECK:STDOUT: impl_decl @HasK.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @L.as.HasK.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%L [concrete = constants.%L] // CHECK:STDOUT: %HasK.ref: type = name_ref HasK, file.%HasK.decl [concrete = constants.%HasK.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %HasK.impl_witness_table = impl_witness_table (@HasK.impl.%K.decl), @HasK.impl [concrete] +// CHECK:STDOUT: %HasK.impl_witness_table = impl_witness_table (@L.as.HasK.impl.%L.as.HasK.impl.K.decl), @L.as.HasK.impl [concrete] // CHECK:STDOUT: %HasK.impl_witness: = impl_witness %HasK.impl_witness_table [concrete = constants.%HasK.impl_witness] // CHECK:STDOUT: %struct_type.base: type = struct_type {.base: %Base} [concrete = constants.%struct_type.base.b1e] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [concrete = constants.%complete_type.15c] @@ -725,19 +725,19 @@ fn P(o: O) { // CHECK:STDOUT: .HasK = // CHECK:STDOUT: .K = // CHECK:STDOUT: extend %Base.ref -// CHECK:STDOUT: extend @HasK.impl.%HasK.ref +// CHECK:STDOUT: extend @L.as.HasK.impl.%HasK.ref // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @K.loc5() { +// CHECK:STDOUT: fn @Base.K() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @K.loc9(@HasK.%Self: %HasK.type) { +// CHECK:STDOUT: generic fn @HasK.K(@HasK.%Self: %HasK.type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @K.loc15() { +// CHECK:STDOUT: fn @L.as.HasK.impl.K() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -751,43 +751,43 @@ fn P(o: O) { // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @K.loc9(constants.%Self) {} +// CHECK:STDOUT: specific @HasK.K(constants.%Self) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @K.loc9(constants.%HasK.facet) {} +// CHECK:STDOUT: specific @HasK.K(constants.%HasK.facet) {} // CHECK:STDOUT: // CHECK:STDOUT: --- ambiguity_hidden.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %NBase: type = class_type @NBase [concrete] -// CHECK:STDOUT: %N.type.fbf: type = fn_type @N.loc5 [concrete] +// CHECK:STDOUT: %NBase.N.type: type = fn_type @NBase.N [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %N.897: %N.type.fbf = struct_value () [concrete] +// CHECK:STDOUT: %NBase.N: %NBase.N.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %HasN1.type: type = facet_type <@HasN1> [concrete] // CHECK:STDOUT: %Self.e0b: %HasN1.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %N.type.3da: type = fn_type @N.loc9 [concrete] -// CHECK:STDOUT: %N.a51: %N.type.3da = struct_value () [concrete] +// CHECK:STDOUT: %HasN1.N.type: type = fn_type @HasN1.N [concrete] +// CHECK:STDOUT: %HasN1.N: %HasN1.N.type = struct_value () [concrete] // CHECK:STDOUT: %HasN1.assoc_type: type = assoc_entity_type @HasN1 [concrete] -// CHECK:STDOUT: %assoc0.c23: %HasN1.assoc_type = assoc_entity element0, @HasN1.%N.decl [concrete] +// CHECK:STDOUT: %assoc0.c23: %HasN1.assoc_type = assoc_entity element0, @HasN1.%HasN1.N.decl [concrete] // CHECK:STDOUT: %HasN2.type: type = facet_type <@HasN2> [concrete] // CHECK:STDOUT: %Self.e6e: %HasN2.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %N.type.0aa: type = fn_type @N.loc13 [concrete] -// CHECK:STDOUT: %N.1a4: %N.type.0aa = struct_value () [concrete] +// CHECK:STDOUT: %HasN2.N.type: type = fn_type @HasN2.N [concrete] +// CHECK:STDOUT: %HasN2.N: %HasN2.N.type = struct_value () [concrete] // CHECK:STDOUT: %HasN2.assoc_type: type = assoc_entity_type @HasN2 [concrete] -// CHECK:STDOUT: %assoc0.7d1: %HasN2.assoc_type = assoc_entity element0, @HasN2.%N.decl [concrete] +// CHECK:STDOUT: %assoc0.7d1: %HasN2.assoc_type = assoc_entity element0, @HasN2.%HasN2.N.decl [concrete] // CHECK:STDOUT: %O: type = class_type @O [concrete] // CHECK:STDOUT: %O.elem: type = unbound_element_type %O, %NBase [concrete] // CHECK:STDOUT: %HasN1.impl_witness: = impl_witness @O.%HasN1.impl_witness_table [concrete] -// CHECK:STDOUT: %N.type.ffc: type = fn_type @N.loc19 [concrete] -// CHECK:STDOUT: %N.4f5: %N.type.ffc = struct_value () [concrete] +// CHECK:STDOUT: %O.as.HasN1.impl.N.type: type = fn_type @O.as.HasN1.impl.N [concrete] +// CHECK:STDOUT: %O.as.HasN1.impl.N: %O.as.HasN1.impl.N.type = struct_value () [concrete] // CHECK:STDOUT: %HasN1.facet: %HasN1.type = facet_value %O, (%HasN1.impl_witness) [concrete] // CHECK:STDOUT: %HasN2.impl_witness: = impl_witness @O.%HasN2.impl_witness_table [concrete] -// CHECK:STDOUT: %N.type.8af: type = fn_type @N.loc22 [concrete] -// CHECK:STDOUT: %N.308: %N.type.8af = struct_value () [concrete] +// CHECK:STDOUT: %O.as.HasN2.impl.N.type: type = fn_type @O.as.HasN2.impl.N [concrete] +// CHECK:STDOUT: %O.as.HasN2.impl.N: %O.as.HasN2.impl.N.type = struct_value () [concrete] // CHECK:STDOUT: %HasN2.facet: %HasN2.type = facet_value %O, (%HasN2.impl_witness) [concrete] -// CHECK:STDOUT: %N.type.8b4: type = fn_type @N.loc24 [concrete] -// CHECK:STDOUT: %N.cc3: %N.type.8b4 = struct_value () [concrete] +// CHECK:STDOUT: %O.N.type: type = fn_type @O.N [concrete] +// CHECK:STDOUT: %O.N: %O.N.type = struct_value () [concrete] // CHECK:STDOUT: %struct_type.base.9c6: type = struct_type {.base: %NBase} [concrete] // CHECK:STDOUT: %complete_type.121: = complete_type_witness %struct_type.base.9c6 [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %O [concrete] @@ -819,52 +819,52 @@ fn P(o: O) { // CHECK:STDOUT: // CHECK:STDOUT: interface @HasN1 { // CHECK:STDOUT: %Self: %HasN1.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.e0b] -// CHECK:STDOUT: %N.decl: %N.type.3da = fn_decl @N.loc9 [concrete = constants.%N.a51] {} {} -// CHECK:STDOUT: %assoc0: %HasN1.assoc_type = assoc_entity element0, %N.decl [concrete = constants.%assoc0.c23] +// CHECK:STDOUT: %HasN1.N.decl: %HasN1.N.type = fn_decl @HasN1.N [concrete = constants.%HasN1.N] {} {} +// CHECK:STDOUT: %assoc0: %HasN1.assoc_type = assoc_entity element0, %HasN1.N.decl [concrete = constants.%assoc0.c23] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .N = %assoc0 // CHECK:STDOUT: .HasN2 = -// CHECK:STDOUT: witness = (%N.decl) +// CHECK:STDOUT: witness = (%HasN1.N.decl) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @HasN2 { // CHECK:STDOUT: %Self: %HasN2.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.e6e] -// CHECK:STDOUT: %N.decl: %N.type.0aa = fn_decl @N.loc13 [concrete = constants.%N.1a4] {} {} -// CHECK:STDOUT: %assoc0: %HasN2.assoc_type = assoc_entity element0, %N.decl [concrete = constants.%assoc0.7d1] +// CHECK:STDOUT: %HasN2.N.decl: %HasN2.N.type = fn_decl @HasN2.N [concrete = constants.%HasN2.N] {} {} +// CHECK:STDOUT: %assoc0: %HasN2.assoc_type = assoc_entity element0, %HasN2.N.decl [concrete = constants.%assoc0.7d1] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .N = %assoc0 -// CHECK:STDOUT: witness = (%N.decl) +// CHECK:STDOUT: witness = (%HasN2.N.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @HasN1.impl: %Self.ref as %HasN1.ref { -// CHECK:STDOUT: %N.decl: %N.type.ffc = fn_decl @N.loc19 [concrete = constants.%N.4f5] {} {} +// CHECK:STDOUT: impl @O.as.HasN1.impl: %Self.ref as %HasN1.ref { +// CHECK:STDOUT: %O.as.HasN1.impl.N.decl: %O.as.HasN1.impl.N.type = fn_decl @O.as.HasN1.impl.N [concrete = constants.%O.as.HasN1.impl.N] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .N = %N.decl +// CHECK:STDOUT: .N = %O.as.HasN1.impl.N.decl // CHECK:STDOUT: witness = @O.%HasN1.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @HasN2.impl: %Self.ref as %HasN2.ref { -// CHECK:STDOUT: %N.decl: %N.type.8af = fn_decl @N.loc22 [concrete = constants.%N.308] {} {} +// CHECK:STDOUT: impl @O.as.HasN2.impl: %Self.ref as %HasN2.ref { +// CHECK:STDOUT: %O.as.HasN2.impl.N.decl: %O.as.HasN2.impl.N.type = fn_decl @O.as.HasN2.impl.N [concrete = constants.%O.as.HasN2.impl.N] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .N = %N.decl +// CHECK:STDOUT: .N = %O.as.HasN2.impl.N.decl // CHECK:STDOUT: witness = @O.%HasN2.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NBase { -// CHECK:STDOUT: %N.decl: %N.type.fbf = fn_decl @N.loc5 [concrete = constants.%N.897] {} {} +// CHECK:STDOUT: %NBase.N.decl: %NBase.N.type = fn_decl @NBase.N [concrete = constants.%NBase.N] {} {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%NBase -// CHECK:STDOUT: .N = %N.decl +// CHECK:STDOUT: .N = %NBase.N.decl // CHECK:STDOUT: .HasN1 = // CHECK:STDOUT: .HasN2 = // CHECK:STDOUT: } @@ -872,19 +872,19 @@ fn P(o: O) { // CHECK:STDOUT: class @O { // CHECK:STDOUT: %NBase.ref: type = name_ref NBase, file.%NBase.decl [concrete = constants.%NBase] // CHECK:STDOUT: %.loc17: %O.elem = base_decl %NBase.ref, element0 [concrete] -// CHECK:STDOUT: impl_decl @HasN1.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @O.as.HasN1.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%O [concrete = constants.%O] // CHECK:STDOUT: %HasN1.ref: type = name_ref HasN1, file.%HasN1.decl [concrete = constants.%HasN1.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %HasN1.impl_witness_table = impl_witness_table (@HasN1.impl.%N.decl), @HasN1.impl [concrete] +// CHECK:STDOUT: %HasN1.impl_witness_table = impl_witness_table (@O.as.HasN1.impl.%O.as.HasN1.impl.N.decl), @O.as.HasN1.impl [concrete] // CHECK:STDOUT: %HasN1.impl_witness: = impl_witness %HasN1.impl_witness_table [concrete = constants.%HasN1.impl_witness] -// CHECK:STDOUT: impl_decl @HasN2.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @O.as.HasN2.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%O [concrete = constants.%O] // CHECK:STDOUT: %HasN2.ref: type = name_ref HasN2, file.%HasN2.decl [concrete = constants.%HasN2.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %HasN2.impl_witness_table = impl_witness_table (@HasN2.impl.%N.decl), @HasN2.impl [concrete] +// CHECK:STDOUT: %HasN2.impl_witness_table = impl_witness_table (@O.as.HasN2.impl.%O.as.HasN2.impl.N.decl), @O.as.HasN2.impl [concrete] // CHECK:STDOUT: %HasN2.impl_witness: = impl_witness %HasN2.impl_witness_table [concrete = constants.%HasN2.impl_witness] -// CHECK:STDOUT: %N.decl: %N.type.8b4 = fn_decl @N.loc24 [concrete = constants.%N.cc3] {} {} +// CHECK:STDOUT: %O.N.decl: %O.N.type = fn_decl @O.N [concrete = constants.%O.N] {} {} // CHECK:STDOUT: %struct_type.base: type = struct_type {.base: %NBase} [concrete = constants.%struct_type.base.9c6] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [concrete = constants.%complete_type.121] // CHECK:STDOUT: complete_type_witness = %complete_type @@ -895,53 +895,53 @@ fn P(o: O) { // CHECK:STDOUT: .base = %.loc17 // CHECK:STDOUT: .HasN1 = // CHECK:STDOUT: .HasN2 = -// CHECK:STDOUT: .N = %N.decl +// CHECK:STDOUT: .N = %O.N.decl // CHECK:STDOUT: extend %NBase.ref -// CHECK:STDOUT: extend @HasN1.impl.%HasN1.ref -// CHECK:STDOUT: extend @HasN2.impl.%HasN2.ref +// CHECK:STDOUT: extend @O.as.HasN1.impl.%HasN1.ref +// CHECK:STDOUT: extend @O.as.HasN2.impl.%HasN2.ref // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @N.loc5() { +// CHECK:STDOUT: fn @NBase.N() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @N.loc9(@HasN1.%Self: %HasN1.type) { +// CHECK:STDOUT: generic fn @HasN1.N(@HasN1.%Self: %HasN1.type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @N.loc13(@HasN2.%Self: %HasN2.type) { +// CHECK:STDOUT: generic fn @HasN2.N(@HasN2.%Self: %HasN2.type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @N.loc19() { +// CHECK:STDOUT: fn @O.as.HasN1.impl.N() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @N.loc22() { +// CHECK:STDOUT: fn @O.as.HasN2.impl.N() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @N.loc24(); +// CHECK:STDOUT: fn @O.N(); // CHECK:STDOUT: // CHECK:STDOUT: fn @P(%o.param: %O) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %O.ref.loc28: type = name_ref O, file.%O.decl [concrete = constants.%O] -// CHECK:STDOUT: %N.ref.loc28: %N.type.8b4 = name_ref N, @O.%N.decl [concrete = constants.%N.cc3] -// CHECK:STDOUT: %N.call.loc28: init %empty_tuple.type = call %N.ref.loc28() +// CHECK:STDOUT: %N.ref.loc28: %O.N.type = name_ref N, @O.%O.N.decl [concrete = constants.%O.N] +// CHECK:STDOUT: %O.N.call.loc28: init %empty_tuple.type = call %N.ref.loc28() // CHECK:STDOUT: %o.ref: %O = name_ref o, %o -// CHECK:STDOUT: %N.ref.loc29: %N.type.8b4 = name_ref N, @O.%N.decl [concrete = constants.%N.cc3] -// CHECK:STDOUT: %N.call.loc29: init %empty_tuple.type = call %N.ref.loc29() +// CHECK:STDOUT: %N.ref.loc29: %O.N.type = name_ref N, @O.%O.N.decl [concrete = constants.%O.N] +// CHECK:STDOUT: %O.N.call.loc29: init %empty_tuple.type = call %N.ref.loc29() // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @N.loc9(constants.%Self.e0b) {} +// CHECK:STDOUT: specific @HasN1.N(constants.%Self.e0b) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @N.loc13(constants.%Self.e6e) {} +// CHECK:STDOUT: specific @HasN2.N(constants.%Self.e6e) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @N.loc9(constants.%HasN1.facet) {} +// CHECK:STDOUT: specific @HasN1.N(constants.%HasN1.facet) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @N.loc13(constants.%HasN2.facet) {} +// CHECK:STDOUT: specific @HasN2.N(constants.%HasN2.facet) {} // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/no_definition_in_impl_file.carbon b/toolchain/check/testdata/impl/no_definition_in_impl_file.carbon index 91866b9a5f51..bd282410679c 100644 --- a/toolchain/check/testdata/impl/no_definition_in_impl_file.carbon +++ b/toolchain/check/testdata/impl/no_definition_in_impl_file.carbon @@ -118,12 +118,12 @@ impl () as D; // CHECK:STDOUT: .A = %A.decl // CHECK:STDOUT: } // CHECK:STDOUT: %A.decl: type = interface_decl @A [concrete = constants.%A.type] {} {} -// CHECK:STDOUT: impl_decl @A.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @empty_tuple.type.as.A.impl [concrete] {} { // CHECK:STDOUT: %.loc10_7.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc10_7.2: type = converted %.loc10_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %A.impl_witness_table = impl_witness_table (), @A.impl [concrete] +// CHECK:STDOUT: %A.impl_witness_table = impl_witness_table (), @empty_tuple.type.as.A.impl [concrete] // CHECK:STDOUT: %A.impl_witness: = impl_witness %A.impl_witness_table [concrete = constants.%A.impl_witness] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -135,7 +135,7 @@ impl () as D; // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @A.impl: %.loc10_7.2 as %A.ref; +// CHECK:STDOUT: impl @empty_tuple.type.as.A.impl: %.loc10_7.2 as %A.ref; // CHECK:STDOUT: // CHECK:STDOUT: --- fail_decl_in_api_definition_in_impl.impl.carbon // CHECK:STDOUT: @@ -157,12 +157,12 @@ impl () as D; // CHECK:STDOUT: } // CHECK:STDOUT: %default.import.loc2_46.1 = import // CHECK:STDOUT: %default.import.loc2_46.2 = import -// CHECK:STDOUT: impl_decl @A.impl.064930.2 [concrete] {} { +// CHECK:STDOUT: impl_decl @empty_tuple.type.as.A.impl.064930.2 [concrete] {} { // CHECK:STDOUT: %.loc8_7.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc8_7.2: type = converted %.loc8_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %A.ref: type = name_ref A, imports.%Main.A [concrete = constants.%A.type] // CHECK:STDOUT: } -// CHECK:STDOUT: impl_decl @A.impl.064930.3 [concrete] {} { +// CHECK:STDOUT: impl_decl @empty_tuple.type.as.A.impl.064930.3 [concrete] {} { // CHECK:STDOUT: %.loc14_7.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc14_7.2: type = converted %.loc14_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %A.ref: type = name_ref A, imports.%Main.A [concrete = constants.%A.type] @@ -175,11 +175,11 @@ impl () as D; // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @A.impl.064930.1: imports.%Main.import_ref.e5c as imports.%Main.import_ref.831 [from "fail_decl_in_api_definition_in_impl.carbon"]; +// CHECK:STDOUT: impl @empty_tuple.type.as.A.impl.064930.1: imports.%Main.import_ref.e5c as imports.%Main.import_ref.831 [from "fail_decl_in_api_definition_in_impl.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: impl @A.impl.064930.2: %.loc8_7.2 as %A.ref; +// CHECK:STDOUT: impl @empty_tuple.type.as.A.impl.064930.2: %.loc8_7.2 as %A.ref; // CHECK:STDOUT: -// CHECK:STDOUT: impl @A.impl.064930.3: %.loc14_7.2 as %A.ref { +// CHECK:STDOUT: impl @empty_tuple.type.as.A.impl.064930.3: %.loc14_7.2 as %A.ref { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = // CHECK:STDOUT: } @@ -218,12 +218,12 @@ impl () as D; // CHECK:STDOUT: .B = %B.decl // CHECK:STDOUT: } // CHECK:STDOUT: %B.decl: type = interface_decl @B [concrete = constants.%B.type] {} {} -// CHECK:STDOUT: impl_decl @B.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @empty_tuple.type.as.B.impl [concrete] {} { // CHECK:STDOUT: %.loc10_7.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc10_7.2: type = converted %.loc10_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %B.impl_witness_table = impl_witness_table (), @B.impl [concrete] +// CHECK:STDOUT: %B.impl_witness_table = impl_witness_table (), @empty_tuple.type.as.B.impl [concrete] // CHECK:STDOUT: %B.impl_witness: = impl_witness %B.impl_witness_table [concrete = constants.%B.impl_witness] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -235,7 +235,7 @@ impl () as D; // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @B.impl: %.loc10_7.2 as %B.ref; +// CHECK:STDOUT: impl @empty_tuple.type.as.B.impl: %.loc10_7.2 as %B.ref; // CHECK:STDOUT: // CHECK:STDOUT: --- decl_only_in_api.impl.carbon // CHECK:STDOUT: @@ -265,7 +265,7 @@ impl () as D; // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @B.impl: imports.%Main.import_ref.e5c as imports.%Main.import_ref.171 [from "fail_decl_only_in_api.carbon"]; +// CHECK:STDOUT: impl @empty_tuple.type.as.B.impl: imports.%Main.import_ref.e5c as imports.%Main.import_ref.171 [from "fail_decl_only_in_api.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: --- fail_decl_in_api_decl_in_impl.carbon // CHECK:STDOUT: @@ -281,12 +281,12 @@ impl () as D; // CHECK:STDOUT: .C = %C.decl // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: type = interface_decl @C [concrete = constants.%C.type] {} {} -// CHECK:STDOUT: impl_decl @C.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @empty_tuple.type.as.C.impl [concrete] {} { // CHECK:STDOUT: %.loc10_7.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc10_7.2: type = converted %.loc10_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %C.impl_witness_table = impl_witness_table (), @C.impl [concrete] +// CHECK:STDOUT: %C.impl_witness_table = impl_witness_table (), @empty_tuple.type.as.C.impl [concrete] // CHECK:STDOUT: %C.impl_witness: = impl_witness %C.impl_witness_table [concrete = constants.%C.impl_witness] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -298,7 +298,7 @@ impl () as D; // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @C.impl: %.loc10_7.2 as %C.ref; +// CHECK:STDOUT: impl @empty_tuple.type.as.C.impl: %.loc10_7.2 as %C.ref; // CHECK:STDOUT: // CHECK:STDOUT: --- fail_decl_in_api_decl_in_impl.impl.carbon // CHECK:STDOUT: @@ -320,7 +320,7 @@ impl () as D; // CHECK:STDOUT: } // CHECK:STDOUT: %default.import.loc2_40.1 = import // CHECK:STDOUT: %default.import.loc2_40.2 = import -// CHECK:STDOUT: impl_decl @C.impl.590fe9.2 [concrete] {} { +// CHECK:STDOUT: impl_decl @empty_tuple.type.as.C.impl.590fe9.2 [concrete] {} { // CHECK:STDOUT: %.loc8_7.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc8_7.2: type = converted %.loc8_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C.type] @@ -333,9 +333,9 @@ impl () as D; // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @C.impl.590fe9.1: imports.%Main.import_ref.e5c as imports.%Main.import_ref.653 [from "fail_decl_in_api_decl_in_impl.carbon"]; +// CHECK:STDOUT: impl @empty_tuple.type.as.C.impl.590fe9.1: imports.%Main.import_ref.e5c as imports.%Main.import_ref.653 [from "fail_decl_in_api_decl_in_impl.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: impl @C.impl.590fe9.2: %.loc8_7.2 as %C.ref; +// CHECK:STDOUT: impl @empty_tuple.type.as.C.impl.590fe9.2: %.loc8_7.2 as %C.ref; // CHECK:STDOUT: // CHECK:STDOUT: --- decl_only_in_impl.carbon // CHECK:STDOUT: @@ -359,12 +359,12 @@ impl () as D; // CHECK:STDOUT: %default.import.loc2_33.1 = import // CHECK:STDOUT: %default.import.loc2_33.2 = import // CHECK:STDOUT: %D.decl: type = interface_decl @D [concrete = constants.%D.type] {} {} -// CHECK:STDOUT: impl_decl @D.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @empty_tuple.type.as.D.impl [concrete] {} { // CHECK:STDOUT: %.loc10_7.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc10_7.2: type = converted %.loc10_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %D.impl_witness_table = impl_witness_table (), @D.impl [concrete] +// CHECK:STDOUT: %D.impl_witness_table = impl_witness_table (), @empty_tuple.type.as.D.impl [concrete] // CHECK:STDOUT: %D.impl_witness: = impl_witness %D.impl_witness_table [concrete = constants.%D.impl_witness] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -376,5 +376,5 @@ impl () as D; // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @D.impl: %.loc10_7.2 as %D.ref; +// CHECK:STDOUT: impl @empty_tuple.type.as.D.impl: %.loc10_7.2 as %D.ref; // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/redeclaration.carbon b/toolchain/check/testdata/impl/redeclaration.carbon index 02645a9bf5dd..ce881fc167c1 100644 --- a/toolchain/check/testdata/impl/redeclaration.carbon +++ b/toolchain/check/testdata/impl/redeclaration.carbon @@ -54,15 +54,15 @@ impl i32 as I {} // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @i32.as.I.impl [concrete] {} { // CHECK:STDOUT: %int_32.loc17: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc17: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %I.ref.loc17: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @I.impl [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @i32.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness] // CHECK:STDOUT: %X.decl: type = class_decl @X [concrete = constants.%X] {} {} -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @i32.as.I.impl [concrete] {} { // CHECK:STDOUT: %int_32.loc23: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc23: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %I.ref.loc23: type = name_ref I, file.%I.decl [concrete = constants.%I.type] @@ -77,13 +77,13 @@ impl i32 as I {} // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: %i32.loc17 as %I.ref.loc17 { +// CHECK:STDOUT: impl @i32.as.I.impl: %i32.loc17 as %I.ref.loc17 { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%I.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @X { -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @i32.as.I.impl [concrete] {} { // CHECK:STDOUT: %int_32.loc20: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc20: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %I.ref.loc20: type = name_ref I, file.%I.decl [concrete = constants.%I.type] diff --git a/toolchain/check/testdata/impl/self_in_class.carbon b/toolchain/check/testdata/impl/self_in_class.carbon index bf779614e8d6..e4d928a3f680 100644 --- a/toolchain/check/testdata/impl/self_in_class.carbon +++ b/toolchain/check/testdata/impl/self_in_class.carbon @@ -33,18 +33,18 @@ class A { // CHECK:STDOUT: %Self: %DefaultConstructible.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic] // CHECK:STDOUT: %pattern_type.839: type = pattern_type %Self.as_type [symbolic] -// CHECK:STDOUT: %Make.type.068: type = fn_type @Make.loc16 [concrete] -// CHECK:STDOUT: %Make.606: %Make.type.068 = struct_value () [concrete] +// CHECK:STDOUT: %DefaultConstructible.Make.type: type = fn_type @DefaultConstructible.Make [concrete] +// CHECK:STDOUT: %DefaultConstructible.Make: %DefaultConstructible.Make.type = struct_value () [concrete] // CHECK:STDOUT: %DefaultConstructible.assoc_type: type = assoc_entity_type @DefaultConstructible [concrete] -// CHECK:STDOUT: %assoc0: %DefaultConstructible.assoc_type = assoc_entity element0, @DefaultConstructible.%Make.decl [concrete] +// CHECK:STDOUT: %assoc0: %DefaultConstructible.assoc_type = assoc_entity element0, @DefaultConstructible.%DefaultConstructible.Make.decl [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %A: type = class_type @A [concrete] // CHECK:STDOUT: %DefaultConstructible.impl_witness: = impl_witness @A.%DefaultConstructible.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] -// CHECK:STDOUT: %Make.type.351: type = fn_type @Make.loc25 [concrete] -// CHECK:STDOUT: %Make.b73: %Make.type.351 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.DefaultConstructible.impl.Make.type: type = fn_type @C.as.DefaultConstructible.impl.Make [concrete] +// CHECK:STDOUT: %C.as.DefaultConstructible.impl.Make: %C.as.DefaultConstructible.impl.Make.type = struct_value () [concrete] // CHECK:STDOUT: %DefaultConstructible.facet: %DefaultConstructible.type = facet_value %C, (%DefaultConstructible.impl_witness) [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: } @@ -62,36 +62,36 @@ class A { // CHECK:STDOUT: // CHECK:STDOUT: interface @DefaultConstructible { // CHECK:STDOUT: %Self: %DefaultConstructible.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %Make.decl: %Make.type.068 = fn_decl @Make.loc16 [concrete = constants.%Make.606] { -// CHECK:STDOUT: %return.patt: @Make.loc16.%pattern_type (%pattern_type.839) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @Make.loc16.%pattern_type (%pattern_type.839) = out_param_pattern %return.patt, call_param0 [concrete] +// CHECK:STDOUT: %DefaultConstructible.Make.decl: %DefaultConstructible.Make.type = fn_decl @DefaultConstructible.Make [concrete = constants.%DefaultConstructible.Make] { +// CHECK:STDOUT: %return.patt: @DefaultConstructible.Make.%pattern_type (%pattern_type.839) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @DefaultConstructible.Make.%pattern_type (%pattern_type.839) = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: %DefaultConstructible.type = name_ref Self, @DefaultConstructible.%Self [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc16_16.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc16_16.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc16: type = converted %Self.ref, %Self.as_type.loc16_16.1 [symbolic = %Self.as_type.loc16_16.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %return.param: ref @Make.loc16.%Self.as_type.loc16_16.2 (%Self.as_type) = out_param call_param0 -// CHECK:STDOUT: %return: ref @Make.loc16.%Self.as_type.loc16_16.2 (%Self.as_type) = return_slot %return.param +// CHECK:STDOUT: %Self.as_type.loc16_16.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc16_16.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc16: type = converted %Self.ref, %Self.as_type.loc16_16.2 [symbolic = %Self.as_type.loc16_16.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %return.param: ref @DefaultConstructible.Make.%Self.as_type.loc16_16.1 (%Self.as_type) = out_param call_param0 +// CHECK:STDOUT: %return: ref @DefaultConstructible.Make.%Self.as_type.loc16_16.1 (%Self.as_type) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %DefaultConstructible.assoc_type = assoc_entity element0, %Make.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %assoc0: %DefaultConstructible.assoc_type = assoc_entity element0, %DefaultConstructible.Make.decl [concrete = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .Make = %assoc0 -// CHECK:STDOUT: witness = (%Make.decl) +// CHECK:STDOUT: witness = (%DefaultConstructible.Make.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @DefaultConstructible.impl: %C.ref as %DefaultConstructible.ref { -// CHECK:STDOUT: %Make.decl: %Make.type.351 = fn_decl @Make.loc25 [concrete = constants.%Make.b73] { +// CHECK:STDOUT: impl @C.as.DefaultConstructible.impl: %C.ref as %DefaultConstructible.ref { +// CHECK:STDOUT: %C.as.DefaultConstructible.impl.Make.decl: %C.as.DefaultConstructible.impl.Make.type = fn_decl @C.as.DefaultConstructible.impl.Make [concrete = constants.%C.as.DefaultConstructible.impl.Make] { // CHECK:STDOUT: %return.patt: %pattern_type.c48 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.c48 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @DefaultConstructible.impl.%C.ref [concrete = constants.%C] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @C.as.DefaultConstructible.impl.%C.ref [concrete = constants.%C] // CHECK:STDOUT: %return.param: ref %C = out_param call_param0 // CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Make = %Make.decl +// CHECK:STDOUT: .Make = %C.as.DefaultConstructible.impl.Make.decl // CHECK:STDOUT: witness = @A.%DefaultConstructible.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: @@ -105,11 +105,11 @@ class A { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A { -// CHECK:STDOUT: impl_decl @DefaultConstructible.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.DefaultConstructible.impl [concrete] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %DefaultConstructible.ref: type = name_ref DefaultConstructible, file.%DefaultConstructible.decl [concrete = constants.%DefaultConstructible.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %DefaultConstructible.impl_witness_table = impl_witness_table (@DefaultConstructible.impl.%Make.decl), @DefaultConstructible.impl [concrete] +// CHECK:STDOUT: %DefaultConstructible.impl_witness_table = impl_witness_table (@C.as.DefaultConstructible.impl.%C.as.DefaultConstructible.impl.Make.decl), @C.as.DefaultConstructible.impl [concrete] // CHECK:STDOUT: %DefaultConstructible.impl_witness: = impl_witness %DefaultConstructible.impl_witness_table [concrete = constants.%DefaultConstructible.impl_witness] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] @@ -121,15 +121,15 @@ class A { // CHECK:STDOUT: .DefaultConstructible = // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Make.loc16(@DefaultConstructible.%Self: %DefaultConstructible.type) { +// CHECK:STDOUT: generic fn @DefaultConstructible.Make(@DefaultConstructible.%Self: %DefaultConstructible.type) { // CHECK:STDOUT: %Self: %DefaultConstructible.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc16_16.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc16_16.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc16_16.2 [symbolic = %pattern_type (constants.%pattern_type.839)] +// CHECK:STDOUT: %Self.as_type.loc16_16.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc16_16.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc16_16.1 [symbolic = %pattern_type (constants.%pattern_type.839)] // CHECK:STDOUT: -// CHECK:STDOUT: fn() -> @Make.loc16.%Self.as_type.loc16_16.2 (%Self.as_type); +// CHECK:STDOUT: fn() -> @DefaultConstructible.Make.%Self.as_type.loc16_16.1 (%Self.as_type); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Make.loc25() -> %return.param: %C { +// CHECK:STDOUT: fn @C.as.DefaultConstructible.impl.Make() -> %return.param: %C { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %.loc25_33.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc25_33.2: init %C = class_init (), %return [concrete = constants.%C.val] @@ -137,15 +137,15 @@ class A { // CHECK:STDOUT: return %.loc25_34 to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Make.loc16(constants.%Self) { +// CHECK:STDOUT: specific @DefaultConstructible.Make(constants.%Self) { // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %Self.as_type.loc16_16.2 => constants.%Self.as_type +// CHECK:STDOUT: %Self.as_type.loc16_16.1 => constants.%Self.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.839 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Make.loc16(constants.%DefaultConstructible.facet) { +// CHECK:STDOUT: specific @DefaultConstructible.Make(constants.%DefaultConstructible.facet) { // CHECK:STDOUT: %Self => constants.%DefaultConstructible.facet -// CHECK:STDOUT: %Self.as_type.loc16_16.2 => constants.%C +// CHECK:STDOUT: %Self.as_type.loc16_16.1 => constants.%C // CHECK:STDOUT: %pattern_type => constants.%pattern_type.c48 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/self_in_signature.carbon b/toolchain/check/testdata/impl/self_in_signature.carbon index 2c97fc0f82d9..a7d2d4a863e3 100644 --- a/toolchain/check/testdata/impl/self_in_signature.carbon +++ b/toolchain/check/testdata/impl/self_in_signature.carbon @@ -47,25 +47,25 @@ impl D as SelfNested { // CHECK:STDOUT: %Self.085: %UseSelf.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type.599: type = facet_access_type %Self.085 [symbolic] // CHECK:STDOUT: %pattern_type.3ef: type = pattern_type %Self.as_type.599 [symbolic] -// CHECK:STDOUT: %F.type.86a: type = fn_type @F.loc16 [concrete] +// CHECK:STDOUT: %UseSelf.F.type: type = fn_type @UseSelf.F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F.408: %F.type.86a = struct_value () [concrete] +// CHECK:STDOUT: %UseSelf.F: %UseSelf.F.type = struct_value () [concrete] // CHECK:STDOUT: %UseSelf.assoc_type: type = assoc_entity_type @UseSelf [concrete] -// CHECK:STDOUT: %assoc0.24c: %UseSelf.assoc_type = assoc_entity element0, @UseSelf.%F.decl [concrete] +// CHECK:STDOUT: %assoc0.24c: %UseSelf.assoc_type = assoc_entity element0, @UseSelf.%UseSelf.F.decl [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %D: type = class_type @D [concrete] // CHECK:STDOUT: %UseSelf.impl_witness.b25: = impl_witness file.%UseSelf.impl_witness_table.loc23 [concrete] // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] -// CHECK:STDOUT: %F.type.fc6: type = fn_type @F.loc24 [concrete] -// CHECK:STDOUT: %F.5e2: %F.type.fc6 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.UseSelf.impl.F.type: type = fn_type @C.as.UseSelf.impl.F [concrete] +// CHECK:STDOUT: %C.as.UseSelf.impl.F: %C.as.UseSelf.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %UseSelf.facet.727: %UseSelf.type = facet_value %C, (%UseSelf.impl_witness.b25) [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %UseSelf.impl_witness.f90: = impl_witness file.%UseSelf.impl_witness_table.loc27 [concrete] // CHECK:STDOUT: %pattern_type.510: type = pattern_type %D [concrete] -// CHECK:STDOUT: %F.type.0aa: type = fn_type @F.loc28 [concrete] -// CHECK:STDOUT: %F.f71: %F.type.0aa = struct_value () [concrete] +// CHECK:STDOUT: %D.as.UseSelf.impl.F.type: type = fn_type @D.as.UseSelf.impl.F [concrete] +// CHECK:STDOUT: %D.as.UseSelf.impl.F: %D.as.UseSelf.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %UseSelf.facet.d11: %UseSelf.type = facet_value %D, (%UseSelf.impl_witness.f90) [concrete] // CHECK:STDOUT: %D.val: %D = struct_value () [concrete] // CHECK:STDOUT: %SelfNested.type: type = facet_type <@SelfNested> [concrete] @@ -76,25 +76,25 @@ impl D as SelfNested { // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] // CHECK:STDOUT: %tuple.type.46b: type = tuple_type (%ptr.e87, %struct_type.x.y.270) [symbolic] // CHECK:STDOUT: %pattern_type.5a1: type = pattern_type %tuple.type.46b [symbolic] -// CHECK:STDOUT: %F.type.6ed: type = fn_type @F.loc32 [concrete] -// CHECK:STDOUT: %F.998: %F.type.6ed = struct_value () [concrete] +// CHECK:STDOUT: %SelfNested.F.type: type = fn_type @SelfNested.F [concrete] +// CHECK:STDOUT: %SelfNested.F: %SelfNested.F.type = struct_value () [concrete] // CHECK:STDOUT: %SelfNested.assoc_type: type = assoc_entity_type @SelfNested [concrete] -// CHECK:STDOUT: %assoc0.beb: %SelfNested.assoc_type = assoc_entity element0, @SelfNested.%F.decl [concrete] +// CHECK:STDOUT: %assoc0.beb: %SelfNested.assoc_type = assoc_entity element0, @SelfNested.%SelfNested.F.decl [concrete] // CHECK:STDOUT: %SelfNested.impl_witness.5d5: = impl_witness file.%SelfNested.impl_witness_table.loc35 [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] // CHECK:STDOUT: %struct_type.x.y.2f0: type = struct_type {.x: %C, .y: %empty_tuple.type} [concrete] // CHECK:STDOUT: %tuple.type.a17: type = tuple_type (%ptr.019, %struct_type.x.y.2f0) [concrete] // CHECK:STDOUT: %pattern_type.809: type = pattern_type %tuple.type.a17 [concrete] -// CHECK:STDOUT: %F.type.ef0: type = fn_type @F.loc36 [concrete] -// CHECK:STDOUT: %F.9a9: %F.type.ef0 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.SelfNested.impl.F.type: type = fn_type @C.as.SelfNested.impl.F [concrete] +// CHECK:STDOUT: %C.as.SelfNested.impl.F: %C.as.SelfNested.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %SelfNested.facet.2b2: %SelfNested.type = facet_value %C, (%SelfNested.impl_witness.5d5) [concrete] // CHECK:STDOUT: %SelfNested.impl_witness.16b: = impl_witness file.%SelfNested.impl_witness_table.loc39 [concrete] // CHECK:STDOUT: %ptr.19c: type = ptr_type %D [concrete] // CHECK:STDOUT: %struct_type.x.y.527: type = struct_type {.x: %D, .y: %empty_tuple.type} [concrete] // CHECK:STDOUT: %tuple.type.a5f: type = tuple_type (%ptr.19c, %struct_type.x.y.527) [concrete] // CHECK:STDOUT: %pattern_type.b43: type = pattern_type %tuple.type.a5f [concrete] -// CHECK:STDOUT: %F.type.a9d: type = fn_type @F.loc40 [concrete] -// CHECK:STDOUT: %F.c41: %F.type.a9d = struct_value () [concrete] +// CHECK:STDOUT: %D.as.SelfNested.impl.F.type: type = fn_type @D.as.SelfNested.impl.F [concrete] +// CHECK:STDOUT: %D.as.SelfNested.impl.F: %D.as.SelfNested.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %SelfNested.facet.f2c: %SelfNested.type = facet_value %D, (%SelfNested.impl_witness.16b) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -108,104 +108,104 @@ impl D as SelfNested { // CHECK:STDOUT: %UseSelf.decl: type = interface_decl @UseSelf [concrete = constants.%UseSelf.type] {} {} // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} // CHECK:STDOUT: %D.decl: type = class_decl @D [concrete = constants.%D] {} {} -// CHECK:STDOUT: impl_decl @UseSelf.impl.c4a [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.UseSelf.impl [concrete] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %UseSelf.ref: type = name_ref UseSelf, file.%UseSelf.decl [concrete = constants.%UseSelf.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %UseSelf.impl_witness_table.loc23 = impl_witness_table (@UseSelf.impl.c4a.%F.decl), @UseSelf.impl.c4a [concrete] +// CHECK:STDOUT: %UseSelf.impl_witness_table.loc23 = impl_witness_table (@C.as.UseSelf.impl.%C.as.UseSelf.impl.F.decl), @C.as.UseSelf.impl [concrete] // CHECK:STDOUT: %UseSelf.impl_witness.loc23: = impl_witness %UseSelf.impl_witness_table.loc23 [concrete = constants.%UseSelf.impl_witness.b25] -// CHECK:STDOUT: impl_decl @UseSelf.impl.659 [concrete] {} { +// CHECK:STDOUT: impl_decl @D.as.UseSelf.impl [concrete] {} { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %UseSelf.ref: type = name_ref UseSelf, file.%UseSelf.decl [concrete = constants.%UseSelf.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %UseSelf.impl_witness_table.loc27 = impl_witness_table (@UseSelf.impl.659.%F.decl), @UseSelf.impl.659 [concrete] +// CHECK:STDOUT: %UseSelf.impl_witness_table.loc27 = impl_witness_table (@D.as.UseSelf.impl.%D.as.UseSelf.impl.F.decl), @D.as.UseSelf.impl [concrete] // CHECK:STDOUT: %UseSelf.impl_witness.loc27: = impl_witness %UseSelf.impl_witness_table.loc27 [concrete = constants.%UseSelf.impl_witness.f90] // CHECK:STDOUT: %SelfNested.decl: type = interface_decl @SelfNested [concrete = constants.%SelfNested.type] {} {} -// CHECK:STDOUT: impl_decl @SelfNested.impl.730 [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.SelfNested.impl [concrete] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %SelfNested.ref: type = name_ref SelfNested, file.%SelfNested.decl [concrete = constants.%SelfNested.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %SelfNested.impl_witness_table.loc35 = impl_witness_table (@SelfNested.impl.730.%F.decl), @SelfNested.impl.730 [concrete] +// CHECK:STDOUT: %SelfNested.impl_witness_table.loc35 = impl_witness_table (@C.as.SelfNested.impl.%C.as.SelfNested.impl.F.decl), @C.as.SelfNested.impl [concrete] // CHECK:STDOUT: %SelfNested.impl_witness.loc35: = impl_witness %SelfNested.impl_witness_table.loc35 [concrete = constants.%SelfNested.impl_witness.5d5] -// CHECK:STDOUT: impl_decl @SelfNested.impl.82d [concrete] {} { +// CHECK:STDOUT: impl_decl @D.as.SelfNested.impl [concrete] {} { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %SelfNested.ref: type = name_ref SelfNested, file.%SelfNested.decl [concrete = constants.%SelfNested.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %SelfNested.impl_witness_table.loc39 = impl_witness_table (@SelfNested.impl.82d.%F.decl), @SelfNested.impl.82d [concrete] +// CHECK:STDOUT: %SelfNested.impl_witness_table.loc39 = impl_witness_table (@D.as.SelfNested.impl.%D.as.SelfNested.impl.F.decl), @D.as.SelfNested.impl [concrete] // CHECK:STDOUT: %SelfNested.impl_witness.loc39: = impl_witness %SelfNested.impl_witness_table.loc39 [concrete = constants.%SelfNested.impl_witness.16b] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @UseSelf { // CHECK:STDOUT: %Self: %UseSelf.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.085] -// CHECK:STDOUT: %F.decl: %F.type.86a = fn_decl @F.loc16 [concrete = constants.%F.408] { -// CHECK:STDOUT: %self.patt: @F.loc16.%pattern_type (%pattern_type.3ef) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.loc16.%pattern_type (%pattern_type.3ef) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %x.patt: @F.loc16.%pattern_type (%pattern_type.3ef) = binding_pattern x [concrete] -// CHECK:STDOUT: %x.param_patt: @F.loc16.%pattern_type (%pattern_type.3ef) = value_param_pattern %x.patt, call_param1 [concrete] -// CHECK:STDOUT: %return.patt: @F.loc16.%pattern_type (%pattern_type.3ef) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @F.loc16.%pattern_type (%pattern_type.3ef) = out_param_pattern %return.patt, call_param2 [concrete] +// CHECK:STDOUT: %UseSelf.F.decl: %UseSelf.F.type = fn_decl @UseSelf.F [concrete = constants.%UseSelf.F] { +// CHECK:STDOUT: %self.patt: @UseSelf.F.%pattern_type (%pattern_type.3ef) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @UseSelf.F.%pattern_type (%pattern_type.3ef) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %x.patt: @UseSelf.F.%pattern_type (%pattern_type.3ef) = binding_pattern x [concrete] +// CHECK:STDOUT: %x.param_patt: @UseSelf.F.%pattern_type (%pattern_type.3ef) = value_param_pattern %x.patt, call_param1 [concrete] +// CHECK:STDOUT: %return.patt: @UseSelf.F.%pattern_type (%pattern_type.3ef) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @UseSelf.F.%pattern_type (%pattern_type.3ef) = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc16_32: %UseSelf.type = name_ref Self, @UseSelf.%Self [symbolic = %Self (constants.%Self.085)] -// CHECK:STDOUT: %Self.as_type.loc16_32: type = facet_access_type %Self.ref.loc16_32 [symbolic = %Self.as_type.loc16_14.2 (constants.%Self.as_type.599)] -// CHECK:STDOUT: %.loc16_32: type = converted %Self.ref.loc16_32, %Self.as_type.loc16_32 [symbolic = %Self.as_type.loc16_14.2 (constants.%Self.as_type.599)] -// CHECK:STDOUT: %self.param: @F.loc16.%Self.as_type.loc16_14.2 (%Self.as_type.599) = value_param call_param0 -// CHECK:STDOUT: %.loc16_14.1: type = splice_block %.loc16_14.2 [symbolic = %Self.as_type.loc16_14.2 (constants.%Self.as_type.599)] { +// CHECK:STDOUT: %Self.as_type.loc16_32: type = facet_access_type %Self.ref.loc16_32 [symbolic = %Self.as_type.loc16_14.1 (constants.%Self.as_type.599)] +// CHECK:STDOUT: %.loc16_32: type = converted %Self.ref.loc16_32, %Self.as_type.loc16_32 [symbolic = %Self.as_type.loc16_14.1 (constants.%Self.as_type.599)] +// CHECK:STDOUT: %self.param: @UseSelf.F.%Self.as_type.loc16_14.1 (%Self.as_type.599) = value_param call_param0 +// CHECK:STDOUT: %.loc16_14.1: type = splice_block %.loc16_14.2 [symbolic = %Self.as_type.loc16_14.1 (constants.%Self.as_type.599)] { // CHECK:STDOUT: %Self.ref.loc16_14: %UseSelf.type = name_ref Self, @UseSelf.%Self [symbolic = %Self (constants.%Self.085)] -// CHECK:STDOUT: %Self.as_type.loc16_14.1: type = facet_access_type %Self.ref.loc16_14 [symbolic = %Self.as_type.loc16_14.2 (constants.%Self.as_type.599)] -// CHECK:STDOUT: %.loc16_14.2: type = converted %Self.ref.loc16_14, %Self.as_type.loc16_14.1 [symbolic = %Self.as_type.loc16_14.2 (constants.%Self.as_type.599)] +// CHECK:STDOUT: %Self.as_type.loc16_14.2: type = facet_access_type %Self.ref.loc16_14 [symbolic = %Self.as_type.loc16_14.1 (constants.%Self.as_type.599)] +// CHECK:STDOUT: %.loc16_14.2: type = converted %Self.ref.loc16_14, %Self.as_type.loc16_14.2 [symbolic = %Self.as_type.loc16_14.1 (constants.%Self.as_type.599)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.loc16.%Self.as_type.loc16_14.2 (%Self.as_type.599) = bind_name self, %self.param -// CHECK:STDOUT: %x.param: @F.loc16.%Self.as_type.loc16_14.2 (%Self.as_type.599) = value_param call_param1 -// CHECK:STDOUT: %.loc16_23.1: type = splice_block %.loc16_23.2 [symbolic = %Self.as_type.loc16_14.2 (constants.%Self.as_type.599)] { +// CHECK:STDOUT: %self: @UseSelf.F.%Self.as_type.loc16_14.1 (%Self.as_type.599) = bind_name self, %self.param +// CHECK:STDOUT: %x.param: @UseSelf.F.%Self.as_type.loc16_14.1 (%Self.as_type.599) = value_param call_param1 +// CHECK:STDOUT: %.loc16_23.1: type = splice_block %.loc16_23.2 [symbolic = %Self.as_type.loc16_14.1 (constants.%Self.as_type.599)] { // CHECK:STDOUT: %Self.ref.loc16_23: %UseSelf.type = name_ref Self, @UseSelf.%Self [symbolic = %Self (constants.%Self.085)] -// CHECK:STDOUT: %Self.as_type.loc16_23: type = facet_access_type %Self.ref.loc16_23 [symbolic = %Self.as_type.loc16_14.2 (constants.%Self.as_type.599)] -// CHECK:STDOUT: %.loc16_23.2: type = converted %Self.ref.loc16_23, %Self.as_type.loc16_23 [symbolic = %Self.as_type.loc16_14.2 (constants.%Self.as_type.599)] +// CHECK:STDOUT: %Self.as_type.loc16_23: type = facet_access_type %Self.ref.loc16_23 [symbolic = %Self.as_type.loc16_14.1 (constants.%Self.as_type.599)] +// CHECK:STDOUT: %.loc16_23.2: type = converted %Self.ref.loc16_23, %Self.as_type.loc16_23 [symbolic = %Self.as_type.loc16_14.1 (constants.%Self.as_type.599)] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: @F.loc16.%Self.as_type.loc16_14.2 (%Self.as_type.599) = bind_name x, %x.param -// CHECK:STDOUT: %return.param: ref @F.loc16.%Self.as_type.loc16_14.2 (%Self.as_type.599) = out_param call_param2 -// CHECK:STDOUT: %return: ref @F.loc16.%Self.as_type.loc16_14.2 (%Self.as_type.599) = return_slot %return.param +// CHECK:STDOUT: %x: @UseSelf.F.%Self.as_type.loc16_14.1 (%Self.as_type.599) = bind_name x, %x.param +// CHECK:STDOUT: %return.param: ref @UseSelf.F.%Self.as_type.loc16_14.1 (%Self.as_type.599) = out_param call_param2 +// CHECK:STDOUT: %return: ref @UseSelf.F.%Self.as_type.loc16_14.1 (%Self.as_type.599) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %UseSelf.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0.24c] +// CHECK:STDOUT: %assoc0: %UseSelf.assoc_type = assoc_entity element0, %UseSelf.F.decl [concrete = constants.%assoc0.24c] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F = %assoc0 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%UseSelf.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @SelfNested { // CHECK:STDOUT: %Self: %SelfNested.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.2ff] -// CHECK:STDOUT: %F.decl: %F.type.6ed = fn_decl @F.loc32 [concrete = constants.%F.998] { -// CHECK:STDOUT: %x.patt: @F.loc32.%pattern_type (%pattern_type.5a1) = binding_pattern x [concrete] -// CHECK:STDOUT: %x.param_patt: @F.loc32.%pattern_type (%pattern_type.5a1) = value_param_pattern %x.patt, call_param0 [concrete] +// CHECK:STDOUT: %SelfNested.F.decl: %SelfNested.F.type = fn_decl @SelfNested.F [concrete = constants.%SelfNested.F] { +// CHECK:STDOUT: %x.patt: @SelfNested.F.%pattern_type (%pattern_type.5a1) = binding_pattern x [concrete] +// CHECK:STDOUT: %x.param_patt: @SelfNested.F.%pattern_type (%pattern_type.5a1) = value_param_pattern %x.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %x.param: @F.loc32.%tuple.type (%tuple.type.46b) = value_param call_param0 +// CHECK:STDOUT: %x.param: @SelfNested.F.%tuple.type (%tuple.type.46b) = value_param call_param0 // CHECK:STDOUT: %.loc32_37.1: type = splice_block %.loc32_37.3 [symbolic = %tuple.type (constants.%tuple.type.46b)] { // CHECK:STDOUT: %Self.ref.loc32_12: %SelfNested.type = name_ref Self, @SelfNested.%Self [symbolic = %Self (constants.%Self.2ff)] -// CHECK:STDOUT: %Self.as_type.loc32_16.1: type = facet_access_type %Self.ref.loc32_12 [symbolic = %Self.as_type.loc32_16.2 (constants.%Self.as_type.e1e)] -// CHECK:STDOUT: %.loc32_16: type = converted %Self.ref.loc32_12, %Self.as_type.loc32_16.1 [symbolic = %Self.as_type.loc32_16.2 (constants.%Self.as_type.e1e)] -// CHECK:STDOUT: %ptr.loc32_16.1: type = ptr_type %.loc32_16 [symbolic = %ptr.loc32_16.2 (constants.%ptr.e87)] +// CHECK:STDOUT: %Self.as_type.loc32_16.2: type = facet_access_type %Self.ref.loc32_12 [symbolic = %Self.as_type.loc32_16.1 (constants.%Self.as_type.e1e)] +// CHECK:STDOUT: %.loc32_16: type = converted %Self.ref.loc32_12, %Self.as_type.loc32_16.2 [symbolic = %Self.as_type.loc32_16.1 (constants.%Self.as_type.e1e)] +// CHECK:STDOUT: %ptr.loc32_16.2: type = ptr_type %.loc32_16 [symbolic = %ptr.loc32_16.1 (constants.%ptr.e87)] // CHECK:STDOUT: %Self.ref.loc32_24: %SelfNested.type = name_ref Self, @SelfNested.%Self [symbolic = %Self (constants.%Self.2ff)] -// CHECK:STDOUT: %Self.as_type.loc32_24: type = facet_access_type %Self.ref.loc32_24 [symbolic = %Self.as_type.loc32_16.2 (constants.%Self.as_type.e1e)] -// CHECK:STDOUT: %.loc32_24: type = converted %Self.ref.loc32_24, %Self.as_type.loc32_24 [symbolic = %Self.as_type.loc32_16.2 (constants.%Self.as_type.e1e)] +// CHECK:STDOUT: %Self.as_type.loc32_24: type = facet_access_type %Self.ref.loc32_24 [symbolic = %Self.as_type.loc32_16.1 (constants.%Self.as_type.e1e)] +// CHECK:STDOUT: %.loc32_24: type = converted %Self.ref.loc32_24, %Self.as_type.loc32_24 [symbolic = %Self.as_type.loc32_16.1 (constants.%Self.as_type.e1e)] // CHECK:STDOUT: %.loc32_35.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc32_35.2: type = converted %.loc32_35.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %struct_type.x.y.loc32_36.1: type = struct_type {.x: @F.loc32.%Self.as_type.loc32_16.2 (%Self.as_type.e1e), .y: %empty_tuple.type} [symbolic = %struct_type.x.y.loc32_36.2 (constants.%struct_type.x.y.270)] -// CHECK:STDOUT: %.loc32_37.2: %tuple.type.24b = tuple_literal (%ptr.loc32_16.1, %struct_type.x.y.loc32_36.1) +// CHECK:STDOUT: %struct_type.x.y.loc32_36.2: type = struct_type {.x: @SelfNested.F.%Self.as_type.loc32_16.1 (%Self.as_type.e1e), .y: %empty_tuple.type} [symbolic = %struct_type.x.y.loc32_36.1 (constants.%struct_type.x.y.270)] +// CHECK:STDOUT: %.loc32_37.2: %tuple.type.24b = tuple_literal (%ptr.loc32_16.2, %struct_type.x.y.loc32_36.2) // CHECK:STDOUT: %.loc32_37.3: type = converted %.loc32_37.2, constants.%tuple.type.46b [symbolic = %tuple.type (constants.%tuple.type.46b)] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: @F.loc32.%tuple.type (%tuple.type.46b) = bind_name x, %x.param +// CHECK:STDOUT: %x: @SelfNested.F.%tuple.type (%tuple.type.46b) = bind_name x, %x.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %SelfNested.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0.beb] +// CHECK:STDOUT: %assoc0: %SelfNested.assoc_type = assoc_entity element0, %SelfNested.F.decl [concrete = constants.%assoc0.beb] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F = %assoc0 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%SelfNested.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @UseSelf.impl.c4a: %C.ref as %UseSelf.ref { -// CHECK:STDOUT: %F.decl: %F.type.fc6 = fn_decl @F.loc24 [concrete = constants.%F.5e2] { +// CHECK:STDOUT: impl @C.as.UseSelf.impl: %C.ref as %UseSelf.ref { +// CHECK:STDOUT: %C.as.UseSelf.impl.F.decl: %C.as.UseSelf.impl.F.type = fn_decl @C.as.UseSelf.impl.F [concrete = constants.%C.as.UseSelf.impl.F] { // CHECK:STDOUT: %self.patt: %pattern_type.c48 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.c48 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %x.patt: %pattern_type.c48 = binding_pattern x [concrete] @@ -226,12 +226,12 @@ impl D as SelfNested { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .C = -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %C.as.UseSelf.impl.F.decl // CHECK:STDOUT: witness = file.%UseSelf.impl_witness.loc23 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @UseSelf.impl.659: %D.ref as %UseSelf.ref { -// CHECK:STDOUT: %F.decl: %F.type.0aa = fn_decl @F.loc28 [concrete = constants.%F.f71] { +// CHECK:STDOUT: impl @D.as.UseSelf.impl: %D.ref as %UseSelf.ref { +// CHECK:STDOUT: %D.as.UseSelf.impl.F.decl: %D.as.UseSelf.impl.F.type = fn_decl @D.as.UseSelf.impl.F [concrete = constants.%D.as.UseSelf.impl.F] { // CHECK:STDOUT: %self.patt: %pattern_type.510 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.510 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %x.patt: %pattern_type.510 = binding_pattern x [concrete] @@ -239,24 +239,24 @@ impl D as SelfNested { // CHECK:STDOUT: %return.patt: %pattern_type.510 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.510 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %Self.ref.loc28_32: type = name_ref Self, @UseSelf.impl.659.%D.ref [concrete = constants.%D] +// CHECK:STDOUT: %Self.ref.loc28_32: type = name_ref Self, @D.as.UseSelf.impl.%D.ref [concrete = constants.%D] // CHECK:STDOUT: %self.param: %D = value_param call_param0 -// CHECK:STDOUT: %Self.ref.loc28_14: type = name_ref Self, @UseSelf.impl.659.%D.ref [concrete = constants.%D] +// CHECK:STDOUT: %Self.ref.loc28_14: type = name_ref Self, @D.as.UseSelf.impl.%D.ref [concrete = constants.%D] // CHECK:STDOUT: %self: %D = bind_name self, %self.param // CHECK:STDOUT: %x.param: %D = value_param call_param1 -// CHECK:STDOUT: %Self.ref.loc28_23: type = name_ref Self, @UseSelf.impl.659.%D.ref [concrete = constants.%D] +// CHECK:STDOUT: %Self.ref.loc28_23: type = name_ref Self, @D.as.UseSelf.impl.%D.ref [concrete = constants.%D] // CHECK:STDOUT: %x: %D = bind_name x, %x.param // CHECK:STDOUT: %return.param: ref %D = out_param call_param2 // CHECK:STDOUT: %return: ref %D = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %D.as.UseSelf.impl.F.decl // CHECK:STDOUT: witness = file.%UseSelf.impl_witness.loc27 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @SelfNested.impl.730: %C.ref as %SelfNested.ref { -// CHECK:STDOUT: %F.decl: %F.type.ef0 = fn_decl @F.loc36 [concrete = constants.%F.9a9] { +// CHECK:STDOUT: impl @C.as.SelfNested.impl: %C.ref as %SelfNested.ref { +// CHECK:STDOUT: %C.as.SelfNested.impl.F.decl: %C.as.SelfNested.impl.F.type = fn_decl @C.as.SelfNested.impl.F [concrete = constants.%C.as.SelfNested.impl.F] { // CHECK:STDOUT: %x.patt: %pattern_type.809 = binding_pattern x [concrete] // CHECK:STDOUT: %x.param_patt: %pattern_type.809 = value_param_pattern %x.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -276,20 +276,20 @@ impl D as SelfNested { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .C = -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %C.as.SelfNested.impl.F.decl // CHECK:STDOUT: witness = file.%SelfNested.impl_witness.loc35 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @SelfNested.impl.82d: %D.ref as %SelfNested.ref { -// CHECK:STDOUT: %F.decl: %F.type.a9d = fn_decl @F.loc40 [concrete = constants.%F.c41] { +// CHECK:STDOUT: impl @D.as.SelfNested.impl: %D.ref as %SelfNested.ref { +// CHECK:STDOUT: %D.as.SelfNested.impl.F.decl: %D.as.SelfNested.impl.F.type = fn_decl @D.as.SelfNested.impl.F [concrete = constants.%D.as.SelfNested.impl.F] { // CHECK:STDOUT: %x.patt: %pattern_type.b43 = binding_pattern x [concrete] // CHECK:STDOUT: %x.param_patt: %pattern_type.b43 = value_param_pattern %x.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %x.param: %tuple.type.a5f = value_param call_param0 // CHECK:STDOUT: %.loc40_37.1: type = splice_block %.loc40_37.3 [concrete = constants.%tuple.type.a5f] { -// CHECK:STDOUT: %Self.ref.loc40_12: type = name_ref Self, @SelfNested.impl.82d.%D.ref [concrete = constants.%D] +// CHECK:STDOUT: %Self.ref.loc40_12: type = name_ref Self, @D.as.SelfNested.impl.%D.ref [concrete = constants.%D] // CHECK:STDOUT: %ptr: type = ptr_type %Self.ref.loc40_12 [concrete = constants.%ptr.19c] -// CHECK:STDOUT: %Self.ref.loc40_24: type = name_ref Self, @SelfNested.impl.82d.%D.ref [concrete = constants.%D] +// CHECK:STDOUT: %Self.ref.loc40_24: type = name_ref Self, @D.as.SelfNested.impl.%D.ref [concrete = constants.%D] // CHECK:STDOUT: %.loc40_35.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc40_35.2: type = converted %.loc40_35.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.x.y: type = struct_type {.x: %D, .y: %empty_tuple.type} [concrete = constants.%struct_type.x.y.527] @@ -300,7 +300,7 @@ impl D as SelfNested { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %D.as.SelfNested.impl.F.decl // CHECK:STDOUT: witness = file.%SelfNested.impl_witness.loc39 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -322,15 +322,15 @@ impl D as SelfNested { // CHECK:STDOUT: .Self = constants.%D // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc16(@UseSelf.%Self: %UseSelf.type) { +// CHECK:STDOUT: generic fn @UseSelf.F(@UseSelf.%Self: %UseSelf.type) { // CHECK:STDOUT: %Self: %UseSelf.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.085)] -// CHECK:STDOUT: %Self.as_type.loc16_14.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc16_14.2 (constants.%Self.as_type.599)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc16_14.2 [symbolic = %pattern_type (constants.%pattern_type.3ef)] +// CHECK:STDOUT: %Self.as_type.loc16_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc16_14.1 (constants.%Self.as_type.599)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc16_14.1 [symbolic = %pattern_type (constants.%pattern_type.3ef)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @F.loc16.%Self.as_type.loc16_14.2 (%Self.as_type.599), %x.param: @F.loc16.%Self.as_type.loc16_14.2 (%Self.as_type.599)) -> @F.loc16.%Self.as_type.loc16_14.2 (%Self.as_type.599); +// CHECK:STDOUT: fn(%self.param: @UseSelf.F.%Self.as_type.loc16_14.1 (%Self.as_type.599), %x.param: @UseSelf.F.%Self.as_type.loc16_14.1 (%Self.as_type.599)) -> @UseSelf.F.%Self.as_type.loc16_14.1 (%Self.as_type.599); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc24(%self.param: %C, %x.param: %C) -> %return.param: %C { +// CHECK:STDOUT: fn @C.as.UseSelf.impl.F(%self.param: %C, %x.param: %C) -> %return.param: %C { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %.loc24_38.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc24_38.2: init %C = class_init (), %return [concrete = constants.%C.val] @@ -338,7 +338,7 @@ impl D as SelfNested { // CHECK:STDOUT: return %.loc24_39 to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc28(%self.param: %D, %x.param: %D) -> %return.param: %D { +// CHECK:STDOUT: fn @D.as.UseSelf.impl.F(%self.param: %D, %x.param: %D) -> %return.param: %D { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %.loc28_47.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc28_47.2: init %D = class_init (), %return [concrete = constants.%D.val] @@ -346,62 +346,62 @@ impl D as SelfNested { // CHECK:STDOUT: return %.loc28_48 to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc32(@SelfNested.%Self: %SelfNested.type) { +// CHECK:STDOUT: generic fn @SelfNested.F(@SelfNested.%Self: %SelfNested.type) { // CHECK:STDOUT: %Self: %SelfNested.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.2ff)] -// CHECK:STDOUT: %Self.as_type.loc32_16.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc32_16.2 (constants.%Self.as_type.e1e)] -// CHECK:STDOUT: %ptr.loc32_16.2: type = ptr_type %Self.as_type.loc32_16.2 [symbolic = %ptr.loc32_16.2 (constants.%ptr.e87)] -// CHECK:STDOUT: %struct_type.x.y.loc32_36.2: type = struct_type {.x: @F.loc32.%Self.as_type.loc32_16.2 (%Self.as_type.e1e), .y: %empty_tuple.type} [symbolic = %struct_type.x.y.loc32_36.2 (constants.%struct_type.x.y.270)] -// CHECK:STDOUT: %tuple.type: type = tuple_type (%ptr.loc32_16.2, %struct_type.x.y.loc32_36.2) [symbolic = %tuple.type (constants.%tuple.type.46b)] +// CHECK:STDOUT: %Self.as_type.loc32_16.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc32_16.1 (constants.%Self.as_type.e1e)] +// CHECK:STDOUT: %ptr.loc32_16.1: type = ptr_type %Self.as_type.loc32_16.1 [symbolic = %ptr.loc32_16.1 (constants.%ptr.e87)] +// CHECK:STDOUT: %struct_type.x.y.loc32_36.1: type = struct_type {.x: @SelfNested.F.%Self.as_type.loc32_16.1 (%Self.as_type.e1e), .y: %empty_tuple.type} [symbolic = %struct_type.x.y.loc32_36.1 (constants.%struct_type.x.y.270)] +// CHECK:STDOUT: %tuple.type: type = tuple_type (%ptr.loc32_16.1, %struct_type.x.y.loc32_36.1) [symbolic = %tuple.type (constants.%tuple.type.46b)] // CHECK:STDOUT: %pattern_type: type = pattern_type %tuple.type [symbolic = %pattern_type (constants.%pattern_type.5a1)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%x.param: @F.loc32.%tuple.type (%tuple.type.46b)); +// CHECK:STDOUT: fn(%x.param: @SelfNested.F.%tuple.type (%tuple.type.46b)); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc36(%x.param: %tuple.type.a17); +// CHECK:STDOUT: fn @C.as.SelfNested.impl.F(%x.param: %tuple.type.a17); // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc40(%x.param: %tuple.type.a5f); +// CHECK:STDOUT: fn @D.as.SelfNested.impl.F(%x.param: %tuple.type.a5f); // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc16(constants.%Self.085) { +// CHECK:STDOUT: specific @UseSelf.F(constants.%Self.085) { // CHECK:STDOUT: %Self => constants.%Self.085 -// CHECK:STDOUT: %Self.as_type.loc16_14.2 => constants.%Self.as_type.599 +// CHECK:STDOUT: %Self.as_type.loc16_14.1 => constants.%Self.as_type.599 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.3ef // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc16(constants.%UseSelf.facet.727) { +// CHECK:STDOUT: specific @UseSelf.F(constants.%UseSelf.facet.727) { // CHECK:STDOUT: %Self => constants.%UseSelf.facet.727 -// CHECK:STDOUT: %Self.as_type.loc16_14.2 => constants.%C +// CHECK:STDOUT: %Self.as_type.loc16_14.1 => constants.%C // CHECK:STDOUT: %pattern_type => constants.%pattern_type.c48 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc16(constants.%UseSelf.facet.d11) { +// CHECK:STDOUT: specific @UseSelf.F(constants.%UseSelf.facet.d11) { // CHECK:STDOUT: %Self => constants.%UseSelf.facet.d11 -// CHECK:STDOUT: %Self.as_type.loc16_14.2 => constants.%D +// CHECK:STDOUT: %Self.as_type.loc16_14.1 => constants.%D // CHECK:STDOUT: %pattern_type => constants.%pattern_type.510 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc32(constants.%Self.2ff) { +// CHECK:STDOUT: specific @SelfNested.F(constants.%Self.2ff) { // CHECK:STDOUT: %Self => constants.%Self.2ff -// CHECK:STDOUT: %Self.as_type.loc32_16.2 => constants.%Self.as_type.e1e -// CHECK:STDOUT: %ptr.loc32_16.2 => constants.%ptr.e87 -// CHECK:STDOUT: %struct_type.x.y.loc32_36.2 => constants.%struct_type.x.y.270 +// CHECK:STDOUT: %Self.as_type.loc32_16.1 => constants.%Self.as_type.e1e +// CHECK:STDOUT: %ptr.loc32_16.1 => constants.%ptr.e87 +// CHECK:STDOUT: %struct_type.x.y.loc32_36.1 => constants.%struct_type.x.y.270 // CHECK:STDOUT: %tuple.type => constants.%tuple.type.46b // CHECK:STDOUT: %pattern_type => constants.%pattern_type.5a1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc32(constants.%SelfNested.facet.2b2) { +// CHECK:STDOUT: specific @SelfNested.F(constants.%SelfNested.facet.2b2) { // CHECK:STDOUT: %Self => constants.%SelfNested.facet.2b2 -// CHECK:STDOUT: %Self.as_type.loc32_16.2 => constants.%C -// CHECK:STDOUT: %ptr.loc32_16.2 => constants.%ptr.019 -// CHECK:STDOUT: %struct_type.x.y.loc32_36.2 => constants.%struct_type.x.y.2f0 +// CHECK:STDOUT: %Self.as_type.loc32_16.1 => constants.%C +// CHECK:STDOUT: %ptr.loc32_16.1 => constants.%ptr.019 +// CHECK:STDOUT: %struct_type.x.y.loc32_36.1 => constants.%struct_type.x.y.2f0 // CHECK:STDOUT: %tuple.type => constants.%tuple.type.a17 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.809 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc32(constants.%SelfNested.facet.f2c) { +// CHECK:STDOUT: specific @SelfNested.F(constants.%SelfNested.facet.f2c) { // CHECK:STDOUT: %Self => constants.%SelfNested.facet.f2c -// CHECK:STDOUT: %Self.as_type.loc32_16.2 => constants.%D -// CHECK:STDOUT: %ptr.loc32_16.2 => constants.%ptr.19c -// CHECK:STDOUT: %struct_type.x.y.loc32_36.2 => constants.%struct_type.x.y.527 +// CHECK:STDOUT: %Self.as_type.loc32_16.1 => constants.%D +// CHECK:STDOUT: %ptr.loc32_16.1 => constants.%ptr.19c +// CHECK:STDOUT: %struct_type.x.y.loc32_36.1 => constants.%struct_type.x.y.527 // CHECK:STDOUT: %tuple.type => constants.%tuple.type.a5f // CHECK:STDOUT: %pattern_type => constants.%pattern_type.b43 // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/todo_impl_with_unrelated_fn.carbon b/toolchain/check/testdata/impl/todo_impl_with_unrelated_fn.carbon index 2f03c9953ab4..48422946b6f1 100644 --- a/toolchain/check/testdata/impl/todo_impl_with_unrelated_fn.carbon +++ b/toolchain/check/testdata/impl/todo_impl_with_unrelated_fn.carbon @@ -30,16 +30,16 @@ class X { // CHECK:STDOUT: constants { // CHECK:STDOUT: %A.type: type = facet_type <@A> [concrete] // CHECK:STDOUT: %Self: %A.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %B.type.1c3: type = fn_type @B.loc16 [concrete] -// CHECK:STDOUT: %B.b08: %B.type.1c3 = struct_value () [concrete] +// CHECK:STDOUT: %A.B.type: type = fn_type @A.B [concrete] +// CHECK:STDOUT: %A.B: %A.B.type = struct_value () [concrete] // CHECK:STDOUT: %A.assoc_type: type = assoc_entity_type @A [concrete] -// CHECK:STDOUT: %assoc0: %A.assoc_type = assoc_entity element0, @A.%B.decl [concrete] +// CHECK:STDOUT: %assoc0: %A.assoc_type = assoc_entity element0, @A.%A.B.decl [concrete] // CHECK:STDOUT: %X: type = class_type @X [concrete] // CHECK:STDOUT: %A.impl_witness: = impl_witness @X.%A.impl_witness_table [concrete] -// CHECK:STDOUT: %B.type.d47: type = fn_type @B.loc21 [concrete] -// CHECK:STDOUT: %B.4af: %B.type.d47 = struct_value () [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %X.as.A.impl.B.type: type = fn_type @X.as.A.impl.B [concrete] +// CHECK:STDOUT: %X.as.A.impl.B: %X.as.A.impl.B.type = struct_value () [concrete] +// CHECK:STDOUT: %X.as.A.impl.F.type: type = fn_type @X.as.A.impl.F [concrete] +// CHECK:STDOUT: %X.as.A.impl.F: %X.as.A.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %A.facet: %A.type = facet_value %X, (%A.impl_witness) [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] @@ -56,31 +56,31 @@ class X { // CHECK:STDOUT: // CHECK:STDOUT: interface @A { // CHECK:STDOUT: %Self: %A.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %B.decl: %B.type.1c3 = fn_decl @B.loc16 [concrete = constants.%B.b08] {} {} -// CHECK:STDOUT: %assoc0: %A.assoc_type = assoc_entity element0, %B.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %A.B.decl: %A.B.type = fn_decl @A.B [concrete = constants.%A.B] {} {} +// CHECK:STDOUT: %assoc0: %A.assoc_type = assoc_entity element0, %A.B.decl [concrete = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .B = %assoc0 -// CHECK:STDOUT: witness = (%B.decl) +// CHECK:STDOUT: witness = (%A.B.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @A.impl: %Self.ref as %A.ref { -// CHECK:STDOUT: %B.decl: %B.type.d47 = fn_decl @B.loc21 [concrete = constants.%B.4af] {} {} -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} +// CHECK:STDOUT: impl @X.as.A.impl: %Self.ref as %A.ref { +// CHECK:STDOUT: %X.as.A.impl.B.decl: %X.as.A.impl.B.type = fn_decl @X.as.A.impl.B [concrete = constants.%X.as.A.impl.B] {} {} +// CHECK:STDOUT: %X.as.A.impl.F.decl: %X.as.A.impl.F.type = fn_decl @X.as.A.impl.F [concrete = constants.%X.as.A.impl.F] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .B = %B.decl -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .B = %X.as.A.impl.B.decl +// CHECK:STDOUT: .F = %X.as.A.impl.F.decl // CHECK:STDOUT: witness = @X.%A.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @X { -// CHECK:STDOUT: impl_decl @A.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @X.as.A.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%X [concrete = constants.%X] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %A.impl_witness_table = impl_witness_table (@A.impl.%B.decl), @A.impl [concrete] +// CHECK:STDOUT: %A.impl_witness_table = impl_witness_table (@X.as.A.impl.%X.as.A.impl.B.decl), @X.as.A.impl [concrete] // CHECK:STDOUT: %A.impl_witness: = impl_witness %A.impl_witness_table [concrete = constants.%A.impl_witness] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] @@ -91,21 +91,21 @@ class X { // CHECK:STDOUT: .A = // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @B.loc16(@A.%Self: %A.type) { +// CHECK:STDOUT: generic fn @A.B(@A.%Self: %A.type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @B.loc21() { +// CHECK:STDOUT: fn @X.as.A.impl.B() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F() { +// CHECK:STDOUT: fn @X.as.A.impl.F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @B.loc16(constants.%Self) {} +// CHECK:STDOUT: specific @A.B(constants.%Self) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @B.loc16(constants.%A.facet) {} +// CHECK:STDOUT: specific @A.B(constants.%A.facet) {} // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/use_assoc_const.carbon b/toolchain/check/testdata/impl/use_assoc_const.carbon index 73c48b01d0c1..22037aa12131 100644 --- a/toolchain/check/testdata/impl/use_assoc_const.carbon +++ b/toolchain/check/testdata/impl/use_assoc_const.carbon @@ -298,10 +298,10 @@ fn F() { // CHECK:STDOUT: %J.facet.521: %J.type = facet_value %Self.as_type.3df, (%J.lookup_impl_witness.646) [symbolic] // CHECK:STDOUT: %impl.elem0.11f: type = impl_witness_access %J.lookup_impl_witness.646, element0 [symbolic] // CHECK:STDOUT: %pattern_type.b98: type = pattern_type %impl.elem0.11f [symbolic] -// CHECK:STDOUT: %F.type.c14: type = fn_type @F.loc5 [concrete] +// CHECK:STDOUT: %J.F.type: type = fn_type @J.F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F.b71: %F.type.c14 = struct_value () [concrete] -// CHECK:STDOUT: %assoc1.572: %J.assoc_type = assoc_entity element1, @J.%F.decl [concrete] +// CHECK:STDOUT: %J.F: %J.F.type = struct_value () [concrete] +// CHECK:STDOUT: %assoc1.572: %J.assoc_type = assoc_entity element1, @J.%J.F.decl [concrete] // CHECK:STDOUT: %.Self.968: %J.type = bind_symbolic_name .Self [symbolic_self] // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.968 [symbolic_self] // CHECK:STDOUT: %J.lookup_impl_witness.25c: = lookup_impl_witness %.Self.968, @J [symbolic_self] @@ -316,38 +316,38 @@ fn F() { // CHECK:STDOUT: %J.impl_witness.e42: = impl_witness file.%J.impl_witness_table.loc8 [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %F.type.7d4: type = fn_type @F.loc9 [concrete] -// CHECK:STDOUT: %F.46e: %F.type.7d4 = struct_value () [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.J.impl.F.type: type = fn_type @empty_tuple.type.as.J.impl.F [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.J.impl.F: %empty_tuple.type.as.J.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %J.facet.ecc: %J.type = facet_value %empty_tuple.type, (%J.impl_witness.e42) [concrete] // CHECK:STDOUT: %Negate.type: type = facet_type <@Negate> [concrete] -// CHECK:STDOUT: %Op.type.e42: type = fn_type @Op.2 [concrete] +// CHECK:STDOUT: %Negate.Op.type: type = fn_type @Negate.Op [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %Op.type.fc5: type = fn_type @Op.1, @Negate.impl.47e(%N) [symbolic] -// CHECK:STDOUT: %Op.8d0: %Op.type.fc5 = struct_value () [symbolic] -// CHECK:STDOUT: %Negate.impl_witness.943: = impl_witness imports.%Negate.impl_witness_table, @Negate.impl.47e(%int_32) [concrete] -// CHECK:STDOUT: %Op.type.66f: type = fn_type @Op.1, @Negate.impl.47e(%int_32) [concrete] -// CHECK:STDOUT: %Op.5c0: %Op.type.66f = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %Int.as.Negate.impl.Op.type.fc5: type = fn_type @Int.as.Negate.impl.Op, @Int.as.Negate.impl(%N) [symbolic] +// CHECK:STDOUT: %Int.as.Negate.impl.Op.8d0: %Int.as.Negate.impl.Op.type.fc5 = struct_value () [symbolic] +// CHECK:STDOUT: %Negate.impl_witness.943: = impl_witness imports.%Negate.impl_witness_table, @Int.as.Negate.impl(%int_32) [concrete] +// CHECK:STDOUT: %Int.as.Negate.impl.Op.type.66f: type = fn_type @Int.as.Negate.impl.Op, @Int.as.Negate.impl(%int_32) [concrete] +// CHECK:STDOUT: %Int.as.Negate.impl.Op.5c0: %Int.as.Negate.impl.Op.type.66f = struct_value () [concrete] // CHECK:STDOUT: %Negate.facet: %Negate.type = facet_value %i32, (%Negate.impl_witness.943) [concrete] -// CHECK:STDOUT: %.6f0: type = fn_type_with_self_type %Op.type.e42, %Negate.facet [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.5c0, @Op.1(%int_32) [concrete] +// CHECK:STDOUT: %.6f0: type = fn_type_with_self_type %Negate.Op.type, %Negate.facet [concrete] +// CHECK:STDOUT: %Int.as.Negate.impl.Op.specific_fn: = specific_function %Int.as.Negate.impl.Op.5c0, @Int.as.Negate.impl.Op(%int_32) [concrete] // CHECK:STDOUT: %CallMethod.type: type = fn_type @CallMethod [concrete] // CHECK:STDOUT: %CallMethod: %CallMethod.type = struct_value () [concrete] -// CHECK:STDOUT: %.597: type = fn_type_with_self_type %F.type.c14, %J.facet.ecc [concrete] +// CHECK:STDOUT: %.597: type = fn_type_with_self_type %J.F.type, %J.facet.ecc [concrete] // CHECK:STDOUT: %int_40.f80: Core.IntLiteral = int_value 40 [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_40.f80, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_40.f80, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_40.f80, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_40.f80, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_40.518: %i32 = int_value 40 [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] @@ -355,8 +355,8 @@ fn F() { // CHECK:STDOUT: %J_where.type.0bc: type = facet_type <@J where %impl.elem0.83f = %C> [concrete] // CHECK:STDOUT: %J.impl_witness.12d: = impl_witness file.%J.impl_witness_table.loc21 [concrete] // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] -// CHECK:STDOUT: %F.type.2a7: type = fn_type @F.loc22 [concrete] -// CHECK:STDOUT: %F.fb5: %F.type.2a7 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.J.impl.F.type: type = fn_type @C.as.J.impl.F [concrete] +// CHECK:STDOUT: %C.as.J.impl.F: %C.as.J.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %J.facet.30e: %J.type = facet_value %C, (%J.impl_witness.12d) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -370,11 +370,11 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.Negate: type = import_ref Core//prelude/parts/int_literal, Negate, loaded [concrete = constants.%Negate.type] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.import_ref.5f5 = import_ref Core//prelude/parts/int, loc35_43, unloaded -// CHECK:STDOUT: %Core.import_ref.ff2: @Negate.impl.47e.%Op.type (%Op.type.fc5) = import_ref Core//prelude/parts/int, loc36_31, loaded [symbolic = @Negate.impl.47e.%Op (constants.%Op.8d0)] -// CHECK:STDOUT: %Negate.impl_witness_table = impl_witness_table (%Core.import_ref.5f5, %Core.import_ref.ff2), @Negate.impl.47e [concrete] +// CHECK:STDOUT: %Core.import_ref.ff2: @Int.as.Negate.impl.%Int.as.Negate.impl.Op.type (%Int.as.Negate.impl.Op.type.fc5) = import_ref Core//prelude/parts/int, loc36_31, loaded [symbolic = @Int.as.Negate.impl.%Int.as.Negate.impl.Op (constants.%Int.as.Negate.impl.Op.8d0)] +// CHECK:STDOUT: %Negate.impl_witness_table = impl_witness_table (%Core.import_ref.5f5, %Core.import_ref.ff2), @Int.as.Negate.impl [concrete] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -387,7 +387,7 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %J.decl: type = interface_decl @J [concrete = constants.%J.type] {} {} -// CHECK:STDOUT: impl_decl @J.impl.32a [concrete] {} { +// CHECK:STDOUT: impl_decl @empty_tuple.type.as.J.impl [concrete] {} { // CHECK:STDOUT: %.loc8_7.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc8_7.2: type = converted %.loc8_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] @@ -403,7 +403,7 @@ fn F() { // CHECK:STDOUT: requirement_rewrite %impl.elem0, %i32 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %J.impl_witness_table.loc8 = impl_witness_table (%impl_witness_assoc_constant.loc8, @J.impl.32a.%F.decl), @J.impl.32a [concrete] +// CHECK:STDOUT: %J.impl_witness_table.loc8 = impl_witness_table (%impl_witness_assoc_constant.loc8, @empty_tuple.type.as.J.impl.%empty_tuple.type.as.J.impl.F.decl), @empty_tuple.type.as.J.impl [concrete] // CHECK:STDOUT: %J.impl_witness.loc8: = impl_witness %J.impl_witness_table.loc8 [concrete = constants.%J.impl_witness.e42] // CHECK:STDOUT: %impl_witness_assoc_constant.loc8: type = impl_witness_assoc_constant constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %CallMethod.decl: %CallMethod.type = fn_decl @CallMethod [concrete = constants.%CallMethod] { @@ -424,7 +424,7 @@ fn F() { // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} -// CHECK:STDOUT: impl_decl @J.impl.043 [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.J.impl [concrete] {} { // CHECK:STDOUT: %C.ref.loc21_6: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: %.Self: %J.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self.968] @@ -438,7 +438,7 @@ fn F() { // CHECK:STDOUT: requirement_rewrite %impl.elem0, %C.ref.loc21_24 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %J.impl_witness_table.loc21 = impl_witness_table (%impl_witness_assoc_constant.loc21, @J.impl.043.%F.decl), @J.impl.043 [concrete] +// CHECK:STDOUT: %J.impl_witness_table.loc21 = impl_witness_table (%impl_witness_assoc_constant.loc21, @C.as.J.impl.%C.as.J.impl.F.decl), @C.as.J.impl [concrete] // CHECK:STDOUT: %J.impl_witness.loc21: = impl_witness %J.impl_witness_table.loc21 [concrete = constants.%J.impl_witness.12d] // CHECK:STDOUT: %impl_witness_assoc_constant.loc21: type = impl_witness_assoc_constant constants.%C [concrete = constants.%C] // CHECK:STDOUT: } @@ -448,47 +448,47 @@ fn F() { // CHECK:STDOUT: %U: type = assoc_const_decl @U [concrete] { // CHECK:STDOUT: %assoc0: %J.assoc_type = assoc_entity element0, @J.%U [concrete = constants.%assoc0.411] // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type.c14 = fn_decl @F.loc5 [concrete = constants.%F.b71] { -// CHECK:STDOUT: %self.patt: @F.loc5.%pattern_type.loc5_8 (%pattern_type.4ca) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.loc5.%pattern_type.loc5_8 (%pattern_type.4ca) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %u.patt: @F.loc5.%pattern_type.loc5_20 (%pattern_type.b98) = binding_pattern u [concrete] -// CHECK:STDOUT: %u.param_patt: @F.loc5.%pattern_type.loc5_20 (%pattern_type.b98) = value_param_pattern %u.patt, call_param1 [concrete] -// CHECK:STDOUT: %return.patt: @F.loc5.%pattern_type.loc5_20 (%pattern_type.b98) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @F.loc5.%pattern_type.loc5_20 (%pattern_type.b98) = out_param_pattern %return.patt, call_param2 [concrete] +// CHECK:STDOUT: %J.F.decl: %J.F.type = fn_decl @J.F [concrete = constants.%J.F] { +// CHECK:STDOUT: %self.patt: @J.F.%pattern_type.loc5_8 (%pattern_type.4ca) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @J.F.%pattern_type.loc5_8 (%pattern_type.4ca) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %u.patt: @J.F.%pattern_type.loc5_20 (%pattern_type.b98) = binding_pattern u [concrete] +// CHECK:STDOUT: %u.param_patt: @J.F.%pattern_type.loc5_20 (%pattern_type.b98) = value_param_pattern %u.patt, call_param1 [concrete] +// CHECK:STDOUT: %return.patt: @J.F.%pattern_type.loc5_20 (%pattern_type.b98) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @J.F.%pattern_type.loc5_20 (%pattern_type.b98) = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %impl.elem0.loc5_29: type = impl_witness_access constants.%J.lookup_impl_witness.646, element0 [symbolic = %impl.elem0.loc5_23.2 (constants.%impl.elem0.11f)] -// CHECK:STDOUT: %U.ref.loc5_29: type = name_ref U, %impl.elem0.loc5_29 [symbolic = %impl.elem0.loc5_23.2 (constants.%impl.elem0.11f)] -// CHECK:STDOUT: %self.param: @F.loc5.%Self.as_type.loc5_14.2 (%Self.as_type.3df) = value_param call_param0 -// CHECK:STDOUT: %.loc5_14.1: type = splice_block %.loc5_14.2 [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type.3df)] { +// CHECK:STDOUT: %impl.elem0.loc5_29: type = impl_witness_access constants.%J.lookup_impl_witness.646, element0 [symbolic = %impl.elem0.loc5_23.1 (constants.%impl.elem0.11f)] +// CHECK:STDOUT: %U.ref.loc5_29: type = name_ref U, %impl.elem0.loc5_29 [symbolic = %impl.elem0.loc5_23.1 (constants.%impl.elem0.11f)] +// CHECK:STDOUT: %self.param: @J.F.%Self.as_type.loc5_14.1 (%Self.as_type.3df) = value_param call_param0 +// CHECK:STDOUT: %.loc5_14.1: type = splice_block %.loc5_14.2 [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type.3df)] { // CHECK:STDOUT: %Self.ref: %J.type = name_ref Self, @J.%Self [symbolic = %Self (constants.%Self.ccd)] -// CHECK:STDOUT: %Self.as_type.loc5_14.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type.3df)] -// CHECK:STDOUT: %.loc5_14.2: type = converted %Self.ref, %Self.as_type.loc5_14.1 [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type.3df)] +// CHECK:STDOUT: %Self.as_type.loc5_14.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type.3df)] +// CHECK:STDOUT: %.loc5_14.2: type = converted %Self.ref, %Self.as_type.loc5_14.2 [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type.3df)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.loc5.%Self.as_type.loc5_14.2 (%Self.as_type.3df) = bind_name self, %self.param -// CHECK:STDOUT: %u.param: @F.loc5.%impl.elem0.loc5_23.2 (%impl.elem0.11f) = value_param call_param1 -// CHECK:STDOUT: %.loc5_23: type = splice_block %U.ref.loc5_23 [symbolic = %impl.elem0.loc5_23.2 (constants.%impl.elem0.11f)] { -// CHECK:STDOUT: %impl.elem0.loc5_23.1: type = impl_witness_access constants.%J.lookup_impl_witness.646, element0 [symbolic = %impl.elem0.loc5_23.2 (constants.%impl.elem0.11f)] -// CHECK:STDOUT: %U.ref.loc5_23: type = name_ref U, %impl.elem0.loc5_23.1 [symbolic = %impl.elem0.loc5_23.2 (constants.%impl.elem0.11f)] +// CHECK:STDOUT: %self: @J.F.%Self.as_type.loc5_14.1 (%Self.as_type.3df) = bind_name self, %self.param +// CHECK:STDOUT: %u.param: @J.F.%impl.elem0.loc5_23.1 (%impl.elem0.11f) = value_param call_param1 +// CHECK:STDOUT: %.loc5_23: type = splice_block %U.ref.loc5_23 [symbolic = %impl.elem0.loc5_23.1 (constants.%impl.elem0.11f)] { +// CHECK:STDOUT: %impl.elem0.loc5_23.2: type = impl_witness_access constants.%J.lookup_impl_witness.646, element0 [symbolic = %impl.elem0.loc5_23.1 (constants.%impl.elem0.11f)] +// CHECK:STDOUT: %U.ref.loc5_23: type = name_ref U, %impl.elem0.loc5_23.2 [symbolic = %impl.elem0.loc5_23.1 (constants.%impl.elem0.11f)] // CHECK:STDOUT: } -// CHECK:STDOUT: %u: @F.loc5.%impl.elem0.loc5_23.2 (%impl.elem0.11f) = bind_name u, %u.param -// CHECK:STDOUT: %return.param: ref @F.loc5.%impl.elem0.loc5_23.2 (%impl.elem0.11f) = out_param call_param2 -// CHECK:STDOUT: %return: ref @F.loc5.%impl.elem0.loc5_23.2 (%impl.elem0.11f) = return_slot %return.param +// CHECK:STDOUT: %u: @J.F.%impl.elem0.loc5_23.1 (%impl.elem0.11f) = bind_name u, %u.param +// CHECK:STDOUT: %return.param: ref @J.F.%impl.elem0.loc5_23.1 (%impl.elem0.11f) = out_param call_param2 +// CHECK:STDOUT: %return: ref @J.F.%impl.elem0.loc5_23.1 (%impl.elem0.11f) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc1: %J.assoc_type = assoc_entity element1, %F.decl [concrete = constants.%assoc1.572] +// CHECK:STDOUT: %assoc1: %J.assoc_type = assoc_entity element1, %J.F.decl [concrete = constants.%assoc1.572] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .U = @U.%assoc0 // CHECK:STDOUT: .F = %assoc1 -// CHECK:STDOUT: witness = (%U, %F.decl) +// CHECK:STDOUT: witness = (%U, %J.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic assoc_const @U(@J.%Self: %J.type) { // CHECK:STDOUT: assoc_const U:! type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @J.impl.32a: %.loc8_7.2 as %.loc8_14 { -// CHECK:STDOUT: %F.decl: %F.type.7d4 = fn_decl @F.loc9 [concrete = constants.%F.46e] { +// CHECK:STDOUT: impl @empty_tuple.type.as.J.impl: %.loc8_7.2 as %.loc8_14 { +// CHECK:STDOUT: %empty_tuple.type.as.J.impl.F.decl: %empty_tuple.type.as.J.impl.F.type = fn_decl @empty_tuple.type.as.J.impl.F [concrete = constants.%empty_tuple.type.as.J.impl.F] { // CHECK:STDOUT: %self.patt: %pattern_type.cb1 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.cb1 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %u.patt: %pattern_type.7ce = binding_pattern u [concrete] @@ -499,7 +499,7 @@ fn F() { // CHECK:STDOUT: %int_32.loc9_31: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc9_31: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %self.param: %empty_tuple.type = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @J.impl.32a.%.loc8_7.2 [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @empty_tuple.type.as.J.impl.%.loc8_7.2 [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %self: %empty_tuple.type = bind_name self, %self.param // CHECK:STDOUT: %u.param: %i32 = value_param call_param1 // CHECK:STDOUT: %.loc9_23: type = splice_block %i32.loc9_23 [concrete = constants.%i32] { @@ -512,12 +512,12 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %empty_tuple.type.as.J.impl.F.decl // CHECK:STDOUT: witness = file.%J.impl_witness.loc8 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @J.impl.043: %C.ref.loc21_6 as %.loc21_13 { -// CHECK:STDOUT: %F.decl: %F.type.2a7 = fn_decl @F.loc22 [concrete = constants.%F.fb5] { +// CHECK:STDOUT: impl @C.as.J.impl: %C.ref.loc21_6 as %.loc21_13 { +// CHECK:STDOUT: %C.as.J.impl.F.decl: %C.as.J.impl.F.type = fn_decl @C.as.J.impl.F [concrete = constants.%C.as.J.impl.F] { // CHECK:STDOUT: %self.patt: %pattern_type.c48 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.c48 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %u.patt: %pattern_type.c48 = binding_pattern u [concrete] @@ -527,7 +527,7 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc22_29: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %self.param: %C = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @J.impl.043.%C.ref.loc21_6 [concrete = constants.%C] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @C.as.J.impl.%C.ref.loc21_6 [concrete = constants.%C] // CHECK:STDOUT: %self: %C = bind_name self, %self.param // CHECK:STDOUT: %u.param: %C = value_param call_param1 // CHECK:STDOUT: %C.ref.loc22_23: type = name_ref C, file.%C.decl [concrete = constants.%C] @@ -538,7 +538,7 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .C = -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %C.as.J.impl.F.decl // CHECK:STDOUT: witness = file.%J.impl_witness.loc21 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -553,27 +553,27 @@ fn F() { // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc5(@J.%Self: %J.type) { +// CHECK:STDOUT: generic fn @J.F(@J.%Self: %J.type) { // CHECK:STDOUT: %Self: %J.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.ccd)] -// CHECK:STDOUT: %Self.as_type.loc5_14.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type.3df)] -// CHECK:STDOUT: %pattern_type.loc5_8: type = pattern_type %Self.as_type.loc5_14.2 [symbolic = %pattern_type.loc5_8 (constants.%pattern_type.4ca)] +// CHECK:STDOUT: %Self.as_type.loc5_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type.3df)] +// CHECK:STDOUT: %pattern_type.loc5_8: type = pattern_type %Self.as_type.loc5_14.1 [symbolic = %pattern_type.loc5_8 (constants.%pattern_type.4ca)] // CHECK:STDOUT: %J.lookup_impl_witness: = lookup_impl_witness %Self, @J [symbolic = %J.lookup_impl_witness (constants.%J.lookup_impl_witness.646)] -// CHECK:STDOUT: %impl.elem0.loc5_23.2: type = impl_witness_access %J.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc5_23.2 (constants.%impl.elem0.11f)] -// CHECK:STDOUT: %pattern_type.loc5_20: type = pattern_type %impl.elem0.loc5_23.2 [symbolic = %pattern_type.loc5_20 (constants.%pattern_type.b98)] +// CHECK:STDOUT: %impl.elem0.loc5_23.1: type = impl_witness_access %J.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc5_23.1 (constants.%impl.elem0.11f)] +// CHECK:STDOUT: %pattern_type.loc5_20: type = pattern_type %impl.elem0.loc5_23.1 [symbolic = %pattern_type.loc5_20 (constants.%pattern_type.b98)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @F.loc5.%Self.as_type.loc5_14.2 (%Self.as_type.3df), %u.param: @F.loc5.%impl.elem0.loc5_23.2 (%impl.elem0.11f)) -> @F.loc5.%impl.elem0.loc5_23.2 (%impl.elem0.11f); +// CHECK:STDOUT: fn(%self.param: @J.F.%Self.as_type.loc5_14.1 (%Self.as_type.3df), %u.param: @J.F.%impl.elem0.loc5_23.1 (%impl.elem0.11f)) -> @J.F.%impl.elem0.loc5_23.1 (%impl.elem0.11f); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc9(%self.param: %empty_tuple.type, %u.param: %i32) -> %i32 { +// CHECK:STDOUT: fn @empty_tuple.type.as.J.impl.F(%self.param: %empty_tuple.type, %u.param: %i32) -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %u.ref: %i32 = name_ref u, %u -// CHECK:STDOUT: %impl.elem1: %.6f0 = impl_witness_access constants.%Negate.impl_witness.943, element1 [concrete = constants.%Op.5c0] +// CHECK:STDOUT: %impl.elem1: %.6f0 = impl_witness_access constants.%Negate.impl_witness.943, element1 [concrete = constants.%Int.as.Negate.impl.Op.5c0] // CHECK:STDOUT: %bound_method.loc9_44.1: = bound_method %u.ref, %impl.elem1 -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem1, @Op.1(constants.%int_32) [concrete = constants.%Op.specific_fn] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem1, @Int.as.Negate.impl.Op(constants.%int_32) [concrete = constants.%Int.as.Negate.impl.Op.specific_fn] // CHECK:STDOUT: %bound_method.loc9_44.2: = bound_method %u.ref, %specific_fn -// CHECK:STDOUT: %int.snegate: init %i32 = call %bound_method.loc9_44.2(%u.ref) -// CHECK:STDOUT: %.loc9_46.1: %i32 = value_of_initializer %int.snegate -// CHECK:STDOUT: %.loc9_46.2: %i32 = converted %int.snegate, %.loc9_46.1 +// CHECK:STDOUT: %Int.as.Negate.impl.Op.call: init %i32 = call %bound_method.loc9_44.2(%u.ref) +// CHECK:STDOUT: %.loc9_46.1: %i32 = value_of_initializer %Int.as.Negate.impl.Op.call +// CHECK:STDOUT: %.loc9_46.2: %i32 = converted %Int.as.Negate.impl.Op.call, %.loc9_46.1 // CHECK:STDOUT: return %.loc9_46.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -582,23 +582,23 @@ fn F() { // CHECK:STDOUT: %x.ref: %empty_tuple.type = name_ref x, %x // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: %F.ref: %J.assoc_type = name_ref F, @J.%assoc1 [concrete = constants.%assoc1.572] -// CHECK:STDOUT: %impl.elem1: %.597 = impl_witness_access constants.%J.impl_witness.e42, element1 [concrete = constants.%F.46e] +// CHECK:STDOUT: %impl.elem1: %.597 = impl_witness_access constants.%J.impl_witness.e42, element1 [concrete = constants.%empty_tuple.type.as.J.impl.F] // CHECK:STDOUT: %bound_method.loc13_11: = bound_method %x.ref, %impl.elem1 // CHECK:STDOUT: %int_40: Core.IntLiteral = int_value 40 [concrete = constants.%int_40.f80] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc13_18.1: = bound_method %int_40, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc13_18.1: = bound_method %int_40, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc13_18.2: = bound_method %int_40, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc13_18.2(%int_40) [concrete = constants.%int_40.518] -// CHECK:STDOUT: %.loc13_18.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_40.518] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc13_18.2(%int_40) [concrete = constants.%int_40.518] +// CHECK:STDOUT: %.loc13_18.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_40.518] // CHECK:STDOUT: %.loc13_18.2: %i32 = converted %int_40, %.loc13_18.1 [concrete = constants.%int_40.518] -// CHECK:STDOUT: %F.call: init %i32 = call %bound_method.loc13_11(%x.ref, %.loc13_18.2) -// CHECK:STDOUT: %.loc13_21.1: %i32 = value_of_initializer %F.call -// CHECK:STDOUT: %.loc13_21.2: %i32 = converted %F.call, %.loc13_21.1 +// CHECK:STDOUT: %empty_tuple.type.as.J.impl.F.call: init %i32 = call %bound_method.loc13_11(%x.ref, %.loc13_18.2) +// CHECK:STDOUT: %.loc13_21.1: %i32 = value_of_initializer %empty_tuple.type.as.J.impl.F.call +// CHECK:STDOUT: %.loc13_21.2: %i32 = converted %empty_tuple.type.as.J.impl.F.call, %.loc13_21.1 // CHECK:STDOUT: return %.loc13_21.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc22(%self.param: %C, %u.param: %C) -> %C { +// CHECK:STDOUT: fn @C.as.J.impl.F(%self.param: %C, %u.param: %C) -> %C { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: %C = name_ref self, %self // CHECK:STDOUT: return %self.ref @@ -608,32 +608,32 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: specific @U(constants.%J.facet.521) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%Self.ccd) { +// CHECK:STDOUT: specific @J.F(constants.%Self.ccd) { // CHECK:STDOUT: %Self => constants.%Self.ccd -// CHECK:STDOUT: %Self.as_type.loc5_14.2 => constants.%Self.as_type.3df +// CHECK:STDOUT: %Self.as_type.loc5_14.1 => constants.%Self.as_type.3df // CHECK:STDOUT: %pattern_type.loc5_8 => constants.%pattern_type.4ca // CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.lookup_impl_witness.646 -// CHECK:STDOUT: %impl.elem0.loc5_23.2 => constants.%impl.elem0.11f +// CHECK:STDOUT: %impl.elem0.loc5_23.1 => constants.%impl.elem0.11f // CHECK:STDOUT: %pattern_type.loc5_20 => constants.%pattern_type.b98 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @U(constants.%J.facet.330) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%J.facet.ecc) { +// CHECK:STDOUT: specific @J.F(constants.%J.facet.ecc) { // CHECK:STDOUT: %Self => constants.%J.facet.ecc -// CHECK:STDOUT: %Self.as_type.loc5_14.2 => constants.%empty_tuple.type +// CHECK:STDOUT: %Self.as_type.loc5_14.1 => constants.%empty_tuple.type // CHECK:STDOUT: %pattern_type.loc5_8 => constants.%pattern_type.cb1 // CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.impl_witness.e42 -// CHECK:STDOUT: %impl.elem0.loc5_23.2 => constants.%i32 +// CHECK:STDOUT: %impl.elem0.loc5_23.1 => constants.%i32 // CHECK:STDOUT: %pattern_type.loc5_20 => constants.%pattern_type.7ce // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%J.facet.30e) { +// CHECK:STDOUT: specific @J.F(constants.%J.facet.30e) { // CHECK:STDOUT: %Self => constants.%J.facet.30e -// CHECK:STDOUT: %Self.as_type.loc5_14.2 => constants.%C +// CHECK:STDOUT: %Self.as_type.loc5_14.1 => constants.%C // CHECK:STDOUT: %pattern_type.loc5_8 => constants.%pattern_type.c48 // CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.impl_witness.12d -// CHECK:STDOUT: %impl.elem0.loc5_23.2 => constants.%C +// CHECK:STDOUT: %impl.elem0.loc5_23.1 => constants.%C // CHECK:STDOUT: %pattern_type.loc5_20 => constants.%pattern_type.c48 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -649,9 +649,9 @@ fn F() { // CHECK:STDOUT: %J.facet.521: %J.type = facet_value %Self.as_type.3df, (%J.lookup_impl_witness.646) [symbolic] // CHECK:STDOUT: %impl.elem0.11f: type = impl_witness_access %J.lookup_impl_witness.646, element0 [symbolic] // CHECK:STDOUT: %pattern_type.b98: type = pattern_type %impl.elem0.11f [symbolic] -// CHECK:STDOUT: %F.type.c14: type = fn_type @F.loc5 [concrete] -// CHECK:STDOUT: %F.b71: %F.type.c14 = struct_value () [concrete] -// CHECK:STDOUT: %assoc1.572: %J.assoc_type = assoc_entity element1, @J.%F.decl [concrete] +// CHECK:STDOUT: %J.F.type: type = fn_type @J.F [concrete] +// CHECK:STDOUT: %J.F: %J.F.type = struct_value () [concrete] +// CHECK:STDOUT: %assoc1.572: %J.assoc_type = assoc_entity element1, @J.%J.F.decl [concrete] // CHECK:STDOUT: %D: type = class_type @D [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] @@ -668,38 +668,38 @@ fn F() { // CHECK:STDOUT: %J_where.type: type = facet_type <@J where %impl.elem0.83f = %i32> [concrete] // CHECK:STDOUT: %J.impl_witness: = impl_witness file.%J.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %F.type.5d3: type = fn_type @F.loc11 [concrete] -// CHECK:STDOUT: %F.b9c: %F.type.5d3 = struct_value () [concrete] +// CHECK:STDOUT: %D.as.J.impl.F.type: type = fn_type @D.as.J.impl.F [concrete] +// CHECK:STDOUT: %D.as.J.impl.F: %D.as.J.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %J.facet.183: %J.type = facet_value %D, (%J.impl_witness) [concrete] // CHECK:STDOUT: %Negate.type: type = facet_type <@Negate> [concrete] -// CHECK:STDOUT: %Op.type.e42: type = fn_type @Op.2 [concrete] +// CHECK:STDOUT: %Negate.Op.type: type = fn_type @Negate.Op [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %Op.type.fc5: type = fn_type @Op.1, @Negate.impl.47e(%N) [symbolic] -// CHECK:STDOUT: %Op.8d0: %Op.type.fc5 = struct_value () [symbolic] -// CHECK:STDOUT: %Negate.impl_witness.943: = impl_witness imports.%Negate.impl_witness_table, @Negate.impl.47e(%int_32) [concrete] -// CHECK:STDOUT: %Op.type.66f: type = fn_type @Op.1, @Negate.impl.47e(%int_32) [concrete] -// CHECK:STDOUT: %Op.5c0: %Op.type.66f = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %Int.as.Negate.impl.Op.type.fc5: type = fn_type @Int.as.Negate.impl.Op, @Int.as.Negate.impl(%N) [symbolic] +// CHECK:STDOUT: %Int.as.Negate.impl.Op.8d0: %Int.as.Negate.impl.Op.type.fc5 = struct_value () [symbolic] +// CHECK:STDOUT: %Negate.impl_witness.943: = impl_witness imports.%Negate.impl_witness_table, @Int.as.Negate.impl(%int_32) [concrete] +// CHECK:STDOUT: %Int.as.Negate.impl.Op.type.66f: type = fn_type @Int.as.Negate.impl.Op, @Int.as.Negate.impl(%int_32) [concrete] +// CHECK:STDOUT: %Int.as.Negate.impl.Op.5c0: %Int.as.Negate.impl.Op.type.66f = struct_value () [concrete] // CHECK:STDOUT: %Negate.facet: %Negate.type = facet_value %i32, (%Negate.impl_witness.943) [concrete] -// CHECK:STDOUT: %.6f0: type = fn_type_with_self_type %Op.type.e42, %Negate.facet [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.5c0, @Op.1(%int_32) [concrete] +// CHECK:STDOUT: %.6f0: type = fn_type_with_self_type %Negate.Op.type, %Negate.facet [concrete] +// CHECK:STDOUT: %Int.as.Negate.impl.Op.specific_fn: = specific_function %Int.as.Negate.impl.Op.5c0, @Int.as.Negate.impl.Op(%int_32) [concrete] // CHECK:STDOUT: %CallFunction.type: type = fn_type @CallFunction [concrete] // CHECK:STDOUT: %CallFunction: %CallFunction.type = struct_value () [concrete] -// CHECK:STDOUT: %.490: type = fn_type_with_self_type %F.type.c14, %J.facet.183 [concrete] +// CHECK:STDOUT: %.490: type = fn_type_with_self_type %J.F.type, %J.facet.183 [concrete] // CHECK:STDOUT: %int_4.0c1: Core.IntLiteral = int_value 4 [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_4.0c1, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_4.0c1, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_4.0c1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_4.0c1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_4.940: %i32 = int_value 4 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -713,11 +713,11 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.Negate: type = import_ref Core//prelude/parts/int_literal, Negate, loaded [concrete = constants.%Negate.type] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.import_ref.5f5 = import_ref Core//prelude/parts/int, loc35_43, unloaded -// CHECK:STDOUT: %Core.import_ref.ff2: @Negate.impl.47e.%Op.type (%Op.type.fc5) = import_ref Core//prelude/parts/int, loc36_31, loaded [symbolic = @Negate.impl.47e.%Op (constants.%Op.8d0)] -// CHECK:STDOUT: %Negate.impl_witness_table = impl_witness_table (%Core.import_ref.5f5, %Core.import_ref.ff2), @Negate.impl.47e [concrete] +// CHECK:STDOUT: %Core.import_ref.ff2: @Int.as.Negate.impl.%Int.as.Negate.impl.Op.type (%Int.as.Negate.impl.Op.type.fc5) = import_ref Core//prelude/parts/int, loc36_31, loaded [symbolic = @Int.as.Negate.impl.%Int.as.Negate.impl.Op (constants.%Int.as.Negate.impl.Op.8d0)] +// CHECK:STDOUT: %Negate.impl_witness_table = impl_witness_table (%Core.import_ref.5f5, %Core.import_ref.ff2), @Int.as.Negate.impl [concrete] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -731,7 +731,7 @@ fn F() { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %J.decl: type = interface_decl @J [concrete = constants.%J.type] {} {} // CHECK:STDOUT: %D.decl: type = class_decl @D [concrete = constants.%D] {} {} -// CHECK:STDOUT: impl_decl @J.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @D.as.J.impl [concrete] {} { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: %.Self: %J.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self.968] @@ -746,7 +746,7 @@ fn F() { // CHECK:STDOUT: requirement_rewrite %impl.elem0, %i32 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %J.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant, @J.impl.%F.decl), @J.impl [concrete] +// CHECK:STDOUT: %J.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant, @D.as.J.impl.%D.as.J.impl.F.decl), @D.as.J.impl [concrete] // CHECK:STDOUT: %J.impl_witness: = impl_witness %J.impl_witness_table [concrete = constants.%J.impl_witness] // CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %CallFunction.decl: %CallFunction.type = fn_decl @CallFunction [concrete = constants.%CallFunction] { @@ -765,38 +765,38 @@ fn F() { // CHECK:STDOUT: %U: type = assoc_const_decl @U [concrete] { // CHECK:STDOUT: %assoc0: %J.assoc_type = assoc_entity element0, @J.%U [concrete = constants.%assoc0.411] // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type.c14 = fn_decl @F.loc5 [concrete = constants.%F.b71] { -// CHECK:STDOUT: %u.patt: @F.loc5.%pattern_type (%pattern_type.b98) = binding_pattern u [concrete] -// CHECK:STDOUT: %u.param_patt: @F.loc5.%pattern_type (%pattern_type.b98) = value_param_pattern %u.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: @F.loc5.%pattern_type (%pattern_type.b98) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @F.loc5.%pattern_type (%pattern_type.b98) = out_param_pattern %return.patt, call_param1 [concrete] +// CHECK:STDOUT: %J.F.decl: %J.F.type = fn_decl @J.F [concrete = constants.%J.F] { +// CHECK:STDOUT: %u.patt: @J.F.%pattern_type (%pattern_type.b98) = binding_pattern u [concrete] +// CHECK:STDOUT: %u.param_patt: @J.F.%pattern_type (%pattern_type.b98) = value_param_pattern %u.patt, call_param0 [concrete] +// CHECK:STDOUT: %return.patt: @J.F.%pattern_type (%pattern_type.b98) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @J.F.%pattern_type (%pattern_type.b98) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %impl.elem0.loc5_17: type = impl_witness_access constants.%J.lookup_impl_witness.646, element0 [symbolic = %impl.elem0.loc5_11.2 (constants.%impl.elem0.11f)] -// CHECK:STDOUT: %U.ref.loc5_17: type = name_ref U, %impl.elem0.loc5_17 [symbolic = %impl.elem0.loc5_11.2 (constants.%impl.elem0.11f)] -// CHECK:STDOUT: %u.param: @F.loc5.%impl.elem0.loc5_11.2 (%impl.elem0.11f) = value_param call_param0 -// CHECK:STDOUT: %.loc5: type = splice_block %U.ref.loc5_11 [symbolic = %impl.elem0.loc5_11.2 (constants.%impl.elem0.11f)] { -// CHECK:STDOUT: %impl.elem0.loc5_11.1: type = impl_witness_access constants.%J.lookup_impl_witness.646, element0 [symbolic = %impl.elem0.loc5_11.2 (constants.%impl.elem0.11f)] -// CHECK:STDOUT: %U.ref.loc5_11: type = name_ref U, %impl.elem0.loc5_11.1 [symbolic = %impl.elem0.loc5_11.2 (constants.%impl.elem0.11f)] +// CHECK:STDOUT: %impl.elem0.loc5_17: type = impl_witness_access constants.%J.lookup_impl_witness.646, element0 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.11f)] +// CHECK:STDOUT: %U.ref.loc5_17: type = name_ref U, %impl.elem0.loc5_17 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.11f)] +// CHECK:STDOUT: %u.param: @J.F.%impl.elem0.loc5_11.1 (%impl.elem0.11f) = value_param call_param0 +// CHECK:STDOUT: %.loc5: type = splice_block %U.ref.loc5_11 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.11f)] { +// CHECK:STDOUT: %impl.elem0.loc5_11.2: type = impl_witness_access constants.%J.lookup_impl_witness.646, element0 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.11f)] +// CHECK:STDOUT: %U.ref.loc5_11: type = name_ref U, %impl.elem0.loc5_11.2 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.11f)] // CHECK:STDOUT: } -// CHECK:STDOUT: %u: @F.loc5.%impl.elem0.loc5_11.2 (%impl.elem0.11f) = bind_name u, %u.param -// CHECK:STDOUT: %return.param: ref @F.loc5.%impl.elem0.loc5_11.2 (%impl.elem0.11f) = out_param call_param1 -// CHECK:STDOUT: %return: ref @F.loc5.%impl.elem0.loc5_11.2 (%impl.elem0.11f) = return_slot %return.param +// CHECK:STDOUT: %u: @J.F.%impl.elem0.loc5_11.1 (%impl.elem0.11f) = bind_name u, %u.param +// CHECK:STDOUT: %return.param: ref @J.F.%impl.elem0.loc5_11.1 (%impl.elem0.11f) = out_param call_param1 +// CHECK:STDOUT: %return: ref @J.F.%impl.elem0.loc5_11.1 (%impl.elem0.11f) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc1: %J.assoc_type = assoc_entity element1, %F.decl [concrete = constants.%assoc1.572] +// CHECK:STDOUT: %assoc1: %J.assoc_type = assoc_entity element1, %J.F.decl [concrete = constants.%assoc1.572] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .U = @U.%assoc0 // CHECK:STDOUT: .F = %assoc1 -// CHECK:STDOUT: witness = (%U, %F.decl) +// CHECK:STDOUT: witness = (%U, %J.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic assoc_const @U(@J.%Self: %J.type) { // CHECK:STDOUT: assoc_const U:! type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @J.impl: %D.ref as %.loc10_13 { -// CHECK:STDOUT: %F.decl: %F.type.5d3 = fn_decl @F.loc11 [concrete = constants.%F.b9c] { +// CHECK:STDOUT: impl @D.as.J.impl: %D.ref as %.loc10_13 { +// CHECK:STDOUT: %D.as.J.impl.F.decl: %D.as.J.impl.F.type = fn_decl @D.as.J.impl.F [concrete = constants.%D.as.J.impl.F] { // CHECK:STDOUT: %u.patt: %pattern_type.7ce = binding_pattern u [concrete] // CHECK:STDOUT: %u.param_patt: %pattern_type.7ce = value_param_pattern %u.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] @@ -815,7 +815,7 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %D.as.J.impl.F.decl // CHECK:STDOUT: witness = file.%J.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: @@ -828,25 +828,25 @@ fn F() { // CHECK:STDOUT: .Self = constants.%D // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc5(@J.%Self: %J.type) { +// CHECK:STDOUT: generic fn @J.F(@J.%Self: %J.type) { // CHECK:STDOUT: %Self: %J.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.ccd)] // CHECK:STDOUT: %J.lookup_impl_witness: = lookup_impl_witness %Self, @J [symbolic = %J.lookup_impl_witness (constants.%J.lookup_impl_witness.646)] -// CHECK:STDOUT: %impl.elem0.loc5_11.2: type = impl_witness_access %J.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc5_11.2 (constants.%impl.elem0.11f)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %impl.elem0.loc5_11.2 [symbolic = %pattern_type (constants.%pattern_type.b98)] +// CHECK:STDOUT: %impl.elem0.loc5_11.1: type = impl_witness_access %J.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.11f)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %impl.elem0.loc5_11.1 [symbolic = %pattern_type (constants.%pattern_type.b98)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%u.param: @F.loc5.%impl.elem0.loc5_11.2 (%impl.elem0.11f)) -> @F.loc5.%impl.elem0.loc5_11.2 (%impl.elem0.11f); +// CHECK:STDOUT: fn(%u.param: @J.F.%impl.elem0.loc5_11.1 (%impl.elem0.11f)) -> @J.F.%impl.elem0.loc5_11.1 (%impl.elem0.11f); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc11(%u.param: %i32) -> %i32 { +// CHECK:STDOUT: fn @D.as.J.impl.F(%u.param: %i32) -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %u.ref: %i32 = name_ref u, %u -// CHECK:STDOUT: %impl.elem1: %.6f0 = impl_witness_access constants.%Negate.impl_witness.943, element1 [concrete = constants.%Op.5c0] +// CHECK:STDOUT: %impl.elem1: %.6f0 = impl_witness_access constants.%Negate.impl_witness.943, element1 [concrete = constants.%Int.as.Negate.impl.Op.5c0] // CHECK:STDOUT: %bound_method.loc11_32.1: = bound_method %u.ref, %impl.elem1 -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem1, @Op.1(constants.%int_32) [concrete = constants.%Op.specific_fn] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem1, @Int.as.Negate.impl.Op(constants.%int_32) [concrete = constants.%Int.as.Negate.impl.Op.specific_fn] // CHECK:STDOUT: %bound_method.loc11_32.2: = bound_method %u.ref, %specific_fn -// CHECK:STDOUT: %int.snegate: init %i32 = call %bound_method.loc11_32.2(%u.ref) -// CHECK:STDOUT: %.loc11_34.1: %i32 = value_of_initializer %int.snegate -// CHECK:STDOUT: %.loc11_34.2: %i32 = converted %int.snegate, %.loc11_34.1 +// CHECK:STDOUT: %Int.as.Negate.impl.Op.call: init %i32 = call %bound_method.loc11_32.2(%u.ref) +// CHECK:STDOUT: %.loc11_34.1: %i32 = value_of_initializer %Int.as.Negate.impl.Op.call +// CHECK:STDOUT: %.loc11_34.2: %i32 = converted %Int.as.Negate.impl.Op.call, %.loc11_34.1 // CHECK:STDOUT: return %.loc11_34.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -857,18 +857,18 @@ fn F() { // CHECK:STDOUT: %F.ref: %J.assoc_type = name_ref F, @J.%assoc1 [concrete = constants.%assoc1.572] // CHECK:STDOUT: %J.facet: %J.type = facet_value constants.%D, (constants.%J.impl_witness) [concrete = constants.%J.facet.183] // CHECK:STDOUT: %.loc15_11: %J.type = converted %D.ref, %J.facet [concrete = constants.%J.facet.183] -// CHECK:STDOUT: %impl.elem1: %.490 = impl_witness_access constants.%J.impl_witness, element1 [concrete = constants.%F.b9c] +// CHECK:STDOUT: %impl.elem1: %.490 = impl_witness_access constants.%J.impl_witness, element1 [concrete = constants.%D.as.J.impl.F] // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete = constants.%int_4.0c1] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc15_18.1: = bound_method %int_4, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc15_18.1: = bound_method %int_4, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc15_18.2: = bound_method %int_4, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc15_18.2(%int_4) [concrete = constants.%int_4.940] -// CHECK:STDOUT: %.loc15_18.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_4.940] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc15_18.2(%int_4) [concrete = constants.%int_4.940] +// CHECK:STDOUT: %.loc15_18.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_4.940] // CHECK:STDOUT: %.loc15_18.2: %i32 = converted %int_4, %.loc15_18.1 [concrete = constants.%int_4.940] -// CHECK:STDOUT: %F.call: init %i32 = call %impl.elem1(%.loc15_18.2) -// CHECK:STDOUT: %.loc15_20.1: %i32 = value_of_initializer %F.call -// CHECK:STDOUT: %.loc15_20.2: %i32 = converted %F.call, %.loc15_20.1 +// CHECK:STDOUT: %D.as.J.impl.F.call: init %i32 = call %impl.elem1(%.loc15_18.2) +// CHECK:STDOUT: %.loc15_20.1: %i32 = value_of_initializer %D.as.J.impl.F.call +// CHECK:STDOUT: %.loc15_20.2: %i32 = converted %D.as.J.impl.F.call, %.loc15_20.1 // CHECK:STDOUT: return %.loc15_20.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -876,19 +876,19 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: specific @U(constants.%J.facet.521) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%Self.ccd) { +// CHECK:STDOUT: specific @J.F(constants.%Self.ccd) { // CHECK:STDOUT: %Self => constants.%Self.ccd // CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.lookup_impl_witness.646 -// CHECK:STDOUT: %impl.elem0.loc5_11.2 => constants.%impl.elem0.11f +// CHECK:STDOUT: %impl.elem0.loc5_11.1 => constants.%impl.elem0.11f // CHECK:STDOUT: %pattern_type => constants.%pattern_type.b98 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @U(constants.%J.facet.330) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%J.facet.183) { +// CHECK:STDOUT: specific @J.F(constants.%J.facet.183) { // CHECK:STDOUT: %Self => constants.%J.facet.183 // CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.impl_witness -// CHECK:STDOUT: %impl.elem0.loc5_11.2 => constants.%i32 +// CHECK:STDOUT: %impl.elem0.loc5_11.1 => constants.%i32 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7ce // CHECK:STDOUT: } // CHECK:STDOUT: @@ -904,13 +904,13 @@ fn F() { // CHECK:STDOUT: %J.facet.5210a7.1: %J.type = facet_value %Self.as_type.3df, (%J.lookup_impl_witness.64628e.1) [symbolic] // CHECK:STDOUT: %impl.elem0.11fef0.1: type = impl_witness_access %J.lookup_impl_witness.64628e.1, element0 [symbolic] // CHECK:STDOUT: %pattern_type.b984e7.1: type = pattern_type %impl.elem0.11fef0.1 [symbolic] -// CHECK:STDOUT: %F.type.c14: type = fn_type @F.loc5 [concrete] -// CHECK:STDOUT: %F.b71: %F.type.c14 = struct_value () [concrete] -// CHECK:STDOUT: %assoc1.572: %J.assoc_type = assoc_entity element1, @J.%F.decl [concrete] +// CHECK:STDOUT: %J.F.type: type = fn_type @J.F [concrete] +// CHECK:STDOUT: %J.F: %J.F.type = struct_value () [concrete] +// CHECK:STDOUT: %assoc1.572: %J.assoc_type = assoc_entity element1, @J.%J.F.decl [concrete] // CHECK:STDOUT: %pattern_type.4ca604.1: type = pattern_type %Self.as_type.3df [symbolic] -// CHECK:STDOUT: %G.type.285: type = fn_type @G.loc6 [concrete] -// CHECK:STDOUT: %G.e4b: %G.type.285 = struct_value () [concrete] -// CHECK:STDOUT: %assoc2: %J.assoc_type = assoc_entity element2, @J.%G.decl [concrete] +// CHECK:STDOUT: %J.G.type: type = fn_type @J.G [concrete] +// CHECK:STDOUT: %J.G: %J.G.type = struct_value () [concrete] +// CHECK:STDOUT: %assoc2: %J.assoc_type = assoc_entity element2, @J.%J.G.decl [concrete] // CHECK:STDOUT: %E: type = class_type @E [concrete] // CHECK:STDOUT: %.Self.968: %J.type = bind_symbolic_name .Self [symbolic_self] // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.968 [symbolic_self] @@ -925,62 +925,62 @@ fn F() { // CHECK:STDOUT: %J_where.type: type = facet_type <@J where %impl.elem0.83f = %i32> [concrete] // CHECK:STDOUT: %J.impl_witness: = impl_witness @E.%J.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %F.type.b84: type = fn_type @F.loc11 [concrete] -// CHECK:STDOUT: %F.b07: %F.type.b84 = struct_value () [concrete] +// CHECK:STDOUT: %E.as.J.impl.F.type: type = fn_type @E.as.J.impl.F [concrete] +// CHECK:STDOUT: %E.as.J.impl.F: %E.as.J.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.a4a: type = pattern_type %E [concrete] -// CHECK:STDOUT: %G.type.4b6: type = fn_type @G.loc14 [concrete] -// CHECK:STDOUT: %G.553: %G.type.4b6 = struct_value () [concrete] +// CHECK:STDOUT: %E.as.J.impl.G.type: type = fn_type @E.as.J.impl.G [concrete] +// CHECK:STDOUT: %E.as.J.impl.G: %E.as.J.impl.G.type = struct_value () [concrete] // CHECK:STDOUT: %J.facet.ee5: %J.type = facet_value %E, (%J.impl_witness) [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [concrete] // CHECK:STDOUT: %complete_type.f8a: = complete_type_witness %i32.builtin [concrete] // CHECK:STDOUT: %Negate.type: type = facet_type <@Negate> [concrete] -// CHECK:STDOUT: %Op.type.e42: type = fn_type @Op.2 [concrete] +// CHECK:STDOUT: %Negate.Op.type: type = fn_type @Negate.Op [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %Op.type.fc5: type = fn_type @Op.1, @Negate.impl.47e(%N) [symbolic] -// CHECK:STDOUT: %Op.8d0: %Op.type.fc5 = struct_value () [symbolic] -// CHECK:STDOUT: %Negate.impl_witness.943: = impl_witness imports.%Negate.impl_witness_table, @Negate.impl.47e(%int_32) [concrete] -// CHECK:STDOUT: %Op.type.66f: type = fn_type @Op.1, @Negate.impl.47e(%int_32) [concrete] -// CHECK:STDOUT: %Op.5c0: %Op.type.66f = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %Int.as.Negate.impl.Op.type.fc5: type = fn_type @Int.as.Negate.impl.Op, @Int.as.Negate.impl(%N) [symbolic] +// CHECK:STDOUT: %Int.as.Negate.impl.Op.8d0: %Int.as.Negate.impl.Op.type.fc5 = struct_value () [symbolic] +// CHECK:STDOUT: %Negate.impl_witness.943: = impl_witness imports.%Negate.impl_witness_table, @Int.as.Negate.impl(%int_32) [concrete] +// CHECK:STDOUT: %Int.as.Negate.impl.Op.type.66f: type = fn_type @Int.as.Negate.impl.Op, @Int.as.Negate.impl(%int_32) [concrete] +// CHECK:STDOUT: %Int.as.Negate.impl.Op.5c0: %Int.as.Negate.impl.Op.type.66f = struct_value () [concrete] // CHECK:STDOUT: %Negate.facet: %Negate.type = facet_value %i32, (%Negate.impl_witness.943) [concrete] -// CHECK:STDOUT: %.6f0: type = fn_type_with_self_type %Op.type.e42, %Negate.facet [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.5c0, @Op.1(%int_32) [concrete] +// CHECK:STDOUT: %.6f0: type = fn_type_with_self_type %Negate.Op.type, %Negate.facet [concrete] +// CHECK:STDOUT: %Int.as.Negate.impl.Op.specific_fn: = specific_function %Int.as.Negate.impl.Op.5c0, @Int.as.Negate.impl.Op(%int_32) [concrete] // CHECK:STDOUT: %CallBoth.type: type = fn_type @CallBoth [concrete] // CHECK:STDOUT: %CallBoth: %CallBoth.type = struct_value () [concrete] -// CHECK:STDOUT: %.29b: type = fn_type_with_self_type %F.type.c14, %J.facet.ee5 [concrete] +// CHECK:STDOUT: %.29b: type = fn_type_with_self_type %J.F.type, %J.facet.ee5 [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] -// CHECK:STDOUT: %.ff5: type = fn_type_with_self_type %G.type.285, %J.facet.ee5 [concrete] +// CHECK:STDOUT: %.ff5: type = fn_type_with_self_type %J.G.type, %J.facet.ee5 [concrete] // CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [concrete] -// CHECK:STDOUT: %Convert.bound.b30: = bound_method %int_3.1ba, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.047: = bound_method %int_3.1ba, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.b30: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.047: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_3.822: %i32 = int_value 3 [concrete] // CHECK:STDOUT: %int_4.0c1: Core.IntLiteral = int_value 4 [concrete] -// CHECK:STDOUT: %Convert.bound.ac3: = bound_method %int_4.0c1, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.1da: = bound_method %int_4.0c1, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ac3: = bound_method %int_4.0c1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.1da: = bound_method %int_4.0c1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_4.940: %i32 = int_value 4 [concrete] // CHECK:STDOUT: %int_5.64b: Core.IntLiteral = int_value 5 [concrete] -// CHECK:STDOUT: %Convert.bound.4e6: = bound_method %int_5.64b, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.a25: = bound_method %int_5.64b, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.4e6: = bound_method %int_5.64b, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.a25: = bound_method %int_5.64b, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_5.0f6: %i32 = int_value 5 [concrete] // CHECK:STDOUT: %int_6.462: Core.IntLiteral = int_value 6 [concrete] -// CHECK:STDOUT: %Convert.bound.ce9: = bound_method %int_6.462, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.efa: = bound_method %int_6.462, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ce9: = bound_method %int_6.462, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.efa: = bound_method %int_6.462, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_6.e56: %i32 = int_value 6 [concrete] // CHECK:STDOUT: %T: %J.type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.28e: type = pattern_type %J.type [concrete] @@ -994,9 +994,9 @@ fn F() { // CHECK:STDOUT: %GenericCallF: %GenericCallF.type = struct_value () [concrete] // CHECK:STDOUT: %require_complete.58f: = require_complete_type %impl.elem0.11fef0.2 [symbolic] // CHECK:STDOUT: %require_complete.2a5: = require_complete_type %T.as_type [symbolic] -// CHECK:STDOUT: %.d43: type = fn_type_with_self_type %F.type.c14, %J.facet.5210a7.2 [symbolic] +// CHECK:STDOUT: %.d43: type = fn_type_with_self_type %J.F.type, %J.facet.5210a7.2 [symbolic] // CHECK:STDOUT: %impl.elem1: %.d43 = impl_witness_access %J.lookup_impl_witness.64628e.2, element1 [symbolic] -// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem1, @F.loc5(%J.facet.5210a7.2) [symbolic] +// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem1, @J.F(%J.facet.5210a7.2) [symbolic] // CHECK:STDOUT: %CallGeneric.type: type = fn_type @CallGeneric [concrete] // CHECK:STDOUT: %CallGeneric: %CallGeneric.type = struct_value () [concrete] // CHECK:STDOUT: %GenericCallF.specific_fn: = specific_function %GenericCallF, @GenericCallF(%J.facet.ee5) [concrete] @@ -1012,11 +1012,11 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.Negate: type = import_ref Core//prelude/parts/int_literal, Negate, loaded [concrete = constants.%Negate.type] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.import_ref.5f5 = import_ref Core//prelude/parts/int, loc35_43, unloaded -// CHECK:STDOUT: %Core.import_ref.ff2: @Negate.impl.47e.%Op.type (%Op.type.fc5) = import_ref Core//prelude/parts/int, loc36_31, loaded [symbolic = @Negate.impl.47e.%Op (constants.%Op.8d0)] -// CHECK:STDOUT: %Negate.impl_witness_table = impl_witness_table (%Core.import_ref.5f5, %Core.import_ref.ff2), @Negate.impl.47e [concrete] +// CHECK:STDOUT: %Core.import_ref.ff2: @Int.as.Negate.impl.%Int.as.Negate.impl.Op.type (%Int.as.Negate.impl.Op.type.fc5) = import_ref Core//prelude/parts/int, loc36_31, loaded [symbolic = @Int.as.Negate.impl.%Int.as.Negate.impl.Op (constants.%Int.as.Negate.impl.Op.8d0)] +// CHECK:STDOUT: %Negate.impl_witness_table = impl_witness_table (%Core.import_ref.5f5, %Core.import_ref.ff2), @Int.as.Negate.impl [concrete] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1096,66 +1096,66 @@ fn F() { // CHECK:STDOUT: %U: type = assoc_const_decl @U [concrete] { // CHECK:STDOUT: %assoc0: %J.assoc_type = assoc_entity element0, @J.%U [concrete = constants.%assoc0.411] // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type.c14 = fn_decl @F.loc5 [concrete = constants.%F.b71] { -// CHECK:STDOUT: %u.patt: @F.loc5.%pattern_type (%pattern_type.b984e7.1) = binding_pattern u [concrete] -// CHECK:STDOUT: %u.param_patt: @F.loc5.%pattern_type (%pattern_type.b984e7.1) = value_param_pattern %u.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: @F.loc5.%pattern_type (%pattern_type.b984e7.1) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @F.loc5.%pattern_type (%pattern_type.b984e7.1) = out_param_pattern %return.patt, call_param1 [concrete] +// CHECK:STDOUT: %J.F.decl: %J.F.type = fn_decl @J.F [concrete = constants.%J.F] { +// CHECK:STDOUT: %u.patt: @J.F.%pattern_type (%pattern_type.b984e7.1) = binding_pattern u [concrete] +// CHECK:STDOUT: %u.param_patt: @J.F.%pattern_type (%pattern_type.b984e7.1) = value_param_pattern %u.patt, call_param0 [concrete] +// CHECK:STDOUT: %return.patt: @J.F.%pattern_type (%pattern_type.b984e7.1) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @J.F.%pattern_type (%pattern_type.b984e7.1) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %impl.elem0.loc5_17: type = impl_witness_access constants.%J.lookup_impl_witness.64628e.1, element0 [symbolic = %impl.elem0.loc5_11.2 (constants.%impl.elem0.11fef0.1)] -// CHECK:STDOUT: %U.ref.loc5_17: type = name_ref U, %impl.elem0.loc5_17 [symbolic = %impl.elem0.loc5_11.2 (constants.%impl.elem0.11fef0.1)] -// CHECK:STDOUT: %u.param: @F.loc5.%impl.elem0.loc5_11.2 (%impl.elem0.11fef0.1) = value_param call_param0 -// CHECK:STDOUT: %.loc5: type = splice_block %U.ref.loc5_11 [symbolic = %impl.elem0.loc5_11.2 (constants.%impl.elem0.11fef0.1)] { -// CHECK:STDOUT: %impl.elem0.loc5_11.1: type = impl_witness_access constants.%J.lookup_impl_witness.64628e.1, element0 [symbolic = %impl.elem0.loc5_11.2 (constants.%impl.elem0.11fef0.1)] -// CHECK:STDOUT: %U.ref.loc5_11: type = name_ref U, %impl.elem0.loc5_11.1 [symbolic = %impl.elem0.loc5_11.2 (constants.%impl.elem0.11fef0.1)] +// CHECK:STDOUT: %impl.elem0.loc5_17: type = impl_witness_access constants.%J.lookup_impl_witness.64628e.1, element0 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.11fef0.1)] +// CHECK:STDOUT: %U.ref.loc5_17: type = name_ref U, %impl.elem0.loc5_17 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.11fef0.1)] +// CHECK:STDOUT: %u.param: @J.F.%impl.elem0.loc5_11.1 (%impl.elem0.11fef0.1) = value_param call_param0 +// CHECK:STDOUT: %.loc5: type = splice_block %U.ref.loc5_11 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.11fef0.1)] { +// CHECK:STDOUT: %impl.elem0.loc5_11.2: type = impl_witness_access constants.%J.lookup_impl_witness.64628e.1, element0 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.11fef0.1)] +// CHECK:STDOUT: %U.ref.loc5_11: type = name_ref U, %impl.elem0.loc5_11.2 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.11fef0.1)] // CHECK:STDOUT: } -// CHECK:STDOUT: %u: @F.loc5.%impl.elem0.loc5_11.2 (%impl.elem0.11fef0.1) = bind_name u, %u.param -// CHECK:STDOUT: %return.param: ref @F.loc5.%impl.elem0.loc5_11.2 (%impl.elem0.11fef0.1) = out_param call_param1 -// CHECK:STDOUT: %return: ref @F.loc5.%impl.elem0.loc5_11.2 (%impl.elem0.11fef0.1) = return_slot %return.param +// CHECK:STDOUT: %u: @J.F.%impl.elem0.loc5_11.1 (%impl.elem0.11fef0.1) = bind_name u, %u.param +// CHECK:STDOUT: %return.param: ref @J.F.%impl.elem0.loc5_11.1 (%impl.elem0.11fef0.1) = out_param call_param1 +// CHECK:STDOUT: %return: ref @J.F.%impl.elem0.loc5_11.1 (%impl.elem0.11fef0.1) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc1: %J.assoc_type = assoc_entity element1, %F.decl [concrete = constants.%assoc1.572] -// CHECK:STDOUT: %G.decl: %G.type.285 = fn_decl @G.loc6 [concrete = constants.%G.e4b] { -// CHECK:STDOUT: %self.patt: @G.loc6.%pattern_type.loc6_8 (%pattern_type.4ca604.1) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @G.loc6.%pattern_type.loc6_8 (%pattern_type.4ca604.1) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %v.patt: @G.loc6.%pattern_type.loc6_20 (%pattern_type.b984e7.1) = binding_pattern v [concrete] -// CHECK:STDOUT: %v.param_patt: @G.loc6.%pattern_type.loc6_20 (%pattern_type.b984e7.1) = value_param_pattern %v.patt, call_param1 [concrete] -// CHECK:STDOUT: %return.patt: @G.loc6.%pattern_type.loc6_20 (%pattern_type.b984e7.1) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @G.loc6.%pattern_type.loc6_20 (%pattern_type.b984e7.1) = out_param_pattern %return.patt, call_param2 [concrete] +// CHECK:STDOUT: %assoc1: %J.assoc_type = assoc_entity element1, %J.F.decl [concrete = constants.%assoc1.572] +// CHECK:STDOUT: %J.G.decl: %J.G.type = fn_decl @J.G [concrete = constants.%J.G] { +// CHECK:STDOUT: %self.patt: @J.G.%pattern_type.loc6_8 (%pattern_type.4ca604.1) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @J.G.%pattern_type.loc6_8 (%pattern_type.4ca604.1) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %v.patt: @J.G.%pattern_type.loc6_20 (%pattern_type.b984e7.1) = binding_pattern v [concrete] +// CHECK:STDOUT: %v.param_patt: @J.G.%pattern_type.loc6_20 (%pattern_type.b984e7.1) = value_param_pattern %v.patt, call_param1 [concrete] +// CHECK:STDOUT: %return.patt: @J.G.%pattern_type.loc6_20 (%pattern_type.b984e7.1) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @J.G.%pattern_type.loc6_20 (%pattern_type.b984e7.1) = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %impl.elem0.loc6_29: type = impl_witness_access constants.%J.lookup_impl_witness.64628e.1, element0 [symbolic = %impl.elem0.loc6_23.2 (constants.%impl.elem0.11fef0.1)] -// CHECK:STDOUT: %U.ref.loc6_29: type = name_ref U, %impl.elem0.loc6_29 [symbolic = %impl.elem0.loc6_23.2 (constants.%impl.elem0.11fef0.1)] -// CHECK:STDOUT: %self.param: @G.loc6.%Self.as_type.loc6_14.2 (%Self.as_type.3df) = value_param call_param0 -// CHECK:STDOUT: %.loc6_14.1: type = splice_block %.loc6_14.2 [symbolic = %Self.as_type.loc6_14.2 (constants.%Self.as_type.3df)] { +// CHECK:STDOUT: %impl.elem0.loc6_29: type = impl_witness_access constants.%J.lookup_impl_witness.64628e.1, element0 [symbolic = %impl.elem0.loc6_23.1 (constants.%impl.elem0.11fef0.1)] +// CHECK:STDOUT: %U.ref.loc6_29: type = name_ref U, %impl.elem0.loc6_29 [symbolic = %impl.elem0.loc6_23.1 (constants.%impl.elem0.11fef0.1)] +// CHECK:STDOUT: %self.param: @J.G.%Self.as_type.loc6_14.1 (%Self.as_type.3df) = value_param call_param0 +// CHECK:STDOUT: %.loc6_14.1: type = splice_block %.loc6_14.2 [symbolic = %Self.as_type.loc6_14.1 (constants.%Self.as_type.3df)] { // CHECK:STDOUT: %Self.ref: %J.type = name_ref Self, @J.%Self [symbolic = %Self (constants.%Self.ccd)] -// CHECK:STDOUT: %Self.as_type.loc6_14.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc6_14.2 (constants.%Self.as_type.3df)] -// CHECK:STDOUT: %.loc6_14.2: type = converted %Self.ref, %Self.as_type.loc6_14.1 [symbolic = %Self.as_type.loc6_14.2 (constants.%Self.as_type.3df)] +// CHECK:STDOUT: %Self.as_type.loc6_14.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc6_14.1 (constants.%Self.as_type.3df)] +// CHECK:STDOUT: %.loc6_14.2: type = converted %Self.ref, %Self.as_type.loc6_14.2 [symbolic = %Self.as_type.loc6_14.1 (constants.%Self.as_type.3df)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @G.loc6.%Self.as_type.loc6_14.2 (%Self.as_type.3df) = bind_name self, %self.param -// CHECK:STDOUT: %v.param: @G.loc6.%impl.elem0.loc6_23.2 (%impl.elem0.11fef0.1) = value_param call_param1 -// CHECK:STDOUT: %.loc6_23: type = splice_block %U.ref.loc6_23 [symbolic = %impl.elem0.loc6_23.2 (constants.%impl.elem0.11fef0.1)] { -// CHECK:STDOUT: %impl.elem0.loc6_23.1: type = impl_witness_access constants.%J.lookup_impl_witness.64628e.1, element0 [symbolic = %impl.elem0.loc6_23.2 (constants.%impl.elem0.11fef0.1)] -// CHECK:STDOUT: %U.ref.loc6_23: type = name_ref U, %impl.elem0.loc6_23.1 [symbolic = %impl.elem0.loc6_23.2 (constants.%impl.elem0.11fef0.1)] +// CHECK:STDOUT: %self: @J.G.%Self.as_type.loc6_14.1 (%Self.as_type.3df) = bind_name self, %self.param +// CHECK:STDOUT: %v.param: @J.G.%impl.elem0.loc6_23.1 (%impl.elem0.11fef0.1) = value_param call_param1 +// CHECK:STDOUT: %.loc6_23: type = splice_block %U.ref.loc6_23 [symbolic = %impl.elem0.loc6_23.1 (constants.%impl.elem0.11fef0.1)] { +// CHECK:STDOUT: %impl.elem0.loc6_23.2: type = impl_witness_access constants.%J.lookup_impl_witness.64628e.1, element0 [symbolic = %impl.elem0.loc6_23.1 (constants.%impl.elem0.11fef0.1)] +// CHECK:STDOUT: %U.ref.loc6_23: type = name_ref U, %impl.elem0.loc6_23.2 [symbolic = %impl.elem0.loc6_23.1 (constants.%impl.elem0.11fef0.1)] // CHECK:STDOUT: } -// CHECK:STDOUT: %v: @G.loc6.%impl.elem0.loc6_23.2 (%impl.elem0.11fef0.1) = bind_name v, %v.param -// CHECK:STDOUT: %return.param: ref @G.loc6.%impl.elem0.loc6_23.2 (%impl.elem0.11fef0.1) = out_param call_param2 -// CHECK:STDOUT: %return: ref @G.loc6.%impl.elem0.loc6_23.2 (%impl.elem0.11fef0.1) = return_slot %return.param +// CHECK:STDOUT: %v: @J.G.%impl.elem0.loc6_23.1 (%impl.elem0.11fef0.1) = bind_name v, %v.param +// CHECK:STDOUT: %return.param: ref @J.G.%impl.elem0.loc6_23.1 (%impl.elem0.11fef0.1) = out_param call_param2 +// CHECK:STDOUT: %return: ref @J.G.%impl.elem0.loc6_23.1 (%impl.elem0.11fef0.1) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc2: %J.assoc_type = assoc_entity element2, %G.decl [concrete = constants.%assoc2] +// CHECK:STDOUT: %assoc2: %J.assoc_type = assoc_entity element2, %J.G.decl [concrete = constants.%assoc2] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .U = @U.%assoc0 // CHECK:STDOUT: .F = %assoc1 // CHECK:STDOUT: .G = %assoc2 -// CHECK:STDOUT: witness = (%U, %F.decl, %G.decl) +// CHECK:STDOUT: witness = (%U, %J.F.decl, %J.G.decl) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic assoc_const @U(@J.%Self: %J.type) { // CHECK:STDOUT: assoc_const U:! type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @J.impl: %Self.ref as %.loc10_20 { -// CHECK:STDOUT: %F.decl: %F.type.b84 = fn_decl @F.loc11 [concrete = constants.%F.b07] { +// CHECK:STDOUT: impl @E.as.J.impl: %Self.ref as %.loc10_20 { +// CHECK:STDOUT: %E.as.J.impl.F.decl: %E.as.J.impl.F.type = fn_decl @E.as.J.impl.F [concrete = constants.%E.as.J.impl.F] { // CHECK:STDOUT: %u.patt: %pattern_type.7ce = binding_pattern u [concrete] // CHECK:STDOUT: %u.param_patt: %pattern_type.7ce = value_param_pattern %u.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] @@ -1172,7 +1172,7 @@ fn F() { // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param1 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: %G.type.4b6 = fn_decl @G.loc14 [concrete = constants.%G.553] { +// CHECK:STDOUT: %E.as.J.impl.G.decl: %E.as.J.impl.G.type = fn_decl @E.as.J.impl.G [concrete = constants.%E.as.J.impl.G] { // CHECK:STDOUT: %self.patt: %pattern_type.a4a = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.a4a = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %v.patt: %pattern_type.7ce = binding_pattern v [concrete] @@ -1196,13 +1196,13 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .F = %E.as.J.impl.F.decl +// CHECK:STDOUT: .G = %E.as.J.impl.G.decl // CHECK:STDOUT: witness = @E.%J.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @E { -// CHECK:STDOUT: impl_decl @J.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @E.as.J.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%E [concrete = constants.%E] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: %.Self: %J.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self.968] @@ -1217,7 +1217,7 @@ fn F() { // CHECK:STDOUT: requirement_rewrite %impl.elem0, %i32 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %J.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant, @J.impl.%F.decl, @J.impl.%G.decl), @J.impl [concrete] +// CHECK:STDOUT: %J.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant, @E.as.J.impl.%E.as.J.impl.F.decl, @E.as.J.impl.%E.as.J.impl.G.decl), @E.as.J.impl [concrete] // CHECK:STDOUT: %J.impl_witness: = impl_witness %J.impl_witness_table [concrete = constants.%J.impl_witness] // CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] @@ -1229,52 +1229,52 @@ fn F() { // CHECK:STDOUT: .J = // CHECK:STDOUT: .F = // CHECK:STDOUT: .G = -// CHECK:STDOUT: extend @J.impl.%.loc10_20 +// CHECK:STDOUT: extend @E.as.J.impl.%.loc10_20 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc5(@J.%Self: %J.type) { +// CHECK:STDOUT: generic fn @J.F(@J.%Self: %J.type) { // CHECK:STDOUT: %Self: %J.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.ccd)] // CHECK:STDOUT: %J.lookup_impl_witness: = lookup_impl_witness %Self, @J [symbolic = %J.lookup_impl_witness (constants.%J.lookup_impl_witness.64628e.1)] -// CHECK:STDOUT: %impl.elem0.loc5_11.2: type = impl_witness_access %J.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc5_11.2 (constants.%impl.elem0.11fef0.1)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %impl.elem0.loc5_11.2 [symbolic = %pattern_type (constants.%pattern_type.b984e7.1)] +// CHECK:STDOUT: %impl.elem0.loc5_11.1: type = impl_witness_access %J.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.11fef0.1)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %impl.elem0.loc5_11.1 [symbolic = %pattern_type (constants.%pattern_type.b984e7.1)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%u.param: @F.loc5.%impl.elem0.loc5_11.2 (%impl.elem0.11fef0.1)) -> @F.loc5.%impl.elem0.loc5_11.2 (%impl.elem0.11fef0.1); +// CHECK:STDOUT: fn(%u.param: @J.F.%impl.elem0.loc5_11.1 (%impl.elem0.11fef0.1)) -> @J.F.%impl.elem0.loc5_11.1 (%impl.elem0.11fef0.1); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @G.loc6(@J.%Self: %J.type) { +// CHECK:STDOUT: generic fn @J.G(@J.%Self: %J.type) { // CHECK:STDOUT: %Self: %J.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.ccd)] -// CHECK:STDOUT: %Self.as_type.loc6_14.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc6_14.2 (constants.%Self.as_type.3df)] -// CHECK:STDOUT: %pattern_type.loc6_8: type = pattern_type %Self.as_type.loc6_14.2 [symbolic = %pattern_type.loc6_8 (constants.%pattern_type.4ca604.1)] +// CHECK:STDOUT: %Self.as_type.loc6_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc6_14.1 (constants.%Self.as_type.3df)] +// CHECK:STDOUT: %pattern_type.loc6_8: type = pattern_type %Self.as_type.loc6_14.1 [symbolic = %pattern_type.loc6_8 (constants.%pattern_type.4ca604.1)] // CHECK:STDOUT: %J.lookup_impl_witness: = lookup_impl_witness %Self, @J [symbolic = %J.lookup_impl_witness (constants.%J.lookup_impl_witness.64628e.1)] -// CHECK:STDOUT: %impl.elem0.loc6_23.2: type = impl_witness_access %J.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc6_23.2 (constants.%impl.elem0.11fef0.1)] -// CHECK:STDOUT: %pattern_type.loc6_20: type = pattern_type %impl.elem0.loc6_23.2 [symbolic = %pattern_type.loc6_20 (constants.%pattern_type.b984e7.1)] +// CHECK:STDOUT: %impl.elem0.loc6_23.1: type = impl_witness_access %J.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc6_23.1 (constants.%impl.elem0.11fef0.1)] +// CHECK:STDOUT: %pattern_type.loc6_20: type = pattern_type %impl.elem0.loc6_23.1 [symbolic = %pattern_type.loc6_20 (constants.%pattern_type.b984e7.1)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @G.loc6.%Self.as_type.loc6_14.2 (%Self.as_type.3df), %v.param: @G.loc6.%impl.elem0.loc6_23.2 (%impl.elem0.11fef0.1)) -> @G.loc6.%impl.elem0.loc6_23.2 (%impl.elem0.11fef0.1); +// CHECK:STDOUT: fn(%self.param: @J.G.%Self.as_type.loc6_14.1 (%Self.as_type.3df), %v.param: @J.G.%impl.elem0.loc6_23.1 (%impl.elem0.11fef0.1)) -> @J.G.%impl.elem0.loc6_23.1 (%impl.elem0.11fef0.1); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc11(%u.param: %i32) -> %i32 { +// CHECK:STDOUT: fn @E.as.J.impl.F(%u.param: %i32) -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %u.ref: %i32 = name_ref u, %u -// CHECK:STDOUT: %impl.elem1: %.6f0 = impl_witness_access constants.%Negate.impl_witness.943, element1 [concrete = constants.%Op.5c0] +// CHECK:STDOUT: %impl.elem1: %.6f0 = impl_witness_access constants.%Negate.impl_witness.943, element1 [concrete = constants.%Int.as.Negate.impl.Op.5c0] // CHECK:STDOUT: %bound_method.loc12_14.1: = bound_method %u.ref, %impl.elem1 -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem1, @Op.1(constants.%int_32) [concrete = constants.%Op.specific_fn] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem1, @Int.as.Negate.impl.Op(constants.%int_32) [concrete = constants.%Int.as.Negate.impl.Op.specific_fn] // CHECK:STDOUT: %bound_method.loc12_14.2: = bound_method %u.ref, %specific_fn -// CHECK:STDOUT: %int.snegate: init %i32 = call %bound_method.loc12_14.2(%u.ref) -// CHECK:STDOUT: %.loc12_16.1: %i32 = value_of_initializer %int.snegate -// CHECK:STDOUT: %.loc12_16.2: %i32 = converted %int.snegate, %.loc12_16.1 +// CHECK:STDOUT: %Int.as.Negate.impl.Op.call: init %i32 = call %bound_method.loc12_14.2(%u.ref) +// CHECK:STDOUT: %.loc12_16.1: %i32 = value_of_initializer %Int.as.Negate.impl.Op.call +// CHECK:STDOUT: %.loc12_16.2: %i32 = converted %Int.as.Negate.impl.Op.call, %.loc12_16.1 // CHECK:STDOUT: return %.loc12_16.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G.loc14(%self.param: %E, %v.param: %i32) -> %i32 { +// CHECK:STDOUT: fn @E.as.J.impl.G(%self.param: %E, %v.param: %i32) -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %v.ref: %i32 = name_ref v, %v -// CHECK:STDOUT: %impl.elem1: %.6f0 = impl_witness_access constants.%Negate.impl_witness.943, element1 [concrete = constants.%Op.5c0] +// CHECK:STDOUT: %impl.elem1: %.6f0 = impl_witness_access constants.%Negate.impl_witness.943, element1 [concrete = constants.%Int.as.Negate.impl.Op.5c0] // CHECK:STDOUT: %bound_method.loc15_14.1: = bound_method %v.ref, %impl.elem1 -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem1, @Op.1(constants.%int_32) [concrete = constants.%Op.specific_fn] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem1, @Int.as.Negate.impl.Op(constants.%int_32) [concrete = constants.%Int.as.Negate.impl.Op.specific_fn] // CHECK:STDOUT: %bound_method.loc15_14.2: = bound_method %v.ref, %specific_fn -// CHECK:STDOUT: %int.snegate: init %i32 = call %bound_method.loc15_14.2(%v.ref) -// CHECK:STDOUT: %.loc15_16.1: %i32 = value_of_initializer %int.snegate -// CHECK:STDOUT: %.loc15_16.2: %i32 = converted %int.snegate, %.loc15_16.1 +// CHECK:STDOUT: %Int.as.Negate.impl.Op.call: init %i32 = call %bound_method.loc15_14.2(%v.ref) +// CHECK:STDOUT: %.loc15_16.1: %i32 = value_of_initializer %Int.as.Negate.impl.Op.call +// CHECK:STDOUT: %.loc15_16.2: %i32 = converted %Int.as.Negate.impl.Op.call, %.loc15_16.1 // CHECK:STDOUT: return %.loc15_16.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1285,67 +1285,67 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: %e.ref.loc21: %E = name_ref e, %e // CHECK:STDOUT: %F.ref.loc21: %J.assoc_type = name_ref F, @J.%assoc1 [concrete = constants.%assoc1.572] -// CHECK:STDOUT: %impl.elem1.loc21: %.29b = impl_witness_access constants.%J.impl_witness, element1 [concrete = constants.%F.b07] +// CHECK:STDOUT: %impl.elem1.loc21: %.29b = impl_witness_access constants.%J.impl_witness, element1 [concrete = constants.%E.as.J.impl.F] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %impl.elem0.loc21: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc21_21.1: = bound_method %int_2, %impl.elem0.loc21 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc21: = specific_function %impl.elem0.loc21, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc21: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc21_21.1: = bound_method %int_2, %impl.elem0.loc21 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc21: = specific_function %impl.elem0.loc21, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc21_21.2: = bound_method %int_2, %specific_fn.loc21 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc21: init %i32 = call %bound_method.loc21_21.2(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc21_21.1: %i32 = value_of_initializer %int.convert_checked.loc21 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21: init %i32 = call %bound_method.loc21_21.2(%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc21_21.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc21_21.2: %i32 = converted %int_2, %.loc21_21.1 [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %F.call.loc21: init %i32 = call %impl.elem1.loc21(%.loc21_21.2) +// CHECK:STDOUT: %E.as.J.impl.F.call.loc21: init %i32 = call %impl.elem1.loc21(%.loc21_21.2) // CHECK:STDOUT: %.loc21_11: type = splice_block %i32.loc21 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc21: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc21: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc21_22.1: %i32 = value_of_initializer %F.call.loc21 -// CHECK:STDOUT: %.loc21_22.2: %i32 = converted %F.call.loc21, %.loc21_22.1 +// CHECK:STDOUT: %.loc21_22.1: %i32 = value_of_initializer %E.as.J.impl.F.call.loc21 +// CHECK:STDOUT: %.loc21_22.2: %i32 = converted %E.as.J.impl.F.call.loc21, %.loc21_22.1 // CHECK:STDOUT: %e1: %i32 = bind_name e1, %.loc21_22.2 // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %e2.patt: %pattern_type.7ce = binding_pattern e2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %e.ref.loc22: %E = name_ref e, %e // CHECK:STDOUT: %G.ref.loc22: %J.assoc_type = name_ref G, @J.%assoc2 [concrete = constants.%assoc2] -// CHECK:STDOUT: %impl.elem2.loc22: %.ff5 = impl_witness_access constants.%J.impl_witness, element2 [concrete = constants.%G.553] +// CHECK:STDOUT: %impl.elem2.loc22: %.ff5 = impl_witness_access constants.%J.impl_witness, element2 [concrete = constants.%E.as.J.impl.G] // CHECK:STDOUT: %bound_method.loc22_18: = bound_method %e.ref.loc22, %impl.elem2.loc22 // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] -// CHECK:STDOUT: %impl.elem0.loc22: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc22_21.1: = bound_method %int_3, %impl.elem0.loc22 [concrete = constants.%Convert.bound.b30] -// CHECK:STDOUT: %specific_fn.loc22: = specific_function %impl.elem0.loc22, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc22: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc22_21.1: = bound_method %int_3, %impl.elem0.loc22 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.b30] +// CHECK:STDOUT: %specific_fn.loc22: = specific_function %impl.elem0.loc22, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc22_21.2: = bound_method %int_3, %specific_fn.loc22 [concrete = constants.%bound_method.047] -// CHECK:STDOUT: %int.convert_checked.loc22: init %i32 = call %bound_method.loc22_21.2(%int_3) [concrete = constants.%int_3.822] -// CHECK:STDOUT: %.loc22_21.1: %i32 = value_of_initializer %int.convert_checked.loc22 [concrete = constants.%int_3.822] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22: init %i32 = call %bound_method.loc22_21.2(%int_3) [concrete = constants.%int_3.822] +// CHECK:STDOUT: %.loc22_21.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22 [concrete = constants.%int_3.822] // CHECK:STDOUT: %.loc22_21.2: %i32 = converted %int_3, %.loc22_21.1 [concrete = constants.%int_3.822] -// CHECK:STDOUT: %G.call.loc22: init %i32 = call %bound_method.loc22_18(%e.ref.loc22, %.loc22_21.2) +// CHECK:STDOUT: %E.as.J.impl.G.call.loc22: init %i32 = call %bound_method.loc22_18(%e.ref.loc22, %.loc22_21.2) // CHECK:STDOUT: %.loc22_11: type = splice_block %i32.loc22 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc22: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc22: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc22_22.1: %i32 = value_of_initializer %G.call.loc22 -// CHECK:STDOUT: %.loc22_22.2: %i32 = converted %G.call.loc22, %.loc22_22.1 +// CHECK:STDOUT: %.loc22_22.1: %i32 = value_of_initializer %E.as.J.impl.G.call.loc22 +// CHECK:STDOUT: %.loc22_22.2: %i32 = converted %E.as.J.impl.G.call.loc22, %.loc22_22.1 // CHECK:STDOUT: %e2: %i32 = bind_name e2, %.loc22_22.2 // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %e3.patt: %pattern_type.7ce = binding_pattern e3 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %E.ref.loc23: type = name_ref E, file.%E.decl [concrete = constants.%E] // CHECK:STDOUT: %F.ref.loc23: %J.assoc_type = name_ref F, @J.%assoc1 [concrete = constants.%assoc1.572] -// CHECK:STDOUT: %impl.elem1.loc23: %.29b = impl_witness_access constants.%J.impl_witness, element1 [concrete = constants.%F.b07] +// CHECK:STDOUT: %impl.elem1.loc23: %.29b = impl_witness_access constants.%J.impl_witness, element1 [concrete = constants.%E.as.J.impl.F] // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete = constants.%int_4.0c1] -// CHECK:STDOUT: %impl.elem0.loc23: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc23_21.1: = bound_method %int_4, %impl.elem0.loc23 [concrete = constants.%Convert.bound.ac3] -// CHECK:STDOUT: %specific_fn.loc23: = specific_function %impl.elem0.loc23, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc23: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc23_21.1: = bound_method %int_4, %impl.elem0.loc23 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ac3] +// CHECK:STDOUT: %specific_fn.loc23: = specific_function %impl.elem0.loc23, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc23_21.2: = bound_method %int_4, %specific_fn.loc23 [concrete = constants.%bound_method.1da] -// CHECK:STDOUT: %int.convert_checked.loc23: init %i32 = call %bound_method.loc23_21.2(%int_4) [concrete = constants.%int_4.940] -// CHECK:STDOUT: %.loc23_21.1: %i32 = value_of_initializer %int.convert_checked.loc23 [concrete = constants.%int_4.940] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc23: init %i32 = call %bound_method.loc23_21.2(%int_4) [concrete = constants.%int_4.940] +// CHECK:STDOUT: %.loc23_21.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc23 [concrete = constants.%int_4.940] // CHECK:STDOUT: %.loc23_21.2: %i32 = converted %int_4, %.loc23_21.1 [concrete = constants.%int_4.940] -// CHECK:STDOUT: %F.call.loc23: init %i32 = call %impl.elem1.loc23(%.loc23_21.2) +// CHECK:STDOUT: %E.as.J.impl.F.call.loc23: init %i32 = call %impl.elem1.loc23(%.loc23_21.2) // CHECK:STDOUT: %.loc23_11: type = splice_block %i32.loc23 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc23: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc23: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc23_22.1: %i32 = value_of_initializer %F.call.loc23 -// CHECK:STDOUT: %.loc23_22.2: %i32 = converted %F.call.loc23, %.loc23_22.1 +// CHECK:STDOUT: %.loc23_22.1: %i32 = value_of_initializer %E.as.J.impl.F.call.loc23 +// CHECK:STDOUT: %.loc23_22.2: %i32 = converted %E.as.J.impl.F.call.loc23, %.loc23_22.1 // CHECK:STDOUT: %e3: %i32 = bind_name e3, %.loc23_22.2 // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %e4.patt: %pattern_type.7ce = binding_pattern e4 [concrete] @@ -1353,23 +1353,23 @@ fn F() { // CHECK:STDOUT: %e.ref.loc24: %E = name_ref e, %e // CHECK:STDOUT: %E.ref.loc24: type = name_ref E, file.%E.decl [concrete = constants.%E] // CHECK:STDOUT: %G.ref.loc24: %J.assoc_type = name_ref G, @J.%assoc2 [concrete = constants.%assoc2] -// CHECK:STDOUT: %impl.elem2.loc24: %.ff5 = impl_witness_access constants.%J.impl_witness, element2 [concrete = constants.%G.553] +// CHECK:STDOUT: %impl.elem2.loc24: %.ff5 = impl_witness_access constants.%J.impl_witness, element2 [concrete = constants.%E.as.J.impl.G] // CHECK:STDOUT: %bound_method.loc24_18: = bound_method %e.ref.loc24, %impl.elem2.loc24 // CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [concrete = constants.%int_5.64b] -// CHECK:STDOUT: %impl.elem0.loc24: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc24_25.1: = bound_method %int_5, %impl.elem0.loc24 [concrete = constants.%Convert.bound.4e6] -// CHECK:STDOUT: %specific_fn.loc24: = specific_function %impl.elem0.loc24, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc24: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc24_25.1: = bound_method %int_5, %impl.elem0.loc24 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.4e6] +// CHECK:STDOUT: %specific_fn.loc24: = specific_function %impl.elem0.loc24, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc24_25.2: = bound_method %int_5, %specific_fn.loc24 [concrete = constants.%bound_method.a25] -// CHECK:STDOUT: %int.convert_checked.loc24: init %i32 = call %bound_method.loc24_25.2(%int_5) [concrete = constants.%int_5.0f6] -// CHECK:STDOUT: %.loc24_25.1: %i32 = value_of_initializer %int.convert_checked.loc24 [concrete = constants.%int_5.0f6] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc24: init %i32 = call %bound_method.loc24_25.2(%int_5) [concrete = constants.%int_5.0f6] +// CHECK:STDOUT: %.loc24_25.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc24 [concrete = constants.%int_5.0f6] // CHECK:STDOUT: %.loc24_25.2: %i32 = converted %int_5, %.loc24_25.1 [concrete = constants.%int_5.0f6] -// CHECK:STDOUT: %G.call.loc24: init %i32 = call %bound_method.loc24_18(%e.ref.loc24, %.loc24_25.2) +// CHECK:STDOUT: %E.as.J.impl.G.call.loc24: init %i32 = call %bound_method.loc24_18(%e.ref.loc24, %.loc24_25.2) // CHECK:STDOUT: %.loc24_11: type = splice_block %i32.loc24 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc24: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc24: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc24_26.1: %i32 = value_of_initializer %G.call.loc24 -// CHECK:STDOUT: %.loc24_26.2: %i32 = converted %G.call.loc24, %.loc24_26.1 +// CHECK:STDOUT: %.loc24_26.1: %i32 = value_of_initializer %E.as.J.impl.G.call.loc24 +// CHECK:STDOUT: %.loc24_26.2: %i32 = converted %E.as.J.impl.G.call.loc24, %.loc24_26.1 // CHECK:STDOUT: %e4: %i32 = bind_name e4, %.loc24_26.2 // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %e5.patt: %pattern_type.7ce = binding_pattern e5 [concrete] @@ -1377,23 +1377,23 @@ fn F() { // CHECK:STDOUT: %e.ref.loc25: %E = name_ref e, %e // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: %G.ref.loc25: %J.assoc_type = name_ref G, @J.%assoc2 [concrete = constants.%assoc2] -// CHECK:STDOUT: %impl.elem2.loc25: %.ff5 = impl_witness_access constants.%J.impl_witness, element2 [concrete = constants.%G.553] +// CHECK:STDOUT: %impl.elem2.loc25: %.ff5 = impl_witness_access constants.%J.impl_witness, element2 [concrete = constants.%E.as.J.impl.G] // CHECK:STDOUT: %bound_method.loc25_18: = bound_method %e.ref.loc25, %impl.elem2.loc25 // CHECK:STDOUT: %int_6: Core.IntLiteral = int_value 6 [concrete = constants.%int_6.462] -// CHECK:STDOUT: %impl.elem0.loc25: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc25_25.1: = bound_method %int_6, %impl.elem0.loc25 [concrete = constants.%Convert.bound.ce9] -// CHECK:STDOUT: %specific_fn.loc25: = specific_function %impl.elem0.loc25, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc25: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc25_25.1: = bound_method %int_6, %impl.elem0.loc25 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ce9] +// CHECK:STDOUT: %specific_fn.loc25: = specific_function %impl.elem0.loc25, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc25_25.2: = bound_method %int_6, %specific_fn.loc25 [concrete = constants.%bound_method.efa] -// CHECK:STDOUT: %int.convert_checked.loc25: init %i32 = call %bound_method.loc25_25.2(%int_6) [concrete = constants.%int_6.e56] -// CHECK:STDOUT: %.loc25_25.1: %i32 = value_of_initializer %int.convert_checked.loc25 [concrete = constants.%int_6.e56] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc25: init %i32 = call %bound_method.loc25_25.2(%int_6) [concrete = constants.%int_6.e56] +// CHECK:STDOUT: %.loc25_25.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc25 [concrete = constants.%int_6.e56] // CHECK:STDOUT: %.loc25_25.2: %i32 = converted %int_6, %.loc25_25.1 [concrete = constants.%int_6.e56] -// CHECK:STDOUT: %G.call.loc25: init %i32 = call %bound_method.loc25_18(%e.ref.loc25, %.loc25_25.2) +// CHECK:STDOUT: %E.as.J.impl.G.call.loc25: init %i32 = call %bound_method.loc25_18(%e.ref.loc25, %.loc25_25.2) // CHECK:STDOUT: %.loc25_11: type = splice_block %i32.loc25 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc25: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc25: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc25_26.1: %i32 = value_of_initializer %G.call.loc25 -// CHECK:STDOUT: %.loc25_26.2: %i32 = converted %G.call.loc25, %.loc25_26.1 +// CHECK:STDOUT: %.loc25_26.1: %i32 = value_of_initializer %E.as.J.impl.G.call.loc25 +// CHECK:STDOUT: %.loc25_26.2: %i32 = converted %E.as.J.impl.G.call.loc25, %.loc25_26.1 // CHECK:STDOUT: %e5: %i32 = bind_name e5, %.loc25_26.2 // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -1410,9 +1410,9 @@ fn F() { // CHECK:STDOUT: %require_complete.loc28_38: = require_complete_type %impl.elem0.loc28_34.1 [symbolic = %require_complete.loc28_38 (constants.%require_complete.58f)] // CHECK:STDOUT: %require_complete.loc28_25: = require_complete_type %T.as_type.loc28_27.1 [symbolic = %require_complete.loc28_25 (constants.%require_complete.2a5)] // CHECK:STDOUT: %J.facet: %J.type = facet_value %T.as_type.loc28_27.1, (%J.lookup_impl_witness) [symbolic = %J.facet (constants.%J.facet.5210a7.2)] -// CHECK:STDOUT: %.loc29_11.2: type = fn_type_with_self_type constants.%F.type.c14, %J.facet [symbolic = %.loc29_11.2 (constants.%.d43)] +// CHECK:STDOUT: %.loc29_11.2: type = fn_type_with_self_type constants.%J.F.type, %J.facet [symbolic = %.loc29_11.2 (constants.%.d43)] // CHECK:STDOUT: %impl.elem1.loc29_11.2: @GenericCallF.%.loc29_11.2 (%.d43) = impl_witness_access %J.lookup_impl_witness, element1 [symbolic = %impl.elem1.loc29_11.2 (constants.%impl.elem1)] -// CHECK:STDOUT: %specific_impl_fn.loc29_11.2: = specific_impl_function %impl.elem1.loc29_11.2, @F.loc5(%J.facet) [symbolic = %specific_impl_fn.loc29_11.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc29_11.2: = specific_impl_function %impl.elem1.loc29_11.2, @J.F(%J.facet) [symbolic = %specific_impl_fn.loc29_11.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%t.param: @GenericCallF.%T.as_type.loc28_27.1 (%T.as_type), %u.param: @GenericCallF.%impl.elem0.loc28_34.1 (%impl.elem0.11fef0.2)) -> @GenericCallF.%impl.elem0.loc28_34.1 (%impl.elem0.11fef0.2) { // CHECK:STDOUT: !entry: @@ -1422,7 +1422,7 @@ fn F() { // CHECK:STDOUT: %.loc29_11.1: type = converted constants.%T, %T.as_type.loc29 [symbolic = %T.as_type.loc28_27.1 (constants.%T.as_type)] // CHECK:STDOUT: %impl.elem1.loc29_11.1: @GenericCallF.%.loc29_11.2 (%.d43) = impl_witness_access constants.%J.lookup_impl_witness.64628e.2, element1 [symbolic = %impl.elem1.loc29_11.2 (constants.%impl.elem1)] // CHECK:STDOUT: %u.ref: @GenericCallF.%impl.elem0.loc28_34.1 (%impl.elem0.11fef0.2) = name_ref u, %u -// CHECK:STDOUT: %specific_impl_fn.loc29_11.1: = specific_impl_function %impl.elem1.loc29_11.1, @F.loc5(constants.%J.facet.5210a7.2) [symbolic = %specific_impl_fn.loc29_11.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc29_11.1: = specific_impl_function %impl.elem1.loc29_11.1, @J.F(constants.%J.facet.5210a7.2) [symbolic = %specific_impl_fn.loc29_11.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %.loc29_15: init @GenericCallF.%impl.elem0.loc28_34.1 (%impl.elem0.11fef0.2) = call %specific_impl_fn.loc29_11.1(%u.ref) // CHECK:STDOUT: %.loc29_16.1: @GenericCallF.%impl.elem0.loc28_34.1 (%impl.elem0.11fef0.2) = value_of_initializer %.loc29_15 // CHECK:STDOUT: %.loc29_16.2: @GenericCallF.%impl.elem0.loc28_34.1 (%impl.elem0.11fef0.2) = converted %.loc29_15, %.loc29_16.1 @@ -1440,12 +1440,12 @@ fn F() { // CHECK:STDOUT: %J.facet.loc33_27.2: %J.type = facet_value constants.%E, (constants.%J.impl_witness) [concrete = constants.%J.facet.ee5] // CHECK:STDOUT: %.loc33_27.2: %J.type = converted constants.%E, %J.facet.loc33_27.2 [concrete = constants.%J.facet.ee5] // CHECK:STDOUT: %GenericCallF.specific_fn: = specific_function %GenericCallF.ref, @GenericCallF(constants.%J.facet.ee5) [concrete = constants.%GenericCallF.specific_fn] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc33_26.1: = bound_method %int_2, %impl.elem0 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc33_26.1: = bound_method %int_2, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc33_26.2: = bound_method %int_2, %specific_fn [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc33_26.2(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc33_26.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc33_26.2(%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc33_26.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc33_26.2: %i32 = converted %int_2, %.loc33_26.1 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %GenericCallF.call: init %i32 = call %GenericCallF.specific_fn(%e.ref, %.loc33_26.2) // CHECK:STDOUT: %.loc33_28.1: %i32 = value_of_initializer %GenericCallF.call @@ -1457,37 +1457,37 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: specific @U(constants.%J.facet.5210a7.1) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%Self.ccd) { +// CHECK:STDOUT: specific @J.F(constants.%Self.ccd) { // CHECK:STDOUT: %Self => constants.%Self.ccd // CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.lookup_impl_witness.64628e.1 -// CHECK:STDOUT: %impl.elem0.loc5_11.2 => constants.%impl.elem0.11fef0.1 +// CHECK:STDOUT: %impl.elem0.loc5_11.1 => constants.%impl.elem0.11fef0.1 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.b984e7.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @G.loc6(constants.%Self.ccd) { +// CHECK:STDOUT: specific @J.G(constants.%Self.ccd) { // CHECK:STDOUT: %Self => constants.%Self.ccd -// CHECK:STDOUT: %Self.as_type.loc6_14.2 => constants.%Self.as_type.3df +// CHECK:STDOUT: %Self.as_type.loc6_14.1 => constants.%Self.as_type.3df // CHECK:STDOUT: %pattern_type.loc6_8 => constants.%pattern_type.4ca604.1 // CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.lookup_impl_witness.64628e.1 -// CHECK:STDOUT: %impl.elem0.loc6_23.2 => constants.%impl.elem0.11fef0.1 +// CHECK:STDOUT: %impl.elem0.loc6_23.1 => constants.%impl.elem0.11fef0.1 // CHECK:STDOUT: %pattern_type.loc6_20 => constants.%pattern_type.b984e7.1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @U(constants.%J.facet.330) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%J.facet.ee5) { +// CHECK:STDOUT: specific @J.F(constants.%J.facet.ee5) { // CHECK:STDOUT: %Self => constants.%J.facet.ee5 // CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.impl_witness -// CHECK:STDOUT: %impl.elem0.loc5_11.2 => constants.%i32 +// CHECK:STDOUT: %impl.elem0.loc5_11.1 => constants.%i32 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7ce // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @G.loc6(constants.%J.facet.ee5) { +// CHECK:STDOUT: specific @J.G(constants.%J.facet.ee5) { // CHECK:STDOUT: %Self => constants.%J.facet.ee5 -// CHECK:STDOUT: %Self.as_type.loc6_14.2 => constants.%E +// CHECK:STDOUT: %Self.as_type.loc6_14.1 => constants.%E // CHECK:STDOUT: %pattern_type.loc6_8 => constants.%pattern_type.a4a // CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.impl_witness -// CHECK:STDOUT: %impl.elem0.loc6_23.2 => constants.%i32 +// CHECK:STDOUT: %impl.elem0.loc6_23.1 => constants.%i32 // CHECK:STDOUT: %pattern_type.loc6_20 => constants.%pattern_type.7ce // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1502,10 +1502,10 @@ fn F() { // CHECK:STDOUT: %pattern_type.loc28_30 => constants.%pattern_type.b984e7.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%J.facet.5210a7.2) { +// CHECK:STDOUT: specific @J.F(constants.%J.facet.5210a7.2) { // CHECK:STDOUT: %Self => constants.%J.facet.5210a7.2 // CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.lookup_impl_witness.64628e.2 -// CHECK:STDOUT: %impl.elem0.loc5_11.2 => constants.%impl.elem0.11fef0.2 +// CHECK:STDOUT: %impl.elem0.loc5_11.1 => constants.%impl.elem0.11fef0.2 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.b984e7.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1522,8 +1522,8 @@ fn F() { // CHECK:STDOUT: %require_complete.loc28_25 => constants.%complete_type.357 // CHECK:STDOUT: %J.facet => constants.%J.facet.ee5 // CHECK:STDOUT: %.loc29_11.2 => constants.%.29b -// CHECK:STDOUT: %impl.elem1.loc29_11.2 => constants.%F.b07 -// CHECK:STDOUT: %specific_impl_fn.loc29_11.2 => constants.%F.b07 +// CHECK:STDOUT: %impl.elem1.loc29_11.2 => constants.%E.as.J.impl.F +// CHECK:STDOUT: %specific_impl_fn.loc29_11.2 => constants.%E.as.J.impl.F // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- use_constraint_on_associated_type.carbon @@ -1533,10 +1533,10 @@ fn F() { // CHECK:STDOUT: %Self.826: %I.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type.b70: type = facet_access_type %Self.826 [symbolic] // CHECK:STDOUT: %pattern_type.6de: type = pattern_type %Self.as_type.b70 [symbolic] -// CHECK:STDOUT: %Op.type: type = fn_type @Op [concrete] -// CHECK:STDOUT: %Op: %Op.type = struct_value () [concrete] +// CHECK:STDOUT: %I.Op.type: type = fn_type @I.Op [concrete] +// CHECK:STDOUT: %I.Op: %I.Op.type = struct_value () [concrete] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] -// CHECK:STDOUT: %assoc0.ea8: %I.assoc_type = assoc_entity element0, @I.%Op.decl [concrete] +// CHECK:STDOUT: %assoc0.ea8: %I.assoc_type = assoc_entity element0, @I.%I.Op.decl [concrete] // CHECK:STDOUT: %J.type: type = facet_type <@J> [concrete] // CHECK:STDOUT: %Self.ccd: %J.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %J.assoc_type: type = assoc_entity_type @J [concrete] @@ -1547,9 +1547,9 @@ fn F() { // CHECK:STDOUT: %impl.elem0.5205fd.1: %I.type = impl_witness_access %J.lookup_impl_witness.64628e.1, element0 [symbolic] // CHECK:STDOUT: %as_type.f5d8f3.1: type = facet_access_type %impl.elem0.5205fd.1 [symbolic] // CHECK:STDOUT: %pattern_type.74afd4.1: type = pattern_type %as_type.f5d8f3.1 [symbolic] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %assoc1: %J.assoc_type = assoc_entity element1, @J.%F.decl [concrete] +// CHECK:STDOUT: %J.F.type: type = fn_type @J.F [concrete] +// CHECK:STDOUT: %J.F: %J.F.type = struct_value () [concrete] +// CHECK:STDOUT: %assoc1: %J.assoc_type = assoc_entity element1, @J.%J.F.decl [concrete] // CHECK:STDOUT: %T: %J.type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.28e: type = pattern_type %J.type [concrete] // CHECK:STDOUT: %T.as_type: type = facet_access_type %T [symbolic] @@ -1563,14 +1563,14 @@ fn F() { // CHECK:STDOUT: %GenericResult: %GenericResult.type = struct_value () [concrete] // CHECK:STDOUT: %require_complete.b33: = require_complete_type %as_type.f5d8f3.2 [symbolic] // CHECK:STDOUT: %require_complete.2a5: = require_complete_type %T.as_type [symbolic] -// CHECK:STDOUT: %.d43: type = fn_type_with_self_type %F.type, %J.facet.5210a7.2 [symbolic] +// CHECK:STDOUT: %.d43: type = fn_type_with_self_type %J.F.type, %J.facet.5210a7.2 [symbolic] // CHECK:STDOUT: %impl.elem1: %.d43 = impl_witness_access %J.lookup_impl_witness.64628e.2, element1 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.fe8: = specific_impl_function %impl.elem1, @F(%J.facet.5210a7.2) [symbolic] +// CHECK:STDOUT: %specific_impl_fn.fe8: = specific_impl_function %impl.elem1, @J.F(%J.facet.5210a7.2) [symbolic] // CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %impl.elem0.5205fd.2, @I [symbolic] // CHECK:STDOUT: %I.facet: %I.type = facet_value %as_type.f5d8f3.2, (%I.lookup_impl_witness) [symbolic] -// CHECK:STDOUT: %.c9a: type = fn_type_with_self_type %Op.type, %I.facet [symbolic] +// CHECK:STDOUT: %.c9a: type = fn_type_with_self_type %I.Op.type, %I.facet [symbolic] // CHECK:STDOUT: %impl.elem0.45a: %.c9a = impl_witness_access %I.lookup_impl_witness, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.2ec: = specific_impl_function %impl.elem0.45a, @Op(%I.facet) [symbolic] +// CHECK:STDOUT: %specific_impl_fn.2ec: = specific_impl_function %impl.elem0.45a, @I.Op(%I.facet) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -1633,40 +1633,40 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: interface @I { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.826] -// CHECK:STDOUT: %Op.decl: %Op.type = fn_decl @Op [concrete = constants.%Op] { -// CHECK:STDOUT: %self.patt: @Op.%pattern_type (%pattern_type.6de) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @Op.%pattern_type (%pattern_type.6de) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %b.patt: @Op.%pattern_type (%pattern_type.6de) = binding_pattern b [concrete] -// CHECK:STDOUT: %b.param_patt: @Op.%pattern_type (%pattern_type.6de) = value_param_pattern %b.patt, call_param1 [concrete] -// CHECK:STDOUT: %return.patt: @Op.%pattern_type (%pattern_type.6de) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @Op.%pattern_type (%pattern_type.6de) = out_param_pattern %return.patt, call_param2 [concrete] +// CHECK:STDOUT: %I.Op.decl: %I.Op.type = fn_decl @I.Op [concrete = constants.%I.Op] { +// CHECK:STDOUT: %self.patt: @I.Op.%pattern_type (%pattern_type.6de) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @I.Op.%pattern_type (%pattern_type.6de) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %b.patt: @I.Op.%pattern_type (%pattern_type.6de) = binding_pattern b [concrete] +// CHECK:STDOUT: %b.param_patt: @I.Op.%pattern_type (%pattern_type.6de) = value_param_pattern %b.patt, call_param1 [concrete] +// CHECK:STDOUT: %return.patt: @I.Op.%pattern_type (%pattern_type.6de) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @I.Op.%pattern_type (%pattern_type.6de) = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc4_33: %I.type = name_ref Self, @I.%Self [symbolic = %Self (constants.%Self.826)] -// CHECK:STDOUT: %Self.as_type.loc4_33: type = facet_access_type %Self.ref.loc4_33 [symbolic = %Self.as_type.loc4_15.2 (constants.%Self.as_type.b70)] -// CHECK:STDOUT: %.loc4_33: type = converted %Self.ref.loc4_33, %Self.as_type.loc4_33 [symbolic = %Self.as_type.loc4_15.2 (constants.%Self.as_type.b70)] -// CHECK:STDOUT: %self.param: @Op.%Self.as_type.loc4_15.2 (%Self.as_type.b70) = value_param call_param0 -// CHECK:STDOUT: %.loc4_15.1: type = splice_block %.loc4_15.2 [symbolic = %Self.as_type.loc4_15.2 (constants.%Self.as_type.b70)] { +// CHECK:STDOUT: %Self.as_type.loc4_33: type = facet_access_type %Self.ref.loc4_33 [symbolic = %Self.as_type.loc4_15.1 (constants.%Self.as_type.b70)] +// CHECK:STDOUT: %.loc4_33: type = converted %Self.ref.loc4_33, %Self.as_type.loc4_33 [symbolic = %Self.as_type.loc4_15.1 (constants.%Self.as_type.b70)] +// CHECK:STDOUT: %self.param: @I.Op.%Self.as_type.loc4_15.1 (%Self.as_type.b70) = value_param call_param0 +// CHECK:STDOUT: %.loc4_15.1: type = splice_block %.loc4_15.2 [symbolic = %Self.as_type.loc4_15.1 (constants.%Self.as_type.b70)] { // CHECK:STDOUT: %Self.ref.loc4_15: %I.type = name_ref Self, @I.%Self [symbolic = %Self (constants.%Self.826)] -// CHECK:STDOUT: %Self.as_type.loc4_15.1: type = facet_access_type %Self.ref.loc4_15 [symbolic = %Self.as_type.loc4_15.2 (constants.%Self.as_type.b70)] -// CHECK:STDOUT: %.loc4_15.2: type = converted %Self.ref.loc4_15, %Self.as_type.loc4_15.1 [symbolic = %Self.as_type.loc4_15.2 (constants.%Self.as_type.b70)] +// CHECK:STDOUT: %Self.as_type.loc4_15.2: type = facet_access_type %Self.ref.loc4_15 [symbolic = %Self.as_type.loc4_15.1 (constants.%Self.as_type.b70)] +// CHECK:STDOUT: %.loc4_15.2: type = converted %Self.ref.loc4_15, %Self.as_type.loc4_15.2 [symbolic = %Self.as_type.loc4_15.1 (constants.%Self.as_type.b70)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @Op.%Self.as_type.loc4_15.2 (%Self.as_type.b70) = bind_name self, %self.param -// CHECK:STDOUT: %b.param: @Op.%Self.as_type.loc4_15.2 (%Self.as_type.b70) = value_param call_param1 -// CHECK:STDOUT: %.loc4_24.1: type = splice_block %.loc4_24.2 [symbolic = %Self.as_type.loc4_15.2 (constants.%Self.as_type.b70)] { +// CHECK:STDOUT: %self: @I.Op.%Self.as_type.loc4_15.1 (%Self.as_type.b70) = bind_name self, %self.param +// CHECK:STDOUT: %b.param: @I.Op.%Self.as_type.loc4_15.1 (%Self.as_type.b70) = value_param call_param1 +// CHECK:STDOUT: %.loc4_24.1: type = splice_block %.loc4_24.2 [symbolic = %Self.as_type.loc4_15.1 (constants.%Self.as_type.b70)] { // CHECK:STDOUT: %Self.ref.loc4_24: %I.type = name_ref Self, @I.%Self [symbolic = %Self (constants.%Self.826)] -// CHECK:STDOUT: %Self.as_type.loc4_24: type = facet_access_type %Self.ref.loc4_24 [symbolic = %Self.as_type.loc4_15.2 (constants.%Self.as_type.b70)] -// CHECK:STDOUT: %.loc4_24.2: type = converted %Self.ref.loc4_24, %Self.as_type.loc4_24 [symbolic = %Self.as_type.loc4_15.2 (constants.%Self.as_type.b70)] +// CHECK:STDOUT: %Self.as_type.loc4_24: type = facet_access_type %Self.ref.loc4_24 [symbolic = %Self.as_type.loc4_15.1 (constants.%Self.as_type.b70)] +// CHECK:STDOUT: %.loc4_24.2: type = converted %Self.ref.loc4_24, %Self.as_type.loc4_24 [symbolic = %Self.as_type.loc4_15.1 (constants.%Self.as_type.b70)] // CHECK:STDOUT: } -// CHECK:STDOUT: %b: @Op.%Self.as_type.loc4_15.2 (%Self.as_type.b70) = bind_name b, %b.param -// CHECK:STDOUT: %return.param: ref @Op.%Self.as_type.loc4_15.2 (%Self.as_type.b70) = out_param call_param2 -// CHECK:STDOUT: %return: ref @Op.%Self.as_type.loc4_15.2 (%Self.as_type.b70) = return_slot %return.param +// CHECK:STDOUT: %b: @I.Op.%Self.as_type.loc4_15.1 (%Self.as_type.b70) = bind_name b, %b.param +// CHECK:STDOUT: %return.param: ref @I.Op.%Self.as_type.loc4_15.1 (%Self.as_type.b70) = out_param call_param2 +// CHECK:STDOUT: %return: ref @I.Op.%Self.as_type.loc4_15.1 (%Self.as_type.b70) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %Op.decl [concrete = constants.%assoc0.ea8] +// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %I.Op.decl [concrete = constants.%assoc0.ea8] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .Op = %assoc0 -// CHECK:STDOUT: witness = (%Op.decl) +// CHECK:STDOUT: witness = (%I.Op.decl) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @J { @@ -1674,57 +1674,57 @@ fn F() { // CHECK:STDOUT: %U: %I.type = assoc_const_decl @U [concrete] { // CHECK:STDOUT: %assoc0: %J.assoc_type = assoc_entity element0, @J.%U [concrete = constants.%assoc0.5be] // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { -// CHECK:STDOUT: %u.patt: @F.%pattern_type (%pattern_type.74afd4.1) = binding_pattern u [concrete] -// CHECK:STDOUT: %u.param_patt: @F.%pattern_type (%pattern_type.74afd4.1) = value_param_pattern %u.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: @F.%pattern_type (%pattern_type.74afd4.1) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @F.%pattern_type (%pattern_type.74afd4.1) = out_param_pattern %return.patt, call_param1 [concrete] +// CHECK:STDOUT: %J.F.decl: %J.F.type = fn_decl @J.F [concrete = constants.%J.F] { +// CHECK:STDOUT: %u.patt: @J.F.%pattern_type (%pattern_type.74afd4.1) = binding_pattern u [concrete] +// CHECK:STDOUT: %u.param_patt: @J.F.%pattern_type (%pattern_type.74afd4.1) = value_param_pattern %u.patt, call_param0 [concrete] +// CHECK:STDOUT: %return.patt: @J.F.%pattern_type (%pattern_type.74afd4.1) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @J.F.%pattern_type (%pattern_type.74afd4.1) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %impl.elem0.loc9_17: %I.type = impl_witness_access constants.%J.lookup_impl_witness.64628e.1, element0 [symbolic = %impl.elem0.loc9_11.2 (constants.%impl.elem0.5205fd.1)] -// CHECK:STDOUT: %U.ref.loc9_17: %I.type = name_ref U, %impl.elem0.loc9_17 [symbolic = %impl.elem0.loc9_11.2 (constants.%impl.elem0.5205fd.1)] +// CHECK:STDOUT: %impl.elem0.loc9_17: %I.type = impl_witness_access constants.%J.lookup_impl_witness.64628e.1, element0 [symbolic = %impl.elem0.loc9_11.1 (constants.%impl.elem0.5205fd.1)] +// CHECK:STDOUT: %U.ref.loc9_17: %I.type = name_ref U, %impl.elem0.loc9_17 [symbolic = %impl.elem0.loc9_11.1 (constants.%impl.elem0.5205fd.1)] // CHECK:STDOUT: %U.as_type.loc9_17: type = facet_access_type %U.ref.loc9_17 [symbolic = %as_type (constants.%as_type.f5d8f3.1)] // CHECK:STDOUT: %.loc9_17: type = converted %U.ref.loc9_17, %U.as_type.loc9_17 [symbolic = %as_type (constants.%as_type.f5d8f3.1)] -// CHECK:STDOUT: %u.param: @F.%as_type (%as_type.f5d8f3.1) = value_param call_param0 +// CHECK:STDOUT: %u.param: @J.F.%as_type (%as_type.f5d8f3.1) = value_param call_param0 // CHECK:STDOUT: %.loc9_11.1: type = splice_block %.loc9_11.2 [symbolic = %as_type (constants.%as_type.f5d8f3.1)] { -// CHECK:STDOUT: %impl.elem0.loc9_11.1: %I.type = impl_witness_access constants.%J.lookup_impl_witness.64628e.1, element0 [symbolic = %impl.elem0.loc9_11.2 (constants.%impl.elem0.5205fd.1)] -// CHECK:STDOUT: %U.ref.loc9_11: %I.type = name_ref U, %impl.elem0.loc9_11.1 [symbolic = %impl.elem0.loc9_11.2 (constants.%impl.elem0.5205fd.1)] +// CHECK:STDOUT: %impl.elem0.loc9_11.2: %I.type = impl_witness_access constants.%J.lookup_impl_witness.64628e.1, element0 [symbolic = %impl.elem0.loc9_11.1 (constants.%impl.elem0.5205fd.1)] +// CHECK:STDOUT: %U.ref.loc9_11: %I.type = name_ref U, %impl.elem0.loc9_11.2 [symbolic = %impl.elem0.loc9_11.1 (constants.%impl.elem0.5205fd.1)] // CHECK:STDOUT: %U.as_type.loc9_11: type = facet_access_type %U.ref.loc9_11 [symbolic = %as_type (constants.%as_type.f5d8f3.1)] // CHECK:STDOUT: %.loc9_11.2: type = converted %U.ref.loc9_11, %U.as_type.loc9_11 [symbolic = %as_type (constants.%as_type.f5d8f3.1)] // CHECK:STDOUT: } -// CHECK:STDOUT: %u: @F.%as_type (%as_type.f5d8f3.1) = bind_name u, %u.param -// CHECK:STDOUT: %return.param: ref @F.%as_type (%as_type.f5d8f3.1) = out_param call_param1 -// CHECK:STDOUT: %return: ref @F.%as_type (%as_type.f5d8f3.1) = return_slot %return.param +// CHECK:STDOUT: %u: @J.F.%as_type (%as_type.f5d8f3.1) = bind_name u, %u.param +// CHECK:STDOUT: %return.param: ref @J.F.%as_type (%as_type.f5d8f3.1) = out_param call_param1 +// CHECK:STDOUT: %return: ref @J.F.%as_type (%as_type.f5d8f3.1) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc1: %J.assoc_type = assoc_entity element1, %F.decl [concrete = constants.%assoc1] +// CHECK:STDOUT: %assoc1: %J.assoc_type = assoc_entity element1, %J.F.decl [concrete = constants.%assoc1] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .I = // CHECK:STDOUT: .U = @U.%assoc0 // CHECK:STDOUT: .F = %assoc1 -// CHECK:STDOUT: witness = (%U, %F.decl) +// CHECK:STDOUT: witness = (%U, %J.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic assoc_const @U(@J.%Self: %J.type) { // CHECK:STDOUT: assoc_const U:! %I.type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Op(@I.%Self: %I.type) { +// CHECK:STDOUT: generic fn @I.Op(@I.%Self: %I.type) { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.826)] -// CHECK:STDOUT: %Self.as_type.loc4_15.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc4_15.2 (constants.%Self.as_type.b70)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc4_15.2 [symbolic = %pattern_type (constants.%pattern_type.6de)] +// CHECK:STDOUT: %Self.as_type.loc4_15.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc4_15.1 (constants.%Self.as_type.b70)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc4_15.1 [symbolic = %pattern_type (constants.%pattern_type.6de)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @Op.%Self.as_type.loc4_15.2 (%Self.as_type.b70), %b.param: @Op.%Self.as_type.loc4_15.2 (%Self.as_type.b70)) -> @Op.%Self.as_type.loc4_15.2 (%Self.as_type.b70); +// CHECK:STDOUT: fn(%self.param: @I.Op.%Self.as_type.loc4_15.1 (%Self.as_type.b70), %b.param: @I.Op.%Self.as_type.loc4_15.1 (%Self.as_type.b70)) -> @I.Op.%Self.as_type.loc4_15.1 (%Self.as_type.b70); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(@J.%Self: %J.type) { +// CHECK:STDOUT: generic fn @J.F(@J.%Self: %J.type) { // CHECK:STDOUT: %Self: %J.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.ccd)] // CHECK:STDOUT: %J.lookup_impl_witness: = lookup_impl_witness %Self, @J [symbolic = %J.lookup_impl_witness (constants.%J.lookup_impl_witness.64628e.1)] -// CHECK:STDOUT: %impl.elem0.loc9_11.2: %I.type = impl_witness_access %J.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc9_11.2 (constants.%impl.elem0.5205fd.1)] -// CHECK:STDOUT: %as_type: type = facet_access_type %impl.elem0.loc9_11.2 [symbolic = %as_type (constants.%as_type.f5d8f3.1)] +// CHECK:STDOUT: %impl.elem0.loc9_11.1: %I.type = impl_witness_access %J.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc9_11.1 (constants.%impl.elem0.5205fd.1)] +// CHECK:STDOUT: %as_type: type = facet_access_type %impl.elem0.loc9_11.1 [symbolic = %as_type (constants.%as_type.f5d8f3.1)] // CHECK:STDOUT: %pattern_type: type = pattern_type %as_type [symbolic = %pattern_type (constants.%pattern_type.74afd4.1)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%u.param: @F.%as_type (%as_type.f5d8f3.1)) -> @F.%as_type (%as_type.f5d8f3.1); +// CHECK:STDOUT: fn(%u.param: @J.F.%as_type (%as_type.f5d8f3.1)) -> @J.F.%as_type (%as_type.f5d8f3.1); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @GenericResult(%T.loc12_18.2: %J.type) { @@ -1740,14 +1740,14 @@ fn F() { // CHECK:STDOUT: %require_complete.loc12_39: = require_complete_type %as_type.loc12_35.1 [symbolic = %require_complete.loc12_39 (constants.%require_complete.b33)] // CHECK:STDOUT: %require_complete.loc12_26: = require_complete_type %T.as_type.loc12_28.1 [symbolic = %require_complete.loc12_26 (constants.%require_complete.2a5)] // CHECK:STDOUT: %J.facet: %J.type = facet_value %T.as_type.loc12_28.1, (%J.lookup_impl_witness) [symbolic = %J.facet (constants.%J.facet.5210a7.2)] -// CHECK:STDOUT: %.loc13_11.2: type = fn_type_with_self_type constants.%F.type, %J.facet [symbolic = %.loc13_11.2 (constants.%.d43)] +// CHECK:STDOUT: %.loc13_11.2: type = fn_type_with_self_type constants.%J.F.type, %J.facet [symbolic = %.loc13_11.2 (constants.%.d43)] // CHECK:STDOUT: %impl.elem1.loc13_11.2: @GenericResult.%.loc13_11.2 (%.d43) = impl_witness_access %J.lookup_impl_witness, element1 [symbolic = %impl.elem1.loc13_11.2 (constants.%impl.elem1)] -// CHECK:STDOUT: %specific_impl_fn.loc13_11.2: = specific_impl_function %impl.elem1.loc13_11.2, @F(%J.facet) [symbolic = %specific_impl_fn.loc13_11.2 (constants.%specific_impl_fn.fe8)] +// CHECK:STDOUT: %specific_impl_fn.loc13_11.2: = specific_impl_function %impl.elem1.loc13_11.2, @J.F(%J.facet) [symbolic = %specific_impl_fn.loc13_11.2 (constants.%specific_impl_fn.fe8)] // CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %impl.elem0.loc12_35.1, @I [symbolic = %I.lookup_impl_witness (constants.%I.lookup_impl_witness)] // CHECK:STDOUT: %I.facet: %I.type = facet_value %as_type.loc12_35.1, (%I.lookup_impl_witness) [symbolic = %I.facet (constants.%I.facet)] -// CHECK:STDOUT: %.loc13_16: type = fn_type_with_self_type constants.%Op.type, %I.facet [symbolic = %.loc13_16 (constants.%.c9a)] +// CHECK:STDOUT: %.loc13_16: type = fn_type_with_self_type constants.%I.Op.type, %I.facet [symbolic = %.loc13_16 (constants.%.c9a)] // CHECK:STDOUT: %impl.elem0.loc13_16.2: @GenericResult.%.loc13_16 (%.c9a) = impl_witness_access %I.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc13_16.2 (constants.%impl.elem0.45a)] -// CHECK:STDOUT: %specific_impl_fn.loc13_16.2: = specific_impl_function %impl.elem0.loc13_16.2, @Op(%I.facet) [symbolic = %specific_impl_fn.loc13_16.2 (constants.%specific_impl_fn.2ec)] +// CHECK:STDOUT: %specific_impl_fn.loc13_16.2: = specific_impl_function %impl.elem0.loc13_16.2, @I.Op(%I.facet) [symbolic = %specific_impl_fn.loc13_16.2 (constants.%specific_impl_fn.2ec)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%t.param: @GenericResult.%T.as_type.loc12_28.1 (%T.as_type), %u.param: @GenericResult.%as_type.loc12_35.1 (%as_type.f5d8f3.2)) -> @GenericResult.%as_type.loc12_35.1 (%as_type.f5d8f3.2) { // CHECK:STDOUT: !entry: @@ -1759,7 +1759,7 @@ fn F() { // CHECK:STDOUT: %u.ref.loc13_14: @GenericResult.%as_type.loc12_35.1 (%as_type.f5d8f3.2) = name_ref u, %u // CHECK:STDOUT: %.loc13_15.1: %I.type = converted constants.%as_type.f5d8f3.2, constants.%impl.elem0.5205fd.2 [symbolic = %impl.elem0.loc12_35.1 (constants.%impl.elem0.5205fd.2)] // CHECK:STDOUT: %.loc13_15.2: %I.type = converted constants.%as_type.f5d8f3.2, constants.%impl.elem0.5205fd.2 [symbolic = %impl.elem0.loc12_35.1 (constants.%impl.elem0.5205fd.2)] -// CHECK:STDOUT: %specific_impl_fn.loc13_11.1: = specific_impl_function %impl.elem1.loc13_11.1, @F(constants.%J.facet.5210a7.2) [symbolic = %specific_impl_fn.loc13_11.2 (constants.%specific_impl_fn.fe8)] +// CHECK:STDOUT: %specific_impl_fn.loc13_11.1: = specific_impl_function %impl.elem1.loc13_11.1, @J.F(constants.%J.facet.5210a7.2) [symbolic = %specific_impl_fn.loc13_11.2 (constants.%specific_impl_fn.fe8)] // CHECK:STDOUT: %.loc13_15.3: init @GenericResult.%as_type.loc12_35.1 (%as_type.f5d8f3.2) = call %specific_impl_fn.loc13_11.1(%u.ref.loc13_14) // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: %Op.ref: %I.assoc_type = name_ref Op, @I.%assoc0 [concrete = constants.%assoc0.ea8] @@ -1773,11 +1773,11 @@ fn F() { // CHECK:STDOUT: %u.ref.loc13_28: @GenericResult.%as_type.loc12_35.1 (%as_type.f5d8f3.2) = name_ref u, %u // CHECK:STDOUT: %.loc13_29.1: %I.type = converted constants.%as_type.f5d8f3.2, constants.%impl.elem0.5205fd.2 [symbolic = %impl.elem0.loc12_35.1 (constants.%impl.elem0.5205fd.2)] // CHECK:STDOUT: %.loc13_29.2: %I.type = converted constants.%as_type.f5d8f3.2, constants.%impl.elem0.5205fd.2 [symbolic = %impl.elem0.loc12_35.1 (constants.%impl.elem0.5205fd.2)] -// CHECK:STDOUT: %specific_impl_fn.loc13_25: = specific_impl_function %impl.elem1.loc13_25, @F(constants.%J.facet.5210a7.2) [symbolic = %specific_impl_fn.loc13_11.2 (constants.%specific_impl_fn.fe8)] +// CHECK:STDOUT: %specific_impl_fn.loc13_25: = specific_impl_function %impl.elem1.loc13_25, @J.F(constants.%J.facet.5210a7.2) [symbolic = %specific_impl_fn.loc13_11.2 (constants.%specific_impl_fn.fe8)] // CHECK:STDOUT: %.loc13_29.3: init @GenericResult.%as_type.loc12_35.1 (%as_type.f5d8f3.2) = call %specific_impl_fn.loc13_25(%u.ref.loc13_28) // CHECK:STDOUT: %.loc13_30.1: %I.type = converted constants.%as_type.f5d8f3.2, constants.%impl.elem0.5205fd.2 [symbolic = %impl.elem0.loc12_35.1 (constants.%impl.elem0.5205fd.2)] // CHECK:STDOUT: %.loc13_30.2: %I.type = converted constants.%as_type.f5d8f3.2, constants.%impl.elem0.5205fd.2 [symbolic = %impl.elem0.loc12_35.1 (constants.%impl.elem0.5205fd.2)] -// CHECK:STDOUT: %specific_impl_fn.loc13_16.1: = specific_impl_function %impl.elem0.loc13_16.1, @Op(constants.%I.facet) [symbolic = %specific_impl_fn.loc13_16.2 (constants.%specific_impl_fn.2ec)] +// CHECK:STDOUT: %specific_impl_fn.loc13_16.1: = specific_impl_function %impl.elem0.loc13_16.1, @I.Op(constants.%I.facet) [symbolic = %specific_impl_fn.loc13_16.2 (constants.%specific_impl_fn.2ec)] // CHECK:STDOUT: %bound_method.loc13_30: = bound_method %.loc13_15.3, %specific_impl_fn.loc13_16.1 // CHECK:STDOUT: %.loc13_15.4: @GenericResult.%as_type.loc12_35.1 (%as_type.f5d8f3.2) = value_of_initializer %.loc13_15.3 // CHECK:STDOUT: %.loc13_15.5: @GenericResult.%as_type.loc12_35.1 (%as_type.f5d8f3.2) = converted %.loc13_15.3, %.loc13_15.4 @@ -1790,9 +1790,9 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Op(constants.%Self.826) { +// CHECK:STDOUT: specific @I.Op(constants.%Self.826) { // CHECK:STDOUT: %Self => constants.%Self.826 -// CHECK:STDOUT: %Self.as_type.loc4_15.2 => constants.%Self.as_type.b70 +// CHECK:STDOUT: %Self.as_type.loc4_15.1 => constants.%Self.as_type.b70 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.6de // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1800,10 +1800,10 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: specific @U(constants.%J.facet.5210a7.1) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%Self.ccd) { +// CHECK:STDOUT: specific @J.F(constants.%Self.ccd) { // CHECK:STDOUT: %Self => constants.%Self.ccd // CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.lookup_impl_witness.64628e.1 -// CHECK:STDOUT: %impl.elem0.loc9_11.2 => constants.%impl.elem0.5205fd.1 +// CHECK:STDOUT: %impl.elem0.loc9_11.1 => constants.%impl.elem0.5205fd.1 // CHECK:STDOUT: %as_type => constants.%as_type.f5d8f3.1 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.74afd4.1 // CHECK:STDOUT: } @@ -1820,17 +1820,17 @@ fn F() { // CHECK:STDOUT: %pattern_type.loc12_31 => constants.%pattern_type.74afd4.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%J.facet.5210a7.2) { +// CHECK:STDOUT: specific @J.F(constants.%J.facet.5210a7.2) { // CHECK:STDOUT: %Self => constants.%J.facet.5210a7.2 // CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.lookup_impl_witness.64628e.2 -// CHECK:STDOUT: %impl.elem0.loc9_11.2 => constants.%impl.elem0.5205fd.2 +// CHECK:STDOUT: %impl.elem0.loc9_11.1 => constants.%impl.elem0.5205fd.2 // CHECK:STDOUT: %as_type => constants.%as_type.f5d8f3.2 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.74afd4.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Op(constants.%I.facet) { +// CHECK:STDOUT: specific @I.Op(constants.%I.facet) { // CHECK:STDOUT: %Self => constants.%I.facet -// CHECK:STDOUT: %Self.as_type.loc4_15.2 => constants.%as_type.f5d8f3.2 +// CHECK:STDOUT: %Self.as_type.loc4_15.1 => constants.%as_type.f5d8f3.2 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.74afd4.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1847,9 +1847,9 @@ fn F() { // CHECK:STDOUT: %J.facet.5210a7.1: %J.type = facet_value %Self.as_type, (%J.lookup_impl_witness.64628e.1) [symbolic] // CHECK:STDOUT: %impl.elem0.11fef0.1: type = impl_witness_access %J.lookup_impl_witness.64628e.1, element0 [symbolic] // CHECK:STDOUT: %pattern_type.b984e7.1: type = pattern_type %impl.elem0.11fef0.1 [symbolic] -// CHECK:STDOUT: %G.type: type = fn_type @G [concrete] -// CHECK:STDOUT: %G: %G.type = struct_value () [concrete] -// CHECK:STDOUT: %assoc1: %J.assoc_type = assoc_entity element1, @J.%G.decl [concrete] +// CHECK:STDOUT: %J.G.type: type = fn_type @J.G [concrete] +// CHECK:STDOUT: %J.G: %J.G.type = struct_value () [concrete] +// CHECK:STDOUT: %assoc1: %J.assoc_type = assoc_entity element1, @J.%J.G.decl [concrete] // CHECK:STDOUT: %T: %J.type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.28e: type = pattern_type %J.type [concrete] // CHECK:STDOUT: %T.as_type: type = facet_access_type %T [symbolic] @@ -1862,9 +1862,9 @@ fn F() { // CHECK:STDOUT: %GenericCallInterfaceQualified: %GenericCallInterfaceQualified.type = struct_value () [concrete] // CHECK:STDOUT: %require_complete.58f: = require_complete_type %impl.elem0.11fef0.2 [symbolic] // CHECK:STDOUT: %require_complete.2a5: = require_complete_type %T.as_type [symbolic] -// CHECK:STDOUT: %.442: type = fn_type_with_self_type %G.type, %J.facet.5210a7.2 [symbolic] +// CHECK:STDOUT: %.442: type = fn_type_with_self_type %J.G.type, %J.facet.5210a7.2 [symbolic] // CHECK:STDOUT: %impl.elem1: %.442 = impl_witness_access %J.lookup_impl_witness.64628e.2, element1 [symbolic] -// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem1, @G(%J.facet.5210a7.2) [symbolic] +// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem1, @J.G(%J.facet.5210a7.2) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -1924,54 +1924,54 @@ fn F() { // CHECK:STDOUT: %U: type = assoc_const_decl @U [concrete] { // CHECK:STDOUT: %assoc0: %J.assoc_type = assoc_entity element0, @J.%U [concrete = constants.%assoc0] // CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { -// CHECK:STDOUT: %self.patt: @G.%pattern_type.loc5_8 (%pattern_type.4ca604.1) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @G.%pattern_type.loc5_8 (%pattern_type.4ca604.1) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %v.patt: @G.%pattern_type.loc5_20 (%pattern_type.b984e7.1) = binding_pattern v [concrete] -// CHECK:STDOUT: %v.param_patt: @G.%pattern_type.loc5_20 (%pattern_type.b984e7.1) = value_param_pattern %v.patt, call_param1 [concrete] -// CHECK:STDOUT: %return.patt: @G.%pattern_type.loc5_20 (%pattern_type.b984e7.1) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @G.%pattern_type.loc5_20 (%pattern_type.b984e7.1) = out_param_pattern %return.patt, call_param2 [concrete] +// CHECK:STDOUT: %J.G.decl: %J.G.type = fn_decl @J.G [concrete = constants.%J.G] { +// CHECK:STDOUT: %self.patt: @J.G.%pattern_type.loc5_8 (%pattern_type.4ca604.1) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @J.G.%pattern_type.loc5_8 (%pattern_type.4ca604.1) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %v.patt: @J.G.%pattern_type.loc5_20 (%pattern_type.b984e7.1) = binding_pattern v [concrete] +// CHECK:STDOUT: %v.param_patt: @J.G.%pattern_type.loc5_20 (%pattern_type.b984e7.1) = value_param_pattern %v.patt, call_param1 [concrete] +// CHECK:STDOUT: %return.patt: @J.G.%pattern_type.loc5_20 (%pattern_type.b984e7.1) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @J.G.%pattern_type.loc5_20 (%pattern_type.b984e7.1) = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %impl.elem0.loc5_29: type = impl_witness_access constants.%J.lookup_impl_witness.64628e.1, element0 [symbolic = %impl.elem0.loc5_23.2 (constants.%impl.elem0.11fef0.1)] -// CHECK:STDOUT: %U.ref.loc5_29: type = name_ref U, %impl.elem0.loc5_29 [symbolic = %impl.elem0.loc5_23.2 (constants.%impl.elem0.11fef0.1)] -// CHECK:STDOUT: %self.param: @G.%Self.as_type.loc5_14.2 (%Self.as_type) = value_param call_param0 -// CHECK:STDOUT: %.loc5_14.1: type = splice_block %.loc5_14.2 [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type)] { +// CHECK:STDOUT: %impl.elem0.loc5_29: type = impl_witness_access constants.%J.lookup_impl_witness.64628e.1, element0 [symbolic = %impl.elem0.loc5_23.1 (constants.%impl.elem0.11fef0.1)] +// CHECK:STDOUT: %U.ref.loc5_29: type = name_ref U, %impl.elem0.loc5_29 [symbolic = %impl.elem0.loc5_23.1 (constants.%impl.elem0.11fef0.1)] +// CHECK:STDOUT: %self.param: @J.G.%Self.as_type.loc5_14.1 (%Self.as_type) = value_param call_param0 +// CHECK:STDOUT: %.loc5_14.1: type = splice_block %.loc5_14.2 [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] { // CHECK:STDOUT: %Self.ref: %J.type = name_ref Self, @J.%Self [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc5_14.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc5_14.2: type = converted %Self.ref, %Self.as_type.loc5_14.1 [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type)] +// CHECK:STDOUT: %Self.as_type.loc5_14.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc5_14.2: type = converted %Self.ref, %Self.as_type.loc5_14.2 [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @G.%Self.as_type.loc5_14.2 (%Self.as_type) = bind_name self, %self.param -// CHECK:STDOUT: %v.param: @G.%impl.elem0.loc5_23.2 (%impl.elem0.11fef0.1) = value_param call_param1 -// CHECK:STDOUT: %.loc5_23: type = splice_block %U.ref.loc5_23 [symbolic = %impl.elem0.loc5_23.2 (constants.%impl.elem0.11fef0.1)] { -// CHECK:STDOUT: %impl.elem0.loc5_23.1: type = impl_witness_access constants.%J.lookup_impl_witness.64628e.1, element0 [symbolic = %impl.elem0.loc5_23.2 (constants.%impl.elem0.11fef0.1)] -// CHECK:STDOUT: %U.ref.loc5_23: type = name_ref U, %impl.elem0.loc5_23.1 [symbolic = %impl.elem0.loc5_23.2 (constants.%impl.elem0.11fef0.1)] +// CHECK:STDOUT: %self: @J.G.%Self.as_type.loc5_14.1 (%Self.as_type) = bind_name self, %self.param +// CHECK:STDOUT: %v.param: @J.G.%impl.elem0.loc5_23.1 (%impl.elem0.11fef0.1) = value_param call_param1 +// CHECK:STDOUT: %.loc5_23: type = splice_block %U.ref.loc5_23 [symbolic = %impl.elem0.loc5_23.1 (constants.%impl.elem0.11fef0.1)] { +// CHECK:STDOUT: %impl.elem0.loc5_23.2: type = impl_witness_access constants.%J.lookup_impl_witness.64628e.1, element0 [symbolic = %impl.elem0.loc5_23.1 (constants.%impl.elem0.11fef0.1)] +// CHECK:STDOUT: %U.ref.loc5_23: type = name_ref U, %impl.elem0.loc5_23.2 [symbolic = %impl.elem0.loc5_23.1 (constants.%impl.elem0.11fef0.1)] // CHECK:STDOUT: } -// CHECK:STDOUT: %v: @G.%impl.elem0.loc5_23.2 (%impl.elem0.11fef0.1) = bind_name v, %v.param -// CHECK:STDOUT: %return.param: ref @G.%impl.elem0.loc5_23.2 (%impl.elem0.11fef0.1) = out_param call_param2 -// CHECK:STDOUT: %return: ref @G.%impl.elem0.loc5_23.2 (%impl.elem0.11fef0.1) = return_slot %return.param +// CHECK:STDOUT: %v: @J.G.%impl.elem0.loc5_23.1 (%impl.elem0.11fef0.1) = bind_name v, %v.param +// CHECK:STDOUT: %return.param: ref @J.G.%impl.elem0.loc5_23.1 (%impl.elem0.11fef0.1) = out_param call_param2 +// CHECK:STDOUT: %return: ref @J.G.%impl.elem0.loc5_23.1 (%impl.elem0.11fef0.1) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc1: %J.assoc_type = assoc_entity element1, %G.decl [concrete = constants.%assoc1] +// CHECK:STDOUT: %assoc1: %J.assoc_type = assoc_entity element1, %J.G.decl [concrete = constants.%assoc1] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .U = @U.%assoc0 // CHECK:STDOUT: .G = %assoc1 -// CHECK:STDOUT: witness = (%U, %G.decl) +// CHECK:STDOUT: witness = (%U, %J.G.decl) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic assoc_const @U(@J.%Self: %J.type) { // CHECK:STDOUT: assoc_const U:! type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @G(@J.%Self: %J.type) { +// CHECK:STDOUT: generic fn @J.G(@J.%Self: %J.type) { // CHECK:STDOUT: %Self: %J.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc5_14.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %pattern_type.loc5_8: type = pattern_type %Self.as_type.loc5_14.2 [symbolic = %pattern_type.loc5_8 (constants.%pattern_type.4ca604.1)] +// CHECK:STDOUT: %Self.as_type.loc5_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %pattern_type.loc5_8: type = pattern_type %Self.as_type.loc5_14.1 [symbolic = %pattern_type.loc5_8 (constants.%pattern_type.4ca604.1)] // CHECK:STDOUT: %J.lookup_impl_witness: = lookup_impl_witness %Self, @J [symbolic = %J.lookup_impl_witness (constants.%J.lookup_impl_witness.64628e.1)] -// CHECK:STDOUT: %impl.elem0.loc5_23.2: type = impl_witness_access %J.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc5_23.2 (constants.%impl.elem0.11fef0.1)] -// CHECK:STDOUT: %pattern_type.loc5_20: type = pattern_type %impl.elem0.loc5_23.2 [symbolic = %pattern_type.loc5_20 (constants.%pattern_type.b984e7.1)] +// CHECK:STDOUT: %impl.elem0.loc5_23.1: type = impl_witness_access %J.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc5_23.1 (constants.%impl.elem0.11fef0.1)] +// CHECK:STDOUT: %pattern_type.loc5_20: type = pattern_type %impl.elem0.loc5_23.1 [symbolic = %pattern_type.loc5_20 (constants.%pattern_type.b984e7.1)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @G.%Self.as_type.loc5_14.2 (%Self.as_type), %v.param: @G.%impl.elem0.loc5_23.2 (%impl.elem0.11fef0.1)) -> @G.%impl.elem0.loc5_23.2 (%impl.elem0.11fef0.1); +// CHECK:STDOUT: fn(%self.param: @J.G.%Self.as_type.loc5_14.1 (%Self.as_type), %v.param: @J.G.%impl.elem0.loc5_23.1 (%impl.elem0.11fef0.1)) -> @J.G.%impl.elem0.loc5_23.1 (%impl.elem0.11fef0.1); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @GenericCallInterfaceQualified(%T.loc8_34.2: %J.type) { @@ -1986,9 +1986,9 @@ fn F() { // CHECK:STDOUT: %require_complete.loc8_55: = require_complete_type %impl.elem0.loc8_51.1 [symbolic = %require_complete.loc8_55 (constants.%require_complete.58f)] // CHECK:STDOUT: %require_complete.loc8_42: = require_complete_type %T.as_type.loc8_44.1 [symbolic = %require_complete.loc8_42 (constants.%require_complete.2a5)] // CHECK:STDOUT: %J.facet: %J.type = facet_value %T.as_type.loc8_44.1, (%J.lookup_impl_witness) [symbolic = %J.facet (constants.%J.facet.5210a7.2)] -// CHECK:STDOUT: %.loc9_11: type = fn_type_with_self_type constants.%G.type, %J.facet [symbolic = %.loc9_11 (constants.%.442)] +// CHECK:STDOUT: %.loc9_11: type = fn_type_with_self_type constants.%J.G.type, %J.facet [symbolic = %.loc9_11 (constants.%.442)] // CHECK:STDOUT: %impl.elem1.loc9_11.2: @GenericCallInterfaceQualified.%.loc9_11 (%.442) = impl_witness_access %J.lookup_impl_witness, element1 [symbolic = %impl.elem1.loc9_11.2 (constants.%impl.elem1)] -// CHECK:STDOUT: %specific_impl_fn.loc9_11.2: = specific_impl_function %impl.elem1.loc9_11.2, @G(%J.facet) [symbolic = %specific_impl_fn.loc9_11.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc9_11.2: = specific_impl_function %impl.elem1.loc9_11.2, @J.G(%J.facet) [symbolic = %specific_impl_fn.loc9_11.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%t.param: @GenericCallInterfaceQualified.%T.as_type.loc8_44.1 (%T.as_type), %u.param: @GenericCallInterfaceQualified.%impl.elem0.loc8_51.1 (%impl.elem0.11fef0.2)) -> @GenericCallInterfaceQualified.%impl.elem0.loc8_51.1 (%impl.elem0.11fef0.2) { // CHECK:STDOUT: !entry: @@ -1998,7 +1998,7 @@ fn F() { // CHECK:STDOUT: %impl.elem1.loc9_11.1: @GenericCallInterfaceQualified.%.loc9_11 (%.442) = impl_witness_access constants.%J.lookup_impl_witness.64628e.2, element1 [symbolic = %impl.elem1.loc9_11.2 (constants.%impl.elem1)] // CHECK:STDOUT: %bound_method.loc9_11: = bound_method %t.ref, %impl.elem1.loc9_11.1 // CHECK:STDOUT: %u.ref: @GenericCallInterfaceQualified.%impl.elem0.loc8_51.1 (%impl.elem0.11fef0.2) = name_ref u, %u -// CHECK:STDOUT: %specific_impl_fn.loc9_11.1: = specific_impl_function %impl.elem1.loc9_11.1, @G(constants.%J.facet.5210a7.2) [symbolic = %specific_impl_fn.loc9_11.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc9_11.1: = specific_impl_function %impl.elem1.loc9_11.1, @J.G(constants.%J.facet.5210a7.2) [symbolic = %specific_impl_fn.loc9_11.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %bound_method.loc9_19: = bound_method %t.ref, %specific_impl_fn.loc9_11.1 // CHECK:STDOUT: %.loc9_19: init @GenericCallInterfaceQualified.%impl.elem0.loc8_51.1 (%impl.elem0.11fef0.2) = call %bound_method.loc9_19(%t.ref, %u.ref) // CHECK:STDOUT: %.loc9_20.1: @GenericCallInterfaceQualified.%impl.elem0.loc8_51.1 (%impl.elem0.11fef0.2) = value_of_initializer %.loc9_19 @@ -2011,12 +2011,12 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: specific @U(constants.%J.facet.5210a7.1) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @G(constants.%Self) { +// CHECK:STDOUT: specific @J.G(constants.%Self) { // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %Self.as_type.loc5_14.2 => constants.%Self.as_type +// CHECK:STDOUT: %Self.as_type.loc5_14.1 => constants.%Self.as_type // CHECK:STDOUT: %pattern_type.loc5_8 => constants.%pattern_type.4ca604.1 // CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.lookup_impl_witness.64628e.1 -// CHECK:STDOUT: %impl.elem0.loc5_23.2 => constants.%impl.elem0.11fef0.1 +// CHECK:STDOUT: %impl.elem0.loc5_23.1 => constants.%impl.elem0.11fef0.1 // CHECK:STDOUT: %pattern_type.loc5_20 => constants.%pattern_type.b984e7.1 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -2031,12 +2031,12 @@ fn F() { // CHECK:STDOUT: %pattern_type.loc8_47 => constants.%pattern_type.b984e7.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @G(constants.%J.facet.5210a7.2) { +// CHECK:STDOUT: specific @J.G(constants.%J.facet.5210a7.2) { // CHECK:STDOUT: %Self => constants.%J.facet.5210a7.2 -// CHECK:STDOUT: %Self.as_type.loc5_14.2 => constants.%T.as_type +// CHECK:STDOUT: %Self.as_type.loc5_14.1 => constants.%T.as_type // CHECK:STDOUT: %pattern_type.loc5_8 => constants.%pattern_type.4ca604.2 // CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.lookup_impl_witness.64628e.2 -// CHECK:STDOUT: %impl.elem0.loc5_23.2 => constants.%impl.elem0.11fef0.2 +// CHECK:STDOUT: %impl.elem0.loc5_23.1 => constants.%impl.elem0.11fef0.2 // CHECK:STDOUT: %pattern_type.loc5_20 => constants.%pattern_type.b984e7.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -2052,9 +2052,9 @@ fn F() { // CHECK:STDOUT: %J.facet.521: %J.type = facet_value %Self.as_type.3df, (%J.lookup_impl_witness.646) [symbolic] // CHECK:STDOUT: %impl.elem0.11f: type = impl_witness_access %J.lookup_impl_witness.646, element0 [symbolic] // CHECK:STDOUT: %pattern_type.b98: type = pattern_type %impl.elem0.11f [symbolic] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %assoc1: %J.assoc_type = assoc_entity element1, @J.%F.decl [concrete] +// CHECK:STDOUT: %J.F.type: type = fn_type @J.F [concrete] +// CHECK:STDOUT: %J.F: %J.F.type = struct_value () [concrete] +// CHECK:STDOUT: %assoc1: %J.assoc_type = assoc_entity element1, @J.%J.F.decl [concrete] // CHECK:STDOUT: %.Self.968: %J.type = bind_symbolic_name .Self [symbolic_self] // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.968 [symbolic_self] // CHECK:STDOUT: %J.lookup_impl_witness.25c: = lookup_impl_witness %.Self.968, @J [symbolic_self] @@ -2075,25 +2075,25 @@ fn F() { // CHECK:STDOUT: %require_complete.5de: = require_complete_type %T.as_type [symbolic] // CHECK:STDOUT: %J.lookup_impl_witness.bee: = lookup_impl_witness %T, @J [symbolic] // CHECK:STDOUT: %J.facet.487: %J.type = facet_value %T.as_type, (%J.lookup_impl_witness.bee) [symbolic] -// CHECK:STDOUT: %.9b0: type = fn_type_with_self_type %F.type, %J.facet.487 [symbolic] +// CHECK:STDOUT: %.9b0: type = fn_type_with_self_type %J.F.type, %J.facet.487 [symbolic] // CHECK:STDOUT: %impl.elem1: %.9b0 = impl_witness_access %J.lookup_impl_witness.bee, element1 [symbolic] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] -// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem1, @F(%J.facet.487) [symbolic] +// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem1, @J.F(%J.facet.487) [symbolic] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -2106,8 +2106,8 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -2159,43 +2159,43 @@ fn F() { // CHECK:STDOUT: %U: type = assoc_const_decl @U [concrete] { // CHECK:STDOUT: %assoc0: %J.assoc_type = assoc_entity element0, @J.%U [concrete = constants.%assoc0.411] // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { -// CHECK:STDOUT: %u.patt: @F.%pattern_type (%pattern_type.b98) = binding_pattern u [concrete] -// CHECK:STDOUT: %u.param_patt: @F.%pattern_type (%pattern_type.b98) = value_param_pattern %u.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: @F.%pattern_type (%pattern_type.b98) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @F.%pattern_type (%pattern_type.b98) = out_param_pattern %return.patt, call_param1 [concrete] +// CHECK:STDOUT: %J.F.decl: %J.F.type = fn_decl @J.F [concrete = constants.%J.F] { +// CHECK:STDOUT: %u.patt: @J.F.%pattern_type (%pattern_type.b98) = binding_pattern u [concrete] +// CHECK:STDOUT: %u.param_patt: @J.F.%pattern_type (%pattern_type.b98) = value_param_pattern %u.patt, call_param0 [concrete] +// CHECK:STDOUT: %return.patt: @J.F.%pattern_type (%pattern_type.b98) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @J.F.%pattern_type (%pattern_type.b98) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %impl.elem0.loc5_17: type = impl_witness_access constants.%J.lookup_impl_witness.646, element0 [symbolic = %impl.elem0.loc5_11.2 (constants.%impl.elem0.11f)] -// CHECK:STDOUT: %U.ref.loc5_17: type = name_ref U, %impl.elem0.loc5_17 [symbolic = %impl.elem0.loc5_11.2 (constants.%impl.elem0.11f)] -// CHECK:STDOUT: %u.param: @F.%impl.elem0.loc5_11.2 (%impl.elem0.11f) = value_param call_param0 -// CHECK:STDOUT: %.loc5: type = splice_block %U.ref.loc5_11 [symbolic = %impl.elem0.loc5_11.2 (constants.%impl.elem0.11f)] { -// CHECK:STDOUT: %impl.elem0.loc5_11.1: type = impl_witness_access constants.%J.lookup_impl_witness.646, element0 [symbolic = %impl.elem0.loc5_11.2 (constants.%impl.elem0.11f)] -// CHECK:STDOUT: %U.ref.loc5_11: type = name_ref U, %impl.elem0.loc5_11.1 [symbolic = %impl.elem0.loc5_11.2 (constants.%impl.elem0.11f)] +// CHECK:STDOUT: %impl.elem0.loc5_17: type = impl_witness_access constants.%J.lookup_impl_witness.646, element0 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.11f)] +// CHECK:STDOUT: %U.ref.loc5_17: type = name_ref U, %impl.elem0.loc5_17 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.11f)] +// CHECK:STDOUT: %u.param: @J.F.%impl.elem0.loc5_11.1 (%impl.elem0.11f) = value_param call_param0 +// CHECK:STDOUT: %.loc5: type = splice_block %U.ref.loc5_11 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.11f)] { +// CHECK:STDOUT: %impl.elem0.loc5_11.2: type = impl_witness_access constants.%J.lookup_impl_witness.646, element0 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.11f)] +// CHECK:STDOUT: %U.ref.loc5_11: type = name_ref U, %impl.elem0.loc5_11.2 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.11f)] // CHECK:STDOUT: } -// CHECK:STDOUT: %u: @F.%impl.elem0.loc5_11.2 (%impl.elem0.11f) = bind_name u, %u.param -// CHECK:STDOUT: %return.param: ref @F.%impl.elem0.loc5_11.2 (%impl.elem0.11f) = out_param call_param1 -// CHECK:STDOUT: %return: ref @F.%impl.elem0.loc5_11.2 (%impl.elem0.11f) = return_slot %return.param +// CHECK:STDOUT: %u: @J.F.%impl.elem0.loc5_11.1 (%impl.elem0.11f) = bind_name u, %u.param +// CHECK:STDOUT: %return.param: ref @J.F.%impl.elem0.loc5_11.1 (%impl.elem0.11f) = out_param call_param1 +// CHECK:STDOUT: %return: ref @J.F.%impl.elem0.loc5_11.1 (%impl.elem0.11f) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc1: %J.assoc_type = assoc_entity element1, %F.decl [concrete = constants.%assoc1] +// CHECK:STDOUT: %assoc1: %J.assoc_type = assoc_entity element1, %J.F.decl [concrete = constants.%assoc1] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .U = @U.%assoc0 // CHECK:STDOUT: .F = %assoc1 -// CHECK:STDOUT: witness = (%U, %F.decl) +// CHECK:STDOUT: witness = (%U, %J.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic assoc_const @U(@J.%Self: %J.type) { // CHECK:STDOUT: assoc_const U:! type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(@J.%Self: %J.type) { +// CHECK:STDOUT: generic fn @J.F(@J.%Self: %J.type) { // CHECK:STDOUT: %Self: %J.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.ccd)] // CHECK:STDOUT: %J.lookup_impl_witness: = lookup_impl_witness %Self, @J [symbolic = %J.lookup_impl_witness (constants.%J.lookup_impl_witness.646)] -// CHECK:STDOUT: %impl.elem0.loc5_11.2: type = impl_witness_access %J.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc5_11.2 (constants.%impl.elem0.11f)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %impl.elem0.loc5_11.2 [symbolic = %pattern_type (constants.%pattern_type.b98)] +// CHECK:STDOUT: %impl.elem0.loc5_11.1: type = impl_witness_access %J.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.11f)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %impl.elem0.loc5_11.1 [symbolic = %pattern_type (constants.%pattern_type.b98)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%u.param: @F.%impl.elem0.loc5_11.2 (%impl.elem0.11f)) -> @F.%impl.elem0.loc5_11.2 (%impl.elem0.11f); +// CHECK:STDOUT: fn(%u.param: @J.F.%impl.elem0.loc5_11.1 (%impl.elem0.11f)) -> @J.F.%impl.elem0.loc5_11.1 (%impl.elem0.11f); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @GenericCallFI32(%T.loc8_20.2: %J_where.type) { @@ -2207,9 +2207,9 @@ fn F() { // CHECK:STDOUT: %require_complete: = require_complete_type %T.as_type.loc8_45.1 [symbolic = %require_complete (constants.%require_complete.5de)] // CHECK:STDOUT: %J.lookup_impl_witness: = lookup_impl_witness %T.loc8_20.1, @J [symbolic = %J.lookup_impl_witness (constants.%J.lookup_impl_witness.bee)] // CHECK:STDOUT: %J.facet: %J.type = facet_value %T.as_type.loc8_45.1, (%J.lookup_impl_witness) [symbolic = %J.facet (constants.%J.facet.487)] -// CHECK:STDOUT: %.loc9_11.2: type = fn_type_with_self_type constants.%F.type, %J.facet [symbolic = %.loc9_11.2 (constants.%.9b0)] +// CHECK:STDOUT: %.loc9_11.2: type = fn_type_with_self_type constants.%J.F.type, %J.facet [symbolic = %.loc9_11.2 (constants.%.9b0)] // CHECK:STDOUT: %impl.elem1.loc9_11.2: @GenericCallFI32.%.loc9_11.2 (%.9b0) = impl_witness_access %J.lookup_impl_witness, element1 [symbolic = %impl.elem1.loc9_11.2 (constants.%impl.elem1)] -// CHECK:STDOUT: %specific_impl_fn.loc9_11.2: = specific_impl_function %impl.elem1.loc9_11.2, @F(%J.facet) [symbolic = %specific_impl_fn.loc9_11.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc9_11.2: = specific_impl_function %impl.elem1.loc9_11.2, @J.F(%J.facet) [symbolic = %specific_impl_fn.loc9_11.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%t.param: @GenericCallFI32.%T.as_type.loc8_45.1 (%T.as_type)) -> %i32 { // CHECK:STDOUT: !entry: @@ -2219,13 +2219,13 @@ fn F() { // CHECK:STDOUT: %.loc9_11.1: type = converted constants.%T, %T.as_type.loc9 [symbolic = %T.as_type.loc8_45.1 (constants.%T.as_type)] // CHECK:STDOUT: %impl.elem1.loc9_11.1: @GenericCallFI32.%.loc9_11.2 (%.9b0) = impl_witness_access constants.%J.lookup_impl_witness.bee, element1 [symbolic = %impl.elem1.loc9_11.2 (constants.%impl.elem1)] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %specific_impl_fn.loc9_11.1: = specific_impl_function %impl.elem1.loc9_11.1, @F(constants.%J.facet.487) [symbolic = %specific_impl_fn.loc9_11.2 (constants.%specific_impl_fn)] -// CHECK:STDOUT: %impl.elem0.loc9: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc9_14.1: = bound_method %int_2, %impl.elem0.loc9 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0.loc9, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %specific_impl_fn.loc9_11.1: = specific_impl_function %impl.elem1.loc9_11.1, @J.F(constants.%J.facet.487) [symbolic = %specific_impl_fn.loc9_11.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %impl.elem0.loc9: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc9_14.1: = bound_method %int_2, %impl.elem0.loc9 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0.loc9, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc9_14.2: = bound_method %int_2, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc9_14.2(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc9_14.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc9_14.2(%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc9_14.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc9_14.2: %i32 = converted %int_2, %.loc9_14.1 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc9_15: init %i32 = call %specific_impl_fn.loc9_11.1(%.loc9_14.2) // CHECK:STDOUT: %.loc9_16.1: %i32 = value_of_initializer %.loc9_15 @@ -2238,10 +2238,10 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: specific @U(constants.%J.facet.521) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%Self.ccd) { +// CHECK:STDOUT: specific @J.F(constants.%Self.ccd) { // CHECK:STDOUT: %Self => constants.%Self.ccd // CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.lookup_impl_witness.646 -// CHECK:STDOUT: %impl.elem0.loc5_11.2 => constants.%impl.elem0.11f +// CHECK:STDOUT: %impl.elem0.loc5_11.1 => constants.%impl.elem0.11f // CHECK:STDOUT: %pattern_type => constants.%pattern_type.b98 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -2253,10 +2253,10 @@ fn F() { // CHECK:STDOUT: %pattern_type => constants.%pattern_type.b32 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%J.facet.487) { +// CHECK:STDOUT: specific @J.F(constants.%J.facet.487) { // CHECK:STDOUT: %Self => constants.%J.facet.487 // CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.lookup_impl_witness.bee -// CHECK:STDOUT: %impl.elem0.loc5_11.2 => constants.%i32 +// CHECK:STDOUT: %impl.elem0.loc5_11.1 => constants.%i32 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7ce // CHECK:STDOUT: } // CHECK:STDOUT: @@ -2272,9 +2272,9 @@ fn F() { // CHECK:STDOUT: %J.facet.521: %J.type = facet_value %Self.as_type.3df, (%J.lookup_impl_witness.646) [symbolic] // CHECK:STDOUT: %impl.elem0.11f: type = impl_witness_access %J.lookup_impl_witness.646, element0 [symbolic] // CHECK:STDOUT: %pattern_type.b98: type = pattern_type %impl.elem0.11f [symbolic] -// CHECK:STDOUT: %F.type.c14: type = fn_type @F.loc5 [concrete] -// CHECK:STDOUT: %F.b71: %F.type.c14 = struct_value () [concrete] -// CHECK:STDOUT: %assoc1: %J.assoc_type = assoc_entity element1, @J.%F.decl [concrete] +// CHECK:STDOUT: %J.F.type: type = fn_type @J.F [concrete] +// CHECK:STDOUT: %J.F: %J.F.type = struct_value () [concrete] +// CHECK:STDOUT: %assoc1: %J.assoc_type = assoc_entity element1, @J.%J.F.decl [concrete] // CHECK:STDOUT: %E: type = class_type @E [concrete] // CHECK:STDOUT: %.Self: %J.type = bind_symbolic_name .Self [symbolic_self] // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] @@ -2289,12 +2289,12 @@ fn F() { // CHECK:STDOUT: %J.impl_witness: = impl_witness @E.%J.impl_witness_table [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] -// CHECK:STDOUT: %F.type.b842fd.1: type = fn_type @F.loc24_21.1 [concrete] -// CHECK:STDOUT: %F.b07d12.1: %F.type.b842fd.1 = struct_value () [concrete] +// CHECK:STDOUT: %E.as.J.impl.F.type.b842fd.1: type = fn_type @E.as.J.impl.F.loc24_21.1 [concrete] +// CHECK:STDOUT: %E.as.J.impl.F.b07d12.1: %E.as.J.impl.F.type.b842fd.1 = struct_value () [concrete] // CHECK:STDOUT: %J.facet.f43: %J.type = facet_value %E, (%J.impl_witness) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %F.type.b842fd.2: type = fn_type @F.loc24_21.2 [concrete] -// CHECK:STDOUT: %F.b07d12.2: %F.type.b842fd.2 = struct_value () [concrete] +// CHECK:STDOUT: %E.as.J.impl.F.type.b842fd.2: type = fn_type @E.as.J.impl.F.loc24_21.2 [concrete] +// CHECK:STDOUT: %E.as.J.impl.F.b07d12.2: %E.as.J.impl.F.type.b842fd.2 = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: } @@ -2326,38 +2326,38 @@ fn F() { // CHECK:STDOUT: %U: type = assoc_const_decl @U [concrete] { // CHECK:STDOUT: %assoc0: %J.assoc_type = assoc_entity element0, @J.%U [concrete = constants.%assoc0.411] // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type.c14 = fn_decl @F.loc5 [concrete = constants.%F.b71] { -// CHECK:STDOUT: %u.patt: @F.loc5.%pattern_type (%pattern_type.b98) = binding_pattern u [concrete] -// CHECK:STDOUT: %u.param_patt: @F.loc5.%pattern_type (%pattern_type.b98) = value_param_pattern %u.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: @F.loc5.%pattern_type (%pattern_type.b98) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @F.loc5.%pattern_type (%pattern_type.b98) = out_param_pattern %return.patt, call_param1 [concrete] +// CHECK:STDOUT: %J.F.decl: %J.F.type = fn_decl @J.F [concrete = constants.%J.F] { +// CHECK:STDOUT: %u.patt: @J.F.%pattern_type (%pattern_type.b98) = binding_pattern u [concrete] +// CHECK:STDOUT: %u.param_patt: @J.F.%pattern_type (%pattern_type.b98) = value_param_pattern %u.patt, call_param0 [concrete] +// CHECK:STDOUT: %return.patt: @J.F.%pattern_type (%pattern_type.b98) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @J.F.%pattern_type (%pattern_type.b98) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %impl.elem0.loc5_17: type = impl_witness_access constants.%J.lookup_impl_witness.646, element0 [symbolic = %impl.elem0.loc5_11.2 (constants.%impl.elem0.11f)] -// CHECK:STDOUT: %U.ref.loc5_17: type = name_ref U, %impl.elem0.loc5_17 [symbolic = %impl.elem0.loc5_11.2 (constants.%impl.elem0.11f)] -// CHECK:STDOUT: %u.param: @F.loc5.%impl.elem0.loc5_11.2 (%impl.elem0.11f) = value_param call_param0 -// CHECK:STDOUT: %.loc5: type = splice_block %U.ref.loc5_11 [symbolic = %impl.elem0.loc5_11.2 (constants.%impl.elem0.11f)] { -// CHECK:STDOUT: %impl.elem0.loc5_11.1: type = impl_witness_access constants.%J.lookup_impl_witness.646, element0 [symbolic = %impl.elem0.loc5_11.2 (constants.%impl.elem0.11f)] -// CHECK:STDOUT: %U.ref.loc5_11: type = name_ref U, %impl.elem0.loc5_11.1 [symbolic = %impl.elem0.loc5_11.2 (constants.%impl.elem0.11f)] +// CHECK:STDOUT: %impl.elem0.loc5_17: type = impl_witness_access constants.%J.lookup_impl_witness.646, element0 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.11f)] +// CHECK:STDOUT: %U.ref.loc5_17: type = name_ref U, %impl.elem0.loc5_17 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.11f)] +// CHECK:STDOUT: %u.param: @J.F.%impl.elem0.loc5_11.1 (%impl.elem0.11f) = value_param call_param0 +// CHECK:STDOUT: %.loc5: type = splice_block %U.ref.loc5_11 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.11f)] { +// CHECK:STDOUT: %impl.elem0.loc5_11.2: type = impl_witness_access constants.%J.lookup_impl_witness.646, element0 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.11f)] +// CHECK:STDOUT: %U.ref.loc5_11: type = name_ref U, %impl.elem0.loc5_11.2 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.11f)] // CHECK:STDOUT: } -// CHECK:STDOUT: %u: @F.loc5.%impl.elem0.loc5_11.2 (%impl.elem0.11f) = bind_name u, %u.param -// CHECK:STDOUT: %return.param: ref @F.loc5.%impl.elem0.loc5_11.2 (%impl.elem0.11f) = out_param call_param1 -// CHECK:STDOUT: %return: ref @F.loc5.%impl.elem0.loc5_11.2 (%impl.elem0.11f) = return_slot %return.param +// CHECK:STDOUT: %u: @J.F.%impl.elem0.loc5_11.1 (%impl.elem0.11f) = bind_name u, %u.param +// CHECK:STDOUT: %return.param: ref @J.F.%impl.elem0.loc5_11.1 (%impl.elem0.11f) = out_param call_param1 +// CHECK:STDOUT: %return: ref @J.F.%impl.elem0.loc5_11.1 (%impl.elem0.11f) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc1: %J.assoc_type = assoc_entity element1, %F.decl [concrete = constants.%assoc1] +// CHECK:STDOUT: %assoc1: %J.assoc_type = assoc_entity element1, %J.F.decl [concrete = constants.%assoc1] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .U = @U.%assoc0 // CHECK:STDOUT: .F = %assoc1 -// CHECK:STDOUT: witness = (%U, %F.decl) +// CHECK:STDOUT: witness = (%U, %J.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic assoc_const @U(@J.%Self: %J.type) { // CHECK:STDOUT: assoc_const U:! type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @J.impl: %Self.ref as %.loc9_20 { -// CHECK:STDOUT: %F.decl.loc24_21.1: %F.type.b842fd.1 = fn_decl @F.loc24_21.1 [concrete = constants.%F.b07d12.1] { +// CHECK:STDOUT: impl @E.as.J.impl: %Self.ref as %.loc9_20 { +// CHECK:STDOUT: %E.as.J.impl.F.decl.loc24_21.1: %E.as.J.impl.F.type.b842fd.1 = fn_decl @E.as.J.impl.F.loc24_21.1 [concrete = constants.%E.as.J.impl.F.b07d12.1] { // CHECK:STDOUT: %u.patt: = binding_pattern u [concrete] // CHECK:STDOUT: %u.param_patt: = value_param_pattern %u.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: = return_slot_pattern [concrete] @@ -2374,7 +2374,7 @@ fn F() { // CHECK:STDOUT: %return.param: ref = out_param call_param1 // CHECK:STDOUT: %return: ref = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl.loc24_21.2: %F.type.b842fd.2 = fn_decl @F.loc24_21.2 [concrete = constants.%F.b07d12.2] { +// CHECK:STDOUT: %E.as.J.impl.F.decl.loc24_21.2: %E.as.J.impl.F.type.b842fd.2 = fn_decl @E.as.J.impl.F.loc24_21.2 [concrete = constants.%E.as.J.impl.F.b07d12.2] { // CHECK:STDOUT: %u.patt: %pattern_type.7ce = binding_pattern u [concrete] // CHECK:STDOUT: %u.param_patt: %pattern_type.7ce = value_param_pattern %u.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] @@ -2388,12 +2388,12 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .U = -// CHECK:STDOUT: .F = %F.decl.loc24_21.1 +// CHECK:STDOUT: .F = %E.as.J.impl.F.decl.loc24_21.1 // CHECK:STDOUT: witness = @E.%J.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @E { -// CHECK:STDOUT: impl_decl @J.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @E.as.J.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%E [concrete = constants.%E] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: %.Self: %J.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] @@ -2408,7 +2408,7 @@ fn F() { // CHECK:STDOUT: requirement_rewrite %impl.elem0, %i32 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %J.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant, @J.impl.%F.decl.loc24_21.2), @J.impl [concrete] +// CHECK:STDOUT: %J.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant, @E.as.J.impl.%E.as.J.impl.F.decl.loc24_21.2), @E.as.J.impl [concrete] // CHECK:STDOUT: %J.impl_witness: = impl_witness %J.impl_witness_table [concrete = constants.%J.impl_witness] // CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] @@ -2419,30 +2419,30 @@ fn F() { // CHECK:STDOUT: .Self = constants.%E // CHECK:STDOUT: .J = // CHECK:STDOUT: .U = -// CHECK:STDOUT: extend @J.impl.%.loc9_20 +// CHECK:STDOUT: extend @E.as.J.impl.%.loc9_20 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc5(@J.%Self: %J.type) { +// CHECK:STDOUT: generic fn @J.F(@J.%Self: %J.type) { // CHECK:STDOUT: %Self: %J.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.ccd)] // CHECK:STDOUT: %J.lookup_impl_witness: = lookup_impl_witness %Self, @J [symbolic = %J.lookup_impl_witness (constants.%J.lookup_impl_witness.646)] -// CHECK:STDOUT: %impl.elem0.loc5_11.2: type = impl_witness_access %J.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc5_11.2 (constants.%impl.elem0.11f)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %impl.elem0.loc5_11.2 [symbolic = %pattern_type (constants.%pattern_type.b98)] +// CHECK:STDOUT: %impl.elem0.loc5_11.1: type = impl_witness_access %J.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.11f)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %impl.elem0.loc5_11.1 [symbolic = %pattern_type (constants.%pattern_type.b98)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%u.param: @F.loc5.%impl.elem0.loc5_11.2 (%impl.elem0.11f)) -> @F.loc5.%impl.elem0.loc5_11.2 (%impl.elem0.11f); +// CHECK:STDOUT: fn(%u.param: @J.F.%impl.elem0.loc5_11.1 (%impl.elem0.11f)) -> @J.F.%impl.elem0.loc5_11.1 (%impl.elem0.11f); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc24_21.1(%u.param: ) -> { +// CHECK:STDOUT: fn @E.as.J.impl.F.loc24_21.1(%u.param: ) -> { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %u.ref: = name_ref u, %u // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc24_21.2(%u.param: %i32) -> %i32 [thunk @J.impl.%F.decl.loc24_21.1] { +// CHECK:STDOUT: fn @E.as.J.impl.F.loc24_21.2(%u.param: %i32) -> %i32 [thunk @E.as.J.impl.%E.as.J.impl.F.decl.loc24_21.1] { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %F.ref: %F.type.b842fd.1 = name_ref F, @J.impl.%F.decl.loc24_21.1 [concrete = constants.%F.b07d12.1] +// CHECK:STDOUT: %F.ref: %E.as.J.impl.F.type.b842fd.1 = name_ref F, @E.as.J.impl.%E.as.J.impl.F.decl.loc24_21.1 [concrete = constants.%E.as.J.impl.F.b07d12.1] // CHECK:STDOUT: %u.ref: %i32 = name_ref u, %u.param // CHECK:STDOUT: %return.ref: ref %i32 = name_ref , %return.param -// CHECK:STDOUT: %F.call: init = call %F.ref() +// CHECK:STDOUT: %E.as.J.impl.F.call: init = call %F.ref() // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -2450,19 +2450,19 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: specific @U(constants.%J.facet.521) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%Self.ccd) { +// CHECK:STDOUT: specific @J.F(constants.%Self.ccd) { // CHECK:STDOUT: %Self => constants.%Self.ccd // CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.lookup_impl_witness.646 -// CHECK:STDOUT: %impl.elem0.loc5_11.2 => constants.%impl.elem0.11f +// CHECK:STDOUT: %impl.elem0.loc5_11.1 => constants.%impl.elem0.11f // CHECK:STDOUT: %pattern_type => constants.%pattern_type.b98 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @U(constants.%J.facet.330) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%J.facet.f43) { +// CHECK:STDOUT: specific @J.F(constants.%J.facet.f43) { // CHECK:STDOUT: %Self => constants.%J.facet.f43 // CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.impl_witness -// CHECK:STDOUT: %impl.elem0.loc5_11.2 => constants.%i32 +// CHECK:STDOUT: %impl.elem0.loc5_11.1 => constants.%i32 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7ce // CHECK:STDOUT: } // CHECK:STDOUT: @@ -2475,10 +2475,10 @@ fn F() { // CHECK:STDOUT: %assoc0: %J2.assoc_type = assoc_entity element0, @J2.%U2 [concrete] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic] // CHECK:STDOUT: %pattern_type.969: type = pattern_type %Self.as_type [symbolic] -// CHECK:STDOUT: %F.type.c41: type = fn_type @F.loc19 [concrete] +// CHECK:STDOUT: %J2.F.type: type = fn_type @J2.F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F.932: %F.type.c41 = struct_value () [concrete] -// CHECK:STDOUT: %assoc1: %J2.assoc_type = assoc_entity element1, @J2.%F.decl [concrete] +// CHECK:STDOUT: %J2.F: %J2.F.type = struct_value () [concrete] +// CHECK:STDOUT: %assoc1: %J2.assoc_type = assoc_entity element1, @J2.%J2.F.decl [concrete] // CHECK:STDOUT: %.Self: %J2.type = bind_symbolic_name .Self [symbolic_self] // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] // CHECK:STDOUT: %J2.lookup_impl_witness: = lookup_impl_witness %.Self, @J2 [symbolic_self] @@ -2489,21 +2489,21 @@ fn F() { // CHECK:STDOUT: %J2.impl_witness.6a9: = impl_witness file.%J2.impl_witness_table.loc22 [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %pattern_type.a96: type = pattern_type %empty_struct_type [concrete] -// CHECK:STDOUT: %F.type.f405c5.1: type = fn_type @F.loc30_33.1 [concrete] -// CHECK:STDOUT: %F.214a71.1: %F.type.f405c5.1 = struct_value () [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.J2.impl.F.type.f405c5.1: type = fn_type @empty_tuple.type.as.J2.impl.F.loc30_33.1 [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.J2.impl.F.214a71.1: %empty_tuple.type.as.J2.impl.F.type.f405c5.1 = struct_value () [concrete] // CHECK:STDOUT: %J2.facet.86f: %J2.type = facet_value %empty_tuple.type, (%J2.impl_witness.6a9) [concrete] -// CHECK:STDOUT: %F.type.f405c5.2: type = fn_type @F.loc30_33.2 [concrete] -// CHECK:STDOUT: %F.214a71.2: %F.type.f405c5.2 = struct_value () [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.J2.impl.F.type.f405c5.2: type = fn_type @empty_tuple.type.as.J2.impl.F.loc30_33.2 [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.J2.impl.F.214a71.2: %empty_tuple.type.as.J2.impl.F.type.f405c5.2 = struct_value () [concrete] // CHECK:STDOUT: %C2: type = class_type @C2 [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %J2_where.type.df9: type = facet_type <@J2 where %impl.elem0 = %C2> [concrete] // CHECK:STDOUT: %J2.impl_witness.267: = impl_witness file.%J2.impl_witness_table.loc38 [concrete] // CHECK:STDOUT: %pattern_type.838: type = pattern_type %C2 [concrete] -// CHECK:STDOUT: %F.type.05d6a0.1: type = fn_type @F.loc39_33.1 [concrete] -// CHECK:STDOUT: %F.bfa759.1: %F.type.05d6a0.1 = struct_value () [concrete] +// CHECK:STDOUT: %C2.as.J2.impl.F.type.05d6a0.1: type = fn_type @C2.as.J2.impl.F.loc39_33.1 [concrete] +// CHECK:STDOUT: %C2.as.J2.impl.F.bfa759.1: %C2.as.J2.impl.F.type.05d6a0.1 = struct_value () [concrete] // CHECK:STDOUT: %J2.facet.c3f: %J2.type = facet_value %C2, (%J2.impl_witness.267) [concrete] -// CHECK:STDOUT: %F.type.05d6a0.2: type = fn_type @F.loc39_33.2 [concrete] -// CHECK:STDOUT: %F.bfa759.2: %F.type.05d6a0.2 = struct_value () [concrete] +// CHECK:STDOUT: %C2.as.J2.impl.F.type.05d6a0.2: type = fn_type @C2.as.J2.impl.F.loc39_33.2 [concrete] +// CHECK:STDOUT: %C2.as.J2.impl.F.bfa759.2: %C2.as.J2.impl.F.type.05d6a0.2 = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -2521,7 +2521,7 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %J2.decl: type = interface_decl @J2 [concrete = constants.%J2.type] {} {} -// CHECK:STDOUT: impl_decl @J2.impl.4e9 [concrete] {} { +// CHECK:STDOUT: impl_decl @empty_tuple.type.as.J2.impl [concrete] {} { // CHECK:STDOUT: %.loc22_7.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc22_7.2: type = converted %.loc22_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %J2.ref: type = name_ref J2, file.%J2.decl [concrete = constants.%J2.type] @@ -2537,11 +2537,11 @@ fn F() { // CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc22_28.2 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %J2.impl_witness_table.loc22 = impl_witness_table (%impl_witness_assoc_constant.loc22, @J2.impl.4e9.%F.decl.loc30_33.2), @J2.impl.4e9 [concrete] +// CHECK:STDOUT: %J2.impl_witness_table.loc22 = impl_witness_table (%impl_witness_assoc_constant.loc22, @empty_tuple.type.as.J2.impl.%empty_tuple.type.as.J2.impl.F.decl.loc30_33.2), @empty_tuple.type.as.J2.impl [concrete] // CHECK:STDOUT: %J2.impl_witness.loc22: = impl_witness %J2.impl_witness_table.loc22 [concrete = constants.%J2.impl_witness.6a9] // CHECK:STDOUT: %impl_witness_assoc_constant.loc22: type = impl_witness_assoc_constant constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %C2.decl: type = class_decl @C2 [concrete = constants.%C2] {} {} -// CHECK:STDOUT: impl_decl @J2.impl.8b3 [concrete] {} { +// CHECK:STDOUT: impl_decl @C2.as.J2.impl [concrete] {} { // CHECK:STDOUT: %C2.ref.loc38_6: type = name_ref C2, file.%C2.decl [concrete = constants.%C2] // CHECK:STDOUT: %J2.ref: type = name_ref J2, file.%J2.decl [concrete = constants.%J2.type] // CHECK:STDOUT: %.Self: %J2.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] @@ -2555,7 +2555,7 @@ fn F() { // CHECK:STDOUT: requirement_rewrite %impl.elem0, %C2.ref.loc38_27 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %J2.impl_witness_table.loc38 = impl_witness_table (%impl_witness_assoc_constant.loc38, @J2.impl.8b3.%F.decl.loc39_33.2), @J2.impl.8b3 [concrete] +// CHECK:STDOUT: %J2.impl_witness_table.loc38 = impl_witness_table (%impl_witness_assoc_constant.loc38, @C2.as.J2.impl.%C2.as.J2.impl.F.decl.loc39_33.2), @C2.as.J2.impl [concrete] // CHECK:STDOUT: %J2.impl_witness.loc38: = impl_witness %J2.impl_witness_table.loc38 [concrete = constants.%J2.impl_witness.267] // CHECK:STDOUT: %impl_witness_assoc_constant.loc38: type = impl_witness_assoc_constant constants.%C2 [concrete = constants.%C2] // CHECK:STDOUT: } @@ -2565,43 +2565,43 @@ fn F() { // CHECK:STDOUT: %U2: type = assoc_const_decl @U2 [concrete] { // CHECK:STDOUT: %assoc0: %J2.assoc_type = assoc_entity element0, @J2.%U2 [concrete = constants.%assoc0] // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type.c41 = fn_decl @F.loc19 [concrete = constants.%F.932] { -// CHECK:STDOUT: %self.patt: @F.loc19.%pattern_type (%pattern_type.969) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.loc19.%pattern_type (%pattern_type.969) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %J2.F.decl: %J2.F.type = fn_decl @J2.F [concrete = constants.%J2.F] { +// CHECK:STDOUT: %self.patt: @J2.F.%pattern_type (%pattern_type.969) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @J2.F.%pattern_type (%pattern_type.969) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %z.patt: = binding_pattern z [concrete] // CHECK:STDOUT: %z.param_patt: = value_param_pattern %z.patt, call_param1 [concrete] // CHECK:STDOUT: %return.patt: = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc19_35: %J2.type = name_ref Self, @J2.%Self [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %self.param: @F.loc19.%Self.as_type.loc19_14.2 (%Self.as_type) = value_param call_param0 -// CHECK:STDOUT: %.loc19_14.1: type = splice_block %.loc19_14.2 [symbolic = %Self.as_type.loc19_14.2 (constants.%Self.as_type)] { +// CHECK:STDOUT: %self.param: @J2.F.%Self.as_type.loc19_14.1 (%Self.as_type) = value_param call_param0 +// CHECK:STDOUT: %.loc19_14.1: type = splice_block %.loc19_14.2 [symbolic = %Self.as_type.loc19_14.1 (constants.%Self.as_type)] { // CHECK:STDOUT: %Self.ref.loc19_14: %J2.type = name_ref Self, @J2.%Self [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc19_14.1: type = facet_access_type %Self.ref.loc19_14 [symbolic = %Self.as_type.loc19_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc19_14.2: type = converted %Self.ref.loc19_14, %Self.as_type.loc19_14.1 [symbolic = %Self.as_type.loc19_14.2 (constants.%Self.as_type)] +// CHECK:STDOUT: %Self.as_type.loc19_14.2: type = facet_access_type %Self.ref.loc19_14 [symbolic = %Self.as_type.loc19_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc19_14.2: type = converted %Self.ref.loc19_14, %Self.as_type.loc19_14.2 [symbolic = %Self.as_type.loc19_14.1 (constants.%Self.as_type)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.loc19.%Self.as_type.loc19_14.2 (%Self.as_type) = bind_name self, %self.param +// CHECK:STDOUT: %self: @J2.F.%Self.as_type.loc19_14.1 (%Self.as_type) = bind_name self, %self.param // CHECK:STDOUT: %z.param: = value_param call_param1 // CHECK:STDOUT: %Self.ref.loc19_23: %J2.type = name_ref Self, @J2.%Self [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %z: = bind_name z, %z.param // CHECK:STDOUT: %return.param: ref = out_param call_param2 // CHECK:STDOUT: %return: ref = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc1: %J2.assoc_type = assoc_entity element1, %F.decl [concrete = constants.%assoc1] +// CHECK:STDOUT: %assoc1: %J2.assoc_type = assoc_entity element1, %J2.F.decl [concrete = constants.%assoc1] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .U2 = @U2.%assoc0 // CHECK:STDOUT: .F = %assoc1 -// CHECK:STDOUT: witness = (%U2, %F.decl) +// CHECK:STDOUT: witness = (%U2, %J2.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic assoc_const @U2(@J2.%Self: %J2.type) { // CHECK:STDOUT: assoc_const U2:! type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @J2.impl.4e9: %.loc22_7.2 as %.loc22_15 { -// CHECK:STDOUT: %F.decl.loc30_33.1: %F.type.f405c5.1 = fn_decl @F.loc30_33.1 [concrete = constants.%F.214a71.1] { +// CHECK:STDOUT: impl @empty_tuple.type.as.J2.impl: %.loc22_7.2 as %.loc22_15 { +// CHECK:STDOUT: %empty_tuple.type.as.J2.impl.F.decl.loc30_33.1: %empty_tuple.type.as.J2.impl.F.type.f405c5.1 = fn_decl @empty_tuple.type.as.J2.impl.F.loc30_33.1 [concrete = constants.%empty_tuple.type.as.J2.impl.F.214a71.1] { // CHECK:STDOUT: %self.patt: %pattern_type.cb1 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.cb1 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %z.patt: %pattern_type.a96 = binding_pattern z [concrete] @@ -2612,7 +2612,7 @@ fn F() { // CHECK:STDOUT: %.loc30_31.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc30_31.2: type = converted %.loc30_31.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %self.param: %empty_tuple.type = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @J2.impl.4e9.%.loc22_7.2 [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @empty_tuple.type.as.J2.impl.%.loc22_7.2 [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %self: %empty_tuple.type = bind_name self, %self.param // CHECK:STDOUT: %z.param: %empty_struct_type = value_param call_param1 // CHECK:STDOUT: %.loc30_24.1: type = splice_block %.loc30_24.3 [concrete = constants.%empty_struct_type] { @@ -2623,7 +2623,7 @@ fn F() { // CHECK:STDOUT: %return.param: ref %empty_struct_type = out_param call_param2 // CHECK:STDOUT: %return: ref %empty_struct_type = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl.loc30_33.2: %F.type.f405c5.2 = fn_decl @F.loc30_33.2 [concrete = constants.%F.214a71.2] { +// CHECK:STDOUT: %empty_tuple.type.as.J2.impl.F.decl.loc30_33.2: %empty_tuple.type.as.J2.impl.F.type.f405c5.2 = fn_decl @empty_tuple.type.as.J2.impl.F.loc30_33.2 [concrete = constants.%empty_tuple.type.as.J2.impl.F.214a71.2] { // CHECK:STDOUT: %self.patt: %pattern_type.cb1 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.cb1 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %.param_patt: = value_param_pattern , call_param1 [concrete] @@ -2638,12 +2638,12 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl.loc30_33.1 +// CHECK:STDOUT: .F = %empty_tuple.type.as.J2.impl.F.decl.loc30_33.1 // CHECK:STDOUT: witness = file.%J2.impl_witness.loc22 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @J2.impl.8b3: %C2.ref.loc38_6 as %.loc38_15 { -// CHECK:STDOUT: %F.decl.loc39_33.1: %F.type.05d6a0.1 = fn_decl @F.loc39_33.1 [concrete = constants.%F.bfa759.1] { +// CHECK:STDOUT: impl @C2.as.J2.impl: %C2.ref.loc38_6 as %.loc38_15 { +// CHECK:STDOUT: %C2.as.J2.impl.F.decl.loc39_33.1: %C2.as.J2.impl.F.type.05d6a0.1 = fn_decl @C2.as.J2.impl.F.loc39_33.1 [concrete = constants.%C2.as.J2.impl.F.bfa759.1] { // CHECK:STDOUT: %self.patt: %pattern_type.838 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.838 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %z.patt: %pattern_type.838 = binding_pattern z [concrete] @@ -2653,7 +2653,7 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: %C2.ref.loc39_30: type = name_ref C2, file.%C2.decl [concrete = constants.%C2] // CHECK:STDOUT: %self.param: %C2 = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @J2.impl.8b3.%C2.ref.loc38_6 [concrete = constants.%C2] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @C2.as.J2.impl.%C2.ref.loc38_6 [concrete = constants.%C2] // CHECK:STDOUT: %self: %C2 = bind_name self, %self.param // CHECK:STDOUT: %z.param: %C2 = value_param call_param1 // CHECK:STDOUT: %C2.ref.loc39_23: type = name_ref C2, file.%C2.decl [concrete = constants.%C2] @@ -2661,7 +2661,7 @@ fn F() { // CHECK:STDOUT: %return.param: ref %C2 = out_param call_param2 // CHECK:STDOUT: %return: ref %C2 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl.loc39_33.2: %F.type.05d6a0.2 = fn_decl @F.loc39_33.2 [concrete = constants.%F.bfa759.2] { +// CHECK:STDOUT: %C2.as.J2.impl.F.decl.loc39_33.2: %C2.as.J2.impl.F.type.05d6a0.2 = fn_decl @C2.as.J2.impl.F.loc39_33.2 [concrete = constants.%C2.as.J2.impl.F.bfa759.2] { // CHECK:STDOUT: %self.patt: %pattern_type.838 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.838 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %.param_patt: = value_param_pattern , call_param1 [concrete] @@ -2677,7 +2677,7 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .C2 = -// CHECK:STDOUT: .F = %F.decl.loc39_33.1 +// CHECK:STDOUT: .F = %C2.as.J2.impl.F.decl.loc39_33.1 // CHECK:STDOUT: witness = file.%J2.impl_witness.loc38 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -2692,65 +2692,65 @@ fn F() { // CHECK:STDOUT: .Self = constants.%C2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc19(@J2.%Self: %J2.type) { +// CHECK:STDOUT: generic fn @J2.F(@J2.%Self: %J2.type) { // CHECK:STDOUT: %Self: %J2.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc19_14.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc19_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc19_14.2 [symbolic = %pattern_type (constants.%pattern_type.969)] +// CHECK:STDOUT: %Self.as_type.loc19_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc19_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc19_14.1 [symbolic = %pattern_type (constants.%pattern_type.969)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @F.loc19.%Self.as_type.loc19_14.2 (%Self.as_type), %z.param: ) -> ; +// CHECK:STDOUT: fn(%self.param: @J2.F.%Self.as_type.loc19_14.1 (%Self.as_type), %z.param: ) -> ; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc30_33.1(%self.param: %empty_tuple.type, %z.param: %empty_struct_type) -> %empty_struct_type { +// CHECK:STDOUT: fn @empty_tuple.type.as.J2.impl.F.loc30_33.1(%self.param: %empty_tuple.type, %z.param: %empty_struct_type) -> %empty_struct_type { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %z.ref: %empty_struct_type = name_ref z, %z // CHECK:STDOUT: return %z.ref // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc30_33.2(%self.param: %empty_tuple.type, %.param: ) -> [thunk @J2.impl.4e9.%F.decl.loc30_33.1] { +// CHECK:STDOUT: fn @empty_tuple.type.as.J2.impl.F.loc30_33.2(%self.param: %empty_tuple.type, %.param: ) -> [thunk @empty_tuple.type.as.J2.impl.%empty_tuple.type.as.J2.impl.F.decl.loc30_33.1] { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %F.ref: %F.type.f405c5.1 = name_ref F, @J2.impl.4e9.%F.decl.loc30_33.1 [concrete = constants.%F.214a71.1] +// CHECK:STDOUT: %F.ref: %empty_tuple.type.as.J2.impl.F.type.f405c5.1 = name_ref F, @empty_tuple.type.as.J2.impl.%empty_tuple.type.as.J2.impl.F.decl.loc30_33.1 [concrete = constants.%empty_tuple.type.as.J2.impl.F.214a71.1] // CHECK:STDOUT: %self.ref: %empty_tuple.type = name_ref self, %self.param // CHECK:STDOUT: %.ref: = name_ref , %.param // CHECK:STDOUT: %return.ref: ref = name_ref , %return.param // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc39_33.1(%self.param: %C2, %z.param: %C2) -> %C2 { +// CHECK:STDOUT: fn @C2.as.J2.impl.F.loc39_33.1(%self.param: %C2, %z.param: %C2) -> %C2 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: %C2 = name_ref self, %self // CHECK:STDOUT: return %self.ref // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc39_33.2(%self.param: %C2, %.param: ) -> [thunk @J2.impl.8b3.%F.decl.loc39_33.1] { +// CHECK:STDOUT: fn @C2.as.J2.impl.F.loc39_33.2(%self.param: %C2, %.param: ) -> [thunk @C2.as.J2.impl.%C2.as.J2.impl.F.decl.loc39_33.1] { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %F.ref: %F.type.05d6a0.1 = name_ref F, @J2.impl.8b3.%F.decl.loc39_33.1 [concrete = constants.%F.bfa759.1] +// CHECK:STDOUT: %F.ref: %C2.as.J2.impl.F.type.05d6a0.1 = name_ref F, @C2.as.J2.impl.%C2.as.J2.impl.F.decl.loc39_33.1 [concrete = constants.%C2.as.J2.impl.F.bfa759.1] // CHECK:STDOUT: %self.ref: %C2 = name_ref self, %self.param // CHECK:STDOUT: %.ref: = name_ref , %.param // CHECK:STDOUT: %return.ref: ref = name_ref , %return.param -// CHECK:STDOUT: %F.bound: = bound_method %self.ref, %F.ref -// CHECK:STDOUT: %F.call: init %C2 = call %F.bound(%self.ref, ) +// CHECK:STDOUT: %C2.as.J2.impl.F.bound: = bound_method %self.ref, %F.ref +// CHECK:STDOUT: %C2.as.J2.impl.F.call: init %C2 = call %C2.as.J2.impl.F.bound(%self.ref, ) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @U2(constants.%Self) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc19(constants.%Self) { +// CHECK:STDOUT: specific @J2.F(constants.%Self) { // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %Self.as_type.loc19_14.2 => constants.%Self.as_type +// CHECK:STDOUT: %Self.as_type.loc19_14.1 => constants.%Self.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.969 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @U2(constants.%J2.facet.e30) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc19(constants.%J2.facet.86f) { +// CHECK:STDOUT: specific @J2.F(constants.%J2.facet.86f) { // CHECK:STDOUT: %Self => constants.%J2.facet.86f -// CHECK:STDOUT: %Self.as_type.loc19_14.2 => constants.%empty_tuple.type +// CHECK:STDOUT: %Self.as_type.loc19_14.1 => constants.%empty_tuple.type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.cb1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc19(constants.%J2.facet.c3f) { +// CHECK:STDOUT: specific @J2.F(constants.%J2.facet.c3f) { // CHECK:STDOUT: %Self => constants.%J2.facet.c3f -// CHECK:STDOUT: %Self.as_type.loc19_14.2 => constants.%C2 +// CHECK:STDOUT: %Self.as_type.loc19_14.1 => constants.%C2 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.838 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -2767,10 +2767,10 @@ fn F() { // CHECK:STDOUT: %K.facet.589: %K.type = facet_value %Self.as_type, (%K.lookup_impl_witness.da8) [symbolic] // CHECK:STDOUT: %impl.elem0.75d: type = impl_witness_access %K.lookup_impl_witness.da8, element0 [symbolic] // CHECK:STDOUT: %pattern_type.6c7: type = pattern_type %impl.elem0.75d [symbolic] -// CHECK:STDOUT: %F.type.cf5: type = fn_type @F.loc5 [concrete] +// CHECK:STDOUT: %K.F.type: type = fn_type @K.F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F.06b: %F.type.cf5 = struct_value () [concrete] -// CHECK:STDOUT: %assoc1: %K.assoc_type = assoc_entity element1, @K.%F.decl [concrete] +// CHECK:STDOUT: %K.F: %K.F.type = struct_value () [concrete] +// CHECK:STDOUT: %assoc1: %K.assoc_type = assoc_entity element1, @K.%K.F.decl [concrete] // CHECK:STDOUT: %.Self: %K.type = bind_symbolic_name .Self [symbolic_self] // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] // CHECK:STDOUT: %K.lookup_impl_witness.eb2: = lookup_impl_witness %.Self, @K [symbolic_self] @@ -2782,12 +2782,12 @@ fn F() { // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [concrete] // CHECK:STDOUT: %pattern_type.414: type = pattern_type %struct_type.x [concrete] -// CHECK:STDOUT: %F.type.c5249c.1: type = fn_type @F.loc16_45.1 [concrete] -// CHECK:STDOUT: %F.5eb4dd.1: %F.type.c5249c.1 = struct_value () [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.K.impl.F.type.c5249c.1: type = fn_type @empty_tuple.type.as.K.impl.F.loc16_45.1 [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.K.impl.F.5eb4dd.1: %empty_tuple.type.as.K.impl.F.type.c5249c.1 = struct_value () [concrete] // CHECK:STDOUT: %K.facet.e32: %K.type = facet_value %empty_tuple.type, (%K.impl_witness) [concrete] // CHECK:STDOUT: %pattern_type.e85: type = pattern_type %struct_type.a [concrete] -// CHECK:STDOUT: %F.type.c5249c.2: type = fn_type @F.loc16_45.2 [concrete] -// CHECK:STDOUT: %F.5eb4dd.2: %F.type.c5249c.2 = struct_value () [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.K.impl.F.type.c5249c.2: type = fn_type @empty_tuple.type.as.K.impl.F.loc16_45.2 [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.K.impl.F.5eb4dd.2: %empty_tuple.type.as.K.impl.F.type.c5249c.2 = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -2804,7 +2804,7 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %K.decl: type = interface_decl @K [concrete = constants.%K.type] {} {} -// CHECK:STDOUT: impl_decl @K.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @empty_tuple.type.as.K.impl [concrete] {} { // CHECK:STDOUT: %.loc8_7.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc8_7.2: type = converted %.loc8_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %K.ref: type = name_ref K, file.%K.decl [concrete = constants.%K.type] @@ -2821,7 +2821,7 @@ fn F() { // CHECK:STDOUT: requirement_rewrite %impl.elem0, %struct_type.a // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %K.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant, @K.impl.%F.decl.loc16_45.2), @K.impl [concrete] +// CHECK:STDOUT: %K.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant, @empty_tuple.type.as.K.impl.%empty_tuple.type.as.K.impl.F.decl.loc16_45.2), @empty_tuple.type.as.K.impl [concrete] // CHECK:STDOUT: %K.impl_witness: = impl_witness %K.impl_witness_table [concrete = constants.%K.impl_witness] // CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%struct_type.a [concrete = constants.%struct_type.a] // CHECK:STDOUT: } @@ -2831,47 +2831,47 @@ fn F() { // CHECK:STDOUT: %V: type = assoc_const_decl @V [concrete] { // CHECK:STDOUT: %assoc0: %K.assoc_type = assoc_entity element0, @K.%V [concrete = constants.%assoc0] // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type.cf5 = fn_decl @F.loc5 [concrete = constants.%F.06b] { -// CHECK:STDOUT: %self.patt: @F.loc5.%pattern_type.loc5_8 (%pattern_type.ca1) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.loc5.%pattern_type.loc5_8 (%pattern_type.ca1) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %v.patt: @F.loc5.%pattern_type.loc5_20 (%pattern_type.6c7) = binding_pattern v [concrete] -// CHECK:STDOUT: %v.param_patt: @F.loc5.%pattern_type.loc5_20 (%pattern_type.6c7) = value_param_pattern %v.patt, call_param1 [concrete] -// CHECK:STDOUT: %return.patt: @F.loc5.%pattern_type.loc5_20 (%pattern_type.6c7) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @F.loc5.%pattern_type.loc5_20 (%pattern_type.6c7) = out_param_pattern %return.patt, call_param2 [concrete] +// CHECK:STDOUT: %K.F.decl: %K.F.type = fn_decl @K.F [concrete = constants.%K.F] { +// CHECK:STDOUT: %self.patt: @K.F.%pattern_type.loc5_8 (%pattern_type.ca1) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @K.F.%pattern_type.loc5_8 (%pattern_type.ca1) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %v.patt: @K.F.%pattern_type.loc5_20 (%pattern_type.6c7) = binding_pattern v [concrete] +// CHECK:STDOUT: %v.param_patt: @K.F.%pattern_type.loc5_20 (%pattern_type.6c7) = value_param_pattern %v.patt, call_param1 [concrete] +// CHECK:STDOUT: %return.patt: @K.F.%pattern_type.loc5_20 (%pattern_type.6c7) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @K.F.%pattern_type.loc5_20 (%pattern_type.6c7) = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %impl.elem0.loc5_29: type = impl_witness_access constants.%K.lookup_impl_witness.da8, element0 [symbolic = %impl.elem0.loc5_23.2 (constants.%impl.elem0.75d)] -// CHECK:STDOUT: %V.ref.loc5_29: type = name_ref V, %impl.elem0.loc5_29 [symbolic = %impl.elem0.loc5_23.2 (constants.%impl.elem0.75d)] -// CHECK:STDOUT: %self.param: @F.loc5.%Self.as_type.loc5_14.2 (%Self.as_type) = value_param call_param0 -// CHECK:STDOUT: %.loc5_14.1: type = splice_block %.loc5_14.2 [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type)] { +// CHECK:STDOUT: %impl.elem0.loc5_29: type = impl_witness_access constants.%K.lookup_impl_witness.da8, element0 [symbolic = %impl.elem0.loc5_23.1 (constants.%impl.elem0.75d)] +// CHECK:STDOUT: %V.ref.loc5_29: type = name_ref V, %impl.elem0.loc5_29 [symbolic = %impl.elem0.loc5_23.1 (constants.%impl.elem0.75d)] +// CHECK:STDOUT: %self.param: @K.F.%Self.as_type.loc5_14.1 (%Self.as_type) = value_param call_param0 +// CHECK:STDOUT: %.loc5_14.1: type = splice_block %.loc5_14.2 [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] { // CHECK:STDOUT: %Self.ref: %K.type = name_ref Self, @K.%Self [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc5_14.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc5_14.2: type = converted %Self.ref, %Self.as_type.loc5_14.1 [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type)] +// CHECK:STDOUT: %Self.as_type.loc5_14.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc5_14.2: type = converted %Self.ref, %Self.as_type.loc5_14.2 [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.loc5.%Self.as_type.loc5_14.2 (%Self.as_type) = bind_name self, %self.param -// CHECK:STDOUT: %v.param: @F.loc5.%impl.elem0.loc5_23.2 (%impl.elem0.75d) = value_param call_param1 -// CHECK:STDOUT: %.loc5_23: type = splice_block %V.ref.loc5_23 [symbolic = %impl.elem0.loc5_23.2 (constants.%impl.elem0.75d)] { -// CHECK:STDOUT: %impl.elem0.loc5_23.1: type = impl_witness_access constants.%K.lookup_impl_witness.da8, element0 [symbolic = %impl.elem0.loc5_23.2 (constants.%impl.elem0.75d)] -// CHECK:STDOUT: %V.ref.loc5_23: type = name_ref V, %impl.elem0.loc5_23.1 [symbolic = %impl.elem0.loc5_23.2 (constants.%impl.elem0.75d)] +// CHECK:STDOUT: %self: @K.F.%Self.as_type.loc5_14.1 (%Self.as_type) = bind_name self, %self.param +// CHECK:STDOUT: %v.param: @K.F.%impl.elem0.loc5_23.1 (%impl.elem0.75d) = value_param call_param1 +// CHECK:STDOUT: %.loc5_23: type = splice_block %V.ref.loc5_23 [symbolic = %impl.elem0.loc5_23.1 (constants.%impl.elem0.75d)] { +// CHECK:STDOUT: %impl.elem0.loc5_23.2: type = impl_witness_access constants.%K.lookup_impl_witness.da8, element0 [symbolic = %impl.elem0.loc5_23.1 (constants.%impl.elem0.75d)] +// CHECK:STDOUT: %V.ref.loc5_23: type = name_ref V, %impl.elem0.loc5_23.2 [symbolic = %impl.elem0.loc5_23.1 (constants.%impl.elem0.75d)] // CHECK:STDOUT: } -// CHECK:STDOUT: %v: @F.loc5.%impl.elem0.loc5_23.2 (%impl.elem0.75d) = bind_name v, %v.param -// CHECK:STDOUT: %return.param: ref @F.loc5.%impl.elem0.loc5_23.2 (%impl.elem0.75d) = out_param call_param2 -// CHECK:STDOUT: %return: ref @F.loc5.%impl.elem0.loc5_23.2 (%impl.elem0.75d) = return_slot %return.param +// CHECK:STDOUT: %v: @K.F.%impl.elem0.loc5_23.1 (%impl.elem0.75d) = bind_name v, %v.param +// CHECK:STDOUT: %return.param: ref @K.F.%impl.elem0.loc5_23.1 (%impl.elem0.75d) = out_param call_param2 +// CHECK:STDOUT: %return: ref @K.F.%impl.elem0.loc5_23.1 (%impl.elem0.75d) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc1: %K.assoc_type = assoc_entity element1, %F.decl [concrete = constants.%assoc1] +// CHECK:STDOUT: %assoc1: %K.assoc_type = assoc_entity element1, %K.F.decl [concrete = constants.%assoc1] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .V = @V.%assoc0 // CHECK:STDOUT: .F = %assoc1 -// CHECK:STDOUT: witness = (%V, %F.decl) +// CHECK:STDOUT: witness = (%V, %K.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic assoc_const @V(@K.%Self: %K.type) { // CHECK:STDOUT: assoc_const V:! type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @K.impl: %.loc8_7.2 as %.loc8_14 { -// CHECK:STDOUT: %F.decl.loc16_45.1: %F.type.c5249c.1 = fn_decl @F.loc16_45.1 [concrete = constants.%F.5eb4dd.1] { +// CHECK:STDOUT: impl @empty_tuple.type.as.K.impl: %.loc8_7.2 as %.loc8_14 { +// CHECK:STDOUT: %empty_tuple.type.as.K.impl.F.decl.loc16_45.1: %empty_tuple.type.as.K.impl.F.type.c5249c.1 = fn_decl @empty_tuple.type.as.K.impl.F.loc16_45.1 [concrete = constants.%empty_tuple.type.as.K.impl.F.5eb4dd.1] { // CHECK:STDOUT: %self.patt: %pattern_type.cb1 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.cb1 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %v.patt: %pattern_type.414 = binding_pattern v [concrete] @@ -2883,7 +2883,7 @@ fn F() { // CHECK:STDOUT: %.loc16_42.2: type = converted %.loc16_42.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.x.loc16_43: type = struct_type {.x: %empty_tuple.type} [concrete = constants.%struct_type.x] // CHECK:STDOUT: %self.param: %empty_tuple.type = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @K.impl.%.loc8_7.2 [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @empty_tuple.type.as.K.impl.%.loc8_7.2 [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %self: %empty_tuple.type = bind_name self, %self.param // CHECK:STDOUT: %v.param: %struct_type.x = value_param call_param1 // CHECK:STDOUT: %.loc16_30: type = splice_block %struct_type.x.loc16_30 [concrete = constants.%struct_type.x] { @@ -2895,7 +2895,7 @@ fn F() { // CHECK:STDOUT: %return.param: ref %struct_type.x = out_param call_param2 // CHECK:STDOUT: %return: ref %struct_type.x = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl.loc16_45.2: %F.type.c5249c.2 = fn_decl @F.loc16_45.2 [concrete = constants.%F.5eb4dd.2] { +// CHECK:STDOUT: %empty_tuple.type.as.K.impl.F.decl.loc16_45.2: %empty_tuple.type.as.K.impl.F.type.c5249c.2 = fn_decl @empty_tuple.type.as.K.impl.F.loc16_45.2 [concrete = constants.%empty_tuple.type.as.K.impl.F.5eb4dd.2] { // CHECK:STDOUT: %self.patt: %pattern_type.cb1 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.cb1 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %v.patt: %pattern_type.e85 = binding_pattern v [concrete] @@ -2912,30 +2912,30 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl.loc16_45.1 +// CHECK:STDOUT: .F = %empty_tuple.type.as.K.impl.F.decl.loc16_45.1 // CHECK:STDOUT: witness = file.%K.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc5(@K.%Self: %K.type) { +// CHECK:STDOUT: generic fn @K.F(@K.%Self: %K.type) { // CHECK:STDOUT: %Self: %K.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc5_14.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %pattern_type.loc5_8: type = pattern_type %Self.as_type.loc5_14.2 [symbolic = %pattern_type.loc5_8 (constants.%pattern_type.ca1)] +// CHECK:STDOUT: %Self.as_type.loc5_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %pattern_type.loc5_8: type = pattern_type %Self.as_type.loc5_14.1 [symbolic = %pattern_type.loc5_8 (constants.%pattern_type.ca1)] // CHECK:STDOUT: %K.lookup_impl_witness: = lookup_impl_witness %Self, @K [symbolic = %K.lookup_impl_witness (constants.%K.lookup_impl_witness.da8)] -// CHECK:STDOUT: %impl.elem0.loc5_23.2: type = impl_witness_access %K.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc5_23.2 (constants.%impl.elem0.75d)] -// CHECK:STDOUT: %pattern_type.loc5_20: type = pattern_type %impl.elem0.loc5_23.2 [symbolic = %pattern_type.loc5_20 (constants.%pattern_type.6c7)] +// CHECK:STDOUT: %impl.elem0.loc5_23.1: type = impl_witness_access %K.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc5_23.1 (constants.%impl.elem0.75d)] +// CHECK:STDOUT: %pattern_type.loc5_20: type = pattern_type %impl.elem0.loc5_23.1 [symbolic = %pattern_type.loc5_20 (constants.%pattern_type.6c7)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @F.loc5.%Self.as_type.loc5_14.2 (%Self.as_type), %v.param: @F.loc5.%impl.elem0.loc5_23.2 (%impl.elem0.75d)) -> @F.loc5.%impl.elem0.loc5_23.2 (%impl.elem0.75d); +// CHECK:STDOUT: fn(%self.param: @K.F.%Self.as_type.loc5_14.1 (%Self.as_type), %v.param: @K.F.%impl.elem0.loc5_23.1 (%impl.elem0.75d)) -> @K.F.%impl.elem0.loc5_23.1 (%impl.elem0.75d); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc16_45.1(%self.param: %empty_tuple.type, %v.param: %struct_type.x) -> %struct_type.x { +// CHECK:STDOUT: fn @empty_tuple.type.as.K.impl.F.loc16_45.1(%self.param: %empty_tuple.type, %v.param: %struct_type.x) -> %struct_type.x { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %v.ref: %struct_type.x = name_ref v, %v // CHECK:STDOUT: return %v.ref // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc16_45.2(%self.param: %empty_tuple.type, %v.param: %struct_type.a) -> %struct_type.a [thunk @K.impl.%F.decl.loc16_45.1] { +// CHECK:STDOUT: fn @empty_tuple.type.as.K.impl.F.loc16_45.2(%self.param: %empty_tuple.type, %v.param: %struct_type.a) -> %struct_type.a [thunk @empty_tuple.type.as.K.impl.%empty_tuple.type.as.K.impl.F.decl.loc16_45.1] { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %F.ref: %F.type.c5249c.1 = name_ref F, @K.impl.%F.decl.loc16_45.1 [concrete = constants.%F.5eb4dd.1] +// CHECK:STDOUT: %F.ref: %empty_tuple.type.as.K.impl.F.type.c5249c.1 = name_ref F, @empty_tuple.type.as.K.impl.%empty_tuple.type.as.K.impl.F.decl.loc16_45.1 [concrete = constants.%empty_tuple.type.as.K.impl.F.5eb4dd.1] // CHECK:STDOUT: %self.ref: %empty_tuple.type = name_ref self, %self.param // CHECK:STDOUT: %v.ref: %struct_type.a = name_ref v, %v.param // CHECK:STDOUT: %return.ref: ref %struct_type.a = name_ref , %return.param @@ -2946,23 +2946,23 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: specific @V(constants.%K.facet.589) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%Self) { +// CHECK:STDOUT: specific @K.F(constants.%Self) { // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %Self.as_type.loc5_14.2 => constants.%Self.as_type +// CHECK:STDOUT: %Self.as_type.loc5_14.1 => constants.%Self.as_type // CHECK:STDOUT: %pattern_type.loc5_8 => constants.%pattern_type.ca1 // CHECK:STDOUT: %K.lookup_impl_witness => constants.%K.lookup_impl_witness.da8 -// CHECK:STDOUT: %impl.elem0.loc5_23.2 => constants.%impl.elem0.75d +// CHECK:STDOUT: %impl.elem0.loc5_23.1 => constants.%impl.elem0.75d // CHECK:STDOUT: %pattern_type.loc5_20 => constants.%pattern_type.6c7 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @V(constants.%K.facet.b09) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%K.facet.e32) { +// CHECK:STDOUT: specific @K.F(constants.%K.facet.e32) { // CHECK:STDOUT: %Self => constants.%K.facet.e32 -// CHECK:STDOUT: %Self.as_type.loc5_14.2 => constants.%empty_tuple.type +// CHECK:STDOUT: %Self.as_type.loc5_14.1 => constants.%empty_tuple.type // CHECK:STDOUT: %pattern_type.loc5_8 => constants.%pattern_type.cb1 // CHECK:STDOUT: %K.lookup_impl_witness => constants.%K.impl_witness -// CHECK:STDOUT: %impl.elem0.loc5_23.2 => constants.%struct_type.a +// CHECK:STDOUT: %impl.elem0.loc5_23.1 => constants.%struct_type.a // CHECK:STDOUT: %pattern_type.loc5_20 => constants.%pattern_type.e85 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -2977,9 +2977,9 @@ fn F() { // CHECK:STDOUT: %M.assoc_type: type = assoc_entity_type @M [concrete] // CHECK:STDOUT: %assoc0: %M.assoc_type = assoc_entity element0, @M.%Z [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_struct_type [concrete] -// CHECK:STDOUT: %G.type.020: type = fn_type @G.loc5 [concrete] -// CHECK:STDOUT: %G.91c: %G.type.020 = struct_value () [concrete] -// CHECK:STDOUT: %assoc1: %M.assoc_type = assoc_entity element1, @M.%G.decl [concrete] +// CHECK:STDOUT: %M.G.type: type = fn_type @M.G [concrete] +// CHECK:STDOUT: %M.G: %M.G.type = struct_value () [concrete] +// CHECK:STDOUT: %assoc1: %M.assoc_type = assoc_entity element1, @M.%M.G.decl [concrete] // CHECK:STDOUT: %.Self: %M.type = bind_symbolic_name .Self [symbolic_self] // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] // CHECK:STDOUT: %M.lookup_impl_witness: = lookup_impl_witness %.Self, @M [symbolic_self] @@ -2989,8 +2989,8 @@ fn F() { // CHECK:STDOUT: %struct: %struct_type.b.347 = struct_value (%empty_struct) [concrete] // CHECK:STDOUT: %M_where.type: type = facet_type <@M where %impl.elem0 = %struct> [concrete] // CHECK:STDOUT: %M.impl_witness: = impl_witness file.%M.impl_witness_table [concrete] -// CHECK:STDOUT: %G.type.8d1: type = fn_type @G.loc9 [concrete] -// CHECK:STDOUT: %G.bb3: %G.type.8d1 = struct_value () [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.M.impl.G.type: type = fn_type @empty_tuple.type.as.M.impl.G [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.M.impl.G: %empty_tuple.type.as.M.impl.G.type = struct_value () [concrete] // CHECK:STDOUT: %M.facet.56b: %M.type = facet_value %empty_tuple.type, (%M.impl_witness) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -3008,7 +3008,7 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %M.decl: type = interface_decl @M [concrete = constants.%M.type] {} {} -// CHECK:STDOUT: impl_decl @M.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @empty_tuple.type.as.M.impl [concrete] {} { // CHECK:STDOUT: %.loc8_7.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc8_7.2: type = converted %.loc8_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %M.ref: type = name_ref M, file.%M.decl [concrete = constants.%M.type] @@ -3028,7 +3028,7 @@ fn F() { // CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc8_33.3 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %M.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant, @M.impl.%G.decl), @M.impl [concrete] +// CHECK:STDOUT: %M.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant, @empty_tuple.type.as.M.impl.%empty_tuple.type.as.M.impl.G.decl), @empty_tuple.type.as.M.impl [concrete] // CHECK:STDOUT: %M.impl_witness: = impl_witness %M.impl_witness_table [concrete = constants.%M.impl_witness] // CHECK:STDOUT: %impl_witness_assoc_constant: %struct_type.b.347 = impl_witness_assoc_constant constants.%struct [concrete = constants.%struct] // CHECK:STDOUT: } @@ -3038,7 +3038,7 @@ fn F() { // CHECK:STDOUT: %Z: %struct_type.b.347 = assoc_const_decl @Z [concrete] { // CHECK:STDOUT: %assoc0: %M.assoc_type = assoc_entity element0, @M.%Z [concrete = constants.%assoc0] // CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: %G.type.020 = fn_decl @G.loc5 [concrete = constants.%G.91c] { +// CHECK:STDOUT: %M.G.decl: %M.G.type = fn_decl @M.G [concrete = constants.%M.G] { // CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -3047,21 +3047,21 @@ fn F() { // CHECK:STDOUT: %return.param: ref %empty_struct_type = out_param call_param0 // CHECK:STDOUT: %return: ref %empty_struct_type = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc1: %M.assoc_type = assoc_entity element1, %G.decl [concrete = constants.%assoc1] +// CHECK:STDOUT: %assoc1: %M.assoc_type = assoc_entity element1, %M.G.decl [concrete = constants.%assoc1] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .Z = @Z.%assoc0 // CHECK:STDOUT: .G = %assoc1 -// CHECK:STDOUT: witness = (%Z, %G.decl) +// CHECK:STDOUT: witness = (%Z, %M.G.decl) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic assoc_const @Z(@M.%Self: %M.type) { // CHECK:STDOUT: assoc_const Z:! %struct_type.b.347; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @M.impl: %.loc8_7.2 as %.loc8_14 { -// CHECK:STDOUT: %G.decl: %G.type.8d1 = fn_decl @G.loc9 [concrete = constants.%G.bb3] { +// CHECK:STDOUT: impl @empty_tuple.type.as.M.impl: %.loc8_7.2 as %.loc8_14 { +// CHECK:STDOUT: %empty_tuple.type.as.M.impl.G.decl: %empty_tuple.type.as.M.impl.G.type = fn_decl @empty_tuple.type.as.M.impl.G [concrete = constants.%empty_tuple.type.as.M.impl.G] { // CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -3072,18 +3072,18 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .G = %empty_tuple.type.as.M.impl.G.decl // CHECK:STDOUT: .M = // CHECK:STDOUT: witness = file.%M.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @G.loc5(@M.%Self: %M.type) { +// CHECK:STDOUT: generic fn @M.G(@M.%Self: %M.type) { // CHECK:STDOUT: fn() -> %empty_struct_type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G.loc9() -> %empty_struct_type { +// CHECK:STDOUT: fn @empty_tuple.type.as.M.impl.G() -> %empty_struct_type { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @M.impl.%.loc8_7.2 [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @empty_tuple.type.as.M.impl.%.loc8_7.2 [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %M.ref: type = name_ref M, file.%M.decl [concrete = constants.%M.type] // CHECK:STDOUT: %M.facet: %M.type = facet_value constants.%empty_tuple.type, (constants.%M.impl_witness) [concrete = constants.%M.facet.56b] // CHECK:STDOUT: %.loc10_18: %M.type = converted %Self.ref, %M.facet [concrete = constants.%M.facet.56b] @@ -3097,11 +3097,11 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: specific @Z(constants.%Self) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @G.loc5(constants.%Self) {} +// CHECK:STDOUT: specific @M.G(constants.%Self) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @Z(constants.%M.facet.caa) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @G.loc5(constants.%M.facet.56b) {} +// CHECK:STDOUT: specific @M.G(constants.%M.facet.56b) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @Z(constants.%M.facet.56b) {} // CHECK:STDOUT: @@ -3121,9 +3121,9 @@ fn F() { // CHECK:STDOUT: %struct_type.b.86f: type = struct_type {.b: type} [concrete] // CHECK:STDOUT: %M.assoc_type: type = assoc_entity_type @M [concrete] // CHECK:STDOUT: %assoc0: %M.assoc_type = assoc_entity element0, @M.%Z [concrete] -// CHECK:STDOUT: %G.type.020: type = fn_type @G.loc7 [concrete] -// CHECK:STDOUT: %G.91c: %G.type.020 = struct_value () [concrete] -// CHECK:STDOUT: %assoc1: %M.assoc_type = assoc_entity element1, @M.%G.decl [concrete] +// CHECK:STDOUT: %M.G.type: type = fn_type @M.G [concrete] +// CHECK:STDOUT: %M.G: %M.G.type = struct_value () [concrete] +// CHECK:STDOUT: %assoc1: %M.assoc_type = assoc_entity element1, @M.%M.G.decl [concrete] // CHECK:STDOUT: %C.7a7: type = class_type @C, @C(%empty_struct_type) [concrete] // CHECK:STDOUT: %.Self: %M.type = bind_symbolic_name .Self [symbolic_self] // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] @@ -3134,16 +3134,16 @@ fn F() { // CHECK:STDOUT: %struct.0f3: %struct_type.b.86f = struct_value (%empty_struct_type) [concrete] // CHECK:STDOUT: %M_where.type.d04: type = facet_type <@M where %impl.elem0 = %struct.0f3> [concrete] // CHECK:STDOUT: %M.impl_witness.baa: = impl_witness file.%M.impl_witness_table.loc10 [concrete] -// CHECK:STDOUT: %G.type.d92: type = fn_type @G.loc11 [concrete] -// CHECK:STDOUT: %G.eac: %G.type.d92 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.M.impl.G.type.d92: type = fn_type @C.as.M.impl.G.loc11 [concrete] +// CHECK:STDOUT: %C.as.M.impl.G.eac: %C.as.M.impl.G.type.d92 = struct_value () [concrete] // CHECK:STDOUT: %M.facet.1dc: %M.type = facet_value %C.7a7, (%M.impl_witness.baa) [concrete] // CHECK:STDOUT: %C.3a0: type = class_type @C, @C(%empty_tuple.type) [concrete] // CHECK:STDOUT: %struct_type.b.161: type = struct_type {.b: %empty_tuple.type} [concrete] // CHECK:STDOUT: %struct.c94: %struct_type.b.86f = struct_value (%empty_tuple.type) [concrete] // CHECK:STDOUT: %M_where.type.eda: type = facet_type <@M where %impl.elem0 = %struct.c94> [concrete] // CHECK:STDOUT: %M.impl_witness.feb: = impl_witness file.%M.impl_witness_table.loc16 [concrete] -// CHECK:STDOUT: %G.type.b29: type = fn_type @G.loc17 [concrete] -// CHECK:STDOUT: %G.f3b: %G.type.b29 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.M.impl.G.type.b29: type = fn_type @C.as.M.impl.G.loc17 [concrete] +// CHECK:STDOUT: %C.as.M.impl.G.f3b: %C.as.M.impl.G.type.b29 = struct_value () [concrete] // CHECK:STDOUT: %M.facet.80d: %M.type = facet_value %C.3a0, (%M.impl_witness.feb) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -3167,7 +3167,7 @@ fn F() { // CHECK:STDOUT: %T.loc3_9.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc3_9.1 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %M.decl: type = interface_decl @M [concrete = constants.%M.type] {} {} -// CHECK:STDOUT: impl_decl @M.impl.8b4 [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.M.impl.8b4 [concrete] {} { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] // CHECK:STDOUT: %.loc10_9: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc10_10: type = converted %.loc10_9, constants.%empty_struct_type [concrete = constants.%empty_struct_type] @@ -3188,10 +3188,10 @@ fn F() { // CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc10_36.3 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %M.impl_witness_table.loc10 = impl_witness_table (%impl_witness_assoc_constant.loc10, @M.impl.8b4.%G.decl), @M.impl.8b4 [concrete] +// CHECK:STDOUT: %M.impl_witness_table.loc10 = impl_witness_table (%impl_witness_assoc_constant.loc10, @C.as.M.impl.8b4.%C.as.M.impl.G.decl), @C.as.M.impl.8b4 [concrete] // CHECK:STDOUT: %M.impl_witness.loc10: = impl_witness %M.impl_witness_table.loc10 [concrete = constants.%M.impl_witness.baa] // CHECK:STDOUT: %impl_witness_assoc_constant.loc10: %struct_type.b.86f = impl_witness_assoc_constant constants.%struct.0f3 [concrete = constants.%struct.0f3] -// CHECK:STDOUT: impl_decl @M.impl.d97 [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.M.impl.d97 [concrete] {} { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] // CHECK:STDOUT: %.loc16_9: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc16_10: type = converted %.loc16_9, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] @@ -3212,7 +3212,7 @@ fn F() { // CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc16_36.3 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %M.impl_witness_table.loc16 = impl_witness_table (%impl_witness_assoc_constant.loc16, @M.impl.d97.%G.decl), @M.impl.d97 [concrete] +// CHECK:STDOUT: %M.impl_witness_table.loc16 = impl_witness_table (%impl_witness_assoc_constant.loc16, @C.as.M.impl.d97.%C.as.M.impl.G.decl), @C.as.M.impl.d97 [concrete] // CHECK:STDOUT: %M.impl_witness.loc16: = impl_witness %M.impl_witness_table.loc16 [concrete = constants.%M.impl_witness.feb] // CHECK:STDOUT: %impl_witness_assoc_constant.loc16: %struct_type.b.86f = impl_witness_assoc_constant constants.%struct.c94 [concrete = constants.%struct.c94] // CHECK:STDOUT: } @@ -3222,28 +3222,28 @@ fn F() { // CHECK:STDOUT: %Z: %struct_type.b.86f = assoc_const_decl @Z [concrete] { // CHECK:STDOUT: %assoc0: %M.assoc_type = assoc_entity element0, @M.%Z [concrete = constants.%assoc0] // CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: %G.type.020 = fn_decl @G.loc7 [concrete = constants.%G.91c] { +// CHECK:STDOUT: %M.G.decl: %M.G.type = fn_decl @M.G [concrete = constants.%M.G] { // CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %return.param: ref type = out_param call_param0 // CHECK:STDOUT: %return: ref type = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc1: %M.assoc_type = assoc_entity element1, %G.decl [concrete = constants.%assoc1] +// CHECK:STDOUT: %assoc1: %M.assoc_type = assoc_entity element1, %M.G.decl [concrete = constants.%assoc1] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .Z = @Z.%assoc0 // CHECK:STDOUT: .G = %assoc1 -// CHECK:STDOUT: witness = (%Z, %G.decl) +// CHECK:STDOUT: witness = (%Z, %M.G.decl) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic assoc_const @Z(@M.%Self: %M.type) { // CHECK:STDOUT: assoc_const Z:! %struct_type.b.86f; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @M.impl.8b4: %C as %.loc10_17 { -// CHECK:STDOUT: %G.decl: %G.type.d92 = fn_decl @G.loc11 [concrete = constants.%G.eac] { +// CHECK:STDOUT: impl @C.as.M.impl.8b4: %C as %.loc10_17 { +// CHECK:STDOUT: %C.as.M.impl.G.decl: %C.as.M.impl.G.type.d92 = fn_decl @C.as.M.impl.G.loc11 [concrete = constants.%C.as.M.impl.G.eac] { // CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -3252,13 +3252,13 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .G = %C.as.M.impl.G.decl // CHECK:STDOUT: .M = // CHECK:STDOUT: witness = file.%M.impl_witness.loc10 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @M.impl.d97: %C as %.loc16_17 { -// CHECK:STDOUT: %G.decl: %G.type.b29 = fn_decl @G.loc17 [concrete = constants.%G.f3b] { +// CHECK:STDOUT: impl @C.as.M.impl.d97: %C as %.loc16_17 { +// CHECK:STDOUT: %C.as.M.impl.G.decl: %C.as.M.impl.G.type.b29 = fn_decl @C.as.M.impl.G.loc17 [concrete = constants.%C.as.M.impl.G.f3b] { // CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -3267,7 +3267,7 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .G = %C.as.M.impl.G.decl // CHECK:STDOUT: .M = // CHECK:STDOUT: witness = file.%M.impl_witness.loc16 // CHECK:STDOUT: } @@ -3287,13 +3287,13 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @G.loc7(@M.%Self: %M.type) { +// CHECK:STDOUT: generic fn @M.G(@M.%Self: %M.type) { // CHECK:STDOUT: fn() -> type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G.loc11() -> type { +// CHECK:STDOUT: fn @C.as.M.impl.G.loc11() -> type { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @M.impl.8b4.%C [concrete = constants.%C.7a7] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @C.as.M.impl.8b4.%C [concrete = constants.%C.7a7] // CHECK:STDOUT: %M.ref: type = name_ref M, file.%M.decl [concrete = constants.%M.type] // CHECK:STDOUT: %M.facet: %M.type = facet_value constants.%C.7a7, (constants.%M.impl_witness.baa) [concrete = constants.%M.facet.1dc] // CHECK:STDOUT: %.loc12_18: %M.type = converted %Self.ref, %M.facet [concrete = constants.%M.facet.1dc] @@ -3305,9 +3305,9 @@ fn F() { // CHECK:STDOUT: return %.loc12_25 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G.loc17() -> type { +// CHECK:STDOUT: fn @C.as.M.impl.G.loc17() -> type { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @M.impl.d97.%C [concrete = constants.%C.3a0] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @C.as.M.impl.d97.%C [concrete = constants.%C.3a0] // CHECK:STDOUT: %M.ref: type = name_ref M, file.%M.decl [concrete = constants.%M.type] // CHECK:STDOUT: %M.facet: %M.type = facet_value constants.%C.3a0, (constants.%M.impl_witness.feb) [concrete = constants.%M.facet.80d] // CHECK:STDOUT: %.loc18_18: %M.type = converted %Self.ref, %M.facet [concrete = constants.%M.facet.80d] @@ -3325,7 +3325,7 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: specific @Z(constants.%Self) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @G.loc7(constants.%Self) {} +// CHECK:STDOUT: specific @M.G(constants.%Self) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @C(constants.%empty_struct_type) { // CHECK:STDOUT: %T.loc3_9.1 => constants.%empty_struct_type @@ -3333,7 +3333,7 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: specific @Z(constants.%M.facet.caa) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @G.loc7(constants.%M.facet.1dc) {} +// CHECK:STDOUT: specific @M.G(constants.%M.facet.1dc) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @Z(constants.%M.facet.1dc) {} // CHECK:STDOUT: @@ -3341,7 +3341,7 @@ fn F() { // CHECK:STDOUT: %T.loc3_9.1 => constants.%empty_tuple.type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @G.loc7(constants.%M.facet.80d) {} +// CHECK:STDOUT: specific @M.G(constants.%M.facet.80d) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @Z(constants.%M.facet.80d) {} // CHECK:STDOUT: @@ -3367,27 +3367,27 @@ fn F() { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.2fd: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [concrete] -// CHECK:STDOUT: %Convert.type.71e: type = fn_type @Convert.2, @ImplicitAs(Core.IntLiteral) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.71e: type = fn_type @ImplicitAs.Convert, @ImplicitAs(Core.IntLiteral) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.3, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] // CHECK:STDOUT: %From: Core.IntLiteral = bind_symbolic_name From, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.708: type = fn_type @Convert.1, @ImplicitAs.impl.971(%From) [symbolic] -// CHECK:STDOUT: %Convert.c68: %Convert.type.708 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.a11: = impl_witness imports.%ImplicitAs.impl_witness_table.1d9, @ImplicitAs.impl.971(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.4ad: type = fn_type @Convert.1, @ImplicitAs.impl.971(%int_32) [concrete] -// CHECK:STDOUT: %Convert.960: %Convert.type.4ad = struct_value () [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.type.708: type = fn_type @Int.as.ImplicitAs.impl.Convert, @Int.as.ImplicitAs.impl(%From) [symbolic] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.c68: %Int.as.ImplicitAs.impl.Convert.type.708 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.a11: = impl_witness imports.%ImplicitAs.impl_witness_table.1d9, @Int.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.type.4ad: type = fn_type @Int.as.ImplicitAs.impl.Convert, @Int.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.960: %Int.as.ImplicitAs.impl.Convert.type.4ad = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet.f49: %ImplicitAs.type.2fd = facet_value %i32, (%ImplicitAs.impl_witness.a11) [concrete] -// CHECK:STDOUT: %.0ea: type = fn_type_with_self_type %Convert.type.71e, %ImplicitAs.facet.f49 [concrete] -// CHECK:STDOUT: %Convert.bound.44d: = bound_method %impl.elem0.fab, %Convert.960 [symbolic] -// CHECK:STDOUT: %Convert.specific_fn.8a8: = specific_function %Convert.960, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.81c: = bound_method %impl.elem0.fab, %Convert.specific_fn.8a8 [symbolic] -// CHECK:STDOUT: %int.convert_checked: init Core.IntLiteral = call %bound_method.81c(%impl.elem0.fab) [symbolic] -// CHECK:STDOUT: %array_type.377: type = array_type %int.convert_checked, bool [symbolic] +// CHECK:STDOUT: %.0ea: type = fn_type_with_self_type %ImplicitAs.Convert.type.71e, %ImplicitAs.facet.f49 [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.bound.44d: = bound_method %impl.elem0.fab, %Int.as.ImplicitAs.impl.Convert.960 [symbolic] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Int.as.ImplicitAs.impl.Convert.960, @Int.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.81c: = bound_method %impl.elem0.fab, %Int.as.ImplicitAs.impl.Convert.specific_fn [symbolic] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call: init Core.IntLiteral = call %bound_method.81c(%impl.elem0.fab) [symbolic] +// CHECK:STDOUT: %array_type.377: type = array_type %Int.as.ImplicitAs.impl.Convert.call, bool [symbolic] // CHECK:STDOUT: %pattern_type.bc6: type = pattern_type %array_type.377 [symbolic] -// CHECK:STDOUT: %F.type.cf0: type = fn_type @F.loc5 [concrete] -// CHECK:STDOUT: %F.bc6: %F.type.cf0 = struct_value () [concrete] -// CHECK:STDOUT: %assoc1: %I.assoc_type = assoc_entity element1, @I.%F.decl [concrete] +// CHECK:STDOUT: %I.F.type: type = fn_type @I.F [concrete] +// CHECK:STDOUT: %I.F: %I.F.type = struct_value () [concrete] +// CHECK:STDOUT: %assoc1: %I.assoc_type = assoc_entity element1, @I.%I.F.decl [concrete] // CHECK:STDOUT: %.Self.258: %I.type = bind_symbolic_name .Self [symbolic_self] // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.258 [symbolic_self] // CHECK:STDOUT: %I.lookup_impl_witness.5f5: = lookup_impl_witness %.Self.258, @I [symbolic_self] @@ -3395,26 +3395,26 @@ fn F() { // CHECK:STDOUT: %impl.elem0.d4d: %i32 = impl_witness_access %I.lookup_impl_witness.5f5, element0 [symbolic_self] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.3, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet.921: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet.921 [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn.b6f: = specific_function %Convert.956, @Convert.3(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn.b6f [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet.921 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0.d4d = %int_2.ef8> [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %array_type.c9b: type = array_type %int_2.ecc, bool [concrete] // CHECK:STDOUT: %pattern_type.5d5: type = pattern_type %array_type.c9b [concrete] -// CHECK:STDOUT: %F.type.2c7: type = fn_type @F.loc9 [concrete] -// CHECK:STDOUT: %F.0b4: %F.type.2c7 = struct_value () [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.type: type = fn_type @empty_tuple.type.as.I.impl.F [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.I.impl.F: %empty_tuple.type.as.I.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %I.facet.85d: %I.type = facet_value %empty_tuple.type, (%I.impl_witness) [concrete] -// CHECK:STDOUT: %Convert.bound.fbf: = bound_method %int_2.ef8, %Convert.960 [concrete] -// CHECK:STDOUT: %bound_method.992: = bound_method %int_2.ef8, %Convert.specific_fn.8a8 [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.bound.fbf: = bound_method %int_2.ef8, %Int.as.ImplicitAs.impl.Convert.960 [concrete] +// CHECK:STDOUT: %bound_method.992: = bound_method %int_2.ef8, %Int.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %true: bool = bool_literal true [concrete] // CHECK:STDOUT: %false: bool = bool_literal false [concrete] // CHECK:STDOUT: %tuple.type: type = tuple_type (bool, bool) [concrete] @@ -3434,10 +3434,10 @@ fn F() { // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.Bool: %Bool.type = import_ref Core//prelude/parts/bool, Bool, loaded [concrete = constants.%Bool] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] -// CHECK:STDOUT: %Core.import_ref.85c: @ImplicitAs.impl.971.%Convert.type (%Convert.type.708) = import_ref Core//prelude/parts/int, loc20_44, loaded [symbolic = @ImplicitAs.impl.971.%Convert (constants.%Convert.c68)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.1d9 = impl_witness_table (%Core.import_ref.85c), @ImplicitAs.impl.971 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.85c: @Int.as.ImplicitAs.impl.%Int.as.ImplicitAs.impl.Convert.type (%Int.as.ImplicitAs.impl.Convert.type.708) = import_ref Core//prelude/parts/int, loc20_44, loaded [symbolic = @Int.as.ImplicitAs.impl.%Int.as.ImplicitAs.impl.Convert (constants.%Int.as.ImplicitAs.impl.Convert.c68)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.1d9 = impl_witness_table (%Core.import_ref.85c), @Int.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -3447,7 +3447,7 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @empty_tuple.type.as.I.impl [concrete] {} { // CHECK:STDOUT: %.loc8_7.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc8_7.2: type = converted %.loc8_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] @@ -3458,18 +3458,18 @@ fn F() { // CHECK:STDOUT: %.loc8_20: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] // CHECK:STDOUT: %impl.elem0.loc8_20: %i32 = impl_witness_access constants.%I.lookup_impl_witness.5f5, element0 [symbolic_self = constants.%impl.elem0.d4d] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %impl.elem0.loc8_25: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc8_25.1: = bound_method %int_2, %impl.elem0.loc8_25 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0.loc8_25, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn.b6f] +// CHECK:STDOUT: %impl.elem0.loc8_25: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc8_25.1: = bound_method %int_2, %impl.elem0.loc8_25 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0.loc8_25, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc8_25.2: = bound_method %int_2, %specific_fn [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc8_25.2(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc8_25.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc8_25.2(%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc8_25.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc8_25.2: %i32 = converted %int_2, %.loc8_25.1 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc8_14: type = where_expr %.Self [concrete = constants.%I_where.type] { // CHECK:STDOUT: requirement_rewrite %impl.elem0.loc8_20, %.loc8_25.2 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant, @I.impl.%F.decl), @I.impl [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant, @empty_tuple.type.as.I.impl.%empty_tuple.type.as.I.impl.F.decl), @empty_tuple.type.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness] // CHECK:STDOUT: %impl_witness_assoc_constant: %i32 = impl_witness_assoc_constant constants.%int_2.ef8 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: } @@ -3479,88 +3479,88 @@ fn F() { // CHECK:STDOUT: %N: %i32 = assoc_const_decl @N [concrete] { // CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%N [concrete = constants.%assoc0.995] // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type.cf0 = fn_decl @F.loc5 [concrete = constants.%F.bc6] { -// CHECK:STDOUT: %self.patt: @F.loc5.%pattern_type.loc5_8 (%pattern_type.6de) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.loc5.%pattern_type.loc5_8 (%pattern_type.6de) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: @F.loc5.%pattern_type.loc5_22 (%pattern_type.bc6) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @F.loc5.%pattern_type.loc5_22 (%pattern_type.bc6) = out_param_pattern %return.patt, call_param1 [concrete] +// CHECK:STDOUT: %I.F.decl: %I.F.type = fn_decl @I.F [concrete = constants.%I.F] { +// CHECK:STDOUT: %self.patt: @I.F.%pattern_type.loc5_8 (%pattern_type.6de) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @I.F.%pattern_type.loc5_8 (%pattern_type.6de) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %return.patt: @I.F.%pattern_type.loc5_22 (%pattern_type.bc6) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @I.F.%pattern_type.loc5_22 (%pattern_type.bc6) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %impl.elem0.loc5_37.1: %i32 = impl_witness_access constants.%I.lookup_impl_witness.5d6, element0 [symbolic = %impl.elem0.loc5_37.3 (constants.%impl.elem0.fab)] -// CHECK:STDOUT: %N.ref: %i32 = name_ref N, %impl.elem0.loc5_37.1 [symbolic = %impl.elem0.loc5_37.3 (constants.%impl.elem0.fab)] -// CHECK:STDOUT: %.loc5_31.1: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc5_31.2: type = converted %bool.make_type, %.loc5_31.1 [concrete = bool] -// CHECK:STDOUT: %impl.elem0.loc5_37.2: %.0ea = impl_witness_access constants.%ImplicitAs.impl_witness.a11, element0 [concrete = constants.%Convert.960] -// CHECK:STDOUT: %bound_method.loc5_37.1: = bound_method %N.ref, %impl.elem0.loc5_37.2 [symbolic = %Convert.bound (constants.%Convert.bound.44d)] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0.loc5_37.2, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn.8a8] -// CHECK:STDOUT: %bound_method.loc5_37.2: = bound_method %N.ref, %specific_fn [symbolic = %bound_method.loc5_37.3 (constants.%bound_method.81c)] -// CHECK:STDOUT: %int.convert_checked.loc5_37.1: init Core.IntLiteral = call %bound_method.loc5_37.2(%N.ref) [symbolic = %int.convert_checked.loc5_37.2 (constants.%int.convert_checked)] -// CHECK:STDOUT: %.loc5_37.1: Core.IntLiteral = value_of_initializer %int.convert_checked.loc5_37.1 [symbolic = %int.convert_checked.loc5_37.2 (constants.%int.convert_checked)] -// CHECK:STDOUT: %.loc5_37.2: Core.IntLiteral = converted %N.ref, %.loc5_37.1 [symbolic = %int.convert_checked.loc5_37.2 (constants.%int.convert_checked)] -// CHECK:STDOUT: %array_type.loc5_38.1: type = array_type %.loc5_37.2, %.loc5_31.2 [symbolic = %array_type.loc5_38.2 (constants.%array_type.377)] -// CHECK:STDOUT: %self.param: @F.loc5.%Self.as_type.loc5_14.2 (%Self.as_type.b70) = value_param call_param0 -// CHECK:STDOUT: %.loc5_14.1: type = splice_block %.loc5_14.2 [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type.b70)] { +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %impl.elem0.loc5_37.2: %i32 = impl_witness_access constants.%I.lookup_impl_witness.5d6, element0 [symbolic = %impl.elem0.loc5_37.1 (constants.%impl.elem0.fab)] +// CHECK:STDOUT: %N.ref: %i32 = name_ref N, %impl.elem0.loc5_37.2 [symbolic = %impl.elem0.loc5_37.1 (constants.%impl.elem0.fab)] +// CHECK:STDOUT: %.loc5_31.1: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc5_31.2: type = converted %Bool.call, %.loc5_31.1 [concrete = bool] +// CHECK:STDOUT: %impl.elem0.loc5_37.3: %.0ea = impl_witness_access constants.%ImplicitAs.impl_witness.a11, element0 [concrete = constants.%Int.as.ImplicitAs.impl.Convert.960] +// CHECK:STDOUT: %bound_method.loc5_37.2: = bound_method %N.ref, %impl.elem0.loc5_37.3 [symbolic = %Int.as.ImplicitAs.impl.Convert.bound (constants.%Int.as.ImplicitAs.impl.Convert.bound.44d)] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0.loc5_37.3, @Int.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Int.as.ImplicitAs.impl.Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc5_37.3: = bound_method %N.ref, %specific_fn [symbolic = %bound_method.loc5_37.1 (constants.%bound_method.81c)] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call.loc5_37.2: init Core.IntLiteral = call %bound_method.loc5_37.3(%N.ref) [symbolic = %Int.as.ImplicitAs.impl.Convert.call.loc5_37.1 (constants.%Int.as.ImplicitAs.impl.Convert.call)] +// CHECK:STDOUT: %.loc5_37.1: Core.IntLiteral = value_of_initializer %Int.as.ImplicitAs.impl.Convert.call.loc5_37.2 [symbolic = %Int.as.ImplicitAs.impl.Convert.call.loc5_37.1 (constants.%Int.as.ImplicitAs.impl.Convert.call)] +// CHECK:STDOUT: %.loc5_37.2: Core.IntLiteral = converted %N.ref, %.loc5_37.1 [symbolic = %Int.as.ImplicitAs.impl.Convert.call.loc5_37.1 (constants.%Int.as.ImplicitAs.impl.Convert.call)] +// CHECK:STDOUT: %array_type.loc5_38.2: type = array_type %.loc5_37.2, %.loc5_31.2 [symbolic = %array_type.loc5_38.1 (constants.%array_type.377)] +// CHECK:STDOUT: %self.param: @I.F.%Self.as_type.loc5_14.1 (%Self.as_type.b70) = value_param call_param0 +// CHECK:STDOUT: %.loc5_14.1: type = splice_block %.loc5_14.2 [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type.b70)] { // CHECK:STDOUT: %Self.ref: %I.type = name_ref Self, @I.%Self [symbolic = %Self (constants.%Self.826)] -// CHECK:STDOUT: %Self.as_type.loc5_14.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type.b70)] -// CHECK:STDOUT: %.loc5_14.2: type = converted %Self.ref, %Self.as_type.loc5_14.1 [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type.b70)] +// CHECK:STDOUT: %Self.as_type.loc5_14.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type.b70)] +// CHECK:STDOUT: %.loc5_14.2: type = converted %Self.ref, %Self.as_type.loc5_14.2 [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type.b70)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.loc5.%Self.as_type.loc5_14.2 (%Self.as_type.b70) = bind_name self, %self.param -// CHECK:STDOUT: %return.param: ref @F.loc5.%array_type.loc5_38.2 (%array_type.377) = out_param call_param1 -// CHECK:STDOUT: %return: ref @F.loc5.%array_type.loc5_38.2 (%array_type.377) = return_slot %return.param +// CHECK:STDOUT: %self: @I.F.%Self.as_type.loc5_14.1 (%Self.as_type.b70) = bind_name self, %self.param +// CHECK:STDOUT: %return.param: ref @I.F.%array_type.loc5_38.1 (%array_type.377) = out_param call_param1 +// CHECK:STDOUT: %return: ref @I.F.%array_type.loc5_38.1 (%array_type.377) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc1: %I.assoc_type = assoc_entity element1, %F.decl [concrete = constants.%assoc1] +// CHECK:STDOUT: %assoc1: %I.assoc_type = assoc_entity element1, %I.F.decl [concrete = constants.%assoc1] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .N = @N.%assoc0 // CHECK:STDOUT: .F = %assoc1 -// CHECK:STDOUT: witness = (%N, %F.decl) +// CHECK:STDOUT: witness = (%N, %I.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic assoc_const @N(@I.%Self: %I.type) { // CHECK:STDOUT: assoc_const N:! %i32; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: %.loc8_7.2 as %.loc8_14 { -// CHECK:STDOUT: %F.decl: %F.type.2c7 = fn_decl @F.loc9 [concrete = constants.%F.0b4] { +// CHECK:STDOUT: impl @empty_tuple.type.as.I.impl: %.loc8_7.2 as %.loc8_14 { +// CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.decl: %empty_tuple.type.as.I.impl.F.type = fn_decl @empty_tuple.type.as.I.impl.F [concrete = constants.%empty_tuple.type.as.I.impl.F] { // CHECK:STDOUT: %self.patt: %pattern_type.cb1 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.cb1 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.5d5 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.5d5 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %.loc9_31.1: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc9_31.2: type = converted %bool.make_type, %.loc9_31.1 [concrete = bool] +// CHECK:STDOUT: %.loc9_31.1: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc9_31.2: type = converted %Bool.call, %.loc9_31.1 [concrete = bool] // CHECK:STDOUT: %array_type: type = array_type %int_2, %.loc9_31.2 [concrete = constants.%array_type.c9b] // CHECK:STDOUT: %self.param: %empty_tuple.type = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @I.impl.%.loc8_7.2 [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @empty_tuple.type.as.I.impl.%.loc8_7.2 [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %self: %empty_tuple.type = bind_name self, %self.param // CHECK:STDOUT: %return.param: ref %array_type.c9b = out_param call_param1 // CHECK:STDOUT: %return: ref %array_type.c9b = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %empty_tuple.type.as.I.impl.F.decl // CHECK:STDOUT: witness = file.%I.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc5(@I.%Self: %I.type) { +// CHECK:STDOUT: generic fn @I.F(@I.%Self: %I.type) { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.826)] -// CHECK:STDOUT: %Self.as_type.loc5_14.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type.b70)] -// CHECK:STDOUT: %pattern_type.loc5_8: type = pattern_type %Self.as_type.loc5_14.2 [symbolic = %pattern_type.loc5_8 (constants.%pattern_type.6de)] +// CHECK:STDOUT: %Self.as_type.loc5_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type.b70)] +// CHECK:STDOUT: %pattern_type.loc5_8: type = pattern_type %Self.as_type.loc5_14.1 [symbolic = %pattern_type.loc5_8 (constants.%pattern_type.6de)] // CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %Self, @I [symbolic = %I.lookup_impl_witness (constants.%I.lookup_impl_witness.5d6)] -// CHECK:STDOUT: %impl.elem0.loc5_37.3: %i32 = impl_witness_access %I.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc5_37.3 (constants.%impl.elem0.fab)] -// CHECK:STDOUT: %Convert.bound: = bound_method %impl.elem0.loc5_37.3, constants.%Convert.960 [symbolic = %Convert.bound (constants.%Convert.bound.44d)] -// CHECK:STDOUT: %bound_method.loc5_37.3: = bound_method %impl.elem0.loc5_37.3, constants.%Convert.specific_fn.8a8 [symbolic = %bound_method.loc5_37.3 (constants.%bound_method.81c)] -// CHECK:STDOUT: %int.convert_checked.loc5_37.2: init Core.IntLiteral = call %bound_method.loc5_37.3(%impl.elem0.loc5_37.3) [symbolic = %int.convert_checked.loc5_37.2 (constants.%int.convert_checked)] -// CHECK:STDOUT: %array_type.loc5_38.2: type = array_type %int.convert_checked.loc5_37.2, bool [symbolic = %array_type.loc5_38.2 (constants.%array_type.377)] -// CHECK:STDOUT: %pattern_type.loc5_22: type = pattern_type %array_type.loc5_38.2 [symbolic = %pattern_type.loc5_22 (constants.%pattern_type.bc6)] +// CHECK:STDOUT: %impl.elem0.loc5_37.1: %i32 = impl_witness_access %I.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc5_37.1 (constants.%impl.elem0.fab)] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.bound: = bound_method %impl.elem0.loc5_37.1, constants.%Int.as.ImplicitAs.impl.Convert.960 [symbolic = %Int.as.ImplicitAs.impl.Convert.bound (constants.%Int.as.ImplicitAs.impl.Convert.bound.44d)] +// CHECK:STDOUT: %bound_method.loc5_37.1: = bound_method %impl.elem0.loc5_37.1, constants.%Int.as.ImplicitAs.impl.Convert.specific_fn [symbolic = %bound_method.loc5_37.1 (constants.%bound_method.81c)] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call.loc5_37.1: init Core.IntLiteral = call %bound_method.loc5_37.1(%impl.elem0.loc5_37.1) [symbolic = %Int.as.ImplicitAs.impl.Convert.call.loc5_37.1 (constants.%Int.as.ImplicitAs.impl.Convert.call)] +// CHECK:STDOUT: %array_type.loc5_38.1: type = array_type %Int.as.ImplicitAs.impl.Convert.call.loc5_37.1, bool [symbolic = %array_type.loc5_38.1 (constants.%array_type.377)] +// CHECK:STDOUT: %pattern_type.loc5_22: type = pattern_type %array_type.loc5_38.1 [symbolic = %pattern_type.loc5_22 (constants.%pattern_type.bc6)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @F.loc5.%Self.as_type.loc5_14.2 (%Self.as_type.b70)) -> @F.loc5.%array_type.loc5_38.2 (%array_type.377); +// CHECK:STDOUT: fn(%self.param: @I.F.%Self.as_type.loc5_14.1 (%Self.as_type.b70)) -> @I.F.%array_type.loc5_38.1 (%array_type.377); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc9(%self.param: %empty_tuple.type) -> %return.param: %array_type.c9b { +// CHECK:STDOUT: fn @empty_tuple.type.as.I.impl.F(%self.param: %empty_tuple.type) -> %return.param: %array_type.c9b { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %true: bool = bool_literal true [concrete = constants.%true] // CHECK:STDOUT: %false: bool = bool_literal false [concrete = constants.%false] @@ -3580,31 +3580,31 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: specific @N(constants.%I.facet.93d) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%Self.826) { +// CHECK:STDOUT: specific @I.F(constants.%Self.826) { // CHECK:STDOUT: %Self => constants.%Self.826 -// CHECK:STDOUT: %Self.as_type.loc5_14.2 => constants.%Self.as_type.b70 +// CHECK:STDOUT: %Self.as_type.loc5_14.1 => constants.%Self.as_type.b70 // CHECK:STDOUT: %pattern_type.loc5_8 => constants.%pattern_type.6de // CHECK:STDOUT: %I.lookup_impl_witness => constants.%I.lookup_impl_witness.5d6 -// CHECK:STDOUT: %impl.elem0.loc5_37.3 => constants.%impl.elem0.fab -// CHECK:STDOUT: %Convert.bound => constants.%Convert.bound.44d -// CHECK:STDOUT: %bound_method.loc5_37.3 => constants.%bound_method.81c -// CHECK:STDOUT: %int.convert_checked.loc5_37.2 => constants.%int.convert_checked -// CHECK:STDOUT: %array_type.loc5_38.2 => constants.%array_type.377 +// CHECK:STDOUT: %impl.elem0.loc5_37.1 => constants.%impl.elem0.fab +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.bound => constants.%Int.as.ImplicitAs.impl.Convert.bound.44d +// CHECK:STDOUT: %bound_method.loc5_37.1 => constants.%bound_method.81c +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call.loc5_37.1 => constants.%Int.as.ImplicitAs.impl.Convert.call +// CHECK:STDOUT: %array_type.loc5_38.1 => constants.%array_type.377 // CHECK:STDOUT: %pattern_type.loc5_22 => constants.%pattern_type.bc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @N(constants.%I.facet.74c) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc5(constants.%I.facet.85d) { +// CHECK:STDOUT: specific @I.F(constants.%I.facet.85d) { // CHECK:STDOUT: %Self => constants.%I.facet.85d -// CHECK:STDOUT: %Self.as_type.loc5_14.2 => constants.%empty_tuple.type +// CHECK:STDOUT: %Self.as_type.loc5_14.1 => constants.%empty_tuple.type // CHECK:STDOUT: %pattern_type.loc5_8 => constants.%pattern_type.cb1 // CHECK:STDOUT: %I.lookup_impl_witness => constants.%I.impl_witness -// CHECK:STDOUT: %impl.elem0.loc5_37.3 => constants.%int_2.ef8 -// CHECK:STDOUT: %Convert.bound => constants.%Convert.bound.fbf -// CHECK:STDOUT: %bound_method.loc5_37.3 => constants.%bound_method.992 -// CHECK:STDOUT: %int.convert_checked.loc5_37.2 => constants.%int_2.ecc -// CHECK:STDOUT: %array_type.loc5_38.2 => constants.%array_type.c9b +// CHECK:STDOUT: %impl.elem0.loc5_37.1 => constants.%int_2.ef8 +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.bound => constants.%Int.as.ImplicitAs.impl.Convert.bound.fbf +// CHECK:STDOUT: %bound_method.loc5_37.1 => constants.%bound_method.992 +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call.loc5_37.1 => constants.%int_2.ecc +// CHECK:STDOUT: %array_type.loc5_38.1 => constants.%array_type.c9b // CHECK:STDOUT: %pattern_type.loc5_22 => constants.%pattern_type.5d5 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -3631,21 +3631,21 @@ fn F() { // CHECK:STDOUT: %impl.elem0: type = impl_witness_access %Z.lookup_impl_witness, element0 [symbolic_self] // CHECK:STDOUT: %Z_where.type.585: type = facet_type <@Z where %impl.elem0 = %C.f2e> [symbolic] // CHECK:STDOUT: %require_complete.747: = require_complete_type %Z_where.type.585 [symbolic] -// CHECK:STDOUT: %Z.impl_witness.8bc: = impl_witness file.%Z.impl_witness_table, @Z.impl(%T) [symbolic] +// CHECK:STDOUT: %Z.impl_witness.8bc: = impl_witness file.%Z.impl_witness_table, @T.as.Z.impl(%T) [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %C.131: type = class_type @C, @C(%D) [concrete] // CHECK:STDOUT: %Z_where.type.1a6: type = facet_type <@Z where %impl.elem0 = %C.131> [concrete] // CHECK:STDOUT: %complete_type.00b: = complete_type_witness %Z_where.type.1a6 [concrete] -// CHECK:STDOUT: %Z.impl_witness.19e: = impl_witness file.%Z.impl_witness_table, @Z.impl(%D) [concrete] +// CHECK:STDOUT: %Z.impl_witness.19e: = impl_witness file.%Z.impl_witness_table, @T.as.Z.impl(%D) [concrete] // CHECK:STDOUT: %Z.facet.f2a: %Z.type = facet_value %D, (%Z.impl_witness.19e) [concrete] // CHECK:STDOUT: %pattern_type.7f8: type = pattern_type %C.131 [concrete] // CHECK:STDOUT: %C.val: %C.131 = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.b84: type = fn_type @Op.1, @Destroy.impl(%C.131) [concrete] -// CHECK:STDOUT: %Op.e16: %Op.type.b84 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.b84: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C.131) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.e16: %T.as.Destroy.impl.Op.type.b84 = struct_value () [concrete] // CHECK:STDOUT: %ptr.aaa: type = ptr_type %C.131 [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.e16, @Op.1(%C.131) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.e16, @T.as.Destroy.impl.Op(%C.131) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -3673,7 +3673,7 @@ fn F() { // CHECK:STDOUT: %T.loc6_9.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc6_9.1 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %D.decl: type = class_decl @D [concrete = constants.%D] {} {} -// CHECK:STDOUT: impl_decl @Z.impl [concrete] { +// CHECK:STDOUT: impl_decl @T.as.Z.impl [concrete] { // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc9_24: type = name_ref T, %T.loc9_14.1 [symbolic = %T.loc9_14.2 (constants.%T)] @@ -3692,9 +3692,9 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc9_14.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc9_14.2 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %Z.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @Z.impl [concrete] -// CHECK:STDOUT: %Z.impl_witness: = impl_witness %Z.impl_witness_table, @Z.impl(constants.%T) [symbolic = @Z.impl.%Z.impl_witness (constants.%Z.impl_witness.8bc)] -// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%C.f2e [symbolic = @Z.impl.%C.loc9_45.2 (constants.%C.f2e)] +// CHECK:STDOUT: %Z.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @T.as.Z.impl [concrete] +// CHECK:STDOUT: %Z.impl_witness: = impl_witness %Z.impl_witness_table, @T.as.Z.impl(constants.%T) [symbolic = @T.as.Z.impl.%Z.impl_witness (constants.%Z.impl_witness.8bc)] +// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%C.f2e [symbolic = @T.as.Z.impl.%C.loc9_45.2 (constants.%C.f2e)] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: @@ -3714,12 +3714,12 @@ fn F() { // CHECK:STDOUT: assoc_const X:! type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @Z.impl(%T.loc9_14.1: type) { +// CHECK:STDOUT: generic impl @T.as.Z.impl(%T.loc9_14.1: type) { // CHECK:STDOUT: %T.loc9_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc9_14.2 (constants.%T)] // CHECK:STDOUT: %C.loc9_45.2: type = class_type @C, @C(%T.loc9_14.2) [symbolic = %C.loc9_45.2 (constants.%C.f2e)] // CHECK:STDOUT: %Z_where.type: type = facet_type <@Z where constants.%impl.elem0 = %C.loc9_45.2> [symbolic = %Z_where.type (constants.%Z_where.type.585)] // CHECK:STDOUT: %require_complete: = require_complete_type %Z_where.type [symbolic = %require_complete (constants.%require_complete.747)] -// CHECK:STDOUT: %Z.impl_witness: = impl_witness file.%Z.impl_witness_table, @Z.impl(%T.loc9_14.2) [symbolic = %Z.impl_witness (constants.%Z.impl_witness.8bc)] +// CHECK:STDOUT: %Z.impl_witness: = impl_witness file.%Z.impl_witness_table, @T.as.Z.impl(%T.loc9_14.2) [symbolic = %Z.impl_witness (constants.%Z.impl_witness.8bc)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -3776,11 +3776,11 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: %.loc12_23.2: %C.131 = bind_value %.loc12_23.1 // CHECK:STDOUT: %a: %C.131 = bind_name a, %.loc12_23.2 -// CHECK:STDOUT: %Op.bound: = bound_method %.loc12_21.2, constants.%Op.e16 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.e16, @Op.1(constants.%C.131) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc12_21.2, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc12_21.2, constants.%T.as.Destroy.impl.Op.e16 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.e16, @T.as.Destroy.impl.Op(constants.%C.131) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %.loc12_21.2, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.aaa = addr_of %.loc12_21.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -3792,7 +3792,7 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: specific @X(constants.%Z.facet.2a2) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @Z.impl(constants.%T) { +// CHECK:STDOUT: specific @T.as.Z.impl(constants.%T) { // CHECK:STDOUT: %T.loc9_14.2 => constants.%T // CHECK:STDOUT: %C.loc9_45.2 => constants.%C.f2e // CHECK:STDOUT: %Z_where.type => constants.%Z_where.type.585 @@ -3800,7 +3800,7 @@ fn F() { // CHECK:STDOUT: %Z.impl_witness => constants.%Z.impl_witness.8bc // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Z.impl(constants.%D) { +// CHECK:STDOUT: specific @T.as.Z.impl(constants.%D) { // CHECK:STDOUT: %T.loc9_14.2 => constants.%D // CHECK:STDOUT: %C.loc9_45.2 => constants.%C.131 // CHECK:STDOUT: %Z_where.type => constants.%Z_where.type.1a6 diff --git a/toolchain/check/testdata/index/array_element_access.carbon b/toolchain/check/testdata/index/array_element_access.carbon index ac6c1367b1dc..91123b6f0c84 100644 --- a/toolchain/check/testdata/index/array_element_access.carbon +++ b/toolchain/check/testdata/index/array_element_access.carbon @@ -34,30 +34,30 @@ var d: i32 = a[b]; // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.221: = bound_method %int_12.6a3, %Convert.956 [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.221: = bound_method %int_12.6a3, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.dae: = bound_method %int_12.6a3, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.dae: = bound_method %int_12.6a3, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_12.1e1: %i32 = int_value 12 [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] -// CHECK:STDOUT: %Convert.bound.ef4: = bound_method %int_24.e3c, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.477: = bound_method %int_24.e3c, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef4: = bound_method %int_24.e3c, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.477: = bound_method %int_24.e3c, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_24.365: %i32 = int_value 24 [concrete] // CHECK:STDOUT: %array: %array_type = tuple_value (%int_12.1e1, %int_24.365) [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] -// CHECK:STDOUT: %Convert.bound.d04: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b6e: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b6e: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -70,8 +70,8 @@ var d: i32 = a[b]; // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -132,21 +132,21 @@ var d: i32 = a[b]; // CHECK:STDOUT: %int_12: Core.IntLiteral = int_value 12 [concrete = constants.%int_12.6a3] // CHECK:STDOUT: %int_24: Core.IntLiteral = int_value 24 [concrete = constants.%int_24.e3c] // CHECK:STDOUT: %.loc15_31.1: %tuple.type = tuple_literal (%int_12, %int_24) -// CHECK:STDOUT: %impl.elem0.loc15_31.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc15_31.1: = bound_method %int_12, %impl.elem0.loc15_31.1 [concrete = constants.%Convert.bound.221] -// CHECK:STDOUT: %specific_fn.loc15_31.1: = specific_function %impl.elem0.loc15_31.1, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc15_31.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc15_31.1: = bound_method %int_12, %impl.elem0.loc15_31.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.221] +// CHECK:STDOUT: %specific_fn.loc15_31.1: = specific_function %impl.elem0.loc15_31.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc15_31.2: = bound_method %int_12, %specific_fn.loc15_31.1 [concrete = constants.%bound_method.dae] -// CHECK:STDOUT: %int.convert_checked.loc15_31.1: init %i32 = call %bound_method.loc15_31.2(%int_12) [concrete = constants.%int_12.1e1] -// CHECK:STDOUT: %.loc15_31.2: init %i32 = converted %int_12, %int.convert_checked.loc15_31.1 [concrete = constants.%int_12.1e1] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc15_31.1: init %i32 = call %bound_method.loc15_31.2(%int_12) [concrete = constants.%int_12.1e1] +// CHECK:STDOUT: %.loc15_31.2: init %i32 = converted %int_12, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc15_31.1 [concrete = constants.%int_12.1e1] // CHECK:STDOUT: %int_0.loc15: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] // CHECK:STDOUT: %.loc15_31.3: ref %i32 = array_index file.%a.var, %int_0.loc15 // CHECK:STDOUT: %.loc15_31.4: init %i32 = initialize_from %.loc15_31.2 to %.loc15_31.3 [concrete = constants.%int_12.1e1] -// CHECK:STDOUT: %impl.elem0.loc15_31.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc15_31.3: = bound_method %int_24, %impl.elem0.loc15_31.2 [concrete = constants.%Convert.bound.ef4] -// CHECK:STDOUT: %specific_fn.loc15_31.2: = specific_function %impl.elem0.loc15_31.2, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc15_31.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc15_31.3: = bound_method %int_24, %impl.elem0.loc15_31.2 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef4] +// CHECK:STDOUT: %specific_fn.loc15_31.2: = specific_function %impl.elem0.loc15_31.2, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc15_31.4: = bound_method %int_24, %specific_fn.loc15_31.2 [concrete = constants.%bound_method.477] -// CHECK:STDOUT: %int.convert_checked.loc15_31.2: init %i32 = call %bound_method.loc15_31.4(%int_24) [concrete = constants.%int_24.365] -// CHECK:STDOUT: %.loc15_31.5: init %i32 = converted %int_24, %int.convert_checked.loc15_31.2 [concrete = constants.%int_24.365] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc15_31.2: init %i32 = call %bound_method.loc15_31.4(%int_24) [concrete = constants.%int_24.365] +// CHECK:STDOUT: %.loc15_31.5: init %i32 = converted %int_24, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc15_31.2 [concrete = constants.%int_24.365] // CHECK:STDOUT: %int_1.loc15: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %.loc15_31.6: ref %i32 = array_index file.%a.var, %int_1.loc15 // CHECK:STDOUT: %.loc15_31.7: init %i32 = initialize_from %.loc15_31.5 to %.loc15_31.6 [concrete = constants.%int_24.365] @@ -154,23 +154,23 @@ var d: i32 = a[b]; // CHECK:STDOUT: %.loc15_1: init %array_type = converted %.loc15_31.1, %.loc15_31.8 [concrete = constants.%array] // CHECK:STDOUT: assign file.%a.var, %.loc15_1 // CHECK:STDOUT: %int_1.loc16: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0.loc16: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc16_1.1: = bound_method %int_1.loc16, %impl.elem0.loc16 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc16: = specific_function %impl.elem0.loc16, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc16: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc16_1.1: = bound_method %int_1.loc16, %impl.elem0.loc16 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc16: = specific_function %impl.elem0.loc16, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc16_1.2: = bound_method %int_1.loc16, %specific_fn.loc16 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc16: init %i32 = call %bound_method.loc16_1.2(%int_1.loc16) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc16: init %i32 = converted %int_1.loc16, %int.convert_checked.loc16 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc16: init %i32 = call %bound_method.loc16_1.2(%int_1.loc16) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc16: init %i32 = converted %int_1.loc16, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc16 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: assign file.%b.var, %.loc16 // CHECK:STDOUT: %a.ref.loc17: ref %array_type = name_ref a, file.%a [concrete = file.%a.var] // CHECK:STDOUT: %int_0.loc17: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] // CHECK:STDOUT: %int_32.loc17: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc17: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc17: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc17_16.1: = bound_method %int_0.loc17, %impl.elem0.loc17 [concrete = constants.%Convert.bound.d04] -// CHECK:STDOUT: %specific_fn.loc17: = specific_function %impl.elem0.loc17, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc17: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc17_16.1: = bound_method %int_0.loc17, %impl.elem0.loc17 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04] +// CHECK:STDOUT: %specific_fn.loc17: = specific_function %impl.elem0.loc17, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc17_16.2: = bound_method %int_0.loc17, %specific_fn.loc17 [concrete = constants.%bound_method.b6e] -// CHECK:STDOUT: %int.convert_checked.loc17: init %i32 = call %bound_method.loc17_16.2(%int_0.loc17) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc17_16.1: %i32 = value_of_initializer %int.convert_checked.loc17 [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc17: init %i32 = call %bound_method.loc17_16.2(%int_0.loc17) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc17_16.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc17 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc17_16.2: %i32 = converted %int_0.loc17, %.loc17_16.1 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc17_17.1: ref %i32 = array_index %a.ref.loc17, %.loc17_16.2 // CHECK:STDOUT: %.loc17_17.2: %i32 = bind_value %.loc17_17.1 diff --git a/toolchain/check/testdata/index/expr_category.carbon b/toolchain/check/testdata/index/expr_category.carbon index ab562ae60f35..3bd61edb9ba5 100644 --- a/toolchain/check/testdata/index/expr_category.carbon +++ b/toolchain/check/testdata/index/expr_category.carbon @@ -55,43 +55,43 @@ fn ValueBinding(b: array(i32, 3)) { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] -// CHECK:STDOUT: %Convert.bound.b30: = bound_method %int_3.1ba, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.047: = bound_method %int_3.1ba, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.b30: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.047: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_3.822: %i32 = int_value 3 [concrete] // CHECK:STDOUT: %array: %array_type = tuple_value (%int_1.5d2, %int_2.ef8, %int_3.822) [concrete] // CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] // CHECK:STDOUT: %pattern_type.fe8: type = pattern_type %ptr.235 [concrete] -// CHECK:STDOUT: %Convert.bound.d04: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b6e: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b6e: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: %int_4.0c1: Core.IntLiteral = int_value 4 [concrete] -// CHECK:STDOUT: %Convert.bound.ac3: = bound_method %int_4.0c1, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.1da: = bound_method %int_4.0c1, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ac3: = bound_method %int_4.0c1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.1da: = bound_method %int_4.0c1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_4.940: %i32 = int_value 4 [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.ba2: type = fn_type @Op.1, @Destroy.impl(%ptr.235) [concrete] -// CHECK:STDOUT: %Op.649: %Op.type.ba2 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.ba2: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%ptr.235) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.649: %T.as.Destroy.impl.Op.type.ba2 = struct_value () [concrete] // CHECK:STDOUT: %ptr.5d5: type = ptr_type %ptr.235 [concrete] -// CHECK:STDOUT: %Op.specific_fn.829: = specific_function %Op.649, @Op.1(%ptr.235) [concrete] -// CHECK:STDOUT: %Op.type.1e4: type = fn_type @Op.1, @Destroy.impl(%array_type) [concrete] -// CHECK:STDOUT: %Op.f0b: %Op.type.1e4 = struct_value () [concrete] -// CHECK:STDOUT: %Op.specific_fn.c51: = specific_function %Op.f0b, @Op.1(%array_type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.829: = specific_function %T.as.Destroy.impl.Op.649, @T.as.Destroy.impl.Op(%ptr.235) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.1e4: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%array_type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.f0b: %T.as.Destroy.impl.Op.type.1e4 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.c51: = specific_function %T.as.Destroy.impl.Op.f0b, @T.as.Destroy.impl.Op(%array_type) [concrete] // CHECK:STDOUT: %ValueBinding.type: type = fn_type @ValueBinding [concrete] // CHECK:STDOUT: %ValueBinding: %ValueBinding.type = struct_value () [concrete] // CHECK:STDOUT: } @@ -106,8 +106,8 @@ fn ValueBinding(b: array(i32, 3)) { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -171,30 +171,30 @@ fn ValueBinding(b: array(i32, 3)) { // CHECK:STDOUT: %int_2.loc18_30: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %int_3.loc18_33: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] // CHECK:STDOUT: %.loc18_34.1: %tuple.type = tuple_literal (%int_1.loc18_27, %int_2.loc18_30, %int_3.loc18_33) -// CHECK:STDOUT: %impl.elem0.loc18_34.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc18_34.1: = bound_method %int_1.loc18_27, %impl.elem0.loc18_34.1 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc18_34.1: = specific_function %impl.elem0.loc18_34.1, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc18_34.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc18_34.1: = bound_method %int_1.loc18_27, %impl.elem0.loc18_34.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc18_34.1: = specific_function %impl.elem0.loc18_34.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc18_34.2: = bound_method %int_1.loc18_27, %specific_fn.loc18_34.1 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc18_34.1: init %i32 = call %bound_method.loc18_34.2(%int_1.loc18_27) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc18_34.2: init %i32 = converted %int_1.loc18_27, %int.convert_checked.loc18_34.1 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc18_34.1: init %i32 = call %bound_method.loc18_34.2(%int_1.loc18_27) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc18_34.2: init %i32 = converted %int_1.loc18_27, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc18_34.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %int_0.loc18: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] // CHECK:STDOUT: %.loc18_34.3: ref %i32 = array_index %a.var, %int_0.loc18 // CHECK:STDOUT: %.loc18_34.4: init %i32 = initialize_from %.loc18_34.2 to %.loc18_34.3 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %impl.elem0.loc18_34.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc18_34.3: = bound_method %int_2.loc18_30, %impl.elem0.loc18_34.2 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc18_34.2: = specific_function %impl.elem0.loc18_34.2, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc18_34.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc18_34.3: = bound_method %int_2.loc18_30, %impl.elem0.loc18_34.2 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc18_34.2: = specific_function %impl.elem0.loc18_34.2, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc18_34.4: = bound_method %int_2.loc18_30, %specific_fn.loc18_34.2 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc18_34.2: init %i32 = call %bound_method.loc18_34.4(%int_2.loc18_30) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc18_34.5: init %i32 = converted %int_2.loc18_30, %int.convert_checked.loc18_34.2 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc18_34.2: init %i32 = call %bound_method.loc18_34.4(%int_2.loc18_30) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc18_34.5: init %i32 = converted %int_2.loc18_30, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc18_34.2 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %int_1.loc18_34: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %.loc18_34.6: ref %i32 = array_index %a.var, %int_1.loc18_34 // CHECK:STDOUT: %.loc18_34.7: init %i32 = initialize_from %.loc18_34.5 to %.loc18_34.6 [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %impl.elem0.loc18_34.3: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc18_34.5: = bound_method %int_3.loc18_33, %impl.elem0.loc18_34.3 [concrete = constants.%Convert.bound.b30] -// CHECK:STDOUT: %specific_fn.loc18_34.3: = specific_function %impl.elem0.loc18_34.3, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc18_34.3: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc18_34.5: = bound_method %int_3.loc18_33, %impl.elem0.loc18_34.3 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.b30] +// CHECK:STDOUT: %specific_fn.loc18_34.3: = specific_function %impl.elem0.loc18_34.3, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc18_34.6: = bound_method %int_3.loc18_33, %specific_fn.loc18_34.3 [concrete = constants.%bound_method.047] -// CHECK:STDOUT: %int.convert_checked.loc18_34.3: init %i32 = call %bound_method.loc18_34.6(%int_3.loc18_33) [concrete = constants.%int_3.822] -// CHECK:STDOUT: %.loc18_34.8: init %i32 = converted %int_3.loc18_33, %int.convert_checked.loc18_34.3 [concrete = constants.%int_3.822] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc18_34.3: init %i32 = call %bound_method.loc18_34.6(%int_3.loc18_33) [concrete = constants.%int_3.822] +// CHECK:STDOUT: %.loc18_34.8: init %i32 = converted %int_3.loc18_33, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc18_34.3 [concrete = constants.%int_3.822] // CHECK:STDOUT: %int_2.loc18_34: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %.loc18_34.9: ref %i32 = array_index %a.var, %int_2.loc18_34 // CHECK:STDOUT: %.loc18_34.10: init %i32 = initialize_from %.loc18_34.8 to %.loc18_34.9 [concrete = constants.%int_3.822] @@ -217,12 +217,12 @@ fn ValueBinding(b: array(i32, 3)) { // CHECK:STDOUT: %int_0.loc21: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] // CHECK:STDOUT: %int_32.loc21_22: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc21_22: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc21: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc21_21.1: = bound_method %int_0.loc21, %impl.elem0.loc21 [concrete = constants.%Convert.bound.d04] -// CHECK:STDOUT: %specific_fn.loc21: = specific_function %impl.elem0.loc21, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc21: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc21_21.1: = bound_method %int_0.loc21, %impl.elem0.loc21 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04] +// CHECK:STDOUT: %specific_fn.loc21: = specific_function %impl.elem0.loc21, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc21_21.2: = bound_method %int_0.loc21, %specific_fn.loc21 [concrete = constants.%bound_method.b6e] -// CHECK:STDOUT: %int.convert_checked.loc21: init %i32 = call %bound_method.loc21_21.2(%int_0.loc21) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc21_21.1: %i32 = value_of_initializer %int.convert_checked.loc21 [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21: init %i32 = call %bound_method.loc21_21.2(%int_0.loc21) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc21_21.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc21_21.2: %i32 = converted %int_0.loc21, %.loc21_21.1 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc21_22: ref %i32 = array_index %a.ref.loc21, %.loc21_21.2 // CHECK:STDOUT: %addr.loc21_18: %ptr.235 = addr_of %.loc21_22 @@ -237,32 +237,32 @@ fn ValueBinding(b: array(i32, 3)) { // CHECK:STDOUT: %int_0.loc22: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] // CHECK:STDOUT: %int_32.loc22: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc22: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc22_5: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc22_5.1: = bound_method %int_0.loc22, %impl.elem0.loc22_5 [concrete = constants.%Convert.bound.d04] -// CHECK:STDOUT: %specific_fn.loc22_5: = specific_function %impl.elem0.loc22_5, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc22_5: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc22_5.1: = bound_method %int_0.loc22, %impl.elem0.loc22_5 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04] +// CHECK:STDOUT: %specific_fn.loc22_5: = specific_function %impl.elem0.loc22_5, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc22_5.2: = bound_method %int_0.loc22, %specific_fn.loc22_5 [concrete = constants.%bound_method.b6e] -// CHECK:STDOUT: %int.convert_checked.loc22_5: init %i32 = call %bound_method.loc22_5.2(%int_0.loc22) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc22_5.1: %i32 = value_of_initializer %int.convert_checked.loc22_5 [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22_5: init %i32 = call %bound_method.loc22_5.2(%int_0.loc22) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc22_5.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22_5 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc22_5.2: %i32 = converted %int_0.loc22, %.loc22_5.1 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc22_6: ref %i32 = array_index %a.ref.loc22, %.loc22_5.2 // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete = constants.%int_4.0c1] -// CHECK:STDOUT: %impl.elem0.loc22_8: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc22_8.1: = bound_method %int_4, %impl.elem0.loc22_8 [concrete = constants.%Convert.bound.ac3] -// CHECK:STDOUT: %specific_fn.loc22_8: = specific_function %impl.elem0.loc22_8, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc22_8: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc22_8.1: = bound_method %int_4, %impl.elem0.loc22_8 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ac3] +// CHECK:STDOUT: %specific_fn.loc22_8: = specific_function %impl.elem0.loc22_8, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc22_8.2: = bound_method %int_4, %specific_fn.loc22_8 [concrete = constants.%bound_method.1da] -// CHECK:STDOUT: %int.convert_checked.loc22_8: init %i32 = call %bound_method.loc22_8.2(%int_4) [concrete = constants.%int_4.940] -// CHECK:STDOUT: %.loc22_8: init %i32 = converted %int_4, %int.convert_checked.loc22_8 [concrete = constants.%int_4.940] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22_8: init %i32 = call %bound_method.loc22_8.2(%int_4) [concrete = constants.%int_4.940] +// CHECK:STDOUT: %.loc22_8: init %i32 = converted %int_4, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22_8 [concrete = constants.%int_4.940] // CHECK:STDOUT: assign %.loc22_6, %.loc22_8 -// CHECK:STDOUT: %Op.bound.loc21: = bound_method %pa.var, constants.%Op.649 -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.649, @Op.1(constants.%ptr.235) [concrete = constants.%Op.specific_fn.829] -// CHECK:STDOUT: %bound_method.loc21_3: = bound_method %pa.var, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc21: = bound_method %pa.var, constants.%T.as.Destroy.impl.Op.649 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.649, @T.as.Destroy.impl.Op(constants.%ptr.235) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.829] +// CHECK:STDOUT: %bound_method.loc21_3: = bound_method %pa.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc21_3: %ptr.5d5 = addr_of %pa.var -// CHECK:STDOUT: %no_op.loc21: init %empty_tuple.type = call %bound_method.loc21_3(%addr.loc21_3) -// CHECK:STDOUT: %Op.bound.loc18: = bound_method %a.var, constants.%Op.f0b -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.f0b, @Op.1(constants.%array_type) [concrete = constants.%Op.specific_fn.c51] -// CHECK:STDOUT: %bound_method.loc18_3: = bound_method %a.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc21: init %empty_tuple.type = call %bound_method.loc21_3(%addr.loc21_3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc18: = bound_method %a.var, constants.%T.as.Destroy.impl.Op.f0b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.f0b, @T.as.Destroy.impl.Op(constants.%array_type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.c51] +// CHECK:STDOUT: %bound_method.loc18_3: = bound_method %a.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc18: %ptr.f01 = addr_of %a.var -// CHECK:STDOUT: %no_op.loc18: init %empty_tuple.type = call %bound_method.loc18_3(%addr.loc18) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc18: init %empty_tuple.type = call %bound_method.loc18_3(%addr.loc18) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -277,30 +277,30 @@ fn ValueBinding(b: array(i32, 3)) { // CHECK:STDOUT: %int_2.loc26_30: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %int_3.loc26_33: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] // CHECK:STDOUT: %.loc26_34.1: %tuple.type = tuple_literal (%int_1.loc26_27, %int_2.loc26_30, %int_3.loc26_33) -// CHECK:STDOUT: %impl.elem0.loc26_34.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc26_34.1: = bound_method %int_1.loc26_27, %impl.elem0.loc26_34.1 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc26_34.1: = specific_function %impl.elem0.loc26_34.1, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc26_34.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc26_34.1: = bound_method %int_1.loc26_27, %impl.elem0.loc26_34.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc26_34.1: = specific_function %impl.elem0.loc26_34.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc26_34.2: = bound_method %int_1.loc26_27, %specific_fn.loc26_34.1 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc26_34.1: init %i32 = call %bound_method.loc26_34.2(%int_1.loc26_27) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc26_34.2: init %i32 = converted %int_1.loc26_27, %int.convert_checked.loc26_34.1 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc26_34.1: init %i32 = call %bound_method.loc26_34.2(%int_1.loc26_27) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc26_34.2: init %i32 = converted %int_1.loc26_27, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc26_34.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %int_0.loc26: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] // CHECK:STDOUT: %.loc26_34.3: ref %i32 = array_index %a.var, %int_0.loc26 // CHECK:STDOUT: %.loc26_34.4: init %i32 = initialize_from %.loc26_34.2 to %.loc26_34.3 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %impl.elem0.loc26_34.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc26_34.3: = bound_method %int_2.loc26_30, %impl.elem0.loc26_34.2 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc26_34.2: = specific_function %impl.elem0.loc26_34.2, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc26_34.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc26_34.3: = bound_method %int_2.loc26_30, %impl.elem0.loc26_34.2 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc26_34.2: = specific_function %impl.elem0.loc26_34.2, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc26_34.4: = bound_method %int_2.loc26_30, %specific_fn.loc26_34.2 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc26_34.2: init %i32 = call %bound_method.loc26_34.4(%int_2.loc26_30) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc26_34.5: init %i32 = converted %int_2.loc26_30, %int.convert_checked.loc26_34.2 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc26_34.2: init %i32 = call %bound_method.loc26_34.4(%int_2.loc26_30) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc26_34.5: init %i32 = converted %int_2.loc26_30, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc26_34.2 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %int_1.loc26_34: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %.loc26_34.6: ref %i32 = array_index %a.var, %int_1.loc26_34 // CHECK:STDOUT: %.loc26_34.7: init %i32 = initialize_from %.loc26_34.5 to %.loc26_34.6 [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %impl.elem0.loc26_34.3: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc26_34.5: = bound_method %int_3.loc26_33, %impl.elem0.loc26_34.3 [concrete = constants.%Convert.bound.b30] -// CHECK:STDOUT: %specific_fn.loc26_34.3: = specific_function %impl.elem0.loc26_34.3, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc26_34.3: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc26_34.5: = bound_method %int_3.loc26_33, %impl.elem0.loc26_34.3 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.b30] +// CHECK:STDOUT: %specific_fn.loc26_34.3: = specific_function %impl.elem0.loc26_34.3, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc26_34.6: = bound_method %int_3.loc26_33, %specific_fn.loc26_34.3 [concrete = constants.%bound_method.047] -// CHECK:STDOUT: %int.convert_checked.loc26_34.3: init %i32 = call %bound_method.loc26_34.6(%int_3.loc26_33) [concrete = constants.%int_3.822] -// CHECK:STDOUT: %.loc26_34.8: init %i32 = converted %int_3.loc26_33, %int.convert_checked.loc26_34.3 [concrete = constants.%int_3.822] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc26_34.3: init %i32 = call %bound_method.loc26_34.6(%int_3.loc26_33) [concrete = constants.%int_3.822] +// CHECK:STDOUT: %.loc26_34.8: init %i32 = converted %int_3.loc26_33, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc26_34.3 [concrete = constants.%int_3.822] // CHECK:STDOUT: %int_2.loc26_34: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %.loc26_34.9: ref %i32 = array_index %a.var, %int_2.loc26_34 // CHECK:STDOUT: %.loc26_34.10: init %i32 = initialize_from %.loc26_34.8 to %.loc26_34.9 [concrete = constants.%int_3.822] @@ -318,24 +318,24 @@ fn ValueBinding(b: array(i32, 3)) { // CHECK:STDOUT: %int_0.loc30: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] // CHECK:STDOUT: %int_32.loc30: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc30: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc30: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc30_5.1: = bound_method %int_0.loc30, %impl.elem0.loc30 [concrete = constants.%Convert.bound.d04] -// CHECK:STDOUT: %specific_fn.loc30: = specific_function %impl.elem0.loc30, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc30: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc30_5.1: = bound_method %int_0.loc30, %impl.elem0.loc30 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04] +// CHECK:STDOUT: %specific_fn.loc30: = specific_function %impl.elem0.loc30, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc30_5.2: = bound_method %int_0.loc30, %specific_fn.loc30 [concrete = constants.%bound_method.b6e] -// CHECK:STDOUT: %int.convert_checked.loc30: init %i32 = call %bound_method.loc30_5.2(%int_0.loc30) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc30_5.1: %i32 = value_of_initializer %int.convert_checked.loc30 [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc30: init %i32 = call %bound_method.loc30_5.2(%int_0.loc30) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc30_5.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc30 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc30_5.2: %i32 = converted %int_0.loc30, %.loc30_5.1 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc30_6: ref %i32 = array_index %a.ref, %.loc30_5.2 // CHECK:STDOUT: %b.ref: %array_type = name_ref b, %b // CHECK:STDOUT: %int_0.loc31: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] // CHECK:STDOUT: %int_32.loc31: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc31: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc31: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc31_5.1: = bound_method %int_0.loc31, %impl.elem0.loc31 [concrete = constants.%Convert.bound.d04] -// CHECK:STDOUT: %specific_fn.loc31: = specific_function %impl.elem0.loc31, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc31: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc31_5.1: = bound_method %int_0.loc31, %impl.elem0.loc31 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04] +// CHECK:STDOUT: %specific_fn.loc31: = specific_function %impl.elem0.loc31, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc31_5.2: = bound_method %int_0.loc31, %specific_fn.loc31 [concrete = constants.%bound_method.b6e] -// CHECK:STDOUT: %int.convert_checked.loc31: init %i32 = call %bound_method.loc31_5.2(%int_0.loc31) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc31_5.1: %i32 = value_of_initializer %int.convert_checked.loc31 [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc31: init %i32 = call %bound_method.loc31_5.2(%int_0.loc31) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc31_5.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc31 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc31_5.2: %i32 = converted %int_0.loc31, %.loc31_5.1 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc31_6.1: ref %array_type = value_as_ref %b.ref // CHECK:STDOUT: %.loc31_6.2: ref %i32 = array_index %.loc31_6.1, %.loc31_5.2 @@ -347,25 +347,25 @@ fn ValueBinding(b: array(i32, 3)) { // CHECK:STDOUT: %.loc32_5.2: ref %array_type = temporary %.loc32_5.1, %F.call // CHECK:STDOUT: %int_32.loc32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc32: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc32_7.1: = bound_method %int_0.loc32, %impl.elem0.loc32 [concrete = constants.%Convert.bound.d04] -// CHECK:STDOUT: %specific_fn.loc32: = specific_function %impl.elem0.loc32, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc32: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc32_7.1: = bound_method %int_0.loc32, %impl.elem0.loc32 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04] +// CHECK:STDOUT: %specific_fn.loc32: = specific_function %impl.elem0.loc32, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc32_7.2: = bound_method %int_0.loc32, %specific_fn.loc32 [concrete = constants.%bound_method.b6e] -// CHECK:STDOUT: %int.convert_checked.loc32: init %i32 = call %bound_method.loc32_7.2(%int_0.loc32) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc32_7.1: %i32 = value_of_initializer %int.convert_checked.loc32 [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc32: init %i32 = call %bound_method.loc32_7.2(%int_0.loc32) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc32_7.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc32 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc32_7.2: %i32 = converted %int_0.loc32, %.loc32_7.1 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc32_8.1: ref %i32 = array_index %.loc32_5.2, %.loc32_7.2 // CHECK:STDOUT: %.loc32_8.2: %i32 = bind_value %.loc32_8.1 -// CHECK:STDOUT: %Op.bound.loc32: = bound_method %.loc32_5.1, constants.%Op.f0b -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.f0b, @Op.1(constants.%array_type) [concrete = constants.%Op.specific_fn.c51] -// CHECK:STDOUT: %bound_method.loc32_5: = bound_method %.loc32_5.1, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc32: = bound_method %.loc32_5.1, constants.%T.as.Destroy.impl.Op.f0b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.f0b, @T.as.Destroy.impl.Op(constants.%array_type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.c51] +// CHECK:STDOUT: %bound_method.loc32_5: = bound_method %.loc32_5.1, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc32: %ptr.f01 = addr_of %.loc32_5.1 -// CHECK:STDOUT: %no_op.loc32: init %empty_tuple.type = call %bound_method.loc32_5(%addr.loc32) -// CHECK:STDOUT: %Op.bound.loc26: = bound_method %a.var, constants.%Op.f0b -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.f0b, @Op.1(constants.%array_type) [concrete = constants.%Op.specific_fn.c51] -// CHECK:STDOUT: %bound_method.loc26_3: = bound_method %a.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc32: init %empty_tuple.type = call %bound_method.loc32_5(%addr.loc32) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc26: = bound_method %a.var, constants.%T.as.Destroy.impl.Op.f0b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.f0b, @T.as.Destroy.impl.Op(constants.%array_type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.c51] +// CHECK:STDOUT: %bound_method.loc26_3: = bound_method %a.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc26: %ptr.f01 = addr_of %a.var -// CHECK:STDOUT: %no_op.loc26: init %empty_tuple.type = call %bound_method.loc26_3(%addr.loc26) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc26: init %empty_tuple.type = call %bound_method.loc26_3(%addr.loc26) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/index/fail_array_large_index.carbon b/toolchain/check/testdata/index/fail_array_large_index.carbon index 8d4b62b0e376..df9f4da12920 100644 --- a/toolchain/check/testdata/index/fail_array_large_index.carbon +++ b/toolchain/check/testdata/index/fail_array_large_index.carbon @@ -42,27 +42,27 @@ var c: i32 = a[0x7FFF_FFFF]; // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.221: = bound_method %int_12.6a3, %Convert.956 [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.221: = bound_method %int_12.6a3, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.dae: = bound_method %int_12.6a3, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.dae: = bound_method %int_12.6a3, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_12.1e1: %i32 = int_value 12 [concrete] // CHECK:STDOUT: %array: %array_type = tuple_value (%int_12.1e1) [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %int_2147483647.d89: Core.IntLiteral = int_value 2147483647 [concrete] -// CHECK:STDOUT: %Convert.bound.f38: = bound_method %int_2147483647.d89, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.8e1: = bound_method %int_2147483647.d89, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.f38: = bound_method %int_2147483647.d89, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.8e1: = bound_method %int_2147483647.d89, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2147483647.a74: %i32 = int_value 2147483647 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -75,8 +75,8 @@ var c: i32 = a[0x7FFF_FFFF]; // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -125,12 +125,12 @@ var c: i32 = a[0x7FFF_FFFF]; // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_12: Core.IntLiteral = int_value 12 [concrete = constants.%int_12.6a3] // CHECK:STDOUT: %.loc15_28.1: %tuple.type = tuple_literal (%int_12) -// CHECK:STDOUT: %impl.elem0.loc15: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc15_28.1: = bound_method %int_12, %impl.elem0.loc15 [concrete = constants.%Convert.bound.221] -// CHECK:STDOUT: %specific_fn.loc15: = specific_function %impl.elem0.loc15, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc15: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc15_28.1: = bound_method %int_12, %impl.elem0.loc15 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.221] +// CHECK:STDOUT: %specific_fn.loc15: = specific_function %impl.elem0.loc15, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc15_28.2: = bound_method %int_12, %specific_fn.loc15 [concrete = constants.%bound_method.dae] -// CHECK:STDOUT: %int.convert_checked.loc15: init %i32 = call %bound_method.loc15_28.2(%int_12) [concrete = constants.%int_12.1e1] -// CHECK:STDOUT: %.loc15_28.2: init %i32 = converted %int_12, %int.convert_checked.loc15 [concrete = constants.%int_12.1e1] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc15: init %i32 = call %bound_method.loc15_28.2(%int_12) [concrete = constants.%int_12.1e1] +// CHECK:STDOUT: %.loc15_28.2: init %i32 = converted %int_12, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc15 [concrete = constants.%int_12.1e1] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] // CHECK:STDOUT: %.loc15_28.3: ref %i32 = array_index file.%a.var, %int_0 // CHECK:STDOUT: %.loc15_28.4: init %i32 = initialize_from %.loc15_28.2 to %.loc15_28.3 [concrete = constants.%int_12.1e1] @@ -141,12 +141,12 @@ var c: i32 = a[0x7FFF_FFFF]; // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_32.loc21: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc21: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc21: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc21_16.1: = bound_method %int_1, %impl.elem0.loc21 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc21: = specific_function %impl.elem0.loc21, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc21: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc21_16.1: = bound_method %int_1, %impl.elem0.loc21 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc21: = specific_function %impl.elem0.loc21, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc21_16.2: = bound_method %int_1, %specific_fn.loc21 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc21: init %i32 = call %bound_method.loc21_16.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc21_16.1: %i32 = value_of_initializer %int.convert_checked.loc21 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21: init %i32 = call %bound_method.loc21_16.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc21_16.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc21_16.2: %i32 = converted %int_1, %.loc21_16.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc21_17.1: ref %i32 = array_index %a.ref.loc21, %.loc21_16.2 [concrete = ] // CHECK:STDOUT: %.loc21_17.2: %i32 = bind_value %.loc21_17.1 [concrete = ] @@ -155,12 +155,12 @@ var c: i32 = a[0x7FFF_FFFF]; // CHECK:STDOUT: %int_2147483647: Core.IntLiteral = int_value 2147483647 [concrete = constants.%int_2147483647.d89] // CHECK:STDOUT: %int_32.loc27: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc27: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc27: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc27_16.1: = bound_method %int_2147483647, %impl.elem0.loc27 [concrete = constants.%Convert.bound.f38] -// CHECK:STDOUT: %specific_fn.loc27: = specific_function %impl.elem0.loc27, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc27: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc27_16.1: = bound_method %int_2147483647, %impl.elem0.loc27 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.f38] +// CHECK:STDOUT: %specific_fn.loc27: = specific_function %impl.elem0.loc27, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc27_16.2: = bound_method %int_2147483647, %specific_fn.loc27 [concrete = constants.%bound_method.8e1] -// CHECK:STDOUT: %int.convert_checked.loc27: init %i32 = call %bound_method.loc27_16.2(%int_2147483647) [concrete = constants.%int_2147483647.a74] -// CHECK:STDOUT: %.loc27_16.1: %i32 = value_of_initializer %int.convert_checked.loc27 [concrete = constants.%int_2147483647.a74] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc27: init %i32 = call %bound_method.loc27_16.2(%int_2147483647) [concrete = constants.%int_2147483647.a74] +// CHECK:STDOUT: %.loc27_16.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc27 [concrete = constants.%int_2147483647.a74] // CHECK:STDOUT: %.loc27_16.2: %i32 = converted %int_2147483647, %.loc27_16.1 [concrete = constants.%int_2147483647.a74] // CHECK:STDOUT: %.loc27_27.1: ref %i32 = array_index %a.ref.loc27, %.loc27_16.2 [concrete = ] // CHECK:STDOUT: %.loc27_27.2: %i32 = bind_value %.loc27_27.1 [concrete = ] diff --git a/toolchain/check/testdata/index/fail_array_non_int_indexing.carbon b/toolchain/check/testdata/index/fail_array_non_int_indexing.carbon index 027fbaab22a2..8d02027f73c9 100644 --- a/toolchain/check/testdata/index/fail_array_non_int_indexing.carbon +++ b/toolchain/check/testdata/index/fail_array_non_int_indexing.carbon @@ -38,19 +38,19 @@ var b: i32 = a[2.6]; // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_12.6a3, %Convert.956 [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_12.6a3, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_12.6a3, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_12.6a3, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_12.1e1: %i32 = int_value 12 [concrete] // CHECK:STDOUT: %array: %array_type = tuple_value (%int_12.1e1) [concrete] // CHECK:STDOUT: %float: f64 = float_literal 2.6000000000000001 [concrete] @@ -65,8 +65,8 @@ var b: i32 = a[2.6]; // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -104,12 +104,12 @@ var b: i32 = a[2.6]; // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_12: Core.IntLiteral = int_value 12 [concrete = constants.%int_12.6a3] // CHECK:STDOUT: %.loc15_28.1: %tuple.type = tuple_literal (%int_12) -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc15_28.1: = bound_method %int_12, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc15_28.1: = bound_method %int_12, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc15_28.2: = bound_method %int_12, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc15_28.2(%int_12) [concrete = constants.%int_12.1e1] -// CHECK:STDOUT: %.loc15_28.2: init %i32 = converted %int_12, %int.convert_checked [concrete = constants.%int_12.1e1] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc15_28.2(%int_12) [concrete = constants.%int_12.1e1] +// CHECK:STDOUT: %.loc15_28.2: init %i32 = converted %int_12, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_12.1e1] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] // CHECK:STDOUT: %.loc15_28.3: ref %i32 = array_index file.%a.var, %int_0 // CHECK:STDOUT: %.loc15_28.4: init %i32 = initialize_from %.loc15_28.2 to %.loc15_28.3 [concrete = constants.%int_12.1e1] diff --git a/toolchain/check/testdata/index/fail_array_out_of_bound_access.carbon b/toolchain/check/testdata/index/fail_array_out_of_bound_access.carbon index 9eda33a7db1c..94e7a806fbd1 100644 --- a/toolchain/check/testdata/index/fail_array_out_of_bound_access.carbon +++ b/toolchain/check/testdata/index/fail_array_out_of_bound_access.carbon @@ -35,23 +35,23 @@ var b: i32 = a[1]; // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.221: = bound_method %int_12.6a3, %Convert.956 [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.221: = bound_method %int_12.6a3, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.dae: = bound_method %int_12.6a3, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.dae: = bound_method %int_12.6a3, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_12.1e1: %i32 = int_value 12 [concrete] // CHECK:STDOUT: %array: %array_type = tuple_value (%int_12.1e1) [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -64,8 +64,8 @@ var b: i32 = a[1]; // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -103,12 +103,12 @@ var b: i32 = a[1]; // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_12: Core.IntLiteral = int_value 12 [concrete = constants.%int_12.6a3] // CHECK:STDOUT: %.loc15_28.1: %tuple.type = tuple_literal (%int_12) -// CHECK:STDOUT: %impl.elem0.loc15: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc15_28.1: = bound_method %int_12, %impl.elem0.loc15 [concrete = constants.%Convert.bound.221] -// CHECK:STDOUT: %specific_fn.loc15: = specific_function %impl.elem0.loc15, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc15: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc15_28.1: = bound_method %int_12, %impl.elem0.loc15 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.221] +// CHECK:STDOUT: %specific_fn.loc15: = specific_function %impl.elem0.loc15, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc15_28.2: = bound_method %int_12, %specific_fn.loc15 [concrete = constants.%bound_method.dae] -// CHECK:STDOUT: %int.convert_checked.loc15: init %i32 = call %bound_method.loc15_28.2(%int_12) [concrete = constants.%int_12.1e1] -// CHECK:STDOUT: %.loc15_28.2: init %i32 = converted %int_12, %int.convert_checked.loc15 [concrete = constants.%int_12.1e1] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc15: init %i32 = call %bound_method.loc15_28.2(%int_12) [concrete = constants.%int_12.1e1] +// CHECK:STDOUT: %.loc15_28.2: init %i32 = converted %int_12, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc15 [concrete = constants.%int_12.1e1] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] // CHECK:STDOUT: %.loc15_28.3: ref %i32 = array_index file.%a.var, %int_0 // CHECK:STDOUT: %.loc15_28.4: init %i32 = initialize_from %.loc15_28.2 to %.loc15_28.3 [concrete = constants.%int_12.1e1] @@ -119,12 +119,12 @@ var b: i32 = a[1]; // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc20: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc20_16.1: = bound_method %int_1, %impl.elem0.loc20 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc20: = specific_function %impl.elem0.loc20, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc20: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc20_16.1: = bound_method %int_1, %impl.elem0.loc20 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc20: = specific_function %impl.elem0.loc20, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc20_16.2: = bound_method %int_1, %specific_fn.loc20 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc20: init %i32 = call %bound_method.loc20_16.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc20_16.1: %i32 = value_of_initializer %int.convert_checked.loc20 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc20: init %i32 = call %bound_method.loc20_16.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc20_16.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc20 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc20_16.2: %i32 = converted %int_1, %.loc20_16.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc20_17.1: ref %i32 = array_index %a.ref, %.loc20_16.2 [concrete = ] // CHECK:STDOUT: %.loc20_17.2: %i32 = bind_value %.loc20_17.1 [concrete = ] diff --git a/toolchain/check/testdata/index/fail_expr_category.carbon b/toolchain/check/testdata/index/fail_expr_category.carbon index f10ec62588db..51c54ef3dd55 100644 --- a/toolchain/check/testdata/index/fail_expr_category.carbon +++ b/toolchain/check/testdata/index/fail_expr_category.carbon @@ -63,31 +63,31 @@ fn G(b: array(i32, 3)) { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.d04: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.b6e: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.b6e: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: %int_4.0c1: Core.IntLiteral = int_value 4 [concrete] -// CHECK:STDOUT: %Convert.bound.ac3: = bound_method %int_4.0c1, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.1da: = bound_method %int_4.0c1, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ac3: = bound_method %int_4.0c1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.1da: = bound_method %int_4.0c1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_4.940: %i32 = int_value 4 [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.1e4: type = fn_type @Op.1, @Destroy.impl(%array_type) [concrete] -// CHECK:STDOUT: %Op.f0b: %Op.type.1e4 = struct_value () [concrete] -// CHECK:STDOUT: %Op.specific_fn.c51: = specific_function %Op.f0b, @Op.1(%array_type) [concrete] -// CHECK:STDOUT: %Op.type.ba2: type = fn_type @Op.1, @Destroy.impl(%ptr.235) [concrete] -// CHECK:STDOUT: %Op.649: %Op.type.ba2 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.1e4: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%array_type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.f0b: %T.as.Destroy.impl.Op.type.1e4 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.c51: = specific_function %T.as.Destroy.impl.Op.f0b, @T.as.Destroy.impl.Op(%array_type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.ba2: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%ptr.235) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.649: %T.as.Destroy.impl.Op.type.ba2 = struct_value () [concrete] // CHECK:STDOUT: %ptr.5d5: type = ptr_type %ptr.235 [concrete] -// CHECK:STDOUT: %Op.specific_fn.829: = specific_function %Op.649, @Op.1(%ptr.235) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.829: = specific_function %T.as.Destroy.impl.Op.649, @T.as.Destroy.impl.Op(%ptr.235) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -100,8 +100,8 @@ fn G(b: array(i32, 3)) { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -151,12 +151,12 @@ fn G(b: array(i32, 3)) { // CHECK:STDOUT: %int_0.loc23: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] // CHECK:STDOUT: %int_32.loc23_22: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc23_22: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc23: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc23_21.1: = bound_method %int_0.loc23, %impl.elem0.loc23 [concrete = constants.%Convert.bound.d04] -// CHECK:STDOUT: %specific_fn.loc23: = specific_function %impl.elem0.loc23, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc23: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc23_21.1: = bound_method %int_0.loc23, %impl.elem0.loc23 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04] +// CHECK:STDOUT: %specific_fn.loc23: = specific_function %impl.elem0.loc23, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc23_21.2: = bound_method %int_0.loc23, %specific_fn.loc23 [concrete = constants.%bound_method.b6e] -// CHECK:STDOUT: %int.convert_checked.loc23: init %i32 = call %bound_method.loc23_21.2(%int_0.loc23) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc23_21.1: %i32 = value_of_initializer %int.convert_checked.loc23 [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc23: init %i32 = call %bound_method.loc23_21.2(%int_0.loc23) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc23_21.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc23 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc23_21.2: %i32 = converted %int_0.loc23, %.loc23_21.1 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc23_22.1: ref %array_type = value_as_ref %b.ref.loc23 // CHECK:STDOUT: %.loc23_22.2: ref %i32 = array_index %.loc23_22.1, %.loc23_21.2 @@ -173,23 +173,23 @@ fn G(b: array(i32, 3)) { // CHECK:STDOUT: %int_0.loc28: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] // CHECK:STDOUT: %int_32.loc28: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc28: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc28_5: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc28_5.1: = bound_method %int_0.loc28, %impl.elem0.loc28_5 [concrete = constants.%Convert.bound.d04] -// CHECK:STDOUT: %specific_fn.loc28_5: = specific_function %impl.elem0.loc28_5, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc28_5: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc28_5.1: = bound_method %int_0.loc28, %impl.elem0.loc28_5 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04] +// CHECK:STDOUT: %specific_fn.loc28_5: = specific_function %impl.elem0.loc28_5, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc28_5.2: = bound_method %int_0.loc28, %specific_fn.loc28_5 [concrete = constants.%bound_method.b6e] -// CHECK:STDOUT: %int.convert_checked.loc28_5: init %i32 = call %bound_method.loc28_5.2(%int_0.loc28) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc28_5.1: %i32 = value_of_initializer %int.convert_checked.loc28_5 [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc28_5: init %i32 = call %bound_method.loc28_5.2(%int_0.loc28) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc28_5.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc28_5 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc28_5.2: %i32 = converted %int_0.loc28, %.loc28_5.1 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc28_6.1: ref %array_type = value_as_ref %b.ref.loc28 // CHECK:STDOUT: %.loc28_6.2: ref %i32 = array_index %.loc28_6.1, %.loc28_5.2 // CHECK:STDOUT: %.loc28_6.3: %i32 = bind_value %.loc28_6.2 // CHECK:STDOUT: %int_4.loc28: Core.IntLiteral = int_value 4 [concrete = constants.%int_4.0c1] -// CHECK:STDOUT: %impl.elem0.loc28_8: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc28_8.1: = bound_method %int_4.loc28, %impl.elem0.loc28_8 [concrete = constants.%Convert.bound.ac3] -// CHECK:STDOUT: %specific_fn.loc28_8: = specific_function %impl.elem0.loc28_8, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc28_8: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc28_8.1: = bound_method %int_4.loc28, %impl.elem0.loc28_8 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ac3] +// CHECK:STDOUT: %specific_fn.loc28_8: = specific_function %impl.elem0.loc28_8, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc28_8.2: = bound_method %int_4.loc28, %specific_fn.loc28_8 [concrete = constants.%bound_method.1da] -// CHECK:STDOUT: %int.convert_checked.loc28_8: init %i32 = call %bound_method.loc28_8.2(%int_4.loc28) [concrete = constants.%int_4.940] -// CHECK:STDOUT: %.loc28_8: init %i32 = converted %int_4.loc28, %int.convert_checked.loc28_8 [concrete = constants.%int_4.940] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc28_8: init %i32 = call %bound_method.loc28_8.2(%int_4.loc28) [concrete = constants.%int_4.940] +// CHECK:STDOUT: %.loc28_8: init %i32 = converted %int_4.loc28, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc28_8 [concrete = constants.%int_4.940] // CHECK:STDOUT: assign %.loc28_6.3, %.loc28_8 // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %pf.patt: %pattern_type.fe8 = binding_pattern pf [concrete] @@ -203,12 +203,12 @@ fn G(b: array(i32, 3)) { // CHECK:STDOUT: %.loc36_21.2: ref %array_type = temporary %.loc36_21.1, %F.call.loc36 // CHECK:STDOUT: %int_32.loc36_24: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc36_24: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc36: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc36_23.1: = bound_method %int_0.loc36, %impl.elem0.loc36 [concrete = constants.%Convert.bound.d04] -// CHECK:STDOUT: %specific_fn.loc36: = specific_function %impl.elem0.loc36, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc36: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc36_23.1: = bound_method %int_0.loc36, %impl.elem0.loc36 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04] +// CHECK:STDOUT: %specific_fn.loc36: = specific_function %impl.elem0.loc36, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc36_23.2: = bound_method %int_0.loc36, %specific_fn.loc36 [concrete = constants.%bound_method.b6e] -// CHECK:STDOUT: %int.convert_checked.loc36: init %i32 = call %bound_method.loc36_23.2(%int_0.loc36) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc36_23.1: %i32 = value_of_initializer %int.convert_checked.loc36 [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc36: init %i32 = call %bound_method.loc36_23.2(%int_0.loc36) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc36_23.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc36 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc36_23.2: %i32 = converted %int_0.loc36, %.loc36_23.1 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc36_24.1: ref %i32 = array_index %.loc36_21.2, %.loc36_23.2 // CHECK:STDOUT: %.loc36_24.2: %i32 = bind_value %.loc36_24.1 @@ -227,43 +227,43 @@ fn G(b: array(i32, 3)) { // CHECK:STDOUT: %.loc41_5.2: ref %array_type = temporary %.loc41_5.1, %F.call.loc41 // CHECK:STDOUT: %int_32.loc41: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc41: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc41_7: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc41_7.1: = bound_method %int_0.loc41, %impl.elem0.loc41_7 [concrete = constants.%Convert.bound.d04] -// CHECK:STDOUT: %specific_fn.loc41_7: = specific_function %impl.elem0.loc41_7, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc41_7: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc41_7.1: = bound_method %int_0.loc41, %impl.elem0.loc41_7 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04] +// CHECK:STDOUT: %specific_fn.loc41_7: = specific_function %impl.elem0.loc41_7, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc41_7.2: = bound_method %int_0.loc41, %specific_fn.loc41_7 [concrete = constants.%bound_method.b6e] -// CHECK:STDOUT: %int.convert_checked.loc41_7: init %i32 = call %bound_method.loc41_7.2(%int_0.loc41) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc41_7.1: %i32 = value_of_initializer %int.convert_checked.loc41_7 [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc41_7: init %i32 = call %bound_method.loc41_7.2(%int_0.loc41) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc41_7.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc41_7 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc41_7.2: %i32 = converted %int_0.loc41, %.loc41_7.1 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc41_8.1: ref %i32 = array_index %.loc41_5.2, %.loc41_7.2 // CHECK:STDOUT: %.loc41_8.2: %i32 = bind_value %.loc41_8.1 // CHECK:STDOUT: %int_4.loc41: Core.IntLiteral = int_value 4 [concrete = constants.%int_4.0c1] -// CHECK:STDOUT: %impl.elem0.loc41_10: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc41_10.1: = bound_method %int_4.loc41, %impl.elem0.loc41_10 [concrete = constants.%Convert.bound.ac3] -// CHECK:STDOUT: %specific_fn.loc41_10: = specific_function %impl.elem0.loc41_10, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc41_10: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc41_10.1: = bound_method %int_4.loc41, %impl.elem0.loc41_10 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ac3] +// CHECK:STDOUT: %specific_fn.loc41_10: = specific_function %impl.elem0.loc41_10, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc41_10.2: = bound_method %int_4.loc41, %specific_fn.loc41_10 [concrete = constants.%bound_method.1da] -// CHECK:STDOUT: %int.convert_checked.loc41_10: init %i32 = call %bound_method.loc41_10.2(%int_4.loc41) [concrete = constants.%int_4.940] -// CHECK:STDOUT: %.loc41_10: init %i32 = converted %int_4.loc41, %int.convert_checked.loc41_10 [concrete = constants.%int_4.940] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc41_10: init %i32 = call %bound_method.loc41_10.2(%int_4.loc41) [concrete = constants.%int_4.940] +// CHECK:STDOUT: %.loc41_10: init %i32 = converted %int_4.loc41, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc41_10 [concrete = constants.%int_4.940] // CHECK:STDOUT: assign %.loc41_8.2, %.loc41_10 -// CHECK:STDOUT: %Op.bound.loc41: = bound_method %.loc41_5.1, constants.%Op.f0b -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.f0b, @Op.1(constants.%array_type) [concrete = constants.%Op.specific_fn.c51] -// CHECK:STDOUT: %bound_method.loc41_5: = bound_method %.loc41_5.1, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc41: = bound_method %.loc41_5.1, constants.%T.as.Destroy.impl.Op.f0b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.f0b, @T.as.Destroy.impl.Op(constants.%array_type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.c51] +// CHECK:STDOUT: %bound_method.loc41_5: = bound_method %.loc41_5.1, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc41: %ptr.f01 = addr_of %.loc41_5.1 -// CHECK:STDOUT: %no_op.loc41: init %empty_tuple.type = call %bound_method.loc41_5(%addr.loc41) -// CHECK:STDOUT: %Op.bound.loc36_21: = bound_method %.loc36_21.1, constants.%Op.f0b -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.f0b, @Op.1(constants.%array_type) [concrete = constants.%Op.specific_fn.c51] -// CHECK:STDOUT: %bound_method.loc36_21: = bound_method %.loc36_21.1, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc41: init %empty_tuple.type = call %bound_method.loc41_5(%addr.loc41) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc36_21: = bound_method %.loc36_21.1, constants.%T.as.Destroy.impl.Op.f0b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.f0b, @T.as.Destroy.impl.Op(constants.%array_type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.c51] +// CHECK:STDOUT: %bound_method.loc36_21: = bound_method %.loc36_21.1, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc36_21: %ptr.f01 = addr_of %.loc36_21.1 -// CHECK:STDOUT: %no_op.loc36_21: init %empty_tuple.type = call %bound_method.loc36_21(%addr.loc36_21) -// CHECK:STDOUT: %Op.bound.loc36_3: = bound_method %pf.var, constants.%Op.649 -// CHECK:STDOUT: %Op.specific_fn.3: = specific_function constants.%Op.649, @Op.1(constants.%ptr.235) [concrete = constants.%Op.specific_fn.829] -// CHECK:STDOUT: %bound_method.loc36_3: = bound_method %pf.var, %Op.specific_fn.3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc36_21: init %empty_tuple.type = call %bound_method.loc36_21(%addr.loc36_21) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc36_3: = bound_method %pf.var, constants.%T.as.Destroy.impl.Op.649 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.3: = specific_function constants.%T.as.Destroy.impl.Op.649, @T.as.Destroy.impl.Op(constants.%ptr.235) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.829] +// CHECK:STDOUT: %bound_method.loc36_3: = bound_method %pf.var, %T.as.Destroy.impl.Op.specific_fn.3 // CHECK:STDOUT: %addr.loc36_3: %ptr.5d5 = addr_of %pf.var -// CHECK:STDOUT: %no_op.loc36_3: init %empty_tuple.type = call %bound_method.loc36_3(%addr.loc36_3) -// CHECK:STDOUT: %Op.bound.loc23: = bound_method %pb.var, constants.%Op.649 -// CHECK:STDOUT: %Op.specific_fn.4: = specific_function constants.%Op.649, @Op.1(constants.%ptr.235) [concrete = constants.%Op.specific_fn.829] -// CHECK:STDOUT: %bound_method.loc23_3: = bound_method %pb.var, %Op.specific_fn.4 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc36_3: init %empty_tuple.type = call %bound_method.loc36_3(%addr.loc36_3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc23: = bound_method %pb.var, constants.%T.as.Destroy.impl.Op.649 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.4: = specific_function constants.%T.as.Destroy.impl.Op.649, @T.as.Destroy.impl.Op(constants.%ptr.235) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.829] +// CHECK:STDOUT: %bound_method.loc23_3: = bound_method %pb.var, %T.as.Destroy.impl.Op.specific_fn.4 // CHECK:STDOUT: %addr.loc23_3: %ptr.5d5 = addr_of %pb.var -// CHECK:STDOUT: %no_op.loc23: init %empty_tuple.type = call %bound_method.loc23_3(%addr.loc23_3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc23: init %empty_tuple.type = call %bound_method.loc23_3(%addr.loc23_3) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/index/fail_name_not_found.carbon b/toolchain/check/testdata/index/fail_name_not_found.carbon index 29317b50d3fb..f0c2aa1ae5e7 100644 --- a/toolchain/check/testdata/index/fail_name_not_found.carbon +++ b/toolchain/check/testdata/index/fail_name_not_found.carbon @@ -33,10 +33,10 @@ fn Main() { // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.1, @Destroy.impl(%i32) [concrete] -// CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a17: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.e6a: %T.as.Destroy.impl.Op.type.a17 = struct_value () [concrete] // CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.e6a, @Op.1(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(%i32) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -75,11 +75,11 @@ fn Main() { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var -// CHECK:STDOUT: %Op.bound: = bound_method %b.var, constants.%Op.e6a -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.e6a, @Op.1(constants.%i32) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %b.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %b.var, constants.%T.as.Destroy.impl.Op.e6a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %b.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.235 = addr_of %b.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/index/fail_negative_indexing.carbon b/toolchain/check/testdata/index/fail_negative_indexing.carbon index cefad4cfe6ed..03442dda1764 100644 --- a/toolchain/check/testdata/index/fail_negative_indexing.carbon +++ b/toolchain/check/testdata/index/fail_negative_indexing.carbon @@ -36,34 +36,34 @@ var d: i32 = c[-10]; // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] // CHECK:STDOUT: %Negate.type: type = facet_type <@Negate> [concrete] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.132: = bound_method %int_42.20e, %Convert.956 [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.132: = bound_method %int_42.20e, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.8c1: = bound_method %int_42.20e, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.8c1: = bound_method %int_42.20e, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_42.c68: %i32 = int_value 42 [concrete] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %array: %array_type = tuple_value (%int_42.c68, %int_42.c68) [concrete] // CHECK:STDOUT: %int_10: Core.IntLiteral = int_value 10 [concrete] -// CHECK:STDOUT: %Op.type.e42: type = fn_type @Op.2 [concrete] +// CHECK:STDOUT: %Negate.Op.type: type = fn_type @Negate.Op [concrete] // CHECK:STDOUT: %Negate.impl_witness.973: = impl_witness imports.%Negate.impl_witness_table.b22 [concrete] // CHECK:STDOUT: %Negate.facet: %Negate.type = facet_value Core.IntLiteral, (%Negate.impl_witness.973) [concrete] -// CHECK:STDOUT: %.d3d: type = fn_type_with_self_type %Op.type.e42, %Negate.facet [concrete] -// CHECK:STDOUT: %Op.type.18a: type = fn_type @Op.3 [concrete] -// CHECK:STDOUT: %Op.99f: %Op.type.18a = struct_value () [concrete] -// CHECK:STDOUT: %Op.bound: = bound_method %int_10, %Op.99f [concrete] +// CHECK:STDOUT: %.d3d: type = fn_type_with_self_type %Negate.Op.type, %Negate.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.type: type = fn_type @Core.IntLiteral.as.Negate.impl.Op [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op: %Core.IntLiteral.as.Negate.impl.Op.type = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.bound: = bound_method %int_10, %Core.IntLiteral.as.Negate.impl.Op [concrete] // CHECK:STDOUT: %int_-10.06d: Core.IntLiteral = int_value -10 [concrete] -// CHECK:STDOUT: %Convert.bound.1ca: = bound_method %int_-10.06d, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.af0: = bound_method %int_-10.06d, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.1ca: = bound_method %int_-10.06d, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.af0: = bound_method %int_-10.06d, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_-10.c17: %i32 = int_value -10 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -77,12 +77,12 @@ var d: i32 = c[-10]; // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Negate: type = import_ref Core//prelude/parts/int_literal, Negate, loaded [concrete = constants.%Negate.type] // CHECK:STDOUT: %Core.import_ref.abd = import_ref Core//prelude/parts/int_literal, loc13_50, unloaded -// CHECK:STDOUT: %Core.import_ref.5e6: %Op.type.18a = import_ref Core//prelude/parts/int_literal, loc14_31, loaded [concrete = constants.%Op.99f] -// CHECK:STDOUT: %Negate.impl_witness_table.b22 = impl_witness_table (%Core.import_ref.abd, %Core.import_ref.5e6), @Negate.impl.0ef [concrete] +// CHECK:STDOUT: %Core.import_ref.5e6: %Core.IntLiteral.as.Negate.impl.Op.type = import_ref Core//prelude/parts/int_literal, loc14_31, loaded [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op] +// CHECK:STDOUT: %Negate.impl_witness_table.b22 = impl_witness_table (%Core.import_ref.abd, %Core.import_ref.5e6), @Core.IntLiteral.as.Negate.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -121,21 +121,21 @@ var d: i32 = c[-10]; // CHECK:STDOUT: %int_42.loc15_25: Core.IntLiteral = int_value 42 [concrete = constants.%int_42.20e] // CHECK:STDOUT: %int_42.loc15_29: Core.IntLiteral = int_value 42 [concrete = constants.%int_42.20e] // CHECK:STDOUT: %.loc15_31.1: %tuple.type = tuple_literal (%int_42.loc15_25, %int_42.loc15_29) -// CHECK:STDOUT: %impl.elem0.loc15_31.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc15_31.1: = bound_method %int_42.loc15_25, %impl.elem0.loc15_31.1 [concrete = constants.%Convert.bound.132] -// CHECK:STDOUT: %specific_fn.loc15_31.1: = specific_function %impl.elem0.loc15_31.1, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc15_31.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc15_31.1: = bound_method %int_42.loc15_25, %impl.elem0.loc15_31.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.132] +// CHECK:STDOUT: %specific_fn.loc15_31.1: = specific_function %impl.elem0.loc15_31.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc15_31.2: = bound_method %int_42.loc15_25, %specific_fn.loc15_31.1 [concrete = constants.%bound_method.8c1] -// CHECK:STDOUT: %int.convert_checked.loc15_31.1: init %i32 = call %bound_method.loc15_31.2(%int_42.loc15_25) [concrete = constants.%int_42.c68] -// CHECK:STDOUT: %.loc15_31.2: init %i32 = converted %int_42.loc15_25, %int.convert_checked.loc15_31.1 [concrete = constants.%int_42.c68] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc15_31.1: init %i32 = call %bound_method.loc15_31.2(%int_42.loc15_25) [concrete = constants.%int_42.c68] +// CHECK:STDOUT: %.loc15_31.2: init %i32 = converted %int_42.loc15_25, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc15_31.1 [concrete = constants.%int_42.c68] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] // CHECK:STDOUT: %.loc15_31.3: ref %i32 = array_index file.%c.var, %int_0 // CHECK:STDOUT: %.loc15_31.4: init %i32 = initialize_from %.loc15_31.2 to %.loc15_31.3 [concrete = constants.%int_42.c68] -// CHECK:STDOUT: %impl.elem0.loc15_31.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc15_31.3: = bound_method %int_42.loc15_29, %impl.elem0.loc15_31.2 [concrete = constants.%Convert.bound.132] -// CHECK:STDOUT: %specific_fn.loc15_31.2: = specific_function %impl.elem0.loc15_31.2, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc15_31.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc15_31.3: = bound_method %int_42.loc15_29, %impl.elem0.loc15_31.2 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.132] +// CHECK:STDOUT: %specific_fn.loc15_31.2: = specific_function %impl.elem0.loc15_31.2, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc15_31.4: = bound_method %int_42.loc15_29, %specific_fn.loc15_31.2 [concrete = constants.%bound_method.8c1] -// CHECK:STDOUT: %int.convert_checked.loc15_31.2: init %i32 = call %bound_method.loc15_31.4(%int_42.loc15_29) [concrete = constants.%int_42.c68] -// CHECK:STDOUT: %.loc15_31.5: init %i32 = converted %int_42.loc15_29, %int.convert_checked.loc15_31.2 [concrete = constants.%int_42.c68] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc15_31.2: init %i32 = call %bound_method.loc15_31.4(%int_42.loc15_29) [concrete = constants.%int_42.c68] +// CHECK:STDOUT: %.loc15_31.5: init %i32 = converted %int_42.loc15_29, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc15_31.2 [concrete = constants.%int_42.c68] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1] // CHECK:STDOUT: %.loc15_31.6: ref %i32 = array_index file.%c.var, %int_1 // CHECK:STDOUT: %.loc15_31.7: init %i32 = initialize_from %.loc15_31.5 to %.loc15_31.6 [concrete = constants.%int_42.c68] @@ -144,20 +144,20 @@ var d: i32 = c[-10]; // CHECK:STDOUT: assign file.%c.var, %.loc15_1 // CHECK:STDOUT: %c.ref: ref %array_type = name_ref c, file.%c [concrete = file.%c.var] // CHECK:STDOUT: %int_10: Core.IntLiteral = int_value 10 [concrete = constants.%int_10] -// CHECK:STDOUT: %impl.elem1: %.d3d = impl_witness_access constants.%Negate.impl_witness.973, element1 [concrete = constants.%Op.99f] -// CHECK:STDOUT: %bound_method.loc20_16.1: = bound_method %int_10, %impl.elem1 [concrete = constants.%Op.bound] -// CHECK:STDOUT: %int.snegate: init Core.IntLiteral = call %bound_method.loc20_16.1(%int_10) [concrete = constants.%int_-10.06d] +// CHECK:STDOUT: %impl.elem1: %.d3d = impl_witness_access constants.%Negate.impl_witness.973, element1 [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op] +// CHECK:STDOUT: %bound_method.loc20_16.1: = bound_method %int_10, %impl.elem1 [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op.bound] +// CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.call: init Core.IntLiteral = call %bound_method.loc20_16.1(%int_10) [concrete = constants.%int_-10.06d] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc20: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc20_16.2: = bound_method %int.snegate, %impl.elem0.loc20 [concrete = constants.%Convert.bound.1ca] -// CHECK:STDOUT: %specific_fn.loc20: = specific_function %impl.elem0.loc20, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc20_16.3: = bound_method %int.snegate, %specific_fn.loc20 [concrete = constants.%bound_method.af0] -// CHECK:STDOUT: %.loc20_16.1: Core.IntLiteral = value_of_initializer %int.snegate [concrete = constants.%int_-10.06d] -// CHECK:STDOUT: %.loc20_16.2: Core.IntLiteral = converted %int.snegate, %.loc20_16.1 [concrete = constants.%int_-10.06d] -// CHECK:STDOUT: %int.convert_checked.loc20: init %i32 = call %bound_method.loc20_16.3(%.loc20_16.2) [concrete = constants.%int_-10.c17] -// CHECK:STDOUT: %.loc20_16.3: %i32 = value_of_initializer %int.convert_checked.loc20 [concrete = constants.%int_-10.c17] -// CHECK:STDOUT: %.loc20_16.4: %i32 = converted %int.snegate, %.loc20_16.3 [concrete = constants.%int_-10.c17] +// CHECK:STDOUT: %impl.elem0.loc20: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc20_16.2: = bound_method %Core.IntLiteral.as.Negate.impl.Op.call, %impl.elem0.loc20 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.1ca] +// CHECK:STDOUT: %specific_fn.loc20: = specific_function %impl.elem0.loc20, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc20_16.3: = bound_method %Core.IntLiteral.as.Negate.impl.Op.call, %specific_fn.loc20 [concrete = constants.%bound_method.af0] +// CHECK:STDOUT: %.loc20_16.1: Core.IntLiteral = value_of_initializer %Core.IntLiteral.as.Negate.impl.Op.call [concrete = constants.%int_-10.06d] +// CHECK:STDOUT: %.loc20_16.2: Core.IntLiteral = converted %Core.IntLiteral.as.Negate.impl.Op.call, %.loc20_16.1 [concrete = constants.%int_-10.06d] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc20: init %i32 = call %bound_method.loc20_16.3(%.loc20_16.2) [concrete = constants.%int_-10.c17] +// CHECK:STDOUT: %.loc20_16.3: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc20 [concrete = constants.%int_-10.c17] +// CHECK:STDOUT: %.loc20_16.4: %i32 = converted %Core.IntLiteral.as.Negate.impl.Op.call, %.loc20_16.3 [concrete = constants.%int_-10.c17] // CHECK:STDOUT: %.loc20_19.1: ref %i32 = array_index %c.ref, %.loc20_16.4 [concrete = ] // CHECK:STDOUT: %.loc20_19.2: %i32 = bind_value %.loc20_19.1 [concrete = ] // CHECK:STDOUT: assign file.%d.var, %.loc20_19.2 diff --git a/toolchain/check/testdata/interface/as_type_of_type.carbon b/toolchain/check/testdata/interface/as_type_of_type.carbon index e7433a5939d7..4362fb289dc1 100644 --- a/toolchain/check/testdata/interface/as_type_of_type.carbon +++ b/toolchain/check/testdata/interface/as_type_of_type.carbon @@ -32,14 +32,14 @@ fn F(T:! Empty) { // CHECK:STDOUT: %require_complete.449: = require_complete_type %T.as_type [symbolic] // CHECK:STDOUT: %pattern_type.dad: type = pattern_type %T.as_type [symbolic] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.bae: type = fn_type @Op.1 [concrete] +// CHECK:STDOUT: %Destroy.Op.type: type = fn_type @Destroy.Op [concrete] // CHECK:STDOUT: %ptr.5e1: type = ptr_type %T.as_type [symbolic] // CHECK:STDOUT: %require_complete.149: = require_complete_type %ptr.5e1 [symbolic] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %T.193, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %T.as_type, (%Destroy.lookup_impl_witness) [symbolic] -// CHECK:STDOUT: %.868: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [symbolic] +// CHECK:STDOUT: %.868: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet [symbolic] // CHECK:STDOUT: %impl.elem0: %.868 = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Op.1(%Destroy.facet) [symbolic] +// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Destroy.Op(%Destroy.facet) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -84,9 +84,9 @@ fn F(T:! Empty) { // CHECK:STDOUT: %pattern_type: type = pattern_type %T.as_type.loc18_10.2 [symbolic = %pattern_type (constants.%pattern_type.dad)] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %T.loc17_6.1, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness)] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %T.as_type.loc18_10.2, (%Destroy.lookup_impl_witness) [symbolic = %Destroy.facet (constants.%Destroy.facet)] -// CHECK:STDOUT: %.loc18_3.3: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.loc18_3.3 (constants.%.868)] +// CHECK:STDOUT: %.loc18_3.3: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet [symbolic = %.loc18_3.3 (constants.%.868)] // CHECK:STDOUT: %impl.elem0.loc18_3.2: @F.%.loc18_3.3 (%.868) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc18_3.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %specific_impl_fn.loc18_3.2: = specific_impl_function %impl.elem0.loc18_3.2, @Op.1(%Destroy.facet) [symbolic = %specific_impl_fn.loc18_3.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc18_3.2: = specific_impl_function %impl.elem0.loc18_3.2, @Destroy.Op(%Destroy.facet) [symbolic = %specific_impl_fn.loc18_3.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %ptr: type = ptr_type %T.as_type.loc18_10.2 [symbolic = %ptr (constants.%ptr.5e1)] // CHECK:STDOUT: %require_complete.loc18_3: = require_complete_type %ptr [symbolic = %require_complete.loc18_3 (constants.%require_complete.149)] // CHECK:STDOUT: @@ -107,7 +107,7 @@ fn F(T:! Empty) { // CHECK:STDOUT: %.loc18_3.1: type = converted constants.%T.193, %T.as_type.loc18_3 [symbolic = %T.as_type.loc18_10.2 (constants.%T.as_type)] // CHECK:STDOUT: %impl.elem0.loc18_3.1: @F.%.loc18_3.3 (%.868) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc18_3.2 (constants.%impl.elem0)] // CHECK:STDOUT: %bound_method.loc18_3.1: = bound_method %x.var, %impl.elem0.loc18_3.1 -// CHECK:STDOUT: %specific_impl_fn.loc18_3.1: = specific_impl_function %impl.elem0.loc18_3.1, @Op.1(constants.%Destroy.facet) [symbolic = %specific_impl_fn.loc18_3.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc18_3.1: = specific_impl_function %impl.elem0.loc18_3.1, @Destroy.Op(constants.%Destroy.facet) [symbolic = %specific_impl_fn.loc18_3.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %bound_method.loc18_3.2: = bound_method %x.var, %specific_impl_fn.loc18_3.1 // CHECK:STDOUT: %addr: @F.%ptr (%ptr.5e1) = addr_of %x.var // CHECK:STDOUT: %.loc18_3.2: init %empty_tuple.type = call %bound_method.loc18_3.2(%addr) diff --git a/toolchain/check/testdata/interface/assoc_const_in_generic.carbon b/toolchain/check/testdata/interface/assoc_const_in_generic.carbon index 1bf72d2cee4b..568bb44eb855 100644 --- a/toolchain/check/testdata/interface/assoc_const_in_generic.carbon +++ b/toolchain/check/testdata/interface/assoc_const_in_generic.carbon @@ -39,10 +39,10 @@ fn H() { // CHECK:STDOUT: %Self.209: %I.type.325 = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %U: type = bind_symbolic_name U, 2 [symbolic] // CHECK:STDOUT: %pattern_type.20f: type = pattern_type %U [symbolic] -// CHECK:STDOUT: %F.type.2ae: type = fn_type @F, @I(%T) [symbolic] -// CHECK:STDOUT: %F.bb2: %F.type.2ae = struct_value () [symbolic] +// CHECK:STDOUT: %I.F.type.2ae: type = fn_type @I.F, @I(%T) [symbolic] +// CHECK:STDOUT: %I.F.bb2: %I.F.type.2ae = struct_value () [symbolic] // CHECK:STDOUT: %I.assoc_type.1e5: type = assoc_entity_type @I, @I(%T) [symbolic] -// CHECK:STDOUT: %assoc0.8f0: %I.assoc_type.1e5 = assoc_entity element0, @I.%F.decl [symbolic] +// CHECK:STDOUT: %assoc0.8f0: %I.assoc_type.1e5 = assoc_entity element0, @I.%I.F.decl [symbolic] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %require_complete.cfe: = require_complete_type %I.type.325 [symbolic] @@ -53,10 +53,10 @@ fn H() { // CHECK:STDOUT: %G.specific_fn: = specific_function %G, @G(%empty_struct_type) [concrete] // CHECK:STDOUT: %I.type.885: type = facet_type <@I, @I(%empty_struct_type)> [concrete] // CHECK:STDOUT: %Self.4e2: %I.type.885 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %F.type.684: type = fn_type @F, @I(%empty_struct_type) [concrete] -// CHECK:STDOUT: %F.a8d: %F.type.684 = struct_value () [concrete] +// CHECK:STDOUT: %I.F.type.684: type = fn_type @I.F, @I(%empty_struct_type) [concrete] +// CHECK:STDOUT: %I.F.a8d: %I.F.type.684 = struct_value () [concrete] // CHECK:STDOUT: %I.assoc_type.22c: type = assoc_entity_type @I, @I(%empty_struct_type) [concrete] -// CHECK:STDOUT: %assoc0.722: %I.assoc_type.22c = assoc_entity element0, @I.%F.decl [concrete] +// CHECK:STDOUT: %assoc0.722: %I.assoc_type.22c = assoc_entity element0, @I.%I.F.decl [concrete] // CHECK:STDOUT: %complete_type.788: = complete_type_witness %I.type.885 [concrete] // CHECK:STDOUT: %complete_type.d28: = complete_type_witness %I.assoc_type.22c [concrete] // CHECK:STDOUT: } @@ -86,37 +86,37 @@ fn H() { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T.loc15_13.1)> [symbolic = %I.type (constants.%I.type.325)] // CHECK:STDOUT: %Self.2: @I.%I.type (%I.type.325) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.209)] -// CHECK:STDOUT: %F.type: type = fn_type @F, @I(%T.loc15_13.1) [symbolic = %F.type (constants.%F.type.2ae)] -// CHECK:STDOUT: %F: @I.%F.type (%F.type.2ae) = struct_value () [symbolic = %F (constants.%F.bb2)] +// CHECK:STDOUT: %I.F.type: type = fn_type @I.F, @I(%T.loc15_13.1) [symbolic = %I.F.type (constants.%I.F.type.2ae)] +// CHECK:STDOUT: %I.F: @I.%I.F.type (%I.F.type.2ae) = struct_value () [symbolic = %I.F (constants.%I.F.bb2)] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I, @I(%T.loc15_13.1) [symbolic = %I.assoc_type (constants.%I.assoc_type.1e5)] -// CHECK:STDOUT: %assoc0.loc16_22.2: @I.%I.assoc_type (%I.assoc_type.1e5) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc16_22.2 (constants.%assoc0.8f0)] +// CHECK:STDOUT: %assoc0.loc16_22.2: @I.%I.assoc_type (%I.assoc_type.1e5) = assoc_entity element0, %I.F.decl [symbolic = %assoc0.loc16_22.2 (constants.%assoc0.8f0)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: %Self.1: @I.%I.type (%I.type.325) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.209)] -// CHECK:STDOUT: %F.decl: @I.%F.type (%F.type.2ae) = fn_decl @F [symbolic = @I.%F (constants.%F.bb2)] { +// CHECK:STDOUT: %I.F.decl: @I.%I.F.type (%I.F.type.2ae) = fn_decl @I.F [symbolic = @I.%I.F (constants.%I.F.bb2)] { // CHECK:STDOUT: %U.patt: %pattern_type.98f = symbolic_binding_pattern U, 2 [concrete] -// CHECK:STDOUT: %return.patt: @F.%pattern_type (%pattern_type.20f) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @F.%pattern_type (%pattern_type.20f) = out_param_pattern %return.patt, call_param0 [concrete] +// CHECK:STDOUT: %return.patt: @I.F.%pattern_type (%pattern_type.20f) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @I.F.%pattern_type (%pattern_type.20f) = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %U.ref: type = name_ref U, %U.loc16_8.1 [symbolic = %U.loc16_8.2 (constants.%U)] -// CHECK:STDOUT: %U.loc16_8.1: type = bind_symbolic_name U, 2 [symbolic = %U.loc16_8.2 (constants.%U)] -// CHECK:STDOUT: %return.param: ref @F.%U.loc16_8.2 (%U) = out_param call_param0 -// CHECK:STDOUT: %return: ref @F.%U.loc16_8.2 (%U) = return_slot %return.param +// CHECK:STDOUT: %U.ref: type = name_ref U, %U.loc16_8.2 [symbolic = %U.loc16_8.1 (constants.%U)] +// CHECK:STDOUT: %U.loc16_8.2: type = bind_symbolic_name U, 2 [symbolic = %U.loc16_8.1 (constants.%U)] +// CHECK:STDOUT: %return.param: ref @I.F.%U.loc16_8.1 (%U) = out_param call_param0 +// CHECK:STDOUT: %return: ref @I.F.%U.loc16_8.1 (%U) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0.loc16_22.1: @I.%I.assoc_type (%I.assoc_type.1e5) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc16_22.2 (constants.%assoc0.8f0)] +// CHECK:STDOUT: %assoc0.loc16_22.1: @I.%I.assoc_type (%I.assoc_type.1e5) = assoc_entity element0, %I.F.decl [symbolic = %assoc0.loc16_22.2 (constants.%assoc0.8f0)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 // CHECK:STDOUT: .F = %assoc0.loc16_22.1 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%I.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(@I.%T.loc15_13.2: type, @I.%Self.1: @I.%I.type (%I.type.325), %U.loc16_8.1: type) { -// CHECK:STDOUT: %U.loc16_8.2: type = bind_symbolic_name U, 2 [symbolic = %U.loc16_8.2 (constants.%U)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %U.loc16_8.2 [symbolic = %pattern_type (constants.%pattern_type.20f)] +// CHECK:STDOUT: generic fn @I.F(@I.%T.loc15_13.2: type, @I.%Self.1: @I.%I.type (%I.type.325), %U.loc16_8.2: type) { +// CHECK:STDOUT: %U.loc16_8.1: type = bind_symbolic_name U, 2 [symbolic = %U.loc16_8.1 (constants.%U)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %U.loc16_8.1 [symbolic = %pattern_type (constants.%pattern_type.20f)] // CHECK:STDOUT: -// CHECK:STDOUT: fn() -> @F.%U.loc16_8.2 (%U); +// CHECK:STDOUT: fn() -> @I.F.%U.loc16_8.1 (%U); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @G(%T.loc19_6.2: type) { @@ -126,7 +126,7 @@ fn H() { // CHECK:STDOUT: %I.type.loc23_6.2: type = facet_type <@I, @I(%T.loc19_6.1)> [symbolic = %I.type.loc23_6.2 (constants.%I.type.325)] // CHECK:STDOUT: %require_complete.loc23_7.1: = require_complete_type %I.type.loc23_6.2 [symbolic = %require_complete.loc23_7.1 (constants.%require_complete.cfe)] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I, @I(%T.loc19_6.1) [symbolic = %I.assoc_type (constants.%I.assoc_type.1e5)] -// CHECK:STDOUT: %assoc0: @G.%I.assoc_type (%I.assoc_type.1e5) = assoc_entity element0, @I.%F.decl [symbolic = %assoc0 (constants.%assoc0.8f0)] +// CHECK:STDOUT: %assoc0: @G.%I.assoc_type (%I.assoc_type.1e5) = assoc_entity element0, @I.%I.F.decl [symbolic = %assoc0 (constants.%assoc0.8f0)] // CHECK:STDOUT: %require_complete.loc23_7.2: = require_complete_type %I.assoc_type [symbolic = %require_complete.loc23_7.2 (constants.%require_complete.f84)] // CHECK:STDOUT: // CHECK:STDOUT: fn() { @@ -156,14 +156,14 @@ fn H() { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %I.type => constants.%I.type.325 // CHECK:STDOUT: %Self.2 => constants.%Self.209 -// CHECK:STDOUT: %F.type => constants.%F.type.2ae -// CHECK:STDOUT: %F => constants.%F.bb2 +// CHECK:STDOUT: %I.F.type => constants.%I.F.type.2ae +// CHECK:STDOUT: %I.F => constants.%I.F.bb2 // CHECK:STDOUT: %I.assoc_type => constants.%I.assoc_type.1e5 // CHECK:STDOUT: %assoc0.loc16_22.2 => constants.%assoc0.8f0 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%T, constants.%Self.209, constants.%U) { -// CHECK:STDOUT: %U.loc16_8.2 => constants.%U +// CHECK:STDOUT: specific @I.F(constants.%T, constants.%Self.209, constants.%U) { +// CHECK:STDOUT: %U.loc16_8.1 => constants.%U // CHECK:STDOUT: %pattern_type => constants.%pattern_type.20f // CHECK:STDOUT: } // CHECK:STDOUT: @@ -188,8 +188,8 @@ fn H() { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %I.type => constants.%I.type.885 // CHECK:STDOUT: %Self.2 => constants.%Self.4e2 -// CHECK:STDOUT: %F.type => constants.%F.type.684 -// CHECK:STDOUT: %F => constants.%F.a8d +// CHECK:STDOUT: %I.F.type => constants.%I.F.type.684 +// CHECK:STDOUT: %I.F => constants.%I.F.a8d // CHECK:STDOUT: %I.assoc_type => constants.%I.assoc_type.22c // CHECK:STDOUT: %assoc0.loc16_22.2 => constants.%assoc0.722 // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/interface/basic.carbon b/toolchain/check/testdata/interface/basic.carbon index 0dc073b96e70..6279b988e961 100644 --- a/toolchain/check/testdata/interface/basic.carbon +++ b/toolchain/check/testdata/interface/basic.carbon @@ -28,10 +28,10 @@ interface ForwardDeclared { // CHECK:STDOUT: %Self.193: %Empty.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %ForwardDeclared.type: type = facet_type <@ForwardDeclared> [concrete] // CHECK:STDOUT: %Self.efa: %ForwardDeclared.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %ForwardDeclared.F.type: type = fn_type @ForwardDeclared.F [concrete] +// CHECK:STDOUT: %ForwardDeclared.F: %ForwardDeclared.F.type = struct_value () [concrete] // CHECK:STDOUT: %ForwardDeclared.assoc_type: type = assoc_entity_type @ForwardDeclared [concrete] -// CHECK:STDOUT: %assoc0: %ForwardDeclared.assoc_type = assoc_entity element0, @ForwardDeclared.%F.decl [concrete] +// CHECK:STDOUT: %assoc0: %ForwardDeclared.assoc_type = assoc_entity element0, @ForwardDeclared.%ForwardDeclared.F.decl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -54,18 +54,18 @@ interface ForwardDeclared { // CHECK:STDOUT: // CHECK:STDOUT: interface @ForwardDeclared { // CHECK:STDOUT: %Self: %ForwardDeclared.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.efa] -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} -// CHECK:STDOUT: %assoc0: %ForwardDeclared.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %ForwardDeclared.F.decl: %ForwardDeclared.F.type = fn_decl @ForwardDeclared.F [concrete = constants.%ForwardDeclared.F] {} {} +// CHECK:STDOUT: %assoc0: %ForwardDeclared.assoc_type = assoc_entity element0, %ForwardDeclared.F.decl [concrete = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F = %assoc0 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%ForwardDeclared.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(@ForwardDeclared.%Self: %ForwardDeclared.type) { +// CHECK:STDOUT: generic fn @ForwardDeclared.F(@ForwardDeclared.%Self: %ForwardDeclared.type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%Self.efa) {} +// CHECK:STDOUT: specific @ForwardDeclared.F(constants.%Self.efa) {} // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/compound_member_access.carbon b/toolchain/check/testdata/interface/compound_member_access.carbon index de8e3a7aed94..61fd653bb5ac 100644 --- a/toolchain/check/testdata/interface/compound_member_access.carbon +++ b/toolchain/check/testdata/interface/compound_member_access.carbon @@ -341,11 +341,11 @@ fn Works() { // CHECK:STDOUT: constants { // CHECK:STDOUT: %K1.type: type = facet_type <@K1> [concrete] // CHECK:STDOUT: %Self: %K1.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %Q1.type: type = fn_type @Q1 [concrete] +// CHECK:STDOUT: %K1.Q1.type: type = fn_type @K1.Q1 [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %Q1: %Q1.type = struct_value () [concrete] +// CHECK:STDOUT: %K1.Q1: %K1.Q1.type = struct_value () [concrete] // CHECK:STDOUT: %K1.assoc_type: type = assoc_entity_type @K1 [concrete] -// CHECK:STDOUT: %assoc0: %K1.assoc_type = assoc_entity element0, @K1.%Q1.decl [concrete] +// CHECK:STDOUT: %assoc0: %K1.assoc_type = assoc_entity element0, @K1.%K1.Q1.decl [concrete] // CHECK:STDOUT: %T: %K1.type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %pattern_type: type = pattern_type %K1.type [concrete] // CHECK:STDOUT: %Simple2.type: type = fn_type @Simple2 [concrete] @@ -353,18 +353,18 @@ fn Works() { // CHECK:STDOUT: %T.as_type: type = facet_access_type %T [symbolic] // CHECK:STDOUT: %K1.lookup_impl_witness.d8ae08.1: = lookup_impl_witness %T, @K1 [symbolic] // CHECK:STDOUT: %K1.facet.9e06af.1: %K1.type = facet_value %T.as_type, (%K1.lookup_impl_witness.d8ae08.1) [symbolic] -// CHECK:STDOUT: %.484362.1: type = fn_type_with_self_type %Q1.type, %K1.facet.9e06af.1 [symbolic] +// CHECK:STDOUT: %.484362.1: type = fn_type_with_self_type %K1.Q1.type, %K1.facet.9e06af.1 [symbolic] // CHECK:STDOUT: %impl.elem0.9661c0.1: %.484362.1 = impl_witness_access %K1.lookup_impl_witness.d8ae08.1, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.54474d.1: = specific_impl_function %impl.elem0.9661c0.1, @Q1(%K1.facet.9e06af.1) [symbolic] +// CHECK:STDOUT: %specific_impl_fn.54474d.1: = specific_impl_function %impl.elem0.9661c0.1, @K1.Q1(%K1.facet.9e06af.1) [symbolic] // CHECK:STDOUT: %V: %K1.type = bind_symbolic_name V, 0 [symbolic] // CHECK:STDOUT: %Compound2.type: type = fn_type @Compound2 [concrete] // CHECK:STDOUT: %Compound2: %Compound2.type = struct_value () [concrete] // CHECK:STDOUT: %V.as_type: type = facet_access_type %V [symbolic] // CHECK:STDOUT: %K1.lookup_impl_witness.d8ae08.2: = lookup_impl_witness %V, @K1 [symbolic] // CHECK:STDOUT: %K1.facet.9e06af.2: %K1.type = facet_value %V.as_type, (%K1.lookup_impl_witness.d8ae08.2) [symbolic] -// CHECK:STDOUT: %.484362.2: type = fn_type_with_self_type %Q1.type, %K1.facet.9e06af.2 [symbolic] +// CHECK:STDOUT: %.484362.2: type = fn_type_with_self_type %K1.Q1.type, %K1.facet.9e06af.2 [symbolic] // CHECK:STDOUT: %impl.elem0.9661c0.2: %.484362.2 = impl_witness_access %K1.lookup_impl_witness.d8ae08.2, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.54474d.2: = specific_impl_function %impl.elem0.9661c0.2, @Q1(%K1.facet.9e06af.2) [symbolic] +// CHECK:STDOUT: %specific_impl_fn.54474d.2: = specific_impl_function %impl.elem0.9661c0.2, @K1.Q1(%K1.facet.9e06af.2) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -399,16 +399,16 @@ fn Works() { // CHECK:STDOUT: // CHECK:STDOUT: interface @K1 { // CHECK:STDOUT: %Self: %K1.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %Q1.decl: %Q1.type = fn_decl @Q1 [concrete = constants.%Q1] {} {} -// CHECK:STDOUT: %assoc0: %K1.assoc_type = assoc_entity element0, %Q1.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %K1.Q1.decl: %K1.Q1.type = fn_decl @K1.Q1 [concrete = constants.%K1.Q1] {} {} +// CHECK:STDOUT: %assoc0: %K1.assoc_type = assoc_entity element0, %K1.Q1.decl [concrete = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .Q1 = %assoc0 -// CHECK:STDOUT: witness = (%Q1.decl) +// CHECK:STDOUT: witness = (%K1.Q1.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Q1(@K1.%Self: %K1.type) { +// CHECK:STDOUT: generic fn @K1.Q1(@K1.%Self: %K1.type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: @@ -419,9 +419,9 @@ fn Works() { // CHECK:STDOUT: %T.as_type.loc9_4.2: type = facet_access_type %T.loc8_12.1 [symbolic = %T.as_type.loc9_4.2 (constants.%T.as_type)] // CHECK:STDOUT: %K1.lookup_impl_witness: = lookup_impl_witness %T.loc8_12.1, @K1 [symbolic = %K1.lookup_impl_witness (constants.%K1.lookup_impl_witness.d8ae08.1)] // CHECK:STDOUT: %K1.facet: %K1.type = facet_value %T.as_type.loc9_4.2, (%K1.lookup_impl_witness) [symbolic = %K1.facet (constants.%K1.facet.9e06af.1)] -// CHECK:STDOUT: %.loc9_4.2: type = fn_type_with_self_type constants.%Q1.type, %K1.facet [symbolic = %.loc9_4.2 (constants.%.484362.1)] +// CHECK:STDOUT: %.loc9_4.2: type = fn_type_with_self_type constants.%K1.Q1.type, %K1.facet [symbolic = %.loc9_4.2 (constants.%.484362.1)] // CHECK:STDOUT: %impl.elem0.loc9_4.2: @Simple2.%.loc9_4.2 (%.484362.1) = impl_witness_access %K1.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc9_4.2 (constants.%impl.elem0.9661c0.1)] -// CHECK:STDOUT: %specific_impl_fn.loc9_4.2: = specific_impl_function %impl.elem0.loc9_4.2, @Q1(%K1.facet) [symbolic = %specific_impl_fn.loc9_4.2 (constants.%specific_impl_fn.54474d.1)] +// CHECK:STDOUT: %specific_impl_fn.loc9_4.2: = specific_impl_function %impl.elem0.loc9_4.2, @K1.Q1(%K1.facet) [symbolic = %specific_impl_fn.loc9_4.2 (constants.%specific_impl_fn.54474d.1)] // CHECK:STDOUT: // CHECK:STDOUT: fn() { // CHECK:STDOUT: !entry: @@ -430,7 +430,7 @@ fn Works() { // CHECK:STDOUT: %T.as_type.loc9_4.1: type = facet_access_type %T.ref [symbolic = %T.as_type.loc9_4.2 (constants.%T.as_type)] // CHECK:STDOUT: %.loc9_4.1: type = converted %T.ref, %T.as_type.loc9_4.1 [symbolic = %T.as_type.loc9_4.2 (constants.%T.as_type)] // CHECK:STDOUT: %impl.elem0.loc9_4.1: @Simple2.%.loc9_4.2 (%.484362.1) = impl_witness_access constants.%K1.lookup_impl_witness.d8ae08.1, element0 [symbolic = %impl.elem0.loc9_4.2 (constants.%impl.elem0.9661c0.1)] -// CHECK:STDOUT: %specific_impl_fn.loc9_4.1: = specific_impl_function %impl.elem0.loc9_4.1, @Q1(constants.%K1.facet.9e06af.1) [symbolic = %specific_impl_fn.loc9_4.2 (constants.%specific_impl_fn.54474d.1)] +// CHECK:STDOUT: %specific_impl_fn.loc9_4.1: = specific_impl_function %impl.elem0.loc9_4.1, @K1.Q1(constants.%K1.facet.9e06af.1) [symbolic = %specific_impl_fn.loc9_4.2 (constants.%specific_impl_fn.54474d.1)] // CHECK:STDOUT: %.loc9_8: init %empty_tuple.type = call %specific_impl_fn.loc9_4.1() // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -443,9 +443,9 @@ fn Works() { // CHECK:STDOUT: %K1.lookup_impl_witness: = lookup_impl_witness %V.loc13_14.1, @K1 [symbolic = %K1.lookup_impl_witness (constants.%K1.lookup_impl_witness.d8ae08.2)] // CHECK:STDOUT: %V.as_type: type = facet_access_type %V.loc13_14.1 [symbolic = %V.as_type (constants.%V.as_type)] // CHECK:STDOUT: %K1.facet: %K1.type = facet_value %V.as_type, (%K1.lookup_impl_witness) [symbolic = %K1.facet (constants.%K1.facet.9e06af.2)] -// CHECK:STDOUT: %.loc14_4: type = fn_type_with_self_type constants.%Q1.type, %K1.facet [symbolic = %.loc14_4 (constants.%.484362.2)] +// CHECK:STDOUT: %.loc14_4: type = fn_type_with_self_type constants.%K1.Q1.type, %K1.facet [symbolic = %.loc14_4 (constants.%.484362.2)] // CHECK:STDOUT: %impl.elem0.loc14_4.2: @Compound2.%.loc14_4 (%.484362.2) = impl_witness_access %K1.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc14_4.2 (constants.%impl.elem0.9661c0.2)] -// CHECK:STDOUT: %specific_impl_fn.loc14_4.2: = specific_impl_function %impl.elem0.loc14_4.2, @Q1(%K1.facet) [symbolic = %specific_impl_fn.loc14_4.2 (constants.%specific_impl_fn.54474d.2)] +// CHECK:STDOUT: %specific_impl_fn.loc14_4.2: = specific_impl_function %impl.elem0.loc14_4.2, @K1.Q1(%K1.facet) [symbolic = %specific_impl_fn.loc14_4.2 (constants.%specific_impl_fn.54474d.2)] // CHECK:STDOUT: // CHECK:STDOUT: fn() { // CHECK:STDOUT: !entry: @@ -453,36 +453,36 @@ fn Works() { // CHECK:STDOUT: %K1.ref.loc14: type = name_ref K1, file.%K1.decl [concrete = constants.%K1.type] // CHECK:STDOUT: %Q1.ref: %K1.assoc_type = name_ref Q1, @K1.%assoc0 [concrete = constants.%assoc0] // CHECK:STDOUT: %impl.elem0.loc14_4.1: @Compound2.%.loc14_4 (%.484362.2) = impl_witness_access constants.%K1.lookup_impl_witness.d8ae08.2, element0 [symbolic = %impl.elem0.loc14_4.2 (constants.%impl.elem0.9661c0.2)] -// CHECK:STDOUT: %specific_impl_fn.loc14_4.1: = specific_impl_function %impl.elem0.loc14_4.1, @Q1(constants.%K1.facet.9e06af.2) [symbolic = %specific_impl_fn.loc14_4.2 (constants.%specific_impl_fn.54474d.2)] +// CHECK:STDOUT: %specific_impl_fn.loc14_4.1: = specific_impl_function %impl.elem0.loc14_4.1, @K1.Q1(constants.%K1.facet.9e06af.2) [symbolic = %specific_impl_fn.loc14_4.2 (constants.%specific_impl_fn.54474d.2)] // CHECK:STDOUT: %.loc14_13: init %empty_tuple.type = call %specific_impl_fn.loc14_4.1() // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Q1(constants.%Self) {} +// CHECK:STDOUT: specific @K1.Q1(constants.%Self) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @Simple2(constants.%T) { // CHECK:STDOUT: %T.loc8_12.1 => constants.%T // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Q1(constants.%K1.facet.9e06af.1) {} +// CHECK:STDOUT: specific @K1.Q1(constants.%K1.facet.9e06af.1) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @Compound2(constants.%V) { // CHECK:STDOUT: %V.loc13_14.1 => constants.%V // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Q1(constants.%K1.facet.9e06af.2) {} +// CHECK:STDOUT: specific @K1.Q1(constants.%K1.facet.9e06af.2) {} // CHECK:STDOUT: // CHECK:STDOUT: --- fail_caller_instance_interface_not.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %K2.type: type = facet_type <@K2> [concrete] // CHECK:STDOUT: %Self.0ce: %K2.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %Q2.type: type = fn_type @Q2 [concrete] +// CHECK:STDOUT: %K2.Q2.type: type = fn_type @K2.Q2 [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %Q2: %Q2.type = struct_value () [concrete] +// CHECK:STDOUT: %K2.Q2: %K2.Q2.type = struct_value () [concrete] // CHECK:STDOUT: %K2.assoc_type: type = assoc_entity_type @K2 [concrete] -// CHECK:STDOUT: %assoc0.d67: %K2.assoc_type = assoc_entity element0, @K2.%Q2.decl [concrete] +// CHECK:STDOUT: %assoc0.d67: %K2.assoc_type = assoc_entity element0, @K2.%K2.Q2.decl [concrete] // CHECK:STDOUT: %T: %K2.type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.fda: type = pattern_type %K2.type [concrete] // CHECK:STDOUT: %T.as_type: type = facet_access_type %T [symbolic] @@ -492,9 +492,9 @@ fn Works() { // CHECK:STDOUT: %require_complete.022e81.1: = require_complete_type %T.as_type [symbolic] // CHECK:STDOUT: %K2.lookup_impl_witness: = lookup_impl_witness %T, @K2 [symbolic] // CHECK:STDOUT: %K2.facet: %K2.type = facet_value %T.as_type, (%K2.lookup_impl_witness) [symbolic] -// CHECK:STDOUT: %.8de: type = fn_type_with_self_type %Q2.type, %K2.facet [symbolic] +// CHECK:STDOUT: %.8de: type = fn_type_with_self_type %K2.Q2.type, %K2.facet [symbolic] // CHECK:STDOUT: %impl.elem0: %.8de = impl_witness_access %K2.lookup_impl_witness, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Q2(%K2.facet) [symbolic] +// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @K2.Q2(%K2.facet) [symbolic] // CHECK:STDOUT: %V: %K2.type = bind_symbolic_name V, 0 [symbolic] // CHECK:STDOUT: %V.as_type: type = facet_access_type %V [symbolic] // CHECK:STDOUT: %pattern_type.466ee6.2: type = pattern_type %V.as_type [symbolic] @@ -557,16 +557,16 @@ fn Works() { // CHECK:STDOUT: // CHECK:STDOUT: interface @K2 { // CHECK:STDOUT: %Self: %K2.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.0ce] -// CHECK:STDOUT: %Q2.decl: %Q2.type = fn_decl @Q2 [concrete = constants.%Q2] {} {} -// CHECK:STDOUT: %assoc0: %K2.assoc_type = assoc_entity element0, %Q2.decl [concrete = constants.%assoc0.d67] +// CHECK:STDOUT: %K2.Q2.decl: %K2.Q2.type = fn_decl @K2.Q2 [concrete = constants.%K2.Q2] {} {} +// CHECK:STDOUT: %assoc0: %K2.assoc_type = assoc_entity element0, %K2.Q2.decl [concrete = constants.%assoc0.d67] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .Q2 = %assoc0 -// CHECK:STDOUT: witness = (%Q2.decl) +// CHECK:STDOUT: witness = (%K2.Q2.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Q2(@K2.%Self: %K2.type) { +// CHECK:STDOUT: generic fn @K2.Q2(@K2.%Self: %K2.type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: @@ -579,9 +579,9 @@ fn Works() { // CHECK:STDOUT: %require_complete: = require_complete_type %T.as_type.loc8_23.1 [symbolic = %require_complete (constants.%require_complete.022e81.1)] // CHECK:STDOUT: %K2.lookup_impl_witness: = lookup_impl_witness %T.loc8_12.1, @K2 [symbolic = %K2.lookup_impl_witness (constants.%K2.lookup_impl_witness)] // CHECK:STDOUT: %K2.facet: %K2.type = facet_value %T.as_type.loc8_23.1, (%K2.lookup_impl_witness) [symbolic = %K2.facet (constants.%K2.facet)] -// CHECK:STDOUT: %.loc9_4.2: type = fn_type_with_self_type constants.%Q2.type, %K2.facet [symbolic = %.loc9_4.2 (constants.%.8de)] +// CHECK:STDOUT: %.loc9_4.2: type = fn_type_with_self_type constants.%K2.Q2.type, %K2.facet [symbolic = %.loc9_4.2 (constants.%.8de)] // CHECK:STDOUT: %impl.elem0.loc9_4.2: @Simple3.%.loc9_4.2 (%.8de) = impl_witness_access %K2.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc9_4.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %specific_impl_fn.loc9_4.2: = specific_impl_function %impl.elem0.loc9_4.2, @Q2(%K2.facet) [symbolic = %specific_impl_fn.loc9_4.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc9_4.2: = specific_impl_function %impl.elem0.loc9_4.2, @K2.Q2(%K2.facet) [symbolic = %specific_impl_fn.loc9_4.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%x.param: @Simple3.%T.as_type.loc8_23.1 (%T.as_type)) { // CHECK:STDOUT: !entry: @@ -590,7 +590,7 @@ fn Works() { // CHECK:STDOUT: %T.as_type.loc9: type = facet_access_type constants.%T [symbolic = %T.as_type.loc8_23.1 (constants.%T.as_type)] // CHECK:STDOUT: %.loc9_4.1: type = converted constants.%T, %T.as_type.loc9 [symbolic = %T.as_type.loc8_23.1 (constants.%T.as_type)] // CHECK:STDOUT: %impl.elem0.loc9_4.1: @Simple3.%.loc9_4.2 (%.8de) = impl_witness_access constants.%K2.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc9_4.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %specific_impl_fn.loc9_4.1: = specific_impl_function %impl.elem0.loc9_4.1, @Q2(constants.%K2.facet) [symbolic = %specific_impl_fn.loc9_4.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc9_4.1: = specific_impl_function %impl.elem0.loc9_4.1, @K2.Q2(constants.%K2.facet) [symbolic = %specific_impl_fn.loc9_4.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %.loc9_8: init %empty_tuple.type = call %specific_impl_fn.loc9_4.1() // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -614,7 +614,7 @@ fn Works() { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Q2(constants.%Self.0ce) {} +// CHECK:STDOUT: specific @K2.Q2(constants.%Self.0ce) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @Simple3(constants.%T) { // CHECK:STDOUT: %T.loc8_12.1 => constants.%T @@ -622,7 +622,7 @@ fn Works() { // CHECK:STDOUT: %pattern_type => constants.%pattern_type.466ee6.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Q2(constants.%K2.facet) {} +// CHECK:STDOUT: specific @K2.Q2(constants.%K2.facet) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @Compound3(constants.%V) { // CHECK:STDOUT: %V.loc14_14.1 => constants.%V @@ -637,17 +637,17 @@ fn Works() { // CHECK:STDOUT: %Self.04c: %L1.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type.759: type = facet_access_type %Self.04c [symbolic] // CHECK:STDOUT: %pattern_type.ad3e89.1: type = pattern_type %Self.as_type.759 [symbolic] -// CHECK:STDOUT: %R1.type: type = fn_type @R1 [concrete] +// CHECK:STDOUT: %L1.R1.type: type = fn_type @L1.R1 [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %R1: %R1.type = struct_value () [concrete] +// CHECK:STDOUT: %L1.R1: %L1.R1.type = struct_value () [concrete] // CHECK:STDOUT: %L1.assoc_type: type = assoc_entity_type @L1 [concrete] -// CHECK:STDOUT: %assoc0.8b4: %L1.assoc_type = assoc_entity element0, @L1.%R1.decl [concrete] +// CHECK:STDOUT: %assoc0.8b4: %L1.assoc_type = assoc_entity element0, @L1.%L1.R1.decl [concrete] // CHECK:STDOUT: %ptr.72f01d.1: type = ptr_type %Self.as_type.759 [symbolic] // CHECK:STDOUT: %pattern_type.53384b.1: type = pattern_type %ptr.72f01d.1 [symbolic] // CHECK:STDOUT: %pattern_type.f6d: type = pattern_type auto [concrete] -// CHECK:STDOUT: %S1.type: type = fn_type @S1 [concrete] -// CHECK:STDOUT: %S1: %S1.type = struct_value () [concrete] -// CHECK:STDOUT: %assoc1: %L1.assoc_type = assoc_entity element1, @L1.%S1.decl [concrete] +// CHECK:STDOUT: %L1.S1.type: type = fn_type @L1.S1 [concrete] +// CHECK:STDOUT: %L1.S1: %L1.S1.type = struct_value () [concrete] +// CHECK:STDOUT: %assoc1: %L1.assoc_type = assoc_entity element1, @L1.%L1.S1.decl [concrete] // CHECK:STDOUT: %T.04c: %L1.type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.5da: type = pattern_type %L1.type [concrete] // CHECK:STDOUT: %T.as_type: type = facet_access_type %T.04c [symbolic] @@ -657,22 +657,22 @@ fn Works() { // CHECK:STDOUT: %require_complete.97cd40.1: = require_complete_type %T.as_type [symbolic] // CHECK:STDOUT: %L1.lookup_impl_witness.0a136b.1: = lookup_impl_witness %T.04c, @L1 [symbolic] // CHECK:STDOUT: %L1.facet.ed78cc.1: %L1.type = facet_value %T.as_type, (%L1.lookup_impl_witness.0a136b.1) [symbolic] -// CHECK:STDOUT: %.3b7304.1: type = fn_type_with_self_type %R1.type, %L1.facet.ed78cc.1 [symbolic] +// CHECK:STDOUT: %.3b7304.1: type = fn_type_with_self_type %L1.R1.type, %L1.facet.ed78cc.1 [symbolic] // CHECK:STDOUT: %impl.elem0.a7f881.1: %.3b7304.1 = impl_witness_access %L1.lookup_impl_witness.0a136b.1, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.f11365.1: = specific_impl_function %impl.elem0.a7f881.1, @R1(%L1.facet.ed78cc.1) [symbolic] -// CHECK:STDOUT: %.e9a411.1: type = fn_type_with_self_type %S1.type, %L1.facet.ed78cc.1 [symbolic] +// CHECK:STDOUT: %specific_impl_fn.f11365.1: = specific_impl_function %impl.elem0.a7f881.1, @L1.R1(%L1.facet.ed78cc.1) [symbolic] +// CHECK:STDOUT: %.e9a411.1: type = fn_type_with_self_type %L1.S1.type, %L1.facet.ed78cc.1 [symbolic] // CHECK:STDOUT: %impl.elem1.a8c6e3.1: %.e9a411.1 = impl_witness_access %L1.lookup_impl_witness.0a136b.1, element1 [symbolic] // CHECK:STDOUT: %ptr.72f01d.2: type = ptr_type %T.as_type [symbolic] // CHECK:STDOUT: %pattern_type.53384b.2: type = pattern_type %ptr.72f01d.2 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.bbb82e.1: = specific_impl_function %impl.elem1.a8c6e3.1, @S1(%L1.facet.ed78cc.1) [symbolic] +// CHECK:STDOUT: %specific_impl_fn.bbb82e.1: = specific_impl_function %impl.elem1.a8c6e3.1, @L1.S1(%L1.facet.ed78cc.1) [symbolic] // CHECK:STDOUT: %require_complete.9326df.1: = require_complete_type %ptr.72f01d.2 [symbolic] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.bae: type = fn_type @Op.1 [concrete] +// CHECK:STDOUT: %Destroy.Op.type: type = fn_type @Destroy.Op [concrete] // CHECK:STDOUT: %Destroy.lookup_impl_witness.87177a.1: = lookup_impl_witness %T.04c, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.a7da23.1: %Destroy.type = facet_value %T.as_type, (%Destroy.lookup_impl_witness.87177a.1) [symbolic] -// CHECK:STDOUT: %.0f4deb.1: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.a7da23.1 [symbolic] +// CHECK:STDOUT: %.0f4deb.1: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.a7da23.1 [symbolic] // CHECK:STDOUT: %impl.elem0.71dfa9.1: %.0f4deb.1 = impl_witness_access %Destroy.lookup_impl_witness.87177a.1, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.5803ed.1: = specific_impl_function %impl.elem0.71dfa9.1, @Op.1(%Destroy.facet.a7da23.1) [symbolic] +// CHECK:STDOUT: %specific_impl_fn.5803ed.1: = specific_impl_function %impl.elem0.71dfa9.1, @Destroy.Op(%Destroy.facet.a7da23.1) [symbolic] // CHECK:STDOUT: %V: %L1.type = bind_symbolic_name V, 0 [symbolic] // CHECK:STDOUT: %V.as_type: type = facet_access_type %V [symbolic] // CHECK:STDOUT: %pattern_type.ad3e89.3: type = pattern_type %V.as_type [symbolic] @@ -681,20 +681,20 @@ fn Works() { // CHECK:STDOUT: %require_complete.97cd40.2: = require_complete_type %V.as_type [symbolic] // CHECK:STDOUT: %L1.lookup_impl_witness.0a136b.2: = lookup_impl_witness %V, @L1 [symbolic] // CHECK:STDOUT: %L1.facet.ed78cc.2: %L1.type = facet_value %V.as_type, (%L1.lookup_impl_witness.0a136b.2) [symbolic] -// CHECK:STDOUT: %.3b7304.2: type = fn_type_with_self_type %R1.type, %L1.facet.ed78cc.2 [symbolic] +// CHECK:STDOUT: %.3b7304.2: type = fn_type_with_self_type %L1.R1.type, %L1.facet.ed78cc.2 [symbolic] // CHECK:STDOUT: %impl.elem0.a7f881.2: %.3b7304.2 = impl_witness_access %L1.lookup_impl_witness.0a136b.2, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.f11365.2: = specific_impl_function %impl.elem0.a7f881.2, @R1(%L1.facet.ed78cc.2) [symbolic] -// CHECK:STDOUT: %.e9a411.2: type = fn_type_with_self_type %S1.type, %L1.facet.ed78cc.2 [symbolic] +// CHECK:STDOUT: %specific_impl_fn.f11365.2: = specific_impl_function %impl.elem0.a7f881.2, @L1.R1(%L1.facet.ed78cc.2) [symbolic] +// CHECK:STDOUT: %.e9a411.2: type = fn_type_with_self_type %L1.S1.type, %L1.facet.ed78cc.2 [symbolic] // CHECK:STDOUT: %impl.elem1.a8c6e3.2: %.e9a411.2 = impl_witness_access %L1.lookup_impl_witness.0a136b.2, element1 [symbolic] // CHECK:STDOUT: %ptr.72f01d.3: type = ptr_type %V.as_type [symbolic] // CHECK:STDOUT: %pattern_type.53384b.3: type = pattern_type %ptr.72f01d.3 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.bbb82e.2: = specific_impl_function %impl.elem1.a8c6e3.2, @S1(%L1.facet.ed78cc.2) [symbolic] +// CHECK:STDOUT: %specific_impl_fn.bbb82e.2: = specific_impl_function %impl.elem1.a8c6e3.2, @L1.S1(%L1.facet.ed78cc.2) [symbolic] // CHECK:STDOUT: %require_complete.9326df.2: = require_complete_type %ptr.72f01d.3 [symbolic] // CHECK:STDOUT: %Destroy.lookup_impl_witness.87177a.2: = lookup_impl_witness %V, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.a7da23.2: %Destroy.type = facet_value %V.as_type, (%Destroy.lookup_impl_witness.87177a.2) [symbolic] -// CHECK:STDOUT: %.0f4deb.2: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.a7da23.2 [symbolic] +// CHECK:STDOUT: %.0f4deb.2: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.a7da23.2 [symbolic] // CHECK:STDOUT: %impl.elem0.71dfa9.2: %.0f4deb.2 = impl_witness_access %Destroy.lookup_impl_witness.87177a.2, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.5803ed.2: = specific_impl_function %impl.elem0.71dfa9.2, @Op.1(%Destroy.facet.a7da23.2) [symbolic] +// CHECK:STDOUT: %specific_impl_fn.5803ed.2: = specific_impl_function %impl.elem0.71dfa9.2, @Destroy.Op(%Destroy.facet.a7da23.2) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -749,57 +749,57 @@ fn Works() { // CHECK:STDOUT: // CHECK:STDOUT: interface @L1 { // CHECK:STDOUT: %Self: %L1.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.04c] -// CHECK:STDOUT: %R1.decl: %R1.type = fn_decl @R1 [concrete = constants.%R1] { -// CHECK:STDOUT: %self.patt: @R1.%pattern_type (%pattern_type.ad3e89.1) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @R1.%pattern_type (%pattern_type.ad3e89.1) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %L1.R1.decl: %L1.R1.type = fn_decl @L1.R1 [concrete = constants.%L1.R1] { +// CHECK:STDOUT: %self.patt: @L1.R1.%pattern_type (%pattern_type.ad3e89.1) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @L1.R1.%pattern_type (%pattern_type.ad3e89.1) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @R1.%Self.as_type.loc4_15.2 (%Self.as_type.759) = value_param call_param0 -// CHECK:STDOUT: %.loc4_15.1: type = splice_block %.loc4_15.2 [symbolic = %Self.as_type.loc4_15.2 (constants.%Self.as_type.759)] { +// CHECK:STDOUT: %self.param: @L1.R1.%Self.as_type.loc4_15.1 (%Self.as_type.759) = value_param call_param0 +// CHECK:STDOUT: %.loc4_15.1: type = splice_block %.loc4_15.2 [symbolic = %Self.as_type.loc4_15.1 (constants.%Self.as_type.759)] { // CHECK:STDOUT: %Self.ref: %L1.type = name_ref Self, @L1.%Self [symbolic = %Self (constants.%Self.04c)] -// CHECK:STDOUT: %Self.as_type.loc4_15.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc4_15.2 (constants.%Self.as_type.759)] -// CHECK:STDOUT: %.loc4_15.2: type = converted %Self.ref, %Self.as_type.loc4_15.1 [symbolic = %Self.as_type.loc4_15.2 (constants.%Self.as_type.759)] +// CHECK:STDOUT: %Self.as_type.loc4_15.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc4_15.1 (constants.%Self.as_type.759)] +// CHECK:STDOUT: %.loc4_15.2: type = converted %Self.ref, %Self.as_type.loc4_15.2 [symbolic = %Self.as_type.loc4_15.1 (constants.%Self.as_type.759)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @R1.%Self.as_type.loc4_15.2 (%Self.as_type.759) = bind_name self, %self.param +// CHECK:STDOUT: %self: @L1.R1.%Self.as_type.loc4_15.1 (%Self.as_type.759) = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %L1.assoc_type = assoc_entity element0, %R1.decl [concrete = constants.%assoc0.8b4] -// CHECK:STDOUT: %S1.decl: %S1.type = fn_decl @S1 [concrete = constants.%S1] { -// CHECK:STDOUT: %self.patt: @S1.%pattern_type (%pattern_type.53384b.1) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @S1.%pattern_type (%pattern_type.53384b.1) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %assoc0: %L1.assoc_type = assoc_entity element0, %L1.R1.decl [concrete = constants.%assoc0.8b4] +// CHECK:STDOUT: %L1.S1.decl: %L1.S1.type = fn_decl @L1.S1 [concrete = constants.%L1.S1] { +// CHECK:STDOUT: %self.patt: @L1.S1.%pattern_type (%pattern_type.53384b.1) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @L1.S1.%pattern_type (%pattern_type.53384b.1) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %.loc5_9: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @S1.%ptr.loc5_24.2 (%ptr.72f01d.1) = value_param call_param0 -// CHECK:STDOUT: %.loc5_24.1: type = splice_block %ptr.loc5_24.1 [symbolic = %ptr.loc5_24.2 (constants.%ptr.72f01d.1)] { +// CHECK:STDOUT: %self.param: @L1.S1.%ptr.loc5_24.1 (%ptr.72f01d.1) = value_param call_param0 +// CHECK:STDOUT: %.loc5_24.1: type = splice_block %ptr.loc5_24.2 [symbolic = %ptr.loc5_24.1 (constants.%ptr.72f01d.1)] { // CHECK:STDOUT: %Self.ref: %L1.type = name_ref Self, @L1.%Self [symbolic = %Self (constants.%Self.04c)] -// CHECK:STDOUT: %Self.as_type.loc5_24.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc5_24.2 (constants.%Self.as_type.759)] -// CHECK:STDOUT: %.loc5_24.2: type = converted %Self.ref, %Self.as_type.loc5_24.1 [symbolic = %Self.as_type.loc5_24.2 (constants.%Self.as_type.759)] -// CHECK:STDOUT: %ptr.loc5_24.1: type = ptr_type %.loc5_24.2 [symbolic = %ptr.loc5_24.2 (constants.%ptr.72f01d.1)] +// CHECK:STDOUT: %Self.as_type.loc5_24.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc5_24.1 (constants.%Self.as_type.759)] +// CHECK:STDOUT: %.loc5_24.2: type = converted %Self.ref, %Self.as_type.loc5_24.2 [symbolic = %Self.as_type.loc5_24.1 (constants.%Self.as_type.759)] +// CHECK:STDOUT: %ptr.loc5_24.2: type = ptr_type %.loc5_24.2 [symbolic = %ptr.loc5_24.1 (constants.%ptr.72f01d.1)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @S1.%ptr.loc5_24.2 (%ptr.72f01d.1) = bind_name self, %self.param +// CHECK:STDOUT: %self: @L1.S1.%ptr.loc5_24.1 (%ptr.72f01d.1) = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc1: %L1.assoc_type = assoc_entity element1, %S1.decl [concrete = constants.%assoc1] +// CHECK:STDOUT: %assoc1: %L1.assoc_type = assoc_entity element1, %L1.S1.decl [concrete = constants.%assoc1] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .R1 = %assoc0 // CHECK:STDOUT: .S1 = %assoc1 -// CHECK:STDOUT: witness = (%R1.decl, %S1.decl) +// CHECK:STDOUT: witness = (%L1.R1.decl, %L1.S1.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @R1(@L1.%Self: %L1.type) { +// CHECK:STDOUT: generic fn @L1.R1(@L1.%Self: %L1.type) { // CHECK:STDOUT: %Self: %L1.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.04c)] -// CHECK:STDOUT: %Self.as_type.loc4_15.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc4_15.2 (constants.%Self.as_type.759)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc4_15.2 [symbolic = %pattern_type (constants.%pattern_type.ad3e89.1)] +// CHECK:STDOUT: %Self.as_type.loc4_15.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc4_15.1 (constants.%Self.as_type.759)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc4_15.1 [symbolic = %pattern_type (constants.%pattern_type.ad3e89.1)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @R1.%Self.as_type.loc4_15.2 (%Self.as_type.759)); +// CHECK:STDOUT: fn(%self.param: @L1.R1.%Self.as_type.loc4_15.1 (%Self.as_type.759)); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @S1(@L1.%Self: %L1.type) { +// CHECK:STDOUT: generic fn @L1.S1(@L1.%Self: %L1.type) { // CHECK:STDOUT: %Self: %L1.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.04c)] -// CHECK:STDOUT: %Self.as_type.loc5_24.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc5_24.2 (constants.%Self.as_type.759)] -// CHECK:STDOUT: %ptr.loc5_24.2: type = ptr_type %Self.as_type.loc5_24.2 [symbolic = %ptr.loc5_24.2 (constants.%ptr.72f01d.1)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %ptr.loc5_24.2 [symbolic = %pattern_type (constants.%pattern_type.53384b.1)] +// CHECK:STDOUT: %Self.as_type.loc5_24.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc5_24.1 (constants.%Self.as_type.759)] +// CHECK:STDOUT: %ptr.loc5_24.1: type = ptr_type %Self.as_type.loc5_24.1 [symbolic = %ptr.loc5_24.1 (constants.%ptr.72f01d.1)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %ptr.loc5_24.1 [symbolic = %pattern_type (constants.%pattern_type.53384b.1)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @S1.%ptr.loc5_24.2 (%ptr.72f01d.1)); +// CHECK:STDOUT: fn(%self.param: @L1.S1.%ptr.loc5_24.1 (%ptr.72f01d.1)); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @Simple4(%T.loc9_12.2: %L1.type) { @@ -811,19 +811,19 @@ fn Works() { // CHECK:STDOUT: %require_complete.loc9: = require_complete_type %T.as_type.loc9_23.1 [symbolic = %require_complete.loc9 (constants.%require_complete.97cd40.1)] // CHECK:STDOUT: %L1.lookup_impl_witness: = lookup_impl_witness %T.loc9_12.1, @L1 [symbolic = %L1.lookup_impl_witness (constants.%L1.lookup_impl_witness.0a136b.1)] // CHECK:STDOUT: %L1.facet: %L1.type = facet_value %T.as_type.loc9_23.1, (%L1.lookup_impl_witness) [symbolic = %L1.facet (constants.%L1.facet.ed78cc.1)] -// CHECK:STDOUT: %.loc10_4.2: type = fn_type_with_self_type constants.%R1.type, %L1.facet [symbolic = %.loc10_4.2 (constants.%.3b7304.1)] +// CHECK:STDOUT: %.loc10_4.2: type = fn_type_with_self_type constants.%L1.R1.type, %L1.facet [symbolic = %.loc10_4.2 (constants.%.3b7304.1)] // CHECK:STDOUT: %impl.elem0.loc10_4.2: @Simple4.%.loc10_4.2 (%.3b7304.1) = impl_witness_access %L1.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc10_4.2 (constants.%impl.elem0.a7f881.1)] -// CHECK:STDOUT: %specific_impl_fn.loc10_4.2: = specific_impl_function %impl.elem0.loc10_4.2, @R1(%L1.facet) [symbolic = %specific_impl_fn.loc10_4.2 (constants.%specific_impl_fn.f11365.1)] -// CHECK:STDOUT: %.loc12_8.2: type = fn_type_with_self_type constants.%S1.type, %L1.facet [symbolic = %.loc12_8.2 (constants.%.e9a411.1)] +// CHECK:STDOUT: %specific_impl_fn.loc10_4.2: = specific_impl_function %impl.elem0.loc10_4.2, @L1.R1(%L1.facet) [symbolic = %specific_impl_fn.loc10_4.2 (constants.%specific_impl_fn.f11365.1)] +// CHECK:STDOUT: %.loc12_8.2: type = fn_type_with_self_type constants.%L1.S1.type, %L1.facet [symbolic = %.loc12_8.2 (constants.%.e9a411.1)] // CHECK:STDOUT: %impl.elem1.loc12_8.2: @Simple4.%.loc12_8.2 (%.e9a411.1) = impl_witness_access %L1.lookup_impl_witness, element1 [symbolic = %impl.elem1.loc12_8.2 (constants.%impl.elem1.a8c6e3.1)] -// CHECK:STDOUT: %specific_impl_fn.loc12_8.2: = specific_impl_function %impl.elem1.loc12_8.2, @S1(%L1.facet) [symbolic = %specific_impl_fn.loc12_8.2 (constants.%specific_impl_fn.bbb82e.1)] +// CHECK:STDOUT: %specific_impl_fn.loc12_8.2: = specific_impl_function %impl.elem1.loc12_8.2, @L1.S1(%L1.facet) [symbolic = %specific_impl_fn.loc12_8.2 (constants.%specific_impl_fn.bbb82e.1)] // CHECK:STDOUT: %ptr: type = ptr_type %T.as_type.loc9_23.1 [symbolic = %ptr (constants.%ptr.72f01d.2)] // CHECK:STDOUT: %require_complete.loc12: = require_complete_type %ptr [symbolic = %require_complete.loc12 (constants.%require_complete.9326df.1)] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %T.loc9_12.1, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness.87177a.1)] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %T.as_type.loc9_23.1, (%Destroy.lookup_impl_witness) [symbolic = %Destroy.facet (constants.%Destroy.facet.a7da23.1)] -// CHECK:STDOUT: %.loc11_3.3: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.loc11_3.3 (constants.%.0f4deb.1)] +// CHECK:STDOUT: %.loc11_3.3: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet [symbolic = %.loc11_3.3 (constants.%.0f4deb.1)] // CHECK:STDOUT: %impl.elem0.loc11_3.2: @Simple4.%.loc11_3.3 (%.0f4deb.1) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc11_3.2 (constants.%impl.elem0.71dfa9.1)] -// CHECK:STDOUT: %specific_impl_fn.loc11_3.2: = specific_impl_function %impl.elem0.loc11_3.2, @Op.1(%Destroy.facet) [symbolic = %specific_impl_fn.loc11_3.2 (constants.%specific_impl_fn.5803ed.1)] +// CHECK:STDOUT: %specific_impl_fn.loc11_3.2: = specific_impl_function %impl.elem0.loc11_3.2, @Destroy.Op(%Destroy.facet) [symbolic = %specific_impl_fn.loc11_3.2 (constants.%specific_impl_fn.5803ed.1)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%x.param: @Simple4.%T.as_type.loc9_23.1 (%T.as_type)) { // CHECK:STDOUT: !entry: @@ -833,7 +833,7 @@ fn Works() { // CHECK:STDOUT: %.loc10_4.1: type = converted constants.%T.04c, %T.as_type.loc10 [symbolic = %T.as_type.loc9_23.1 (constants.%T.as_type)] // CHECK:STDOUT: %impl.elem0.loc10_4.1: @Simple4.%.loc10_4.2 (%.3b7304.1) = impl_witness_access constants.%L1.lookup_impl_witness.0a136b.1, element0 [symbolic = %impl.elem0.loc10_4.2 (constants.%impl.elem0.a7f881.1)] // CHECK:STDOUT: %bound_method.loc10_4: = bound_method %x.ref.loc10, %impl.elem0.loc10_4.1 -// CHECK:STDOUT: %specific_impl_fn.loc10_4.1: = specific_impl_function %impl.elem0.loc10_4.1, @R1(constants.%L1.facet.ed78cc.1) [symbolic = %specific_impl_fn.loc10_4.2 (constants.%specific_impl_fn.f11365.1)] +// CHECK:STDOUT: %specific_impl_fn.loc10_4.1: = specific_impl_function %impl.elem0.loc10_4.1, @L1.R1(constants.%L1.facet.ed78cc.1) [symbolic = %specific_impl_fn.loc10_4.2 (constants.%specific_impl_fn.f11365.1)] // CHECK:STDOUT: %bound_method.loc10_8: = bound_method %x.ref.loc10, %specific_impl_fn.loc10_4.1 // CHECK:STDOUT: %.loc10_8: init %empty_tuple.type = call %bound_method.loc10_8(%x.ref.loc10) // CHECK:STDOUT: name_binding_decl { @@ -855,7 +855,7 @@ fn Works() { // CHECK:STDOUT: %.loc12_8.1: type = converted constants.%T.04c, %T.as_type.loc12 [symbolic = %T.as_type.loc9_23.1 (constants.%T.as_type)] // CHECK:STDOUT: %impl.elem1.loc12_8.1: @Simple4.%.loc12_8.2 (%.e9a411.1) = impl_witness_access constants.%L1.lookup_impl_witness.0a136b.1, element1 [symbolic = %impl.elem1.loc12_8.2 (constants.%impl.elem1.a8c6e3.1)] // CHECK:STDOUT: %bound_method.loc12_8: = bound_method %xcopy.ref, %impl.elem1.loc12_8.1 -// CHECK:STDOUT: %specific_impl_fn.loc12_8.1: = specific_impl_function %impl.elem1.loc12_8.1, @S1(constants.%L1.facet.ed78cc.1) [symbolic = %specific_impl_fn.loc12_8.2 (constants.%specific_impl_fn.bbb82e.1)] +// CHECK:STDOUT: %specific_impl_fn.loc12_8.1: = specific_impl_function %impl.elem1.loc12_8.1, @L1.S1(constants.%L1.facet.ed78cc.1) [symbolic = %specific_impl_fn.loc12_8.2 (constants.%specific_impl_fn.bbb82e.1)] // CHECK:STDOUT: %bound_method.loc12_12: = bound_method %xcopy.ref, %specific_impl_fn.loc12_8.1 // CHECK:STDOUT: %addr.loc12: @Simple4.%ptr (%ptr.72f01d.2) = addr_of %xcopy.ref // CHECK:STDOUT: %.loc12_12: init %empty_tuple.type = call %bound_method.loc12_12(%addr.loc12) @@ -863,7 +863,7 @@ fn Works() { // CHECK:STDOUT: %.loc11_3.1: type = converted constants.%T.04c, %T.as_type.loc11_3 [symbolic = %T.as_type.loc9_23.1 (constants.%T.as_type)] // CHECK:STDOUT: %impl.elem0.loc11_3.1: @Simple4.%.loc11_3.3 (%.0f4deb.1) = impl_witness_access constants.%Destroy.lookup_impl_witness.87177a.1, element0 [symbolic = %impl.elem0.loc11_3.2 (constants.%impl.elem0.71dfa9.1)] // CHECK:STDOUT: %bound_method.loc11_3.1: = bound_method %xcopy.var, %impl.elem0.loc11_3.1 -// CHECK:STDOUT: %specific_impl_fn.loc11_3.1: = specific_impl_function %impl.elem0.loc11_3.1, @Op.1(constants.%Destroy.facet.a7da23.1) [symbolic = %specific_impl_fn.loc11_3.2 (constants.%specific_impl_fn.5803ed.1)] +// CHECK:STDOUT: %specific_impl_fn.loc11_3.1: = specific_impl_function %impl.elem0.loc11_3.1, @Destroy.Op(constants.%Destroy.facet.a7da23.1) [symbolic = %specific_impl_fn.loc11_3.2 (constants.%specific_impl_fn.5803ed.1)] // CHECK:STDOUT: %bound_method.loc11_3.2: = bound_method %xcopy.var, %specific_impl_fn.loc11_3.1 // CHECK:STDOUT: %addr.loc11: @Simple4.%ptr (%ptr.72f01d.2) = addr_of %xcopy.var // CHECK:STDOUT: %.loc11_3.2: init %empty_tuple.type = call %bound_method.loc11_3.2(%addr.loc11) @@ -880,19 +880,19 @@ fn Works() { // CHECK:STDOUT: %require_complete.loc16: = require_complete_type %V.as_type.loc16_25.1 [symbolic = %require_complete.loc16 (constants.%require_complete.97cd40.2)] // CHECK:STDOUT: %L1.lookup_impl_witness: = lookup_impl_witness %V.loc16_14.1, @L1 [symbolic = %L1.lookup_impl_witness (constants.%L1.lookup_impl_witness.0a136b.2)] // CHECK:STDOUT: %L1.facet: %L1.type = facet_value %V.as_type.loc16_25.1, (%L1.lookup_impl_witness) [symbolic = %L1.facet (constants.%L1.facet.ed78cc.2)] -// CHECK:STDOUT: %.loc17_4: type = fn_type_with_self_type constants.%R1.type, %L1.facet [symbolic = %.loc17_4 (constants.%.3b7304.2)] +// CHECK:STDOUT: %.loc17_4: type = fn_type_with_self_type constants.%L1.R1.type, %L1.facet [symbolic = %.loc17_4 (constants.%.3b7304.2)] // CHECK:STDOUT: %impl.elem0.loc17_4.2: @Compound4.%.loc17_4 (%.3b7304.2) = impl_witness_access %L1.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc17_4.2 (constants.%impl.elem0.a7f881.2)] -// CHECK:STDOUT: %specific_impl_fn.loc17_4.2: = specific_impl_function %impl.elem0.loc17_4.2, @R1(%L1.facet) [symbolic = %specific_impl_fn.loc17_4.2 (constants.%specific_impl_fn.f11365.2)] -// CHECK:STDOUT: %.loc19_8: type = fn_type_with_self_type constants.%S1.type, %L1.facet [symbolic = %.loc19_8 (constants.%.e9a411.2)] +// CHECK:STDOUT: %specific_impl_fn.loc17_4.2: = specific_impl_function %impl.elem0.loc17_4.2, @L1.R1(%L1.facet) [symbolic = %specific_impl_fn.loc17_4.2 (constants.%specific_impl_fn.f11365.2)] +// CHECK:STDOUT: %.loc19_8: type = fn_type_with_self_type constants.%L1.S1.type, %L1.facet [symbolic = %.loc19_8 (constants.%.e9a411.2)] // CHECK:STDOUT: %impl.elem1.loc19_8.2: @Compound4.%.loc19_8 (%.e9a411.2) = impl_witness_access %L1.lookup_impl_witness, element1 [symbolic = %impl.elem1.loc19_8.2 (constants.%impl.elem1.a8c6e3.2)] -// CHECK:STDOUT: %specific_impl_fn.loc19_8.2: = specific_impl_function %impl.elem1.loc19_8.2, @S1(%L1.facet) [symbolic = %specific_impl_fn.loc19_8.2 (constants.%specific_impl_fn.bbb82e.2)] +// CHECK:STDOUT: %specific_impl_fn.loc19_8.2: = specific_impl_function %impl.elem1.loc19_8.2, @L1.S1(%L1.facet) [symbolic = %specific_impl_fn.loc19_8.2 (constants.%specific_impl_fn.bbb82e.2)] // CHECK:STDOUT: %ptr: type = ptr_type %V.as_type.loc16_25.1 [symbolic = %ptr (constants.%ptr.72f01d.3)] // CHECK:STDOUT: %require_complete.loc19: = require_complete_type %ptr [symbolic = %require_complete.loc19 (constants.%require_complete.9326df.2)] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %V.loc16_14.1, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness.87177a.2)] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %V.as_type.loc16_25.1, (%Destroy.lookup_impl_witness) [symbolic = %Destroy.facet (constants.%Destroy.facet.a7da23.2)] -// CHECK:STDOUT: %.loc18_3.3: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.loc18_3.3 (constants.%.0f4deb.2)] +// CHECK:STDOUT: %.loc18_3.3: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet [symbolic = %.loc18_3.3 (constants.%.0f4deb.2)] // CHECK:STDOUT: %impl.elem0.loc18_3.2: @Compound4.%.loc18_3.3 (%.0f4deb.2) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc18_3.2 (constants.%impl.elem0.71dfa9.2)] -// CHECK:STDOUT: %specific_impl_fn.loc18_3.2: = specific_impl_function %impl.elem0.loc18_3.2, @Op.1(%Destroy.facet) [symbolic = %specific_impl_fn.loc18_3.2 (constants.%specific_impl_fn.5803ed.2)] +// CHECK:STDOUT: %specific_impl_fn.loc18_3.2: = specific_impl_function %impl.elem0.loc18_3.2, @Destroy.Op(%Destroy.facet) [symbolic = %specific_impl_fn.loc18_3.2 (constants.%specific_impl_fn.5803ed.2)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%y.param: @Compound4.%V.as_type.loc16_25.1 (%V.as_type)) { // CHECK:STDOUT: !entry: @@ -901,7 +901,7 @@ fn Works() { // CHECK:STDOUT: %R1.ref: %L1.assoc_type = name_ref R1, @L1.%assoc0 [concrete = constants.%assoc0.8b4] // CHECK:STDOUT: %impl.elem0.loc17_4.1: @Compound4.%.loc17_4 (%.3b7304.2) = impl_witness_access constants.%L1.lookup_impl_witness.0a136b.2, element0 [symbolic = %impl.elem0.loc17_4.2 (constants.%impl.elem0.a7f881.2)] // CHECK:STDOUT: %bound_method.loc17_4: = bound_method %y.ref.loc17, %impl.elem0.loc17_4.1 -// CHECK:STDOUT: %specific_impl_fn.loc17_4.1: = specific_impl_function %impl.elem0.loc17_4.1, @R1(constants.%L1.facet.ed78cc.2) [symbolic = %specific_impl_fn.loc17_4.2 (constants.%specific_impl_fn.f11365.2)] +// CHECK:STDOUT: %specific_impl_fn.loc17_4.1: = specific_impl_function %impl.elem0.loc17_4.1, @L1.R1(constants.%L1.facet.ed78cc.2) [symbolic = %specific_impl_fn.loc17_4.2 (constants.%specific_impl_fn.f11365.2)] // CHECK:STDOUT: %bound_method.loc17_13: = bound_method %y.ref.loc17, %specific_impl_fn.loc17_4.1 // CHECK:STDOUT: %.loc17_13: init %empty_tuple.type = call %bound_method.loc17_13(%y.ref.loc17) // CHECK:STDOUT: name_binding_decl { @@ -922,7 +922,7 @@ fn Works() { // CHECK:STDOUT: %S1.ref: %L1.assoc_type = name_ref S1, @L1.%assoc1 [concrete = constants.%assoc1] // CHECK:STDOUT: %impl.elem1.loc19_8.1: @Compound4.%.loc19_8 (%.e9a411.2) = impl_witness_access constants.%L1.lookup_impl_witness.0a136b.2, element1 [symbolic = %impl.elem1.loc19_8.2 (constants.%impl.elem1.a8c6e3.2)] // CHECK:STDOUT: %bound_method.loc19_8: = bound_method %ycopy.ref, %impl.elem1.loc19_8.1 -// CHECK:STDOUT: %specific_impl_fn.loc19_8.1: = specific_impl_function %impl.elem1.loc19_8.1, @S1(constants.%L1.facet.ed78cc.2) [symbolic = %specific_impl_fn.loc19_8.2 (constants.%specific_impl_fn.bbb82e.2)] +// CHECK:STDOUT: %specific_impl_fn.loc19_8.1: = specific_impl_function %impl.elem1.loc19_8.1, @L1.S1(constants.%L1.facet.ed78cc.2) [symbolic = %specific_impl_fn.loc19_8.2 (constants.%specific_impl_fn.bbb82e.2)] // CHECK:STDOUT: %bound_method.loc19_17: = bound_method %ycopy.ref, %specific_impl_fn.loc19_8.1 // CHECK:STDOUT: %addr.loc19: @Compound4.%ptr (%ptr.72f01d.3) = addr_of %ycopy.ref // CHECK:STDOUT: %.loc19_17: init %empty_tuple.type = call %bound_method.loc19_17(%addr.loc19) @@ -930,7 +930,7 @@ fn Works() { // CHECK:STDOUT: %.loc18_3.1: type = converted constants.%V, %V.as_type.loc18_3 [symbolic = %V.as_type.loc16_25.1 (constants.%V.as_type)] // CHECK:STDOUT: %impl.elem0.loc18_3.1: @Compound4.%.loc18_3.3 (%.0f4deb.2) = impl_witness_access constants.%Destroy.lookup_impl_witness.87177a.2, element0 [symbolic = %impl.elem0.loc18_3.2 (constants.%impl.elem0.71dfa9.2)] // CHECK:STDOUT: %bound_method.loc18_3.1: = bound_method %ycopy.var, %impl.elem0.loc18_3.1 -// CHECK:STDOUT: %specific_impl_fn.loc18_3.1: = specific_impl_function %impl.elem0.loc18_3.1, @Op.1(constants.%Destroy.facet.a7da23.2) [symbolic = %specific_impl_fn.loc18_3.2 (constants.%specific_impl_fn.5803ed.2)] +// CHECK:STDOUT: %specific_impl_fn.loc18_3.1: = specific_impl_function %impl.elem0.loc18_3.1, @Destroy.Op(constants.%Destroy.facet.a7da23.2) [symbolic = %specific_impl_fn.loc18_3.2 (constants.%specific_impl_fn.5803ed.2)] // CHECK:STDOUT: %bound_method.loc18_3.2: = bound_method %ycopy.var, %specific_impl_fn.loc18_3.1 // CHECK:STDOUT: %addr.loc18: @Compound4.%ptr (%ptr.72f01d.3) = addr_of %ycopy.var // CHECK:STDOUT: %.loc18_3.2: init %empty_tuple.type = call %bound_method.loc18_3.2(%addr.loc18) @@ -938,16 +938,16 @@ fn Works() { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @R1(constants.%Self.04c) { +// CHECK:STDOUT: specific @L1.R1(constants.%Self.04c) { // CHECK:STDOUT: %Self => constants.%Self.04c -// CHECK:STDOUT: %Self.as_type.loc4_15.2 => constants.%Self.as_type.759 +// CHECK:STDOUT: %Self.as_type.loc4_15.1 => constants.%Self.as_type.759 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.ad3e89.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @S1(constants.%Self.04c) { +// CHECK:STDOUT: specific @L1.S1(constants.%Self.04c) { // CHECK:STDOUT: %Self => constants.%Self.04c -// CHECK:STDOUT: %Self.as_type.loc5_24.2 => constants.%Self.as_type.759 -// CHECK:STDOUT: %ptr.loc5_24.2 => constants.%ptr.72f01d.1 +// CHECK:STDOUT: %Self.as_type.loc5_24.1 => constants.%Self.as_type.759 +// CHECK:STDOUT: %ptr.loc5_24.1 => constants.%ptr.72f01d.1 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.53384b.1 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -957,16 +957,16 @@ fn Works() { // CHECK:STDOUT: %pattern_type => constants.%pattern_type.ad3e89.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @R1(constants.%L1.facet.ed78cc.1) { +// CHECK:STDOUT: specific @L1.R1(constants.%L1.facet.ed78cc.1) { // CHECK:STDOUT: %Self => constants.%L1.facet.ed78cc.1 -// CHECK:STDOUT: %Self.as_type.loc4_15.2 => constants.%T.as_type +// CHECK:STDOUT: %Self.as_type.loc4_15.1 => constants.%T.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.ad3e89.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @S1(constants.%L1.facet.ed78cc.1) { +// CHECK:STDOUT: specific @L1.S1(constants.%L1.facet.ed78cc.1) { // CHECK:STDOUT: %Self => constants.%L1.facet.ed78cc.1 -// CHECK:STDOUT: %Self.as_type.loc5_24.2 => constants.%T.as_type -// CHECK:STDOUT: %ptr.loc5_24.2 => constants.%ptr.72f01d.2 +// CHECK:STDOUT: %Self.as_type.loc5_24.1 => constants.%T.as_type +// CHECK:STDOUT: %ptr.loc5_24.1 => constants.%ptr.72f01d.2 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.53384b.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -976,16 +976,16 @@ fn Works() { // CHECK:STDOUT: %pattern_type => constants.%pattern_type.ad3e89.3 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @R1(constants.%L1.facet.ed78cc.2) { +// CHECK:STDOUT: specific @L1.R1(constants.%L1.facet.ed78cc.2) { // CHECK:STDOUT: %Self => constants.%L1.facet.ed78cc.2 -// CHECK:STDOUT: %Self.as_type.loc4_15.2 => constants.%V.as_type +// CHECK:STDOUT: %Self.as_type.loc4_15.1 => constants.%V.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.ad3e89.3 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @S1(constants.%L1.facet.ed78cc.2) { +// CHECK:STDOUT: specific @L1.S1(constants.%L1.facet.ed78cc.2) { // CHECK:STDOUT: %Self => constants.%L1.facet.ed78cc.2 -// CHECK:STDOUT: %Self.as_type.loc5_24.2 => constants.%V.as_type -// CHECK:STDOUT: %ptr.loc5_24.2 => constants.%ptr.72f01d.3 +// CHECK:STDOUT: %Self.as_type.loc5_24.1 => constants.%V.as_type +// CHECK:STDOUT: %ptr.loc5_24.1 => constants.%ptr.72f01d.3 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.53384b.3 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -996,17 +996,17 @@ fn Works() { // CHECK:STDOUT: %Self: %L2.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic] // CHECK:STDOUT: %pattern_type.47b45b.1: type = pattern_type %Self.as_type [symbolic] -// CHECK:STDOUT: %R2.type: type = fn_type @R2 [concrete] +// CHECK:STDOUT: %L2.R2.type: type = fn_type @L2.R2 [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %R2: %R2.type = struct_value () [concrete] +// CHECK:STDOUT: %L2.R2: %L2.R2.type = struct_value () [concrete] // CHECK:STDOUT: %L2.assoc_type: type = assoc_entity_type @L2 [concrete] -// CHECK:STDOUT: %assoc0: %L2.assoc_type = assoc_entity element0, @L2.%R2.decl [concrete] +// CHECK:STDOUT: %assoc0: %L2.assoc_type = assoc_entity element0, @L2.%L2.R2.decl [concrete] // CHECK:STDOUT: %ptr.f3e54b.1: type = ptr_type %Self.as_type [symbolic] // CHECK:STDOUT: %pattern_type.696b36.1: type = pattern_type %ptr.f3e54b.1 [symbolic] // CHECK:STDOUT: %pattern_type.f6d: type = pattern_type auto [concrete] -// CHECK:STDOUT: %S2.type: type = fn_type @S2 [concrete] -// CHECK:STDOUT: %S2: %S2.type = struct_value () [concrete] -// CHECK:STDOUT: %assoc1: %L2.assoc_type = assoc_entity element1, @L2.%S2.decl [concrete] +// CHECK:STDOUT: %L2.S2.type: type = fn_type @L2.S2 [concrete] +// CHECK:STDOUT: %L2.S2: %L2.S2.type = struct_value () [concrete] +// CHECK:STDOUT: %assoc1: %L2.assoc_type = assoc_entity element1, @L2.%L2.S2.decl [concrete] // CHECK:STDOUT: %T: %L2.type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.1c0: type = pattern_type %L2.type [concrete] // CHECK:STDOUT: %Simple5.type: type = fn_type @Simple5 [concrete] @@ -1014,15 +1014,15 @@ fn Works() { // CHECK:STDOUT: %T.as_type: type = facet_access_type %T [symbolic] // CHECK:STDOUT: %L2.lookup_impl_witness: = lookup_impl_witness %T, @L2 [symbolic] // CHECK:STDOUT: %L2.facet: %L2.type = facet_value %T.as_type, (%L2.lookup_impl_witness) [symbolic] -// CHECK:STDOUT: %.c42: type = fn_type_with_self_type %R2.type, %L2.facet [symbolic] +// CHECK:STDOUT: %.c42: type = fn_type_with_self_type %L2.R2.type, %L2.facet [symbolic] // CHECK:STDOUT: %impl.elem0: %.c42 = impl_witness_access %L2.lookup_impl_witness, element0 [symbolic] // CHECK:STDOUT: %pattern_type.47b45b.2: type = pattern_type %T.as_type [symbolic] -// CHECK:STDOUT: %specific_impl_fn.7ee: = specific_impl_function %impl.elem0, @R2(%L2.facet) [symbolic] -// CHECK:STDOUT: %.7f6: type = fn_type_with_self_type %S2.type, %L2.facet [symbolic] +// CHECK:STDOUT: %specific_impl_fn.7ee: = specific_impl_function %impl.elem0, @L2.R2(%L2.facet) [symbolic] +// CHECK:STDOUT: %.7f6: type = fn_type_with_self_type %L2.S2.type, %L2.facet [symbolic] // CHECK:STDOUT: %impl.elem1: %.7f6 = impl_witness_access %L2.lookup_impl_witness, element1 [symbolic] // CHECK:STDOUT: %ptr.f3e54b.2: type = ptr_type %T.as_type [symbolic] // CHECK:STDOUT: %pattern_type.696b36.2: type = pattern_type %ptr.f3e54b.2 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.b69: = specific_impl_function %impl.elem1, @S2(%L2.facet) [symbolic] +// CHECK:STDOUT: %specific_impl_fn.b69: = specific_impl_function %impl.elem1, @L2.S2(%L2.facet) [symbolic] // CHECK:STDOUT: %V: %L2.type = bind_symbolic_name V, 0 [symbolic] // CHECK:STDOUT: %Compound5.type: type = fn_type @Compound5 [concrete] // CHECK:STDOUT: %Compound5: %Compound5.type = struct_value () [concrete] @@ -1060,57 +1060,57 @@ fn Works() { // CHECK:STDOUT: // CHECK:STDOUT: interface @L2 { // CHECK:STDOUT: %Self: %L2.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %R2.decl: %R2.type = fn_decl @R2 [concrete = constants.%R2] { -// CHECK:STDOUT: %self.patt: @R2.%pattern_type (%pattern_type.47b45b.1) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @R2.%pattern_type (%pattern_type.47b45b.1) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %L2.R2.decl: %L2.R2.type = fn_decl @L2.R2 [concrete = constants.%L2.R2] { +// CHECK:STDOUT: %self.patt: @L2.R2.%pattern_type (%pattern_type.47b45b.1) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @L2.R2.%pattern_type (%pattern_type.47b45b.1) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @R2.%Self.as_type.loc5_15.2 (%Self.as_type) = value_param call_param0 -// CHECK:STDOUT: %.loc5_15.1: type = splice_block %.loc5_15.2 [symbolic = %Self.as_type.loc5_15.2 (constants.%Self.as_type)] { +// CHECK:STDOUT: %self.param: @L2.R2.%Self.as_type.loc5_15.1 (%Self.as_type) = value_param call_param0 +// CHECK:STDOUT: %.loc5_15.1: type = splice_block %.loc5_15.2 [symbolic = %Self.as_type.loc5_15.1 (constants.%Self.as_type)] { // CHECK:STDOUT: %Self.ref: %L2.type = name_ref Self, @L2.%Self [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc5_15.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc5_15.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc5_15.2: type = converted %Self.ref, %Self.as_type.loc5_15.1 [symbolic = %Self.as_type.loc5_15.2 (constants.%Self.as_type)] +// CHECK:STDOUT: %Self.as_type.loc5_15.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc5_15.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc5_15.2: type = converted %Self.ref, %Self.as_type.loc5_15.2 [symbolic = %Self.as_type.loc5_15.1 (constants.%Self.as_type)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @R2.%Self.as_type.loc5_15.2 (%Self.as_type) = bind_name self, %self.param +// CHECK:STDOUT: %self: @L2.R2.%Self.as_type.loc5_15.1 (%Self.as_type) = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %L2.assoc_type = assoc_entity element0, %R2.decl [concrete = constants.%assoc0] -// CHECK:STDOUT: %S2.decl: %S2.type = fn_decl @S2 [concrete = constants.%S2] { -// CHECK:STDOUT: %self.patt: @S2.%pattern_type (%pattern_type.696b36.1) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @S2.%pattern_type (%pattern_type.696b36.1) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %assoc0: %L2.assoc_type = assoc_entity element0, %L2.R2.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %L2.S2.decl: %L2.S2.type = fn_decl @L2.S2 [concrete = constants.%L2.S2] { +// CHECK:STDOUT: %self.patt: @L2.S2.%pattern_type (%pattern_type.696b36.1) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @L2.S2.%pattern_type (%pattern_type.696b36.1) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %.loc6_9: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @S2.%ptr.loc6_24.2 (%ptr.f3e54b.1) = value_param call_param0 -// CHECK:STDOUT: %.loc6_24.1: type = splice_block %ptr.loc6_24.1 [symbolic = %ptr.loc6_24.2 (constants.%ptr.f3e54b.1)] { +// CHECK:STDOUT: %self.param: @L2.S2.%ptr.loc6_24.1 (%ptr.f3e54b.1) = value_param call_param0 +// CHECK:STDOUT: %.loc6_24.1: type = splice_block %ptr.loc6_24.2 [symbolic = %ptr.loc6_24.1 (constants.%ptr.f3e54b.1)] { // CHECK:STDOUT: %Self.ref: %L2.type = name_ref Self, @L2.%Self [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc6_24.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc6_24.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc6_24.2: type = converted %Self.ref, %Self.as_type.loc6_24.1 [symbolic = %Self.as_type.loc6_24.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %ptr.loc6_24.1: type = ptr_type %.loc6_24.2 [symbolic = %ptr.loc6_24.2 (constants.%ptr.f3e54b.1)] +// CHECK:STDOUT: %Self.as_type.loc6_24.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc6_24.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc6_24.2: type = converted %Self.ref, %Self.as_type.loc6_24.2 [symbolic = %Self.as_type.loc6_24.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %ptr.loc6_24.2: type = ptr_type %.loc6_24.2 [symbolic = %ptr.loc6_24.1 (constants.%ptr.f3e54b.1)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @S2.%ptr.loc6_24.2 (%ptr.f3e54b.1) = bind_name self, %self.param +// CHECK:STDOUT: %self: @L2.S2.%ptr.loc6_24.1 (%ptr.f3e54b.1) = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc1: %L2.assoc_type = assoc_entity element1, %S2.decl [concrete = constants.%assoc1] +// CHECK:STDOUT: %assoc1: %L2.assoc_type = assoc_entity element1, %L2.S2.decl [concrete = constants.%assoc1] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .R2 = %assoc0 // CHECK:STDOUT: .S2 = %assoc1 -// CHECK:STDOUT: witness = (%R2.decl, %S2.decl) +// CHECK:STDOUT: witness = (%L2.R2.decl, %L2.S2.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @R2(@L2.%Self: %L2.type) { +// CHECK:STDOUT: generic fn @L2.R2(@L2.%Self: %L2.type) { // CHECK:STDOUT: %Self: %L2.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc5_15.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc5_15.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc5_15.2 [symbolic = %pattern_type (constants.%pattern_type.47b45b.1)] +// CHECK:STDOUT: %Self.as_type.loc5_15.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc5_15.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc5_15.1 [symbolic = %pattern_type (constants.%pattern_type.47b45b.1)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @R2.%Self.as_type.loc5_15.2 (%Self.as_type)); +// CHECK:STDOUT: fn(%self.param: @L2.R2.%Self.as_type.loc5_15.1 (%Self.as_type)); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @S2(@L2.%Self: %L2.type) { +// CHECK:STDOUT: generic fn @L2.S2(@L2.%Self: %L2.type) { // CHECK:STDOUT: %Self: %L2.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc6_24.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc6_24.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %ptr.loc6_24.2: type = ptr_type %Self.as_type.loc6_24.2 [symbolic = %ptr.loc6_24.2 (constants.%ptr.f3e54b.1)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %ptr.loc6_24.2 [symbolic = %pattern_type (constants.%pattern_type.696b36.1)] +// CHECK:STDOUT: %Self.as_type.loc6_24.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc6_24.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %ptr.loc6_24.1: type = ptr_type %Self.as_type.loc6_24.1 [symbolic = %ptr.loc6_24.1 (constants.%ptr.f3e54b.1)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %ptr.loc6_24.1 [symbolic = %pattern_type (constants.%pattern_type.696b36.1)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @S2.%ptr.loc6_24.2 (%ptr.f3e54b.1)); +// CHECK:STDOUT: fn(%self.param: @L2.S2.%ptr.loc6_24.1 (%ptr.f3e54b.1)); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @Simple5(%T.loc10_12.2: %L2.type) { @@ -1120,12 +1120,12 @@ fn Works() { // CHECK:STDOUT: %T.as_type.loc18_4.2: type = facet_access_type %T.loc10_12.1 [symbolic = %T.as_type.loc18_4.2 (constants.%T.as_type)] // CHECK:STDOUT: %L2.lookup_impl_witness: = lookup_impl_witness %T.loc10_12.1, @L2 [symbolic = %L2.lookup_impl_witness (constants.%L2.lookup_impl_witness)] // CHECK:STDOUT: %L2.facet: %L2.type = facet_value %T.as_type.loc18_4.2, (%L2.lookup_impl_witness) [symbolic = %L2.facet (constants.%L2.facet)] -// CHECK:STDOUT: %.loc18_4.2: type = fn_type_with_self_type constants.%R2.type, %L2.facet [symbolic = %.loc18_4.2 (constants.%.c42)] +// CHECK:STDOUT: %.loc18_4.2: type = fn_type_with_self_type constants.%L2.R2.type, %L2.facet [symbolic = %.loc18_4.2 (constants.%.c42)] // CHECK:STDOUT: %impl.elem0.loc18_4.2: @Simple5.%.loc18_4.2 (%.c42) = impl_witness_access %L2.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc18_4.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %specific_impl_fn.loc18_4.2: = specific_impl_function %impl.elem0.loc18_4.2, @R2(%L2.facet) [symbolic = %specific_impl_fn.loc18_4.2 (constants.%specific_impl_fn.7ee)] -// CHECK:STDOUT: %.loc26_4.2: type = fn_type_with_self_type constants.%S2.type, %L2.facet [symbolic = %.loc26_4.2 (constants.%.7f6)] +// CHECK:STDOUT: %specific_impl_fn.loc18_4.2: = specific_impl_function %impl.elem0.loc18_4.2, @L2.R2(%L2.facet) [symbolic = %specific_impl_fn.loc18_4.2 (constants.%specific_impl_fn.7ee)] +// CHECK:STDOUT: %.loc26_4.2: type = fn_type_with_self_type constants.%L2.S2.type, %L2.facet [symbolic = %.loc26_4.2 (constants.%.7f6)] // CHECK:STDOUT: %impl.elem1.loc26_4.2: @Simple5.%.loc26_4.2 (%.7f6) = impl_witness_access %L2.lookup_impl_witness, element1 [symbolic = %impl.elem1.loc26_4.2 (constants.%impl.elem1)] -// CHECK:STDOUT: %specific_impl_fn.loc26_4.2: = specific_impl_function %impl.elem1.loc26_4.2, @S2(%L2.facet) [symbolic = %specific_impl_fn.loc26_4.2 (constants.%specific_impl_fn.b69)] +// CHECK:STDOUT: %specific_impl_fn.loc26_4.2: = specific_impl_function %impl.elem1.loc26_4.2, @L2.S2(%L2.facet) [symbolic = %specific_impl_fn.loc26_4.2 (constants.%specific_impl_fn.b69)] // CHECK:STDOUT: // CHECK:STDOUT: fn() { // CHECK:STDOUT: !entry: @@ -1134,14 +1134,14 @@ fn Works() { // CHECK:STDOUT: %T.as_type.loc18_4.1: type = facet_access_type %T.ref.loc18 [symbolic = %T.as_type.loc18_4.2 (constants.%T.as_type)] // CHECK:STDOUT: %.loc18_4.1: type = converted %T.ref.loc18, %T.as_type.loc18_4.1 [symbolic = %T.as_type.loc18_4.2 (constants.%T.as_type)] // CHECK:STDOUT: %impl.elem0.loc18_4.1: @Simple5.%.loc18_4.2 (%.c42) = impl_witness_access constants.%L2.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc18_4.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %specific_impl_fn.loc18_4.1: = specific_impl_function %impl.elem0.loc18_4.1, @R2(constants.%L2.facet) [symbolic = %specific_impl_fn.loc18_4.2 (constants.%specific_impl_fn.7ee)] +// CHECK:STDOUT: %specific_impl_fn.loc18_4.1: = specific_impl_function %impl.elem0.loc18_4.1, @L2.R2(constants.%L2.facet) [symbolic = %specific_impl_fn.loc18_4.2 (constants.%specific_impl_fn.7ee)] // CHECK:STDOUT: %.loc18_8: init %empty_tuple.type = call %specific_impl_fn.loc18_4.1() [concrete = ] // CHECK:STDOUT: %T.ref.loc26: %L2.type = name_ref T, %T.loc10_12.2 [symbolic = %T.loc10_12.1 (constants.%T)] // CHECK:STDOUT: %S2.ref: %L2.assoc_type = name_ref S2, @L2.%assoc1 [concrete = constants.%assoc1] // CHECK:STDOUT: %T.as_type.loc26: type = facet_access_type %T.ref.loc26 [symbolic = %T.as_type.loc18_4.2 (constants.%T.as_type)] // CHECK:STDOUT: %.loc26_4.1: type = converted %T.ref.loc26, %T.as_type.loc26 [symbolic = %T.as_type.loc18_4.2 (constants.%T.as_type)] // CHECK:STDOUT: %impl.elem1.loc26_4.1: @Simple5.%.loc26_4.2 (%.7f6) = impl_witness_access constants.%L2.lookup_impl_witness, element1 [symbolic = %impl.elem1.loc26_4.2 (constants.%impl.elem1)] -// CHECK:STDOUT: %specific_impl_fn.loc26_4.1: = specific_impl_function %impl.elem1.loc26_4.1, @S2(constants.%L2.facet) [symbolic = %specific_impl_fn.loc26_4.2 (constants.%specific_impl_fn.b69)] +// CHECK:STDOUT: %specific_impl_fn.loc26_4.1: = specific_impl_function %impl.elem1.loc26_4.1, @L2.S2(constants.%L2.facet) [symbolic = %specific_impl_fn.loc26_4.2 (constants.%specific_impl_fn.b69)] // CHECK:STDOUT: %addr: = addr_of [concrete = ] // CHECK:STDOUT: %.loc26_8: init %empty_tuple.type = call %specific_impl_fn.loc26_4.1() [concrete = ] // CHECK:STDOUT: return @@ -1165,16 +1165,16 @@ fn Works() { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @R2(constants.%Self) { +// CHECK:STDOUT: specific @L2.R2(constants.%Self) { // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %Self.as_type.loc5_15.2 => constants.%Self.as_type +// CHECK:STDOUT: %Self.as_type.loc5_15.1 => constants.%Self.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.47b45b.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @S2(constants.%Self) { +// CHECK:STDOUT: specific @L2.S2(constants.%Self) { // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %Self.as_type.loc6_24.2 => constants.%Self.as_type -// CHECK:STDOUT: %ptr.loc6_24.2 => constants.%ptr.f3e54b.1 +// CHECK:STDOUT: %Self.as_type.loc6_24.1 => constants.%Self.as_type +// CHECK:STDOUT: %ptr.loc6_24.1 => constants.%ptr.f3e54b.1 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.696b36.1 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1182,16 +1182,16 @@ fn Works() { // CHECK:STDOUT: %T.loc10_12.1 => constants.%T // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @R2(constants.%L2.facet) { +// CHECK:STDOUT: specific @L2.R2(constants.%L2.facet) { // CHECK:STDOUT: %Self => constants.%L2.facet -// CHECK:STDOUT: %Self.as_type.loc5_15.2 => constants.%T.as_type +// CHECK:STDOUT: %Self.as_type.loc5_15.1 => constants.%T.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.47b45b.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @S2(constants.%L2.facet) { +// CHECK:STDOUT: specific @L2.S2(constants.%L2.facet) { // CHECK:STDOUT: %Self => constants.%L2.facet -// CHECK:STDOUT: %Self.as_type.loc6_24.2 => constants.%T.as_type -// CHECK:STDOUT: %ptr.loc6_24.2 => constants.%ptr.f3e54b.2 +// CHECK:STDOUT: %Self.as_type.loc6_24.1 => constants.%T.as_type +// CHECK:STDOUT: %ptr.loc6_24.1 => constants.%ptr.f3e54b.2 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.696b36.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1204,17 +1204,17 @@ fn Works() { // CHECK:STDOUT: constants { // CHECK:STDOUT: %A.type: type = facet_type <@A> [concrete] // CHECK:STDOUT: %Self.31d: %A.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %G.type.c3a: type = fn_type @G.loc4 [concrete] +// CHECK:STDOUT: %A.G.type: type = fn_type @A.G [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %G.11a: %G.type.c3a = struct_value () [concrete] +// CHECK:STDOUT: %A.G: %A.G.type = struct_value () [concrete] // CHECK:STDOUT: %A.assoc_type: type = assoc_entity_type @A [concrete] -// CHECK:STDOUT: %assoc0.d52: %A.assoc_type = assoc_entity element0, @A.%G.decl [concrete] +// CHECK:STDOUT: %assoc0.d52: %A.assoc_type = assoc_entity element0, @A.%A.G.decl [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %A.impl_witness: = impl_witness file.%A.impl_witness_table [concrete] -// CHECK:STDOUT: %G.type.486: type = fn_type @G.loc9 [concrete] -// CHECK:STDOUT: %G.001: %G.type.486 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.A.impl.G.type: type = fn_type @C.as.A.impl.G [concrete] +// CHECK:STDOUT: %C.as.A.impl.G: %C.as.A.impl.G.type = struct_value () [concrete] // CHECK:STDOUT: %A.facet: %A.type = facet_value %C, (%A.impl_witness) [concrete] // CHECK:STDOUT: %Fails.type: type = fn_type @Fails [concrete] // CHECK:STDOUT: %Fails: %Fails.type = struct_value () [concrete] @@ -1222,20 +1222,20 @@ fn Works() { // CHECK:STDOUT: %BitAndWith.type.f2e: type = generic_interface_type @BitAndWith [concrete] // CHECK:STDOUT: %BitAndWith.generic: %BitAndWith.type.f2e = struct_value () [concrete] // CHECK:STDOUT: %BitAndWith.type.e8c: type = facet_type <@BitAndWith, @BitAndWith(type)> [concrete] -// CHECK:STDOUT: %Op.type.9a3: type = fn_type @Op.3, @BitAndWith(type) [concrete] +// CHECK:STDOUT: %BitAndWith.Op.type.9a3: type = fn_type @BitAndWith.Op, @BitAndWith(type) [concrete] // CHECK:STDOUT: %BitAndWith.impl_witness: = impl_witness imports.%BitAndWith.impl_witness_table [concrete] // CHECK:STDOUT: %BitAndWith.facet: %BitAndWith.type.e8c = facet_value type, (%BitAndWith.impl_witness) [concrete] -// CHECK:STDOUT: %.2af: type = fn_type_with_self_type %Op.type.9a3, %BitAndWith.facet [concrete] -// CHECK:STDOUT: %Op.type.1cc: type = fn_type @Op.1 [concrete] -// CHECK:STDOUT: %Op.ff4: %Op.type.1cc = struct_value () [concrete] -// CHECK:STDOUT: %Op.bound: = bound_method %A.type, %Op.ff4 [concrete] +// CHECK:STDOUT: %.2af: type = fn_type_with_self_type %BitAndWith.Op.type.9a3, %BitAndWith.facet [concrete] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.type: type = fn_type @type.as.BitAndWith.impl.Op [concrete] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op: %type.as.BitAndWith.impl.Op.type = struct_value () [concrete] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.bound: = bound_method %A.type, %type.as.BitAndWith.impl.Op [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.153: type = fn_type @Op.2, @Destroy.impl(%C) [concrete] -// CHECK:STDOUT: %Op.5d7: %Op.type.153 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.153: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.5d7: %T.as.Destroy.impl.Op.type.153 = struct_value () [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.5d7, @Op.2(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(%C) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -1247,8 +1247,8 @@ fn Works() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.BitAndWith: %BitAndWith.type.f2e = import_ref Core//prelude, BitAndWith, loaded [concrete = constants.%BitAndWith.generic] -// CHECK:STDOUT: %Core.import_ref.012: %Op.type.1cc = import_ref Core//prelude, loc13_42, loaded [concrete = constants.%Op.ff4] -// CHECK:STDOUT: %BitAndWith.impl_witness_table = impl_witness_table (%Core.import_ref.012), @BitAndWith.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.012: %type.as.BitAndWith.impl.Op.type = import_ref Core//prelude, loc13_42, loaded [concrete = constants.%type.as.BitAndWith.impl.Op] +// CHECK:STDOUT: %BitAndWith.impl_witness_table = impl_witness_table (%Core.import_ref.012), @type.as.BitAndWith.impl [concrete] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } @@ -1263,31 +1263,31 @@ fn Works() { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %A.decl: type = interface_decl @A [concrete = constants.%A.type] {} {} // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} -// CHECK:STDOUT: impl_decl @A.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.A.impl [concrete] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %A.impl_witness_table = impl_witness_table (@A.impl.%G.decl), @A.impl [concrete] +// CHECK:STDOUT: %A.impl_witness_table = impl_witness_table (@C.as.A.impl.%C.as.A.impl.G.decl), @C.as.A.impl [concrete] // CHECK:STDOUT: %A.impl_witness: = impl_witness %A.impl_witness_table [concrete = constants.%A.impl_witness] // CHECK:STDOUT: %Fails.decl: %Fails.type = fn_decl @Fails [concrete = constants.%Fails] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @A { // CHECK:STDOUT: %Self: %A.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.31d] -// CHECK:STDOUT: %G.decl: %G.type.c3a = fn_decl @G.loc4 [concrete = constants.%G.11a] {} {} -// CHECK:STDOUT: %assoc0: %A.assoc_type = assoc_entity element0, %G.decl [concrete = constants.%assoc0.d52] +// CHECK:STDOUT: %A.G.decl: %A.G.type = fn_decl @A.G [concrete = constants.%A.G] {} {} +// CHECK:STDOUT: %assoc0: %A.assoc_type = assoc_entity element0, %A.G.decl [concrete = constants.%assoc0.d52] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .G = %assoc0 -// CHECK:STDOUT: witness = (%G.decl) +// CHECK:STDOUT: witness = (%A.G.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @A.impl: %C.ref as %A.ref { -// CHECK:STDOUT: %G.decl: %G.type.486 = fn_decl @G.loc9 [concrete = constants.%G.001] {} {} +// CHECK:STDOUT: impl @C.as.A.impl: %C.ref as %A.ref { +// CHECK:STDOUT: %C.as.A.impl.G.decl: %C.as.A.impl.G.type = fn_decl @C.as.A.impl.G [concrete = constants.%C.as.A.impl.G] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .G = %C.as.A.impl.G.decl // CHECK:STDOUT: witness = file.%A.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1300,11 +1300,11 @@ fn Works() { // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @G.loc4(@A.%Self: %A.type) { +// CHECK:STDOUT: generic fn @A.G(@A.%Self: %A.type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G.loc9() { +// CHECK:STDOUT: fn @C.as.A.impl.G() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -1319,9 +1319,9 @@ fn Works() { // CHECK:STDOUT: %.loc22_7: ref %C = converted %.loc22_5.1, %.loc22_5.4 // CHECK:STDOUT: %A.ref.loc22_15: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: %A.ref.loc22_19: type = name_ref A, file.%A.decl [concrete = constants.%A.type] -// CHECK:STDOUT: %impl.elem0.loc22: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%Op.ff4] -// CHECK:STDOUT: %bound_method.loc22_17: = bound_method %A.ref.loc22_15, %impl.elem0.loc22 [concrete = constants.%Op.bound] -// CHECK:STDOUT: %type.and.loc22: init type = call %bound_method.loc22_17(%A.ref.loc22_15, %A.ref.loc22_19) [concrete = constants.%A.type] +// CHECK:STDOUT: %impl.elem0.loc22: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%type.as.BitAndWith.impl.Op] +// CHECK:STDOUT: %bound_method.loc22_17: = bound_method %A.ref.loc22_15, %impl.elem0.loc22 [concrete = constants.%type.as.BitAndWith.impl.Op.bound] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.call.loc22: init type = call %bound_method.loc22_17(%A.ref.loc22_15, %A.ref.loc22_19) [concrete = constants.%A.type] // CHECK:STDOUT: %G.ref.loc22: %A.assoc_type = name_ref G, @A.%assoc0 [concrete = constants.%assoc0.d52] // CHECK:STDOUT: %.loc22_12: %A.type = converted %.loc22_7, [concrete = ] // CHECK:STDOUT: %.loc30_6.1: %empty_struct_type = struct_literal () @@ -1333,20 +1333,20 @@ fn Works() { // CHECK:STDOUT: %C.ref.loc30_18: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %A.ref.loc30_24: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: %A.ref.loc30_28: type = name_ref A, file.%A.decl [concrete = constants.%A.type] -// CHECK:STDOUT: %impl.elem0.loc30_26: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%Op.ff4] -// CHECK:STDOUT: %bound_method.loc30_26: = bound_method %A.ref.loc30_24, %impl.elem0.loc30_26 [concrete = constants.%Op.bound] -// CHECK:STDOUT: %type.and.loc30_26: init type = call %bound_method.loc30_26(%A.ref.loc30_24, %A.ref.loc30_28) [concrete = constants.%A.type] -// CHECK:STDOUT: %.loc30_29.1: type = value_of_initializer %type.and.loc30_26 [concrete = constants.%A.type] -// CHECK:STDOUT: %.loc30_29.2: type = converted %type.and.loc30_26, %.loc30_29.1 [concrete = constants.%A.type] +// CHECK:STDOUT: %impl.elem0.loc30_26: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%type.as.BitAndWith.impl.Op] +// CHECK:STDOUT: %bound_method.loc30_26: = bound_method %A.ref.loc30_24, %impl.elem0.loc30_26 [concrete = constants.%type.as.BitAndWith.impl.Op.bound] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.call.loc30_26: init type = call %bound_method.loc30_26(%A.ref.loc30_24, %A.ref.loc30_28) [concrete = constants.%A.type] +// CHECK:STDOUT: %.loc30_29.1: type = value_of_initializer %type.as.BitAndWith.impl.Op.call.loc30_26 [concrete = constants.%A.type] +// CHECK:STDOUT: %.loc30_29.2: type = converted %type.as.BitAndWith.impl.Op.call.loc30_26, %.loc30_29.1 [concrete = constants.%A.type] // CHECK:STDOUT: %A.facet.loc30: %A.type = facet_value constants.%C, (constants.%A.impl_witness) [concrete = constants.%A.facet] // CHECK:STDOUT: %.loc30_20: %A.type = converted %C.ref.loc30_18, %A.facet.loc30 [concrete = constants.%A.facet] // CHECK:STDOUT: %as_type.loc30: type = facet_access_type %.loc30_20 [concrete = constants.%C] // CHECK:STDOUT: %.loc30_30: type = converted %.loc30_20, %as_type.loc30 [concrete = constants.%C] // CHECK:STDOUT: %A.ref.loc30_35: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: %A.ref.loc30_39: type = name_ref A, file.%A.decl [concrete = constants.%A.type] -// CHECK:STDOUT: %impl.elem0.loc30_37: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%Op.ff4] -// CHECK:STDOUT: %bound_method.loc30_37: = bound_method %A.ref.loc30_35, %impl.elem0.loc30_37 [concrete = constants.%Op.bound] -// CHECK:STDOUT: %type.and.loc30_37: init type = call %bound_method.loc30_37(%A.ref.loc30_35, %A.ref.loc30_39) [concrete = constants.%A.type] +// CHECK:STDOUT: %impl.elem0.loc30_37: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%type.as.BitAndWith.impl.Op] +// CHECK:STDOUT: %bound_method.loc30_37: = bound_method %A.ref.loc30_35, %impl.elem0.loc30_37 [concrete = constants.%type.as.BitAndWith.impl.Op.bound] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.call.loc30_37: init type = call %bound_method.loc30_37(%A.ref.loc30_35, %A.ref.loc30_39) [concrete = constants.%A.type] // CHECK:STDOUT: %G.ref.loc30: %A.assoc_type = name_ref G, @A.%assoc0 [concrete = constants.%assoc0.d52] // CHECK:STDOUT: %.loc30_32: %A.type = converted %.loc30_8, [concrete = ] // CHECK:STDOUT: %.loc38_6.1: %empty_struct_type = struct_literal () @@ -1358,11 +1358,11 @@ fn Works() { // CHECK:STDOUT: %C.ref.loc38_18: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %A.ref.loc38_24: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: %A.ref.loc38_28: type = name_ref A, file.%A.decl [concrete = constants.%A.type] -// CHECK:STDOUT: %impl.elem0.loc38: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%Op.ff4] -// CHECK:STDOUT: %bound_method.loc38_26: = bound_method %A.ref.loc38_24, %impl.elem0.loc38 [concrete = constants.%Op.bound] -// CHECK:STDOUT: %type.and.loc38: init type = call %bound_method.loc38_26(%A.ref.loc38_24, %A.ref.loc38_28) [concrete = constants.%A.type] -// CHECK:STDOUT: %.loc38_29.1: type = value_of_initializer %type.and.loc38 [concrete = constants.%A.type] -// CHECK:STDOUT: %.loc38_29.2: type = converted %type.and.loc38, %.loc38_29.1 [concrete = constants.%A.type] +// CHECK:STDOUT: %impl.elem0.loc38: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%type.as.BitAndWith.impl.Op] +// CHECK:STDOUT: %bound_method.loc38_26: = bound_method %A.ref.loc38_24, %impl.elem0.loc38 [concrete = constants.%type.as.BitAndWith.impl.Op.bound] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.call.loc38: init type = call %bound_method.loc38_26(%A.ref.loc38_24, %A.ref.loc38_28) [concrete = constants.%A.type] +// CHECK:STDOUT: %.loc38_29.1: type = value_of_initializer %type.as.BitAndWith.impl.Op.call.loc38 [concrete = constants.%A.type] +// CHECK:STDOUT: %.loc38_29.2: type = converted %type.as.BitAndWith.impl.Op.call.loc38, %.loc38_29.1 [concrete = constants.%A.type] // CHECK:STDOUT: %A.facet.loc38: %A.type = facet_value constants.%C, (constants.%A.impl_witness) [concrete = constants.%A.facet] // CHECK:STDOUT: %.loc38_20: %A.type = converted %C.ref.loc38_18, %A.facet.loc38 [concrete = constants.%A.facet] // CHECK:STDOUT: %as_type.loc38: type = facet_access_type %.loc38_20 [concrete = constants.%C] @@ -1370,58 +1370,58 @@ fn Works() { // CHECK:STDOUT: %A.ref.loc38_34: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: %G.ref.loc38: %A.assoc_type = name_ref G, @A.%assoc0 [concrete = constants.%assoc0.d52] // CHECK:STDOUT: %.loc38_32: %A.type = converted %.loc38_8, [concrete = ] -// CHECK:STDOUT: %Op.bound.loc38: = bound_method %.loc38_6.2, constants.%Op.5d7 -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.5d7, @Op.2(constants.%C) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc38_6: = bound_method %.loc38_6.2, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc38: = bound_method %.loc38_6.2, constants.%T.as.Destroy.impl.Op.5d7 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(constants.%C) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc38_6: = bound_method %.loc38_6.2, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc38: %ptr.019 = addr_of %.loc38_6.2 -// CHECK:STDOUT: %no_op.loc38: init %empty_tuple.type = call %bound_method.loc38_6(%addr.loc38) -// CHECK:STDOUT: %Op.bound.loc30: = bound_method %.loc30_6.2, constants.%Op.5d7 -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.5d7, @Op.2(constants.%C) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc30_6: = bound_method %.loc30_6.2, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc38: init %empty_tuple.type = call %bound_method.loc38_6(%addr.loc38) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc30: = bound_method %.loc30_6.2, constants.%T.as.Destroy.impl.Op.5d7 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(constants.%C) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc30_6: = bound_method %.loc30_6.2, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc30: %ptr.019 = addr_of %.loc30_6.2 -// CHECK:STDOUT: %no_op.loc30: init %empty_tuple.type = call %bound_method.loc30_6(%addr.loc30) -// CHECK:STDOUT: %Op.bound.loc22: = bound_method %.loc22_5.2, constants.%Op.5d7 -// CHECK:STDOUT: %Op.specific_fn.3: = specific_function constants.%Op.5d7, @Op.2(constants.%C) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc22_5: = bound_method %.loc22_5.2, %Op.specific_fn.3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc30: init %empty_tuple.type = call %bound_method.loc30_6(%addr.loc30) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc22: = bound_method %.loc22_5.2, constants.%T.as.Destroy.impl.Op.5d7 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.3: = specific_function constants.%T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(constants.%C) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc22_5: = bound_method %.loc22_5.2, %T.as.Destroy.impl.Op.specific_fn.3 // CHECK:STDOUT: %addr.loc22: %ptr.019 = addr_of %.loc22_5.2 -// CHECK:STDOUT: %no_op.loc22: init %empty_tuple.type = call %bound_method.loc22_5(%addr.loc22) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc22: init %empty_tuple.type = call %bound_method.loc22_5(%addr.loc22) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @G.loc4(constants.%Self.31d) {} +// CHECK:STDOUT: specific @A.G(constants.%Self.31d) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @G.loc4(constants.%A.facet) {} +// CHECK:STDOUT: specific @A.G(constants.%A.facet) {} // CHECK:STDOUT: // CHECK:STDOUT: --- allowed_combine_non_instance.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %A.type: type = facet_type <@A> [concrete] // CHECK:STDOUT: %Self.31d: %A.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %G.type.c3a: type = fn_type @G.loc4 [concrete] +// CHECK:STDOUT: %A.G.type: type = fn_type @A.G [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %G.11a: %G.type.c3a = struct_value () [concrete] +// CHECK:STDOUT: %A.G: %A.G.type = struct_value () [concrete] // CHECK:STDOUT: %A.assoc_type: type = assoc_entity_type @A [concrete] -// CHECK:STDOUT: %assoc0.d52: %A.assoc_type = assoc_entity element0, @A.%G.decl [concrete] +// CHECK:STDOUT: %assoc0.d52: %A.assoc_type = assoc_entity element0, @A.%A.G.decl [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %A.impl_witness: = impl_witness file.%A.impl_witness_table [concrete] -// CHECK:STDOUT: %G.type.486: type = fn_type @G.loc9 [concrete] -// CHECK:STDOUT: %G.001: %G.type.486 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.A.impl.G.type: type = fn_type @C.as.A.impl.G [concrete] +// CHECK:STDOUT: %C.as.A.impl.G: %C.as.A.impl.G.type = struct_value () [concrete] // CHECK:STDOUT: %A.facet: %A.type = facet_value %C, (%A.impl_witness) [concrete] // CHECK:STDOUT: %Works.type: type = fn_type @Works [concrete] // CHECK:STDOUT: %Works: %Works.type = struct_value () [concrete] // CHECK:STDOUT: %BitAndWith.type.f2e: type = generic_interface_type @BitAndWith [concrete] // CHECK:STDOUT: %BitAndWith.generic: %BitAndWith.type.f2e = struct_value () [concrete] // CHECK:STDOUT: %BitAndWith.type.e8c: type = facet_type <@BitAndWith, @BitAndWith(type)> [concrete] -// CHECK:STDOUT: %Op.type.9a3: type = fn_type @Op.2, @BitAndWith(type) [concrete] +// CHECK:STDOUT: %BitAndWith.Op.type.9a3: type = fn_type @BitAndWith.Op, @BitAndWith(type) [concrete] // CHECK:STDOUT: %BitAndWith.impl_witness: = impl_witness imports.%BitAndWith.impl_witness_table [concrete] // CHECK:STDOUT: %BitAndWith.facet: %BitAndWith.type.e8c = facet_value type, (%BitAndWith.impl_witness) [concrete] -// CHECK:STDOUT: %.2af: type = fn_type_with_self_type %Op.type.9a3, %BitAndWith.facet [concrete] -// CHECK:STDOUT: %Op.type.1cc: type = fn_type @Op.1 [concrete] -// CHECK:STDOUT: %Op.ff4: %Op.type.1cc = struct_value () [concrete] -// CHECK:STDOUT: %Op.bound: = bound_method %A.type, %Op.ff4 [concrete] -// CHECK:STDOUT: %.e63: type = fn_type_with_self_type %G.type.c3a, %A.facet [concrete] +// CHECK:STDOUT: %.2af: type = fn_type_with_self_type %BitAndWith.Op.type.9a3, %BitAndWith.facet [concrete] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.type: type = fn_type @type.as.BitAndWith.impl.Op [concrete] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op: %type.as.BitAndWith.impl.Op.type = struct_value () [concrete] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.bound: = bound_method %A.type, %type.as.BitAndWith.impl.Op [concrete] +// CHECK:STDOUT: %.e63: type = fn_type_with_self_type %A.G.type, %A.facet [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -1431,8 +1431,8 @@ fn Works() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.BitAndWith: %BitAndWith.type.f2e = import_ref Core//prelude, BitAndWith, loaded [concrete = constants.%BitAndWith.generic] -// CHECK:STDOUT: %Core.import_ref.012: %Op.type.1cc = import_ref Core//prelude, loc13_42, loaded [concrete = constants.%Op.ff4] -// CHECK:STDOUT: %BitAndWith.impl_witness_table = impl_witness_table (%Core.import_ref.012), @BitAndWith.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.012: %type.as.BitAndWith.impl.Op.type = import_ref Core//prelude, loc13_42, loaded [concrete = constants.%type.as.BitAndWith.impl.Op] +// CHECK:STDOUT: %BitAndWith.impl_witness_table = impl_witness_table (%Core.import_ref.012), @type.as.BitAndWith.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1445,31 +1445,31 @@ fn Works() { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %A.decl: type = interface_decl @A [concrete = constants.%A.type] {} {} // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} -// CHECK:STDOUT: impl_decl @A.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.A.impl [concrete] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %A.impl_witness_table = impl_witness_table (@A.impl.%G.decl), @A.impl [concrete] +// CHECK:STDOUT: %A.impl_witness_table = impl_witness_table (@C.as.A.impl.%C.as.A.impl.G.decl), @C.as.A.impl [concrete] // CHECK:STDOUT: %A.impl_witness: = impl_witness %A.impl_witness_table [concrete = constants.%A.impl_witness] // CHECK:STDOUT: %Works.decl: %Works.type = fn_decl @Works [concrete = constants.%Works] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @A { // CHECK:STDOUT: %Self: %A.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.31d] -// CHECK:STDOUT: %G.decl: %G.type.c3a = fn_decl @G.loc4 [concrete = constants.%G.11a] {} {} -// CHECK:STDOUT: %assoc0: %A.assoc_type = assoc_entity element0, %G.decl [concrete = constants.%assoc0.d52] +// CHECK:STDOUT: %A.G.decl: %A.G.type = fn_decl @A.G [concrete = constants.%A.G] {} {} +// CHECK:STDOUT: %assoc0: %A.assoc_type = assoc_entity element0, %A.G.decl [concrete = constants.%assoc0.d52] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .G = %assoc0 -// CHECK:STDOUT: witness = (%G.decl) +// CHECK:STDOUT: witness = (%A.G.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @A.impl: %C.ref as %A.ref { -// CHECK:STDOUT: %G.decl: %G.type.486 = fn_decl @G.loc9 [concrete = constants.%G.001] {} {} +// CHECK:STDOUT: impl @C.as.A.impl: %C.ref as %A.ref { +// CHECK:STDOUT: %C.as.A.impl.G.decl: %C.as.A.impl.G.type = fn_decl @C.as.A.impl.G [concrete = constants.%C.as.A.impl.G] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .G = %C.as.A.impl.G.decl // CHECK:STDOUT: witness = file.%A.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1482,11 +1482,11 @@ fn Works() { // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @G.loc4(@A.%Self: %A.type) { +// CHECK:STDOUT: generic fn @A.G(@A.%Self: %A.type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G.loc9() { +// CHECK:STDOUT: fn @C.as.A.impl.G() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -1496,50 +1496,50 @@ fn Works() { // CHECK:STDOUT: %C.ref.loc13: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %A.ref.loc13_7: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: %A.ref.loc13_11: type = name_ref A, file.%A.decl [concrete = constants.%A.type] -// CHECK:STDOUT: %impl.elem0.loc13_9: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%Op.ff4] -// CHECK:STDOUT: %bound_method.loc13: = bound_method %A.ref.loc13_7, %impl.elem0.loc13_9 [concrete = constants.%Op.bound] -// CHECK:STDOUT: %type.and.loc13: init type = call %bound_method.loc13(%A.ref.loc13_7, %A.ref.loc13_11) [concrete = constants.%A.type] +// CHECK:STDOUT: %impl.elem0.loc13_9: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%type.as.BitAndWith.impl.Op] +// CHECK:STDOUT: %bound_method.loc13: = bound_method %A.ref.loc13_7, %impl.elem0.loc13_9 [concrete = constants.%type.as.BitAndWith.impl.Op.bound] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.call.loc13: init type = call %bound_method.loc13(%A.ref.loc13_7, %A.ref.loc13_11) [concrete = constants.%A.type] // CHECK:STDOUT: %G.ref.loc13: %A.assoc_type = name_ref G, @A.%assoc0 [concrete = constants.%assoc0.d52] // CHECK:STDOUT: %A.facet.loc13: %A.type = facet_value constants.%C, (constants.%A.impl_witness) [concrete = constants.%A.facet] // CHECK:STDOUT: %.loc13: %A.type = converted %C.ref.loc13, %A.facet.loc13 [concrete = constants.%A.facet] -// CHECK:STDOUT: %impl.elem0.loc13_4: %.e63 = impl_witness_access constants.%A.impl_witness, element0 [concrete = constants.%G.001] -// CHECK:STDOUT: %G.call.loc13: init %empty_tuple.type = call %impl.elem0.loc13_4() +// CHECK:STDOUT: %impl.elem0.loc13_4: %.e63 = impl_witness_access constants.%A.impl_witness, element0 [concrete = constants.%C.as.A.impl.G] +// CHECK:STDOUT: %C.as.A.impl.G.call.loc13: init %empty_tuple.type = call %impl.elem0.loc13_4() // CHECK:STDOUT: %C.ref.loc14: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %A.ref.loc14_10: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: %A.ref.loc14_14: type = name_ref A, file.%A.decl [concrete = constants.%A.type] -// CHECK:STDOUT: %impl.elem0.loc14_12: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%Op.ff4] -// CHECK:STDOUT: %bound_method.loc14_12: = bound_method %A.ref.loc14_10, %impl.elem0.loc14_12 [concrete = constants.%Op.bound] -// CHECK:STDOUT: %type.and.loc14_12: init type = call %bound_method.loc14_12(%A.ref.loc14_10, %A.ref.loc14_14) [concrete = constants.%A.type] -// CHECK:STDOUT: %.loc14_15.1: type = value_of_initializer %type.and.loc14_12 [concrete = constants.%A.type] -// CHECK:STDOUT: %.loc14_15.2: type = converted %type.and.loc14_12, %.loc14_15.1 [concrete = constants.%A.type] +// CHECK:STDOUT: %impl.elem0.loc14_12: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%type.as.BitAndWith.impl.Op] +// CHECK:STDOUT: %bound_method.loc14_12: = bound_method %A.ref.loc14_10, %impl.elem0.loc14_12 [concrete = constants.%type.as.BitAndWith.impl.Op.bound] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.call.loc14_12: init type = call %bound_method.loc14_12(%A.ref.loc14_10, %A.ref.loc14_14) [concrete = constants.%A.type] +// CHECK:STDOUT: %.loc14_15.1: type = value_of_initializer %type.as.BitAndWith.impl.Op.call.loc14_12 [concrete = constants.%A.type] +// CHECK:STDOUT: %.loc14_15.2: type = converted %type.as.BitAndWith.impl.Op.call.loc14_12, %.loc14_15.1 [concrete = constants.%A.type] // CHECK:STDOUT: %A.facet.loc14: %A.type = facet_value constants.%C, (constants.%A.impl_witness) [concrete = constants.%A.facet] // CHECK:STDOUT: %.loc14_6: %A.type = converted %C.ref.loc14, %A.facet.loc14 [concrete = constants.%A.facet] // CHECK:STDOUT: %A.ref.loc14_20: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: %A.ref.loc14_24: type = name_ref A, file.%A.decl [concrete = constants.%A.type] -// CHECK:STDOUT: %impl.elem0.loc14_22: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%Op.ff4] -// CHECK:STDOUT: %bound_method.loc14_22: = bound_method %A.ref.loc14_20, %impl.elem0.loc14_22 [concrete = constants.%Op.bound] -// CHECK:STDOUT: %type.and.loc14_22: init type = call %bound_method.loc14_22(%A.ref.loc14_20, %A.ref.loc14_24) [concrete = constants.%A.type] +// CHECK:STDOUT: %impl.elem0.loc14_22: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%type.as.BitAndWith.impl.Op] +// CHECK:STDOUT: %bound_method.loc14_22: = bound_method %A.ref.loc14_20, %impl.elem0.loc14_22 [concrete = constants.%type.as.BitAndWith.impl.Op.bound] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.call.loc14_22: init type = call %bound_method.loc14_22(%A.ref.loc14_20, %A.ref.loc14_24) [concrete = constants.%A.type] // CHECK:STDOUT: %G.ref.loc14: %A.assoc_type = name_ref G, @A.%assoc0 [concrete = constants.%assoc0.d52] -// CHECK:STDOUT: %impl.elem0.loc14_17: %.e63 = impl_witness_access constants.%A.impl_witness, element0 [concrete = constants.%G.001] -// CHECK:STDOUT: %G.call.loc14: init %empty_tuple.type = call %impl.elem0.loc14_17() +// CHECK:STDOUT: %impl.elem0.loc14_17: %.e63 = impl_witness_access constants.%A.impl_witness, element0 [concrete = constants.%C.as.A.impl.G] +// CHECK:STDOUT: %C.as.A.impl.G.call.loc14: init %empty_tuple.type = call %impl.elem0.loc14_17() // CHECK:STDOUT: %C.ref.loc15: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %A.ref.loc15_10: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: %A.ref.loc15_14: type = name_ref A, file.%A.decl [concrete = constants.%A.type] -// CHECK:STDOUT: %impl.elem0.loc15_12: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%Op.ff4] -// CHECK:STDOUT: %bound_method.loc15: = bound_method %A.ref.loc15_10, %impl.elem0.loc15_12 [concrete = constants.%Op.bound] -// CHECK:STDOUT: %type.and.loc15: init type = call %bound_method.loc15(%A.ref.loc15_10, %A.ref.loc15_14) [concrete = constants.%A.type] -// CHECK:STDOUT: %.loc15_15.1: type = value_of_initializer %type.and.loc15 [concrete = constants.%A.type] -// CHECK:STDOUT: %.loc15_15.2: type = converted %type.and.loc15, %.loc15_15.1 [concrete = constants.%A.type] +// CHECK:STDOUT: %impl.elem0.loc15_12: %.2af = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%type.as.BitAndWith.impl.Op] +// CHECK:STDOUT: %bound_method.loc15: = bound_method %A.ref.loc15_10, %impl.elem0.loc15_12 [concrete = constants.%type.as.BitAndWith.impl.Op.bound] +// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.call.loc15: init type = call %bound_method.loc15(%A.ref.loc15_10, %A.ref.loc15_14) [concrete = constants.%A.type] +// CHECK:STDOUT: %.loc15_15.1: type = value_of_initializer %type.as.BitAndWith.impl.Op.call.loc15 [concrete = constants.%A.type] +// CHECK:STDOUT: %.loc15_15.2: type = converted %type.as.BitAndWith.impl.Op.call.loc15, %.loc15_15.1 [concrete = constants.%A.type] // CHECK:STDOUT: %A.facet.loc15: %A.type = facet_value constants.%C, (constants.%A.impl_witness) [concrete = constants.%A.facet] // CHECK:STDOUT: %.loc15_6: %A.type = converted %C.ref.loc15, %A.facet.loc15 [concrete = constants.%A.facet] // CHECK:STDOUT: %A.ref.loc15_19: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: %G.ref.loc15: %A.assoc_type = name_ref G, @A.%assoc0 [concrete = constants.%assoc0.d52] -// CHECK:STDOUT: %impl.elem0.loc15_17: %.e63 = impl_witness_access constants.%A.impl_witness, element0 [concrete = constants.%G.001] -// CHECK:STDOUT: %G.call.loc15: init %empty_tuple.type = call %impl.elem0.loc15_17() +// CHECK:STDOUT: %impl.elem0.loc15_17: %.e63 = impl_witness_access constants.%A.impl_witness, element0 [concrete = constants.%C.as.A.impl.G] +// CHECK:STDOUT: %C.as.A.impl.G.call.loc15: init %empty_tuple.type = call %impl.elem0.loc15_17() // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @G.loc4(constants.%Self.31d) {} +// CHECK:STDOUT: specific @A.G(constants.%Self.31d) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @G.loc4(constants.%A.facet) {} +// CHECK:STDOUT: specific @A.G(constants.%A.facet) {} // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/default_fn.carbon b/toolchain/check/testdata/interface/default_fn.carbon index 57fc67ec7303..3d48eda2cd47 100644 --- a/toolchain/check/testdata/interface/default_fn.carbon +++ b/toolchain/check/testdata/interface/default_fn.carbon @@ -35,26 +35,26 @@ class C { // CHECK:STDOUT: %Self.6ef: %I.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type.390: type = facet_access_type %Self.6ef [symbolic] // CHECK:STDOUT: %pattern_type.b2f: type = pattern_type %Self.as_type.390 [symbolic] -// CHECK:STDOUT: %F.type.0b5: type = fn_type @F.loc18 [concrete] +// CHECK:STDOUT: %I.F.type: type = fn_type @I.F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F.20c: %F.type.0b5 = struct_value () [concrete] +// CHECK:STDOUT: %I.F: %I.F.type = struct_value () [concrete] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] -// CHECK:STDOUT: %assoc0.a33: %I.assoc_type = assoc_entity element0, @I.%F.decl [concrete] +// CHECK:STDOUT: %assoc0.a33: %I.assoc_type = assoc_entity element0, @I.%I.F.decl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @C.%I.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] -// CHECK:STDOUT: %F.type.4a2: type = fn_type @F.loc26 [concrete] -// CHECK:STDOUT: %F.eb2: %F.type.4a2 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.I.impl.F.type: type = fn_type @C.as.I.impl.F [concrete] +// CHECK:STDOUT: %C.as.I.impl.F: %C.as.I.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %I.facet: %I.type = facet_value %C, (%I.impl_witness) [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %require_complete.8cb: = require_complete_type %Self.as_type.390 [symbolic] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] -// CHECK:STDOUT: %.e5b: type = fn_type_with_self_type %F.type.0b5, %I.facet [concrete] +// CHECK:STDOUT: %.e5b: type = fn_type_with_self_type %I.F.type, %I.facet [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.153: type = fn_type @Op.1, @Destroy.impl(%C) [concrete] -// CHECK:STDOUT: %Op.5d7: %Op.type.153 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.153: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.5d7: %T.as.Destroy.impl.Op.type.153 = struct_value () [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.5d7, @Op.1(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(%C) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -77,50 +77,50 @@ class C { // CHECK:STDOUT: // CHECK:STDOUT: interface @I { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.6ef] -// CHECK:STDOUT: %F.decl: %F.type.0b5 = fn_decl @F.loc18 [concrete = constants.%F.20c] { -// CHECK:STDOUT: %self.patt: @F.loc18.%pattern_type (%pattern_type.b2f) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.loc18.%pattern_type (%pattern_type.b2f) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %I.F.decl: %I.F.type = fn_decl @I.F [concrete = constants.%I.F] { +// CHECK:STDOUT: %self.patt: @I.F.%pattern_type (%pattern_type.b2f) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @I.F.%pattern_type (%pattern_type.b2f) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @F.loc18.%Self.as_type.loc18_16.2 (%Self.as_type.390) = value_param call_param0 -// CHECK:STDOUT: %.loc18_16.1: type = splice_block %.loc18_16.2 [symbolic = %Self.as_type.loc18_16.2 (constants.%Self.as_type.390)] { +// CHECK:STDOUT: %self.param: @I.F.%Self.as_type.loc18_16.1 (%Self.as_type.390) = value_param call_param0 +// CHECK:STDOUT: %.loc18_16.1: type = splice_block %.loc18_16.2 [symbolic = %Self.as_type.loc18_16.1 (constants.%Self.as_type.390)] { // CHECK:STDOUT: %Self.ref: %I.type = name_ref Self, @I.%Self [symbolic = %Self (constants.%Self.6ef)] -// CHECK:STDOUT: %Self.as_type.loc18_16.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc18_16.2 (constants.%Self.as_type.390)] -// CHECK:STDOUT: %.loc18_16.2: type = converted %Self.ref, %Self.as_type.loc18_16.1 [symbolic = %Self.as_type.loc18_16.2 (constants.%Self.as_type.390)] +// CHECK:STDOUT: %Self.as_type.loc18_16.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc18_16.1 (constants.%Self.as_type.390)] +// CHECK:STDOUT: %.loc18_16.2: type = converted %Self.ref, %Self.as_type.loc18_16.2 [symbolic = %Self.as_type.loc18_16.1 (constants.%Self.as_type.390)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.loc18.%Self.as_type.loc18_16.2 (%Self.as_type.390) = bind_name self, %self.param +// CHECK:STDOUT: %self: @I.F.%Self.as_type.loc18_16.1 (%Self.as_type.390) = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0.a33] +// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %I.F.decl [concrete = constants.%assoc0.a33] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F = %assoc0 // CHECK:STDOUT: .C = // CHECK:STDOUT: .I = -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%I.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: %C.ref as %I.ref { -// CHECK:STDOUT: %F.decl: %F.type.4a2 = fn_decl @F.loc26 [concrete = constants.%F.eb2] { +// CHECK:STDOUT: impl @C.as.I.impl: %C.ref as %I.ref { +// CHECK:STDOUT: %C.as.I.impl.F.decl: %C.as.I.impl.F.type = fn_decl @C.as.I.impl.F [concrete = constants.%C.as.I.impl.F] { // CHECK:STDOUT: %self.patt: %pattern_type.c48 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.c48 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %self.param: %C = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @I.impl.%C.ref [concrete = constants.%C] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @C.as.I.impl.%C.ref [concrete = constants.%C] // CHECK:STDOUT: %self: %C = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %C.as.I.impl.F.decl // CHECK:STDOUT: witness = @C.%I.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.I.impl [concrete] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %I.ref: type = name_ref I, @C.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (@I.impl.%F.decl), @I.impl [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (@C.as.I.impl.%C.as.I.impl.F.decl), @C.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] @@ -132,15 +132,15 @@ class C { // CHECK:STDOUT: .C = // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc18(@I.%Self: %I.type) { +// CHECK:STDOUT: generic fn @I.F(@I.%Self: %I.type) { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.6ef)] -// CHECK:STDOUT: %Self.as_type.loc18_16.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc18_16.2 (constants.%Self.as_type.390)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc18_16.2 [symbolic = %pattern_type (constants.%pattern_type.b2f)] +// CHECK:STDOUT: %Self.as_type.loc18_16.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc18_16.1 (constants.%Self.as_type.390)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc18_16.1 [symbolic = %pattern_type (constants.%pattern_type.b2f)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type %Self.as_type.loc18_16.2 [symbolic = %require_complete (constants.%require_complete.8cb)] +// CHECK:STDOUT: %require_complete: = require_complete_type %Self.as_type.loc18_16.1 [symbolic = %require_complete (constants.%require_complete.8cb)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @F.loc18.%Self.as_type.loc18_16.2 (%Self.as_type.390)) { +// CHECK:STDOUT: fn(%self.param: @I.F.%Self.as_type.loc18_16.1 (%Self.as_type.390)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %c.patt: %pattern_type.c48 = binding_pattern c [concrete] @@ -156,33 +156,33 @@ class C { // CHECK:STDOUT: %c.ref: ref %C = name_ref c, %c // CHECK:STDOUT: %I.ref: type = name_ref I, @C.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: %F.ref: %I.assoc_type = name_ref F, @I.%assoc0 [concrete = constants.%assoc0.a33] -// CHECK:STDOUT: %impl.elem0: %.e5b = impl_witness_access constants.%I.impl_witness, element0 [concrete = constants.%F.eb2] +// CHECK:STDOUT: %impl.elem0: %.e5b = impl_witness_access constants.%I.impl_witness, element0 [concrete = constants.%C.as.I.impl.F] // CHECK:STDOUT: %bound_method.loc21: = bound_method %c.ref, %impl.elem0 // CHECK:STDOUT: %.loc21: %C = bind_value %c.ref -// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %bound_method.loc21(%.loc21) -// CHECK:STDOUT: %Op.bound: = bound_method %c.var, constants.%Op.5d7 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.5d7, @Op.1(constants.%C) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc20: = bound_method %c.var, %Op.specific_fn +// CHECK:STDOUT: %C.as.I.impl.F.call: init %empty_tuple.type = call %bound_method.loc21(%.loc21) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %c.var, constants.%T.as.Destroy.impl.Op.5d7 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(constants.%C) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc20: = bound_method %c.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.019 = addr_of %c.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc20(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc20(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc26(%self.param: %C) { +// CHECK:STDOUT: fn @C.as.I.impl.F(%self.param: %C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc18(constants.%Self.6ef) { +// CHECK:STDOUT: specific @I.F(constants.%Self.6ef) { // CHECK:STDOUT: %Self => constants.%Self.6ef -// CHECK:STDOUT: %Self.as_type.loc18_16.2 => constants.%Self.as_type.390 +// CHECK:STDOUT: %Self.as_type.loc18_16.1 => constants.%Self.as_type.390 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.b2f // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc18(constants.%I.facet) { +// CHECK:STDOUT: specific @I.F(constants.%I.facet) { // CHECK:STDOUT: %Self => constants.%I.facet -// CHECK:STDOUT: %Self.as_type.loc18_16.2 => constants.%C +// CHECK:STDOUT: %Self.as_type.loc18_16.1 => constants.%C // CHECK:STDOUT: %pattern_type => constants.%pattern_type.c48 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/fail_add_member_outside_definition.carbon b/toolchain/check/testdata/interface/fail_add_member_outside_definition.carbon index 2794f008083c..f1345f5a1d7d 100644 --- a/toolchain/check/testdata/interface/fail_add_member_outside_definition.carbon +++ b/toolchain/check/testdata/interface/fail_add_member_outside_definition.carbon @@ -41,16 +41,16 @@ interface Outer { // CHECK:STDOUT: constants { // CHECK:STDOUT: %Interface.type: type = facet_type <@Interface> [concrete] // CHECK:STDOUT: %Self.719: %Interface.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.1ad: type = fn_type @F.loc21 [concrete] -// CHECK:STDOUT: %F.5d3: %F.type.1ad = struct_value () [concrete] +// CHECK:STDOUT: %Interface.F.type: type = fn_type @Interface.F [concrete] +// CHECK:STDOUT: %Interface.F: %Interface.F.type = struct_value () [concrete] // CHECK:STDOUT: %Outer.type: type = facet_type <@Outer> [concrete] // CHECK:STDOUT: %Self.277: %Outer.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Inner.type: type = facet_type <@Inner, @Inner(%Self.277)> [symbolic] // CHECK:STDOUT: %Self.b60: %Inner.type = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %F.type.82c77c.1: type = fn_type @F.loc30, @Inner(%Self.277) [symbolic] -// CHECK:STDOUT: %F.9789e2.1: %F.type.82c77c.1 = struct_value () [symbolic] -// CHECK:STDOUT: %F.type.82c77c.2: type = fn_type @F.loc36, @Inner(%Self.277) [symbolic] -// CHECK:STDOUT: %F.9789e2.2: %F.type.82c77c.2 = struct_value () [symbolic] +// CHECK:STDOUT: %Inner.F.type.82c77c.1: type = fn_type @Inner.F.loc30, @Inner(%Self.277) [symbolic] +// CHECK:STDOUT: %Inner.F.9789e2.1: %Inner.F.type.82c77c.1 = struct_value () [symbolic] +// CHECK:STDOUT: %Inner.F.type.82c77c.2: type = fn_type @Inner.F.loc36, @Inner(%Self.277) [symbolic] +// CHECK:STDOUT: %Inner.F.9789e2.2: %Inner.F.type.82c77c.2 = struct_value () [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -59,7 +59,7 @@ interface Outer { // CHECK:STDOUT: .Outer = %Outer.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Interface.decl: type = interface_decl @Interface [concrete = constants.%Interface.type] {} {} -// CHECK:STDOUT: %F.decl: %F.type.1ad = fn_decl @F.loc21 [concrete = constants.%F.5d3] {} {} +// CHECK:STDOUT: %Interface.F.decl: %Interface.F.type = fn_decl @Interface.F [concrete = constants.%Interface.F] {} {} // CHECK:STDOUT: %Outer.decl: type = interface_decl @Outer [concrete = constants.%Outer.type] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: @@ -68,14 +68,14 @@ interface Outer { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self -// CHECK:STDOUT: .F = file.%F.decl +// CHECK:STDOUT: .F = file.%Interface.F.decl // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Outer { // CHECK:STDOUT: %Self: %Outer.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.277] // CHECK:STDOUT: %Inner.decl: type = interface_decl @Inner [symbolic = constants.%Inner.type] {} {} -// CHECK:STDOUT: %F.decl: %F.type.82c77c.2 = fn_decl @F.loc36 [symbolic = constants.%F.9789e2.2] {} {} +// CHECK:STDOUT: %Inner.F.decl: %Inner.F.type.82c77c.2 = fn_decl @Inner.F.loc36 [symbolic = constants.%Inner.F.9789e2.2] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -88,21 +88,21 @@ interface Outer { // CHECK:STDOUT: %Self.2: %Outer.type = bind_symbolic_name Self, 0 [symbolic = %Self.2 (constants.%Self.277)] // CHECK:STDOUT: %Inner.type: type = facet_type <@Inner, @Inner(%Self.2)> [symbolic = %Inner.type (constants.%Inner.type)] // CHECK:STDOUT: %Self.3: @Inner.%Inner.type (%Inner.type) = bind_symbolic_name Self, 1 [symbolic = %Self.3 (constants.%Self.b60)] -// CHECK:STDOUT: %F.type: type = fn_type @F.loc30, @Inner(%Self.2) [symbolic = %F.type (constants.%F.type.82c77c.1)] -// CHECK:STDOUT: %F: @Inner.%F.type (%F.type.82c77c.1) = struct_value () [symbolic = %F (constants.%F.9789e2.1)] +// CHECK:STDOUT: %Inner.F.type: type = fn_type @Inner.F.loc30, @Inner(%Self.2) [symbolic = %Inner.F.type (constants.%Inner.F.type.82c77c.1)] +// CHECK:STDOUT: %Inner.F: @Inner.%Inner.F.type (%Inner.F.type.82c77c.1) = struct_value () [symbolic = %Inner.F (constants.%Inner.F.9789e2.1)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: %Self.1: @Inner.%Inner.type (%Inner.type) = bind_symbolic_name Self, 1 [symbolic = %Self.3 (constants.%Self.b60)] -// CHECK:STDOUT: %F.decl: @Inner.%F.type (%F.type.82c77c.1) = fn_decl @F.loc30 [symbolic = @Inner.%F (constants.%F.9789e2.1)] {} {} +// CHECK:STDOUT: %Inner.F.decl: @Inner.%Inner.F.type (%Inner.F.type.82c77c.1) = fn_decl @Inner.F.loc30 [symbolic = @Inner.%Inner.F (constants.%Inner.F.9789e2.1)] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 -// CHECK:STDOUT: .F = @Outer.%F.decl +// CHECK:STDOUT: .F = @Outer.%Inner.F.decl // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc21(@Interface.%Self: %Interface.type) { +// CHECK:STDOUT: generic fn @Interface.F(@Interface.%Self: %Interface.type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: fn() { @@ -111,26 +111,26 @@ interface Outer { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc30(@Outer.%Self: %Outer.type, @Inner.%Self.1: @Inner.%Inner.type (%Inner.type)) { +// CHECK:STDOUT: generic fn @Inner.F.loc30(@Outer.%Self: %Outer.type, @Inner.%Self.1: @Inner.%Inner.type (%Inner.type)) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc36(@Outer.%Self: %Outer.type, @Inner.%Self.1: @Inner.%Inner.type (%Inner.type)) { +// CHECK:STDOUT: generic fn @Inner.F.loc36(@Outer.%Self: %Outer.type, @Inner.%Self.1: @Inner.%Inner.type (%Inner.type)) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc21(constants.%Self.719) {} +// CHECK:STDOUT: specific @Interface.F(constants.%Self.719) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @Inner(constants.%Self.277) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Self.2 => constants.%Self.277 // CHECK:STDOUT: %Inner.type => constants.%Inner.type // CHECK:STDOUT: %Self.3 => constants.%Self.b60 -// CHECK:STDOUT: %F.type => constants.%F.type.82c77c.1 -// CHECK:STDOUT: %F => constants.%F.9789e2.1 +// CHECK:STDOUT: %Inner.F.type => constants.%Inner.F.type.82c77c.1 +// CHECK:STDOUT: %Inner.F => constants.%Inner.F.9789e2.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc30(constants.%Self.277, constants.%Self.b60) {} +// CHECK:STDOUT: specific @Inner.F.loc30(constants.%Self.277, constants.%Self.b60) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc36(constants.%Self.277, constants.%Self.b60) {} +// CHECK:STDOUT: specific @Inner.F.loc36(constants.%Self.277, constants.%Self.b60) {} // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/fail_assoc_const_alias.carbon b/toolchain/check/testdata/interface/fail_assoc_const_alias.carbon index bc392aa2723a..c557ee9f1301 100644 --- a/toolchain/check/testdata/interface/fail_assoc_const_alias.carbon +++ b/toolchain/check/testdata/interface/fail_assoc_const_alias.carbon @@ -98,10 +98,10 @@ interface C { // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic] // CHECK:STDOUT: %pattern_type.a93: type = pattern_type %Self.as_type [symbolic] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %Dest [symbolic] -// CHECK:STDOUT: %Convert.type: type = fn_type @Convert, @ImplicitAs(%Dest) [symbolic] -// CHECK:STDOUT: %Convert: %Convert.type = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.Convert.type: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%Dest) [symbolic] +// CHECK:STDOUT: %ImplicitAs.Convert: %ImplicitAs.Convert.type = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.assoc_type: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%Dest) [symbolic] -// CHECK:STDOUT: %assoc0: %ImplicitAs.assoc_type = assoc_entity element0, @ImplicitAs.%Convert.decl [symbolic] +// CHECK:STDOUT: %assoc0: %ImplicitAs.assoc_type = assoc_entity element0, @ImplicitAs.%ImplicitAs.Convert.decl [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -121,61 +121,61 @@ interface C { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%Dest.loc3_22.1)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.07f)] // CHECK:STDOUT: %Self.2: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.07f) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] -// CHECK:STDOUT: %Convert.type: type = fn_type @Convert, @ImplicitAs(%Dest.loc3_22.1) [symbolic = %Convert.type (constants.%Convert.type)] -// CHECK:STDOUT: %Convert: @ImplicitAs.%Convert.type (%Convert.type) = struct_value () [symbolic = %Convert (constants.%Convert)] +// CHECK:STDOUT: %ImplicitAs.Convert.type: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%Dest.loc3_22.1) [symbolic = %ImplicitAs.Convert.type (constants.%ImplicitAs.Convert.type)] +// CHECK:STDOUT: %ImplicitAs.Convert: @ImplicitAs.%ImplicitAs.Convert.type (%ImplicitAs.Convert.type) = struct_value () [symbolic = %ImplicitAs.Convert (constants.%ImplicitAs.Convert)] // CHECK:STDOUT: %ImplicitAs.assoc_type: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%Dest.loc3_22.1) [symbolic = %ImplicitAs.assoc_type (constants.%ImplicitAs.assoc_type)] -// CHECK:STDOUT: %assoc0.loc4_35.2: @ImplicitAs.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type) = assoc_entity element0, %Convert.decl [symbolic = %assoc0.loc4_35.2 (constants.%assoc0)] +// CHECK:STDOUT: %assoc0.loc4_35.2: @ImplicitAs.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type) = assoc_entity element0, %ImplicitAs.Convert.decl [symbolic = %assoc0.loc4_35.2 (constants.%assoc0)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: %Self.1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.07f) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] -// CHECK:STDOUT: %Convert.decl: @ImplicitAs.%Convert.type (%Convert.type) = fn_decl @Convert [symbolic = @ImplicitAs.%Convert (constants.%Convert)] { -// CHECK:STDOUT: %self.patt: @Convert.%pattern_type.loc4_14 (%pattern_type.a93) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @Convert.%pattern_type.loc4_14 (%pattern_type.a93) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: @Convert.%pattern_type.loc4_28 (%pattern_type.7dc) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @Convert.%pattern_type.loc4_28 (%pattern_type.7dc) = out_param_pattern %return.patt, call_param1 [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.decl: @ImplicitAs.%ImplicitAs.Convert.type (%ImplicitAs.Convert.type) = fn_decl @ImplicitAs.Convert [symbolic = @ImplicitAs.%ImplicitAs.Convert (constants.%ImplicitAs.Convert)] { +// CHECK:STDOUT: %self.patt: @ImplicitAs.Convert.%pattern_type.loc4_14 (%pattern_type.a93) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @ImplicitAs.Convert.%pattern_type.loc4_14 (%pattern_type.a93) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %return.patt: @ImplicitAs.Convert.%pattern_type.loc4_28 (%pattern_type.7dc) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @ImplicitAs.Convert.%pattern_type.loc4_28 (%pattern_type.7dc) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Dest.ref: type = name_ref Dest, @ImplicitAs.%Dest.loc3_22.2 [symbolic = %Dest (constants.%Dest)] -// CHECK:STDOUT: %self.param: @Convert.%Self.as_type.loc4_20.2 (%Self.as_type) = value_param call_param0 -// CHECK:STDOUT: %.loc4_20.1: type = splice_block %.loc4_20.3 [symbolic = %Self.as_type.loc4_20.2 (constants.%Self.as_type)] { -// CHECK:STDOUT: %.loc4_20.2: @Convert.%ImplicitAs.type (%ImplicitAs.type.07f) = specific_constant @ImplicitAs.%Self.1, @ImplicitAs(constants.%Dest) [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.ref: @Convert.%ImplicitAs.type (%ImplicitAs.type.07f) = name_ref Self, %.loc4_20.2 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc4_20.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc4_20.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc4_20.3: type = converted %Self.ref, %Self.as_type.loc4_20.1 [symbolic = %Self.as_type.loc4_20.2 (constants.%Self.as_type)] +// CHECK:STDOUT: %self.param: @ImplicitAs.Convert.%Self.as_type.loc4_20.1 (%Self.as_type) = value_param call_param0 +// CHECK:STDOUT: %.loc4_20.1: type = splice_block %.loc4_20.3 [symbolic = %Self.as_type.loc4_20.1 (constants.%Self.as_type)] { +// CHECK:STDOUT: %.loc4_20.2: @ImplicitAs.Convert.%ImplicitAs.type (%ImplicitAs.type.07f) = specific_constant @ImplicitAs.%Self.1, @ImplicitAs(constants.%Dest) [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %Self.ref: @ImplicitAs.Convert.%ImplicitAs.type (%ImplicitAs.type.07f) = name_ref Self, %.loc4_20.2 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %Self.as_type.loc4_20.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc4_20.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc4_20.3: type = converted %Self.ref, %Self.as_type.loc4_20.2 [symbolic = %Self.as_type.loc4_20.1 (constants.%Self.as_type)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @Convert.%Self.as_type.loc4_20.2 (%Self.as_type) = bind_name self, %self.param -// CHECK:STDOUT: %return.param: ref @Convert.%Dest (%Dest) = out_param call_param1 -// CHECK:STDOUT: %return: ref @Convert.%Dest (%Dest) = return_slot %return.param +// CHECK:STDOUT: %self: @ImplicitAs.Convert.%Self.as_type.loc4_20.1 (%Self.as_type) = bind_name self, %self.param +// CHECK:STDOUT: %return.param: ref @ImplicitAs.Convert.%Dest (%Dest) = out_param call_param1 +// CHECK:STDOUT: %return: ref @ImplicitAs.Convert.%Dest (%Dest) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0.loc4_35.1: @ImplicitAs.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type) = assoc_entity element0, %Convert.decl [symbolic = %assoc0.loc4_35.2 (constants.%assoc0)] +// CHECK:STDOUT: %assoc0.loc4_35.1: @ImplicitAs.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type) = assoc_entity element0, %ImplicitAs.Convert.decl [symbolic = %assoc0.loc4_35.2 (constants.%assoc0)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 // CHECK:STDOUT: .Dest = // CHECK:STDOUT: .Convert = %assoc0.loc4_35.1 -// CHECK:STDOUT: witness = (%Convert.decl) +// CHECK:STDOUT: witness = (%ImplicitAs.Convert.decl) // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Convert(@ImplicitAs.%Dest.loc3_22.2: type, @ImplicitAs.%Self.1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.07f)) { +// CHECK:STDOUT: generic fn @ImplicitAs.Convert(@ImplicitAs.%Dest.loc3_22.2: type, @ImplicitAs.%Self.1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.07f)) { // CHECK:STDOUT: %Dest: type = bind_symbolic_name Dest, 0 [symbolic = %Dest (constants.%Dest)] // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%Dest)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.07f)] -// CHECK:STDOUT: %Self: @Convert.%ImplicitAs.type (%ImplicitAs.type.07f) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc4_20.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc4_20.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %pattern_type.loc4_14: type = pattern_type %Self.as_type.loc4_20.2 [symbolic = %pattern_type.loc4_14 (constants.%pattern_type.a93)] +// CHECK:STDOUT: %Self: @ImplicitAs.Convert.%ImplicitAs.type (%ImplicitAs.type.07f) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %Self.as_type.loc4_20.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc4_20.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %pattern_type.loc4_14: type = pattern_type %Self.as_type.loc4_20.1 [symbolic = %pattern_type.loc4_14 (constants.%pattern_type.a93)] // CHECK:STDOUT: %pattern_type.loc4_28: type = pattern_type %Dest [symbolic = %pattern_type.loc4_28 (constants.%pattern_type.7dc)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @Convert.%Self.as_type.loc4_20.2 (%Self.as_type)) -> @Convert.%Dest (%Dest); +// CHECK:STDOUT: fn(%self.param: @ImplicitAs.Convert.%Self.as_type.loc4_20.1 (%Self.as_type)) -> @ImplicitAs.Convert.%Dest (%Dest); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @ImplicitAs(constants.%Dest) { // CHECK:STDOUT: %Dest.loc3_22.1 => constants.%Dest // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Convert(constants.%Dest, constants.%Self) { +// CHECK:STDOUT: specific @ImplicitAs.Convert(constants.%Dest, constants.%Self) { // CHECK:STDOUT: %Dest => constants.%Dest // CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.07f // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %Self.as_type.loc4_20.2 => constants.%Self.as_type +// CHECK:STDOUT: %Self.as_type.loc4_20.1 => constants.%Self.as_type // CHECK:STDOUT: %pattern_type.loc4_14 => constants.%pattern_type.a93 // CHECK:STDOUT: %pattern_type.loc4_28 => constants.%pattern_type.7dc // CHECK:STDOUT: } @@ -189,10 +189,10 @@ interface C { // CHECK:STDOUT: %assoc0.cd1: %I.assoc_type = assoc_entity element0, @I.%T [concrete] // CHECK:STDOUT: %J.type: type = facet_type <@J> [concrete] // CHECK:STDOUT: %Self.ccd: %J.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %J.F.type: type = fn_type @J.F [concrete] +// CHECK:STDOUT: %J.F: %J.F.type = struct_value () [concrete] // CHECK:STDOUT: %J.assoc_type: type = assoc_entity_type @J [concrete] -// CHECK:STDOUT: %assoc0.922: %J.assoc_type = assoc_entity element0, @J.%F.decl [concrete] +// CHECK:STDOUT: %assoc0.922: %J.assoc_type = assoc_entity element0, @J.%J.F.decl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -229,7 +229,7 @@ interface C { // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: %T.ref: %I.assoc_type = name_ref T, @T.%assoc0 [concrete = constants.%assoc0.cd1] // CHECK:STDOUT: %U: %I.assoc_type = bind_alias U, @T.%assoc0 [concrete = constants.%assoc0.cd1] -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { +// CHECK:STDOUT: %J.F.decl: %J.F.type = fn_decl @J.F [concrete = constants.%J.F] { // CHECK:STDOUT: %return.patt: = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -237,27 +237,27 @@ interface C { // CHECK:STDOUT: %return.param: ref = out_param call_param0 // CHECK:STDOUT: %return: ref = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %J.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0.922] +// CHECK:STDOUT: %assoc0: %J.assoc_type = assoc_entity element0, %J.F.decl [concrete = constants.%assoc0.922] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .I = // CHECK:STDOUT: .U = %U // CHECK:STDOUT: .F = %assoc0 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%J.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic assoc_const @T(@I.%Self: %I.type) { // CHECK:STDOUT: assoc_const T:! type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(@J.%Self: %J.type) { +// CHECK:STDOUT: generic fn @J.F(@J.%Self: %J.type) { // CHECK:STDOUT: fn() -> ; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @T(constants.%Self.826) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%Self.ccd) {} +// CHECK:STDOUT: specific @J.F(constants.%Self.ccd) {} // CHECK:STDOUT: // CHECK:STDOUT: --- alias_to_different_interface_with_requires.carbon // CHECK:STDOUT: @@ -277,18 +277,18 @@ interface C { // CHECK:STDOUT: %impl.elem0.dde: type = impl_witness_access %I2.lookup_impl_witness.ebe, element0 [symbolic_self] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %I2_where.type: type = facet_type <@I2 where %impl.elem0.dde = %empty_tuple.type> [concrete] -// CHECK:STDOUT: %I2.impl_witness.2ab13d.1: = impl_witness file.%I2.impl_witness_table, @I2.impl(%V) [symbolic] +// CHECK:STDOUT: %I2.impl_witness.2ab13d.1: = impl_witness file.%I2.impl_witness_table, @V.as_type.as.I2.impl(%V) [symbolic] // CHECK:STDOUT: %Self.541: %J2.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self.541 [symbolic] -// CHECK:STDOUT: %I2.impl_witness.2ab13d.2: = impl_witness file.%I2.impl_witness_table, @I2.impl(%Self.541) [symbolic] +// CHECK:STDOUT: %I2.impl_witness.2ab13d.2: = impl_witness file.%I2.impl_witness_table, @V.as_type.as.I2.impl(%Self.541) [symbolic] // CHECK:STDOUT: %I2.lookup_impl_witness.487: = lookup_impl_witness %Self.541, @I2 [symbolic] // CHECK:STDOUT: %I2.facet.758: %I2.type = facet_value %Self.as_type, (%I2.lookup_impl_witness.487) [symbolic] // CHECK:STDOUT: %impl.elem0.7c7: type = impl_witness_access %I2.lookup_impl_witness.487, element0 [symbolic] // CHECK:STDOUT: %pattern_type.f9d: type = pattern_type %impl.elem0.7c7 [symbolic] -// CHECK:STDOUT: %F2.type: type = fn_type @F2 [concrete] -// CHECK:STDOUT: %F2: %F2.type = struct_value () [concrete] +// CHECK:STDOUT: %J2.F2.type: type = fn_type @J2.F2 [concrete] +// CHECK:STDOUT: %J2.F2: %J2.F2.type = struct_value () [concrete] // CHECK:STDOUT: %J2.assoc_type: type = assoc_entity_type @J2 [concrete] -// CHECK:STDOUT: %assoc0.775: %J2.assoc_type = assoc_entity element0, @J2.%F2.decl [concrete] +// CHECK:STDOUT: %assoc0.775: %J2.assoc_type = assoc_entity element0, @J2.%J2.F2.decl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -306,7 +306,7 @@ interface C { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I2.decl: type = interface_decl @I2 [concrete = constants.%I2.type] {} {} // CHECK:STDOUT: %J2.decl.loc9: type = interface_decl @J2 [concrete = constants.%J2.type] {} {} -// CHECK:STDOUT: impl_decl @I2.impl [concrete] { +// CHECK:STDOUT: impl_decl @V.as_type.as.I2.impl [concrete] { // CHECK:STDOUT: %V.patt: %pattern_type.f47 = symbolic_binding_pattern V, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %V.ref: %J2.type = name_ref V, %V.loc11_14.1 [symbolic = %V.loc11_14.2 (constants.%V)] @@ -327,8 +327,8 @@ interface C { // CHECK:STDOUT: %J2.ref: type = name_ref J2, file.%J2.decl.loc9 [concrete = constants.%J2.type] // CHECK:STDOUT: %V.loc11_14.1: %J2.type = bind_symbolic_name V, 0 [symbolic = %V.loc11_14.2 (constants.%V)] // CHECK:STDOUT: } -// CHECK:STDOUT: %I2.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @I2.impl [concrete] -// CHECK:STDOUT: %I2.impl_witness: = impl_witness %I2.impl_witness_table, @I2.impl(constants.%V) [symbolic = @I2.impl.%I2.impl_witness (constants.%I2.impl_witness.2ab13d.1)] +// CHECK:STDOUT: %I2.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @V.as_type.as.I2.impl [concrete] +// CHECK:STDOUT: %I2.impl_witness: = impl_witness %I2.impl_witness_table, @V.as_type.as.I2.impl(constants.%V) [symbolic = @V.as_type.as.I2.impl.%I2.impl_witness (constants.%I2.impl_witness.2ab13d.1)] // CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %J2.decl.loc13: type = interface_decl @J2 [concrete = constants.%J2.type] {} {} // CHECK:STDOUT: } @@ -350,42 +350,42 @@ interface C { // CHECK:STDOUT: %I2.ref: type = name_ref I2, file.%I2.decl [concrete = constants.%I2.type] // CHECK:STDOUT: %T2.ref: %I2.assoc_type = name_ref T2, @T2.%assoc0 [concrete = constants.%assoc0.25f] // CHECK:STDOUT: %U2: %I2.assoc_type = bind_alias U2, @T2.%assoc0 [concrete = constants.%assoc0.25f] -// CHECK:STDOUT: %F2.decl: %F2.type = fn_decl @F2 [concrete = constants.%F2] { -// CHECK:STDOUT: %return.patt: @F2.%pattern_type (%pattern_type.f9d) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @F2.%pattern_type (%pattern_type.f9d) = out_param_pattern %return.patt, call_param0 [concrete] +// CHECK:STDOUT: %J2.F2.decl: %J2.F2.type = fn_decl @J2.F2 [concrete = constants.%J2.F2] { +// CHECK:STDOUT: %return.patt: @J2.F2.%pattern_type (%pattern_type.f9d) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @J2.F2.%pattern_type (%pattern_type.f9d) = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %Self.as_type.loc15_14.1: type = facet_access_type constants.%Self.541 [symbolic = %Self.as_type.loc15_14.3 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc15_14.1: type = converted constants.%Self.541, %Self.as_type.loc15_14.1 [symbolic = %Self.as_type.loc15_14.3 (constants.%Self.as_type)] +// CHECK:STDOUT: %Self.as_type.loc15_14.2: type = facet_access_type constants.%Self.541 [symbolic = %Self.as_type.loc15_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc15_14.1: type = converted constants.%Self.541, %Self.as_type.loc15_14.2 [symbolic = %Self.as_type.loc15_14.1 (constants.%Self.as_type)] // CHECK:STDOUT: %.loc15_14.2: %J2.type = converted %.loc15_14.1, constants.%Self.541 [symbolic = %Self (constants.%Self.541)] -// CHECK:STDOUT: %Self.as_type.loc15_14.2: type = facet_access_type constants.%Self.541 [symbolic = %Self.as_type.loc15_14.3 (constants.%Self.as_type)] -// CHECK:STDOUT: %I2.facet.loc15_14.1: %I2.type = facet_value %Self.as_type.loc15_14.2, (constants.%I2.lookup_impl_witness.487) [symbolic = %I2.facet.loc15_14.2 (constants.%I2.facet.758)] -// CHECK:STDOUT: %.loc15_14.3: %I2.type = converted @J2.%Self, %I2.facet.loc15_14.1 [symbolic = %I2.facet.loc15_14.2 (constants.%I2.facet.758)] -// CHECK:STDOUT: %impl.elem0.loc15_14.1: type = impl_witness_access constants.%I2.lookup_impl_witness.487, element0 [symbolic = %impl.elem0.loc15_14.2 (constants.%impl.elem0.7c7)] -// CHECK:STDOUT: %U2.ref: type = name_ref U2, %impl.elem0.loc15_14.1 [symbolic = %impl.elem0.loc15_14.2 (constants.%impl.elem0.7c7)] -// CHECK:STDOUT: %return.param: ref @F2.%impl.elem0.loc15_14.2 (%impl.elem0.7c7) = out_param call_param0 -// CHECK:STDOUT: %return: ref @F2.%impl.elem0.loc15_14.2 (%impl.elem0.7c7) = return_slot %return.param +// CHECK:STDOUT: %Self.as_type.loc15_14.3: type = facet_access_type constants.%Self.541 [symbolic = %Self.as_type.loc15_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %I2.facet.loc15_14.2: %I2.type = facet_value %Self.as_type.loc15_14.3, (constants.%I2.lookup_impl_witness.487) [symbolic = %I2.facet.loc15_14.1 (constants.%I2.facet.758)] +// CHECK:STDOUT: %.loc15_14.3: %I2.type = converted @J2.%Self, %I2.facet.loc15_14.2 [symbolic = %I2.facet.loc15_14.1 (constants.%I2.facet.758)] +// CHECK:STDOUT: %impl.elem0.loc15_14.2: type = impl_witness_access constants.%I2.lookup_impl_witness.487, element0 [symbolic = %impl.elem0.loc15_14.1 (constants.%impl.elem0.7c7)] +// CHECK:STDOUT: %U2.ref: type = name_ref U2, %impl.elem0.loc15_14.2 [symbolic = %impl.elem0.loc15_14.1 (constants.%impl.elem0.7c7)] +// CHECK:STDOUT: %return.param: ref @J2.F2.%impl.elem0.loc15_14.1 (%impl.elem0.7c7) = out_param call_param0 +// CHECK:STDOUT: %return: ref @J2.F2.%impl.elem0.loc15_14.1 (%impl.elem0.7c7) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Self.as_type: type = facet_access_type constants.%Self.541 [symbolic = constants.%Self.as_type] // CHECK:STDOUT: %.loc15_14.1: type = converted constants.%Self.541, %Self.as_type [symbolic = constants.%Self.as_type] // CHECK:STDOUT: %.loc15_14.2: %J2.type = converted %.loc15_14.1, constants.%Self.541 [symbolic = constants.%Self.541] -// CHECK:STDOUT: %assoc0: %J2.assoc_type = assoc_entity element0, %F2.decl [concrete = constants.%assoc0.775] +// CHECK:STDOUT: %assoc0: %J2.assoc_type = assoc_entity element0, %J2.F2.decl [concrete = constants.%assoc0.775] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .I2 = // CHECK:STDOUT: .U2 = %U2 // CHECK:STDOUT: .F2 = %assoc0 -// CHECK:STDOUT: witness = (%F2.decl) +// CHECK:STDOUT: witness = (%J2.F2.decl) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic assoc_const @T2(@I2.%Self: %I2.type) { // CHECK:STDOUT: assoc_const T2:! type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @I2.impl(%V.loc11_14.1: %J2.type) { +// CHECK:STDOUT: generic impl @V.as_type.as.I2.impl(%V.loc11_14.1: %J2.type) { // CHECK:STDOUT: %V.loc11_14.2: %J2.type = bind_symbolic_name V, 0 [symbolic = %V.loc11_14.2 (constants.%V)] // CHECK:STDOUT: %V.as_type.loc11_22.2: type = facet_access_type %V.loc11_14.2 [symbolic = %V.as_type.loc11_22.2 (constants.%V.as_type)] -// CHECK:STDOUT: %I2.impl_witness: = impl_witness file.%I2.impl_witness_table, @I2.impl(%V.loc11_14.2) [symbolic = %I2.impl_witness (constants.%I2.impl_witness.2ab13d.1)] +// CHECK:STDOUT: %I2.impl_witness: = impl_witness file.%I2.impl_witness_table, @V.as_type.as.I2.impl(%V.loc11_14.2) [symbolic = %I2.impl_witness (constants.%I2.impl_witness.2ab13d.1)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -395,28 +395,28 @@ interface C { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F2(@J2.%Self: %J2.type) { +// CHECK:STDOUT: generic fn @J2.F2(@J2.%Self: %J2.type) { // CHECK:STDOUT: %Self: %J2.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.541)] -// CHECK:STDOUT: %Self.as_type.loc15_14.3: type = facet_access_type %Self [symbolic = %Self.as_type.loc15_14.3 (constants.%Self.as_type)] +// CHECK:STDOUT: %Self.as_type.loc15_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc15_14.1 (constants.%Self.as_type)] // CHECK:STDOUT: %I2.lookup_impl_witness: = lookup_impl_witness %Self, @I2 [symbolic = %I2.lookup_impl_witness (constants.%I2.lookup_impl_witness.487)] -// CHECK:STDOUT: %I2.facet.loc15_14.2: %I2.type = facet_value %Self.as_type.loc15_14.3, (%I2.lookup_impl_witness) [symbolic = %I2.facet.loc15_14.2 (constants.%I2.facet.758)] -// CHECK:STDOUT: %impl.elem0.loc15_14.2: type = impl_witness_access %I2.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc15_14.2 (constants.%impl.elem0.7c7)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %impl.elem0.loc15_14.2 [symbolic = %pattern_type (constants.%pattern_type.f9d)] +// CHECK:STDOUT: %I2.facet.loc15_14.1: %I2.type = facet_value %Self.as_type.loc15_14.1, (%I2.lookup_impl_witness) [symbolic = %I2.facet.loc15_14.1 (constants.%I2.facet.758)] +// CHECK:STDOUT: %impl.elem0.loc15_14.1: type = impl_witness_access %I2.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc15_14.1 (constants.%impl.elem0.7c7)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %impl.elem0.loc15_14.1 [symbolic = %pattern_type (constants.%pattern_type.f9d)] // CHECK:STDOUT: -// CHECK:STDOUT: fn() -> @F2.%impl.elem0.loc15_14.2 (%impl.elem0.7c7); +// CHECK:STDOUT: fn() -> @J2.F2.%impl.elem0.loc15_14.1 (%impl.elem0.7c7); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @T2(constants.%Self.c7b) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @T2(constants.%I2.facet.708) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @I2.impl(constants.%V) { +// CHECK:STDOUT: specific @V.as_type.as.I2.impl(constants.%V) { // CHECK:STDOUT: %V.loc11_14.2 => constants.%V // CHECK:STDOUT: %V.as_type.loc11_22.2 => constants.%V.as_type // CHECK:STDOUT: %I2.impl_witness => constants.%I2.impl_witness.2ab13d.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I2.impl(constants.%Self.541) { +// CHECK:STDOUT: specific @V.as_type.as.I2.impl(constants.%Self.541) { // CHECK:STDOUT: %V.loc11_14.2 => constants.%Self.541 // CHECK:STDOUT: %V.as_type.loc11_22.2 => constants.%Self.as_type // CHECK:STDOUT: %I2.impl_witness => constants.%I2.impl_witness.2ab13d.2 @@ -426,12 +426,12 @@ interface C { // CHECK:STDOUT: // CHECK:STDOUT: specific @T2(constants.%I2.facet.758) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F2(constants.%Self.541) { +// CHECK:STDOUT: specific @J2.F2(constants.%Self.541) { // CHECK:STDOUT: %Self => constants.%Self.541 -// CHECK:STDOUT: %Self.as_type.loc15_14.3 => constants.%Self.as_type +// CHECK:STDOUT: %Self.as_type.loc15_14.1 => constants.%Self.as_type // CHECK:STDOUT: %I2.lookup_impl_witness => constants.%I2.lookup_impl_witness.487 -// CHECK:STDOUT: %I2.facet.loc15_14.2 => constants.%I2.facet.758 -// CHECK:STDOUT: %impl.elem0.loc15_14.2 => constants.%impl.elem0.7c7 +// CHECK:STDOUT: %I2.facet.loc15_14.1 => constants.%I2.facet.758 +// CHECK:STDOUT: %impl.elem0.loc15_14.1 => constants.%impl.elem0.7c7 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.f9d // CHECK:STDOUT: } // CHECK:STDOUT: @@ -443,16 +443,16 @@ interface C { // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self.31d [symbolic] // CHECK:STDOUT: %pattern_type.f98: type = pattern_type %Self.as_type [symbolic] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %A.F.type: type = fn_type @A.F [concrete] +// CHECK:STDOUT: %A.F: %A.F.type = struct_value () [concrete] // CHECK:STDOUT: %A.assoc_type: type = assoc_entity_type @A [concrete] -// CHECK:STDOUT: %assoc0.2e6: %A.assoc_type = assoc_entity element0, @A.%F.decl [concrete] +// CHECK:STDOUT: %assoc0.2e6: %A.assoc_type = assoc_entity element0, @A.%A.F.decl [concrete] // CHECK:STDOUT: %B.type: type = facet_type <@B> [concrete] // CHECK:STDOUT: %Self.783: %B.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %G.type: type = fn_type @G [concrete] -// CHECK:STDOUT: %G: %G.type = struct_value () [concrete] +// CHECK:STDOUT: %B.G.type: type = fn_type @B.G [concrete] +// CHECK:STDOUT: %B.G: %B.G.type = struct_value () [concrete] // CHECK:STDOUT: %B.assoc_type: type = assoc_entity_type @B [concrete] -// CHECK:STDOUT: %assoc0.d1a: %B.assoc_type = assoc_entity element0, @B.%G.decl [concrete] +// CHECK:STDOUT: %assoc0.d1a: %B.assoc_type = assoc_entity element0, @B.%B.G.decl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -474,28 +474,28 @@ interface C { // CHECK:STDOUT: // CHECK:STDOUT: interface @A { // CHECK:STDOUT: %Self: %A.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.31d] -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { -// CHECK:STDOUT: %self.patt: @F.%pattern_type (%pattern_type.f98) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.%pattern_type (%pattern_type.f98) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %A.F.decl: %A.F.type = fn_decl @A.F [concrete = constants.%A.F] { +// CHECK:STDOUT: %self.patt: @A.F.%pattern_type (%pattern_type.f98) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @A.F.%pattern_type (%pattern_type.f98) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.98f = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.98f = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @F.%Self.as_type.loc6_14.2 (%Self.as_type) = value_param call_param0 -// CHECK:STDOUT: %.loc6_14.1: type = splice_block %.loc6_14.2 [symbolic = %Self.as_type.loc6_14.2 (constants.%Self.as_type)] { +// CHECK:STDOUT: %self.param: @A.F.%Self.as_type.loc6_14.1 (%Self.as_type) = value_param call_param0 +// CHECK:STDOUT: %.loc6_14.1: type = splice_block %.loc6_14.2 [symbolic = %Self.as_type.loc6_14.1 (constants.%Self.as_type)] { // CHECK:STDOUT: %Self.ref: %A.type = name_ref Self, @A.%Self [symbolic = %Self (constants.%Self.31d)] -// CHECK:STDOUT: %Self.as_type.loc6_14.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc6_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc6_14.2: type = converted %Self.ref, %Self.as_type.loc6_14.1 [symbolic = %Self.as_type.loc6_14.2 (constants.%Self.as_type)] +// CHECK:STDOUT: %Self.as_type.loc6_14.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc6_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc6_14.2: type = converted %Self.ref, %Self.as_type.loc6_14.2 [symbolic = %Self.as_type.loc6_14.1 (constants.%Self.as_type)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.%Self.as_type.loc6_14.2 (%Self.as_type) = bind_name self, %self.param +// CHECK:STDOUT: %self: @A.F.%Self.as_type.loc6_14.1 (%Self.as_type) = bind_name self, %self.param // CHECK:STDOUT: %return.param: ref type = out_param call_param1 // CHECK:STDOUT: %return: ref type = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %A.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0.2e6] +// CHECK:STDOUT: %assoc0: %A.assoc_type = assoc_entity element0, %A.F.decl [concrete = constants.%assoc0.2e6] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F = %assoc0 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%A.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @B { @@ -503,7 +503,7 @@ interface C { // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: %F.ref: %A.assoc_type = name_ref F, @A.%assoc0 [concrete = constants.%assoc0.2e6] // CHECK:STDOUT: %F: %A.assoc_type = bind_alias F, @A.%assoc0 [concrete = constants.%assoc0.2e6] -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { +// CHECK:STDOUT: %B.G.decl: %B.G.type = fn_decl @B.G [concrete = constants.%B.G] { // CHECK:STDOUT: %return.patt: = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -511,35 +511,35 @@ interface C { // CHECK:STDOUT: %return.param: ref = out_param call_param0 // CHECK:STDOUT: %return: ref = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %B.assoc_type = assoc_entity element0, %G.decl [concrete = constants.%assoc0.d1a] +// CHECK:STDOUT: %assoc0: %B.assoc_type = assoc_entity element0, %B.G.decl [concrete = constants.%assoc0.d1a] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .A = // CHECK:STDOUT: .F = %F // CHECK:STDOUT: .G = %assoc0 -// CHECK:STDOUT: witness = (%G.decl) +// CHECK:STDOUT: witness = (%B.G.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(@A.%Self: %A.type) { +// CHECK:STDOUT: generic fn @A.F(@A.%Self: %A.type) { // CHECK:STDOUT: %Self: %A.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.31d)] -// CHECK:STDOUT: %Self.as_type.loc6_14.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc6_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc6_14.2 [symbolic = %pattern_type (constants.%pattern_type.f98)] +// CHECK:STDOUT: %Self.as_type.loc6_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc6_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc6_14.1 [symbolic = %pattern_type (constants.%pattern_type.f98)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @F.%Self.as_type.loc6_14.2 (%Self.as_type)) -> type; +// CHECK:STDOUT: fn(%self.param: @A.F.%Self.as_type.loc6_14.1 (%Self.as_type)) -> type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @G(@B.%Self: %B.type) { +// CHECK:STDOUT: generic fn @B.G(@B.%Self: %B.type) { // CHECK:STDOUT: fn() -> ; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%Self.31d) { +// CHECK:STDOUT: specific @A.F(constants.%Self.31d) { // CHECK:STDOUT: %Self => constants.%Self.31d -// CHECK:STDOUT: %Self.as_type.loc6_14.2 => constants.%Self.as_type +// CHECK:STDOUT: %Self.as_type.loc6_14.1 => constants.%Self.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.f98 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @G(constants.%Self.783) {} +// CHECK:STDOUT: specific @B.G(constants.%Self.783) {} // CHECK:STDOUT: // CHECK:STDOUT: --- call_with_compound_member_access.carbon // CHECK:STDOUT: @@ -548,20 +548,20 @@ interface C { // CHECK:STDOUT: %Self: %C.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type [symbolic] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] +// CHECK:STDOUT: %C.F.type: type = fn_type @C.F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %C.F: %C.F.type = struct_value () [concrete] // CHECK:STDOUT: %C.assoc_type: type = assoc_entity_type @C [concrete] -// CHECK:STDOUT: %assoc0: %C.assoc_type = assoc_entity element0, @C.%F.decl [concrete] -// CHECK:STDOUT: %G.type: type = fn_type @G [concrete] -// CHECK:STDOUT: %G: %G.type = struct_value () [concrete] -// CHECK:STDOUT: %assoc1: %C.assoc_type = assoc_entity element1, @C.%G.decl [concrete] +// CHECK:STDOUT: %assoc0: %C.assoc_type = assoc_entity element0, @C.%C.F.decl [concrete] +// CHECK:STDOUT: %C.G.type: type = fn_type @C.G [concrete] +// CHECK:STDOUT: %C.G: %C.G.type = struct_value () [concrete] +// CHECK:STDOUT: %assoc1: %C.assoc_type = assoc_entity element1, @C.%C.G.decl [concrete] // CHECK:STDOUT: %require_complete: = require_complete_type %Self.as_type [symbolic] // CHECK:STDOUT: %C.lookup_impl_witness: = lookup_impl_witness %Self, @C [symbolic] // CHECK:STDOUT: %C.facet: %C.type = facet_value %Self.as_type, (%C.lookup_impl_witness) [symbolic] -// CHECK:STDOUT: %.54d: type = fn_type_with_self_type %F.type, %C.facet [symbolic] +// CHECK:STDOUT: %.54d: type = fn_type_with_self_type %C.F.type, %C.facet [symbolic] // CHECK:STDOUT: %impl.elem0: %.54d = impl_witness_access %C.lookup_impl_witness, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @F(%C.facet) [symbolic] +// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @C.F(%C.facet) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -581,98 +581,98 @@ interface C { // CHECK:STDOUT: // CHECK:STDOUT: interface @C { // CHECK:STDOUT: %Self: %C.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { -// CHECK:STDOUT: %self.patt: @F.%pattern_type (%pattern_type) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.%pattern_type (%pattern_type) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %C.F.decl: %C.F.type = fn_decl @C.F [concrete = constants.%C.F] { +// CHECK:STDOUT: %self.patt: @C.F.%pattern_type (%pattern_type) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @C.F.%pattern_type (%pattern_type) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @F.%Self.as_type.loc6_14.2 (%Self.as_type) = value_param call_param0 -// CHECK:STDOUT: %.loc6_14.1: type = splice_block %.loc6_14.2 [symbolic = %Self.as_type.loc6_14.2 (constants.%Self.as_type)] { +// CHECK:STDOUT: %self.param: @C.F.%Self.as_type.loc6_14.1 (%Self.as_type) = value_param call_param0 +// CHECK:STDOUT: %.loc6_14.1: type = splice_block %.loc6_14.2 [symbolic = %Self.as_type.loc6_14.1 (constants.%Self.as_type)] { // CHECK:STDOUT: %Self.ref: %C.type = name_ref Self, @C.%Self [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc6_14.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc6_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc6_14.2: type = converted %Self.ref, %Self.as_type.loc6_14.1 [symbolic = %Self.as_type.loc6_14.2 (constants.%Self.as_type)] +// CHECK:STDOUT: %Self.as_type.loc6_14.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc6_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc6_14.2: type = converted %Self.ref, %Self.as_type.loc6_14.2 [symbolic = %Self.as_type.loc6_14.1 (constants.%Self.as_type)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.%Self.as_type.loc6_14.2 (%Self.as_type) = bind_name self, %self.param +// CHECK:STDOUT: %self: @C.F.%Self.as_type.loc6_14.1 (%Self.as_type) = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %C.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0] -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { -// CHECK:STDOUT: %self.patt: @G.%pattern_type (%pattern_type) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @G.%pattern_type (%pattern_type) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %assoc0: %C.assoc_type = assoc_entity element0, %C.F.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %C.G.decl: %C.G.type = fn_decl @C.G [concrete = constants.%C.G] { +// CHECK:STDOUT: %self.patt: @C.G.%pattern_type (%pattern_type) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @C.G.%pattern_type (%pattern_type) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @G.%Self.as_type.loc8_14.2 (%Self.as_type) = value_param call_param0 -// CHECK:STDOUT: %.loc8_14.1: type = splice_block %.loc8_14.2 [symbolic = %Self.as_type.loc8_14.2 (constants.%Self.as_type)] { +// CHECK:STDOUT: %self.param: @C.G.%Self.as_type.loc8_14.1 (%Self.as_type) = value_param call_param0 +// CHECK:STDOUT: %.loc8_14.1: type = splice_block %.loc8_14.2 [symbolic = %Self.as_type.loc8_14.1 (constants.%Self.as_type)] { // CHECK:STDOUT: %Self.ref: %C.type = name_ref Self, @C.%Self [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc8_14.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc8_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc8_14.2: type = converted %Self.ref, %Self.as_type.loc8_14.1 [symbolic = %Self.as_type.loc8_14.2 (constants.%Self.as_type)] +// CHECK:STDOUT: %Self.as_type.loc8_14.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc8_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc8_14.2: type = converted %Self.ref, %Self.as_type.loc8_14.2 [symbolic = %Self.as_type.loc8_14.1 (constants.%Self.as_type)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @G.%Self.as_type.loc8_14.2 (%Self.as_type) = bind_name self, %self.param +// CHECK:STDOUT: %self: @C.G.%Self.as_type.loc8_14.1 (%Self.as_type) = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc1: %C.assoc_type = assoc_entity element1, %G.decl [concrete = constants.%assoc1] +// CHECK:STDOUT: %assoc1: %C.assoc_type = assoc_entity element1, %C.G.decl [concrete = constants.%assoc1] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F = %assoc0 // CHECK:STDOUT: .G = %assoc1 -// CHECK:STDOUT: witness = (%F.decl, %G.decl) +// CHECK:STDOUT: witness = (%C.F.decl, %C.G.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(@C.%Self: %C.type) { +// CHECK:STDOUT: generic fn @C.F(@C.%Self: %C.type) { // CHECK:STDOUT: %Self: %C.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc6_14.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc6_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc6_14.2 [symbolic = %pattern_type (constants.%pattern_type)] +// CHECK:STDOUT: %Self.as_type.loc6_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc6_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc6_14.1 [symbolic = %pattern_type (constants.%pattern_type)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @F.%Self.as_type.loc6_14.2 (%Self.as_type)); +// CHECK:STDOUT: fn(%self.param: @C.F.%Self.as_type.loc6_14.1 (%Self.as_type)); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @G(@C.%Self: %C.type) { +// CHECK:STDOUT: generic fn @C.G(@C.%Self: %C.type) { // CHECK:STDOUT: %Self: %C.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc8_14.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc8_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc8_14.2 [symbolic = %pattern_type (constants.%pattern_type)] +// CHECK:STDOUT: %Self.as_type.loc8_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc8_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc8_14.1 [symbolic = %pattern_type (constants.%pattern_type)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type %Self.as_type.loc8_14.2 [symbolic = %require_complete (constants.%require_complete)] +// CHECK:STDOUT: %require_complete: = require_complete_type %Self.as_type.loc8_14.1 [symbolic = %require_complete (constants.%require_complete)] // CHECK:STDOUT: %C.lookup_impl_witness: = lookup_impl_witness %Self, @C [symbolic = %C.lookup_impl_witness (constants.%C.lookup_impl_witness)] -// CHECK:STDOUT: %C.facet: %C.type = facet_value %Self.as_type.loc8_14.2, (%C.lookup_impl_witness) [symbolic = %C.facet (constants.%C.facet)] -// CHECK:STDOUT: %.loc9_9.2: type = fn_type_with_self_type constants.%F.type, %C.facet [symbolic = %.loc9_9.2 (constants.%.54d)] -// CHECK:STDOUT: %impl.elem0.loc9_9.2: @G.%.loc9_9.2 (%.54d) = impl_witness_access %C.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc9_9.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %specific_impl_fn.loc9_9.2: = specific_impl_function %impl.elem0.loc9_9.2, @F(%C.facet) [symbolic = %specific_impl_fn.loc9_9.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %C.facet: %C.type = facet_value %Self.as_type.loc8_14.1, (%C.lookup_impl_witness) [symbolic = %C.facet (constants.%C.facet)] +// CHECK:STDOUT: %.loc9_9.2: type = fn_type_with_self_type constants.%C.F.type, %C.facet [symbolic = %.loc9_9.2 (constants.%.54d)] +// CHECK:STDOUT: %impl.elem0.loc9_9.2: @C.G.%.loc9_9.2 (%.54d) = impl_witness_access %C.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc9_9.2 (constants.%impl.elem0)] +// CHECK:STDOUT: %specific_impl_fn.loc9_9.2: = specific_impl_function %impl.elem0.loc9_9.2, @C.F(%C.facet) [symbolic = %specific_impl_fn.loc9_9.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @G.%Self.as_type.loc8_14.2 (%Self.as_type)) { +// CHECK:STDOUT: fn(%self.param: @C.G.%Self.as_type.loc8_14.1 (%Self.as_type)) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %self.ref.loc9: @G.%Self.as_type.loc8_14.2 (%Self.as_type) = name_ref self, %self +// CHECK:STDOUT: %self.ref.loc9: @C.G.%Self.as_type.loc8_14.1 (%Self.as_type) = name_ref self, %self // CHECK:STDOUT: %F.ref.loc9: %C.assoc_type = name_ref F, @C.%assoc0 [concrete = constants.%assoc0] -// CHECK:STDOUT: %Self.as_type.loc9: type = facet_access_type constants.%Self [symbolic = %Self.as_type.loc8_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc9_9.1: type = converted constants.%Self, %Self.as_type.loc9 [symbolic = %Self.as_type.loc8_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %impl.elem0.loc9_9.1: @G.%.loc9_9.2 (%.54d) = impl_witness_access constants.%C.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc9_9.2 (constants.%impl.elem0)] +// CHECK:STDOUT: %Self.as_type.loc9: type = facet_access_type constants.%Self [symbolic = %Self.as_type.loc8_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc9_9.1: type = converted constants.%Self, %Self.as_type.loc9 [symbolic = %Self.as_type.loc8_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %impl.elem0.loc9_9.1: @C.G.%.loc9_9.2 (%.54d) = impl_witness_access constants.%C.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc9_9.2 (constants.%impl.elem0)] // CHECK:STDOUT: %bound_method.loc9_9: = bound_method %self.ref.loc9, %impl.elem0.loc9_9.1 -// CHECK:STDOUT: %specific_impl_fn.loc9_9.1: = specific_impl_function %impl.elem0.loc9_9.1, @F(constants.%C.facet) [symbolic = %specific_impl_fn.loc9_9.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc9_9.1: = specific_impl_function %impl.elem0.loc9_9.1, @C.F(constants.%C.facet) [symbolic = %specific_impl_fn.loc9_9.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %bound_method.loc9_12: = bound_method %self.ref.loc9, %specific_impl_fn.loc9_9.1 // CHECK:STDOUT: %.loc9_12: init %empty_tuple.type = call %bound_method.loc9_12(%self.ref.loc9) -// CHECK:STDOUT: %self.ref.loc10: @G.%Self.as_type.loc8_14.2 (%Self.as_type) = name_ref self, %self -// CHECK:STDOUT: %impl.elem0.loc10: @G.%.loc9_9.2 (%.54d) = impl_witness_access constants.%C.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc9_9.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %F.ref.loc10: @G.%.loc9_9.2 (%.54d) = name_ref F, %impl.elem0.loc10 [symbolic = %impl.elem0.loc9_9.2 (constants.%impl.elem0)] +// CHECK:STDOUT: %self.ref.loc10: @C.G.%Self.as_type.loc8_14.1 (%Self.as_type) = name_ref self, %self +// CHECK:STDOUT: %impl.elem0.loc10: @C.G.%.loc9_9.2 (%.54d) = impl_witness_access constants.%C.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc9_9.2 (constants.%impl.elem0)] +// CHECK:STDOUT: %F.ref.loc10: @C.G.%.loc9_9.2 (%.54d) = name_ref F, %impl.elem0.loc10 [symbolic = %impl.elem0.loc9_9.2 (constants.%impl.elem0)] // CHECK:STDOUT: %bound_method.loc10_9: = bound_method %self.ref.loc10, %F.ref.loc10 -// CHECK:STDOUT: %specific_impl_fn.loc10: = specific_impl_function %F.ref.loc10, @F(constants.%C.facet) [symbolic = %specific_impl_fn.loc9_9.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %specific_impl_fn.loc10: = specific_impl_function %F.ref.loc10, @C.F(constants.%C.facet) [symbolic = %specific_impl_fn.loc9_9.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %bound_method.loc10_14: = bound_method %self.ref.loc10, %specific_impl_fn.loc10 // CHECK:STDOUT: %.loc10: init %empty_tuple.type = call %bound_method.loc10_14(%self.ref.loc10) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%Self) { +// CHECK:STDOUT: specific @C.F(constants.%Self) { // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %Self.as_type.loc6_14.2 => constants.%Self.as_type +// CHECK:STDOUT: %Self.as_type.loc6_14.1 => constants.%Self.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @G(constants.%Self) { +// CHECK:STDOUT: specific @C.G(constants.%Self) { // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %Self.as_type.loc8_14.2 => constants.%Self.as_type +// CHECK:STDOUT: %Self.as_type.loc8_14.1 => constants.%Self.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%C.facet) { +// CHECK:STDOUT: specific @C.F(constants.%C.facet) { // CHECK:STDOUT: %Self => constants.%C.facet -// CHECK:STDOUT: %Self.as_type.loc6_14.2 => constants.%Self.as_type +// CHECK:STDOUT: %Self.as_type.loc6_14.1 => constants.%Self.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/fail_assoc_fn_invalid_use.carbon b/toolchain/check/testdata/interface/fail_assoc_fn_invalid_use.carbon index 526d44e1defe..3a461746e0eb 100644 --- a/toolchain/check/testdata/interface/fail_assoc_fn_invalid_use.carbon +++ b/toolchain/check/testdata/interface/fail_assoc_fn_invalid_use.carbon @@ -35,10 +35,10 @@ fn Use(T:! I) { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic] // CHECK:STDOUT: %pattern_type.6de: type = pattern_type %Self.as_type [symbolic] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %I.F.type: type = fn_type @I.F [concrete] +// CHECK:STDOUT: %I.F: %I.F.type = struct_value () [concrete] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] -// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%F.decl [concrete] +// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%I.F.decl [concrete] // CHECK:STDOUT: %T: %I.type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.2b5: type = pattern_type %I.type [concrete] // CHECK:STDOUT: %Use.type: type = fn_type @Use [concrete] @@ -46,7 +46,7 @@ fn Use(T:! I) { // CHECK:STDOUT: %T.as_type: type = facet_access_type %T [symbolic] // CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %T, @I [symbolic] // CHECK:STDOUT: %I.facet: %I.type = facet_value %T.as_type, (%I.lookup_impl_witness) [symbolic] -// CHECK:STDOUT: %.ee1: type = fn_type_with_self_type %F.type, %I.facet [symbolic] +// CHECK:STDOUT: %.ee1: type = fn_type_with_self_type %I.F.type, %I.facet [symbolic] // CHECK:STDOUT: %impl.elem0: %.ee1 = impl_witness_access %I.lookup_impl_witness, element0 [symbolic] // CHECK:STDOUT: %require_complete: = require_complete_type %.ee1 [symbolic] // CHECK:STDOUT: } @@ -67,32 +67,32 @@ fn Use(T:! I) { // CHECK:STDOUT: // CHECK:STDOUT: interface @I { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { -// CHECK:STDOUT: %self.patt: @F.%pattern_type (%pattern_type.6de) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.%pattern_type (%pattern_type.6de) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %I.F.decl: %I.F.type = fn_decl @I.F [concrete = constants.%I.F] { +// CHECK:STDOUT: %self.patt: @I.F.%pattern_type (%pattern_type.6de) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @I.F.%pattern_type (%pattern_type.6de) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @F.%Self.as_type.loc5_14.2 (%Self.as_type) = value_param call_param0 -// CHECK:STDOUT: %.loc5_14.1: type = splice_block %.loc5_14.2 [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type)] { +// CHECK:STDOUT: %self.param: @I.F.%Self.as_type.loc5_14.1 (%Self.as_type) = value_param call_param0 +// CHECK:STDOUT: %.loc5_14.1: type = splice_block %.loc5_14.2 [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] { // CHECK:STDOUT: %Self.ref: %I.type = name_ref Self, @I.%Self [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc5_14.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc5_14.2: type = converted %Self.ref, %Self.as_type.loc5_14.1 [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type)] +// CHECK:STDOUT: %Self.as_type.loc5_14.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc5_14.2: type = converted %Self.ref, %Self.as_type.loc5_14.2 [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.%Self.as_type.loc5_14.2 (%Self.as_type) = bind_name self, %self.param +// CHECK:STDOUT: %self: @I.F.%Self.as_type.loc5_14.1 (%Self.as_type) = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %I.F.decl [concrete = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F = %assoc0 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%I.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(@I.%Self: %I.type) { +// CHECK:STDOUT: generic fn @I.F(@I.%Self: %I.type) { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc5_14.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc5_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc5_14.2 [symbolic = %pattern_type (constants.%pattern_type.6de)] +// CHECK:STDOUT: %Self.as_type.loc5_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc5_14.1 [symbolic = %pattern_type (constants.%pattern_type.6de)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @F.%Self.as_type.loc5_14.2 (%Self.as_type)); +// CHECK:STDOUT: fn(%self.param: @I.F.%Self.as_type.loc5_14.1 (%Self.as_type)); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @Use(%T.loc8_8.2: %I.type) { @@ -102,7 +102,7 @@ fn Use(T:! I) { // CHECK:STDOUT: %T.as_type.loc13_4.2: type = facet_access_type %T.loc8_8.1 [symbolic = %T.as_type.loc13_4.2 (constants.%T.as_type)] // CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %T.loc8_8.1, @I [symbolic = %I.lookup_impl_witness (constants.%I.lookup_impl_witness)] // CHECK:STDOUT: %I.facet: %I.type = facet_value %T.as_type.loc13_4.2, (%I.lookup_impl_witness) [symbolic = %I.facet (constants.%I.facet)] -// CHECK:STDOUT: %.loc13_4.2: type = fn_type_with_self_type constants.%F.type, %I.facet [symbolic = %.loc13_4.2 (constants.%.ee1)] +// CHECK:STDOUT: %.loc13_4.2: type = fn_type_with_self_type constants.%I.F.type, %I.facet [symbolic = %.loc13_4.2 (constants.%.ee1)] // CHECK:STDOUT: %impl.elem0.loc13_4.2: @Use.%.loc13_4.2 (%.ee1) = impl_witness_access %I.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc13_4.2 (constants.%impl.elem0)] // CHECK:STDOUT: %require_complete: = require_complete_type %.loc13_4.2 [symbolic = %require_complete (constants.%require_complete)] // CHECK:STDOUT: @@ -117,9 +117,9 @@ fn Use(T:! I) { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%Self) { +// CHECK:STDOUT: specific @I.F(constants.%Self) { // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %Self.as_type.loc5_14.2 => constants.%Self.as_type +// CHECK:STDOUT: %Self.as_type.loc5_14.1 => constants.%Self.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.6de // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/fail_duplicate.carbon b/toolchain/check/testdata/interface/fail_duplicate.carbon index ccf380e7c31a..6edb87e3e6e3 100644 --- a/toolchain/check/testdata/interface/fail_duplicate.carbon +++ b/toolchain/check/testdata/interface/fail_duplicate.carbon @@ -81,10 +81,10 @@ interface Class { } // CHECK:STDOUT: %Self.719cbb.1: %Interface.type.d726c6.1 = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Interface.type.d726c6.2: type = facet_type <@Interface.loc13> [concrete] // CHECK:STDOUT: %Self.719cbb.2: %Interface.type.d726c6.2 = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %Interface.F.type: type = fn_type @Interface.F [concrete] +// CHECK:STDOUT: %Interface.F: %Interface.F.type = struct_value () [concrete] // CHECK:STDOUT: %Interface.assoc_type: type = assoc_entity_type @Interface.loc13 [concrete] -// CHECK:STDOUT: %assoc0: %Interface.assoc_type = assoc_entity element0, @Interface.loc13.%F.decl [concrete] +// CHECK:STDOUT: %assoc0: %Interface.assoc_type = assoc_entity element0, @Interface.loc13.%Interface.F.decl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -105,20 +105,20 @@ interface Class { } // CHECK:STDOUT: // CHECK:STDOUT: interface @Interface.loc13 { // CHECK:STDOUT: %Self: %Interface.type.d726c6.2 = bind_symbolic_name Self, 0 [symbolic = constants.%Self.719cbb.2] -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} -// CHECK:STDOUT: %assoc0: %Interface.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %Interface.F.decl: %Interface.F.type = fn_decl @Interface.F [concrete = constants.%Interface.F] {} {} +// CHECK:STDOUT: %assoc0: %Interface.assoc_type = assoc_entity element0, %Interface.F.decl [concrete = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F = %assoc0 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%Interface.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(@Interface.loc13.%Self: %Interface.type.d726c6.2) { +// CHECK:STDOUT: generic fn @Interface.F(@Interface.loc13.%Self: %Interface.type.d726c6.2) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%Self.719cbb.2) {} +// CHECK:STDOUT: specific @Interface.F(constants.%Self.719cbb.2) {} // CHECK:STDOUT: // CHECK:STDOUT: --- fail_redefine_with_dependents.carbon // CHECK:STDOUT: @@ -129,10 +129,10 @@ interface Class { } // CHECK:STDOUT: %Self.719cbb.2: %Interface.type.d726c6.2 = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self.719cbb.2 [symbolic] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type [symbolic] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %Interface.F.type: type = fn_type @Interface.F [concrete] +// CHECK:STDOUT: %Interface.F: %Interface.F.type = struct_value () [concrete] // CHECK:STDOUT: %Interface.assoc_type: type = assoc_entity_type @Interface.loc13 [concrete] -// CHECK:STDOUT: %assoc0: %Interface.assoc_type = assoc_entity element0, @Interface.loc13.%F.decl [concrete] +// CHECK:STDOUT: %assoc0: %Interface.assoc_type = assoc_entity element0, @Interface.loc13.%Interface.F.decl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -153,37 +153,37 @@ interface Class { } // CHECK:STDOUT: // CHECK:STDOUT: interface @Interface.loc13 { // CHECK:STDOUT: %Self: %Interface.type.d726c6.2 = bind_symbolic_name Self, 0 [symbolic = constants.%Self.719cbb.2] -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { -// CHECK:STDOUT: %self.patt: @F.%pattern_type (%pattern_type) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.%pattern_type (%pattern_type) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %Interface.F.decl: %Interface.F.type = fn_decl @Interface.F [concrete = constants.%Interface.F] { +// CHECK:STDOUT: %self.patt: @Interface.F.%pattern_type (%pattern_type) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @Interface.F.%pattern_type (%pattern_type) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @F.%Self.as_type.loc14_14.2 (%Self.as_type) = value_param call_param0 -// CHECK:STDOUT: %.loc14_14.1: type = splice_block %.loc14_14.2 [symbolic = %Self.as_type.loc14_14.2 (constants.%Self.as_type)] { +// CHECK:STDOUT: %self.param: @Interface.F.%Self.as_type.loc14_14.1 (%Self.as_type) = value_param call_param0 +// CHECK:STDOUT: %.loc14_14.1: type = splice_block %.loc14_14.2 [symbolic = %Self.as_type.loc14_14.1 (constants.%Self.as_type)] { // CHECK:STDOUT: %Self.ref: %Interface.type.d726c6.2 = name_ref Self, @Interface.loc13.%Self [symbolic = %Self (constants.%Self.719cbb.2)] -// CHECK:STDOUT: %Self.as_type.loc14_14.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc14_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc14_14.2: type = converted %Self.ref, %Self.as_type.loc14_14.1 [symbolic = %Self.as_type.loc14_14.2 (constants.%Self.as_type)] +// CHECK:STDOUT: %Self.as_type.loc14_14.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc14_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc14_14.2: type = converted %Self.ref, %Self.as_type.loc14_14.2 [symbolic = %Self.as_type.loc14_14.1 (constants.%Self.as_type)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.%Self.as_type.loc14_14.2 (%Self.as_type) = bind_name self, %self.param +// CHECK:STDOUT: %self: @Interface.F.%Self.as_type.loc14_14.1 (%Self.as_type) = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %Interface.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %assoc0: %Interface.assoc_type = assoc_entity element0, %Interface.F.decl [concrete = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F = %assoc0 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%Interface.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(@Interface.loc13.%Self: %Interface.type.d726c6.2) { +// CHECK:STDOUT: generic fn @Interface.F(@Interface.loc13.%Self: %Interface.type.d726c6.2) { // CHECK:STDOUT: %Self: %Interface.type.d726c6.2 = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.719cbb.2)] -// CHECK:STDOUT: %Self.as_type.loc14_14.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc14_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc14_14.2 [symbolic = %pattern_type (constants.%pattern_type)] +// CHECK:STDOUT: %Self.as_type.loc14_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc14_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc14_14.1 [symbolic = %pattern_type (constants.%pattern_type)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @F.%Self.as_type.loc14_14.2 (%Self.as_type)); +// CHECK:STDOUT: fn(%self.param: @Interface.F.%Self.as_type.loc14_14.1 (%Self.as_type)); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%Self.719cbb.2) { +// CHECK:STDOUT: specific @Interface.F(constants.%Self.719cbb.2) { // CHECK:STDOUT: %Self => constants.%Self.719cbb.2 -// CHECK:STDOUT: %Self.as_type.loc14_14.2 => constants.%Self.as_type +// CHECK:STDOUT: %Self.as_type.loc14_14.1 => constants.%Self.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/fail_lookup_undefined.carbon b/toolchain/check/testdata/interface/fail_lookup_undefined.carbon index d0e7a1bf758d..e880dfb3c9c4 100644 --- a/toolchain/check/testdata/interface/fail_lookup_undefined.carbon +++ b/toolchain/check/testdata/interface/fail_lookup_undefined.carbon @@ -60,12 +60,12 @@ interface BeingDefined { // CHECK:STDOUT: %Test: %Test.type = struct_value () [concrete] // CHECK:STDOUT: %BeingDefined.type: type = facet_type <@BeingDefined> [concrete] // CHECK:STDOUT: %Self: %BeingDefined.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %H.type: type = fn_type @H [concrete] -// CHECK:STDOUT: %H: %H.type = struct_value () [concrete] +// CHECK:STDOUT: %BeingDefined.H.type: type = fn_type @BeingDefined.H [concrete] +// CHECK:STDOUT: %BeingDefined.H: %BeingDefined.H.type = struct_value () [concrete] // CHECK:STDOUT: %BeingDefined.assoc_type: type = assoc_entity_type @BeingDefined [concrete] -// CHECK:STDOUT: %assoc0: %BeingDefined.assoc_type = assoc_entity element0, @BeingDefined.%H.decl [concrete] -// CHECK:STDOUT: %I.type: type = fn_type @I [concrete] -// CHECK:STDOUT: %I: %I.type = struct_value () [concrete] +// CHECK:STDOUT: %assoc0: %BeingDefined.assoc_type = assoc_entity element0, @BeingDefined.%BeingDefined.H.decl [concrete] +// CHECK:STDOUT: %BeingDefined.I.type: type = fn_type @BeingDefined.I [concrete] +// CHECK:STDOUT: %BeingDefined.I: %BeingDefined.I.type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -84,7 +84,7 @@ interface BeingDefined { // CHECK:STDOUT: // CHECK:STDOUT: interface @BeingDefined { // CHECK:STDOUT: %Self: %BeingDefined.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %H.decl: %H.type = fn_decl @H [concrete = constants.%H] { +// CHECK:STDOUT: %BeingDefined.H.decl: %BeingDefined.H.type = fn_decl @BeingDefined.H [concrete = constants.%BeingDefined.H] { // CHECK:STDOUT: %return.patt: = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -93,14 +93,14 @@ interface BeingDefined { // CHECK:STDOUT: %return.param: ref = out_param call_param0 // CHECK:STDOUT: %return: ref = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %BeingDefined.assoc_type = assoc_entity element0, %H.decl [concrete = constants.%assoc0] -// CHECK:STDOUT: %I.decl: %I.type = fn_decl @I [concrete = constants.%I] {} {} +// CHECK:STDOUT: %assoc0: %BeingDefined.assoc_type = assoc_entity element0, %BeingDefined.H.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %BeingDefined.I.decl: %BeingDefined.I.type = fn_decl @BeingDefined.I [concrete = constants.%BeingDefined.I] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .BeingDefined = // CHECK:STDOUT: .H = %assoc0 -// CHECK:STDOUT: witness = (%H.decl) +// CHECK:STDOUT: witness = (%BeingDefined.H.decl) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F(); @@ -112,15 +112,15 @@ interface BeingDefined { // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @H(@BeingDefined.%Self: %BeingDefined.type) { +// CHECK:STDOUT: generic fn @BeingDefined.H(@BeingDefined.%Self: %BeingDefined.type) { // CHECK:STDOUT: fn() -> ; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @I(@BeingDefined.%Self: %BeingDefined.type) { +// CHECK:STDOUT: generic fn @BeingDefined.I(@BeingDefined.%Self: %BeingDefined.type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @H(constants.%Self) {} +// CHECK:STDOUT: specific @BeingDefined.H(constants.%Self) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @I(constants.%Self) {} +// CHECK:STDOUT: specific @BeingDefined.I(constants.%Self) {} // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/fail_member_lookup.carbon b/toolchain/check/testdata/interface/fail_member_lookup.carbon index d47de0cb5dc7..a69639b01188 100644 --- a/toolchain/check/testdata/interface/fail_member_lookup.carbon +++ b/toolchain/check/testdata/interface/fail_member_lookup.carbon @@ -51,13 +51,13 @@ fn G(U:! Different) -> U.(Interface.T); // CHECK:STDOUT: constants { // CHECK:STDOUT: %Interface.type: type = facet_type <@Interface> [concrete] // CHECK:STDOUT: %Self.719: %Interface.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.1ad: type = fn_type @F.loc4 [concrete] -// CHECK:STDOUT: %F.5d3: %F.type.1ad = struct_value () [concrete] +// CHECK:STDOUT: %Interface.F.type: type = fn_type @Interface.F [concrete] +// CHECK:STDOUT: %Interface.F: %Interface.F.type = struct_value () [concrete] // CHECK:STDOUT: %Interface.assoc_type: type = assoc_entity_type @Interface [concrete] -// CHECK:STDOUT: %assoc0.b4c: %Interface.assoc_type = assoc_entity element0, @Interface.%F.decl [concrete] +// CHECK:STDOUT: %assoc0.b4c: %Interface.assoc_type = assoc_entity element0, @Interface.%Interface.F.decl [concrete] // CHECK:STDOUT: %assoc1: %Interface.assoc_type = assoc_entity element1, @Interface.%T [concrete] -// CHECK:STDOUT: %F.type.b25: type = fn_type @F.loc9 [concrete] -// CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [concrete] +// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] +// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] @@ -90,7 +90,7 @@ fn G(U:! Different) -> U.(Interface.T); // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Interface.decl: type = interface_decl @Interface [concrete = constants.%Interface.type] {} {} -// CHECK:STDOUT: %F.decl: %F.type.b25 = fn_decl @F.loc9 [concrete = constants.%F.c41] {} {} +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} // CHECK:STDOUT: %Different.decl: type = interface_decl @Different [concrete = constants.%Different.type] {} {} // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { // CHECK:STDOUT: %U.patt: %pattern_type.855 = symbolic_binding_pattern U, 0 [concrete] @@ -109,8 +109,8 @@ fn G(U:! Different) -> U.(Interface.T); // CHECK:STDOUT: // CHECK:STDOUT: interface @Interface { // CHECK:STDOUT: %Self: %Interface.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.719] -// CHECK:STDOUT: %F.decl: %F.type.1ad = fn_decl @F.loc4 [concrete = constants.%F.5d3] {} {} -// CHECK:STDOUT: %assoc0: %Interface.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0.b4c] +// CHECK:STDOUT: %Interface.F.decl: %Interface.F.type = fn_decl @Interface.F [concrete = constants.%Interface.F] {} {} +// CHECK:STDOUT: %assoc0: %Interface.assoc_type = assoc_entity element0, %Interface.F.decl [concrete = constants.%assoc0.b4c] // CHECK:STDOUT: %T: type = assoc_const_decl @T [concrete] { // CHECK:STDOUT: %assoc1: %Interface.assoc_type = assoc_entity element1, @Interface.%T [concrete = constants.%assoc1] // CHECK:STDOUT: } @@ -119,7 +119,7 @@ fn G(U:! Different) -> U.(Interface.T); // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F = %assoc0 // CHECK:STDOUT: .T = @T.%assoc1 -// CHECK:STDOUT: witness = (%F.decl, %T) +// CHECK:STDOUT: witness = (%Interface.F.decl, %T) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Different { @@ -134,11 +134,11 @@ fn G(U:! Different) -> U.(Interface.T); // CHECK:STDOUT: assoc_const T:! type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc4(@Interface.%Self: %Interface.type) { +// CHECK:STDOUT: generic fn @Interface.F(@Interface.%Self: %Interface.type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc9() { +// CHECK:STDOUT: fn @F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Interface.ref.loc14: type = name_ref Interface, file.%Interface.decl [concrete = constants.%Interface.type] // CHECK:STDOUT: %F.ref: %Interface.assoc_type = name_ref F, @Interface.%assoc0 [concrete = constants.%assoc0.b4c] @@ -162,7 +162,7 @@ fn G(U:! Different) -> U.(Interface.T); // CHECK:STDOUT: fn() -> ; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc4(constants.%Self.719) {} +// CHECK:STDOUT: specific @Interface.F(constants.%Self.719) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @T(constants.%Self.719) {} // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/fail_modifiers.carbon b/toolchain/check/testdata/interface/fail_modifiers.carbon index 0b3ab291ad2d..161f0511ef3d 100644 --- a/toolchain/check/testdata/interface/fail_modifiers.carbon +++ b/toolchain/check/testdata/interface/fail_modifiers.carbon @@ -159,10 +159,10 @@ interface I { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type [symbolic] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %I.F.type: type = fn_type @I.F [concrete] +// CHECK:STDOUT: %I.F: %I.F.type = struct_value () [concrete] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] -// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%F.decl [concrete] +// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%I.F.decl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -174,37 +174,37 @@ interface I { // CHECK:STDOUT: // CHECK:STDOUT: interface @I { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { -// CHECK:STDOUT: %self.patt: @F.%pattern_type (%pattern_type) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.%pattern_type (%pattern_type) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %I.F.decl: %I.F.type = fn_decl @I.F [concrete = constants.%I.F] { +// CHECK:STDOUT: %self.patt: @I.F.%pattern_type (%pattern_type) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @I.F.%pattern_type (%pattern_type) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @F.%Self.as_type.loc9_22.2 (%Self.as_type) = value_param call_param0 -// CHECK:STDOUT: %.loc9_22.1: type = splice_block %.loc9_22.2 [symbolic = %Self.as_type.loc9_22.2 (constants.%Self.as_type)] { +// CHECK:STDOUT: %self.param: @I.F.%Self.as_type.loc9_22.1 (%Self.as_type) = value_param call_param0 +// CHECK:STDOUT: %.loc9_22.1: type = splice_block %.loc9_22.2 [symbolic = %Self.as_type.loc9_22.1 (constants.%Self.as_type)] { // CHECK:STDOUT: %Self.ref: %I.type = name_ref Self, @I.%Self [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc9_22.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc9_22.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc9_22.2: type = converted %Self.ref, %Self.as_type.loc9_22.1 [symbolic = %Self.as_type.loc9_22.2 (constants.%Self.as_type)] +// CHECK:STDOUT: %Self.as_type.loc9_22.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc9_22.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc9_22.2: type = converted %Self.ref, %Self.as_type.loc9_22.2 [symbolic = %Self.as_type.loc9_22.1 (constants.%Self.as_type)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.%Self.as_type.loc9_22.2 (%Self.as_type) = bind_name self, %self.param +// CHECK:STDOUT: %self: @I.F.%Self.as_type.loc9_22.1 (%Self.as_type) = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %I.F.decl [concrete = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F = %assoc0 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%I.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(@I.%Self: %I.type) { +// CHECK:STDOUT: generic fn @I.F(@I.%Self: %I.type) { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc9_22.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc9_22.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc9_22.2 [symbolic = %pattern_type (constants.%pattern_type)] +// CHECK:STDOUT: %Self.as_type.loc9_22.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc9_22.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc9_22.1 [symbolic = %pattern_type (constants.%pattern_type)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @F.%Self.as_type.loc9_22.2 (%Self.as_type)); +// CHECK:STDOUT: fn(%self.param: @I.F.%Self.as_type.loc9_22.1 (%Self.as_type)); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%Self) { +// CHECK:STDOUT: specific @I.F(constants.%Self) { // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %Self.as_type.loc9_22.2 => constants.%Self.as_type +// CHECK:STDOUT: %Self.as_type.loc9_22.1 => constants.%Self.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type // CHECK:STDOUT: } // CHECK:STDOUT: @@ -215,10 +215,10 @@ interface I { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type [symbolic] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %I.F.type: type = fn_type @I.F [concrete] +// CHECK:STDOUT: %I.F: %I.F.type = struct_value () [concrete] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] -// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%F.decl [concrete] +// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%I.F.decl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -230,37 +230,37 @@ interface I { // CHECK:STDOUT: // CHECK:STDOUT: interface @I { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { -// CHECK:STDOUT: %self.patt: @F.%pattern_type (%pattern_type) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.%pattern_type (%pattern_type) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %I.F.decl: %I.F.type = fn_decl @I.F [concrete = constants.%I.F] { +// CHECK:STDOUT: %self.patt: @I.F.%pattern_type (%pattern_type) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @I.F.%pattern_type (%pattern_type) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @F.%Self.as_type.loc9_24.2 (%Self.as_type) = value_param call_param0 -// CHECK:STDOUT: %.loc9_24.1: type = splice_block %.loc9_24.2 [symbolic = %Self.as_type.loc9_24.2 (constants.%Self.as_type)] { +// CHECK:STDOUT: %self.param: @I.F.%Self.as_type.loc9_24.1 (%Self.as_type) = value_param call_param0 +// CHECK:STDOUT: %.loc9_24.1: type = splice_block %.loc9_24.2 [symbolic = %Self.as_type.loc9_24.1 (constants.%Self.as_type)] { // CHECK:STDOUT: %Self.ref: %I.type = name_ref Self, @I.%Self [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc9_24.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc9_24.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc9_24.2: type = converted %Self.ref, %Self.as_type.loc9_24.1 [symbolic = %Self.as_type.loc9_24.2 (constants.%Self.as_type)] +// CHECK:STDOUT: %Self.as_type.loc9_24.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc9_24.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc9_24.2: type = converted %Self.ref, %Self.as_type.loc9_24.2 [symbolic = %Self.as_type.loc9_24.1 (constants.%Self.as_type)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.%Self.as_type.loc9_24.2 (%Self.as_type) = bind_name self, %self.param +// CHECK:STDOUT: %self: @I.F.%Self.as_type.loc9_24.1 (%Self.as_type) = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %I.F.decl [concrete = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F = %assoc0 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%I.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(@I.%Self: %I.type) { +// CHECK:STDOUT: generic fn @I.F(@I.%Self: %I.type) { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc9_24.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc9_24.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc9_24.2 [symbolic = %pattern_type (constants.%pattern_type)] +// CHECK:STDOUT: %Self.as_type.loc9_24.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc9_24.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc9_24.1 [symbolic = %pattern_type (constants.%pattern_type)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @F.%Self.as_type.loc9_24.2 (%Self.as_type)); +// CHECK:STDOUT: fn(%self.param: @I.F.%Self.as_type.loc9_24.1 (%Self.as_type)); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%Self) { +// CHECK:STDOUT: specific @I.F(constants.%Self) { // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %Self.as_type.loc9_24.2 => constants.%Self.as_type +// CHECK:STDOUT: %Self.as_type.loc9_24.1 => constants.%Self.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/fail_redeclare_member.carbon b/toolchain/check/testdata/interface/fail_redeclare_member.carbon index e38b2a78f99e..8d602dbe6c82 100644 --- a/toolchain/check/testdata/interface/fail_redeclare_member.carbon +++ b/toolchain/check/testdata/interface/fail_redeclare_member.carbon @@ -29,12 +29,12 @@ interface Interface { // CHECK:STDOUT: constants { // CHECK:STDOUT: %Interface.type: type = facet_type <@Interface> [concrete] // CHECK:STDOUT: %Self: %Interface.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.1ad64d.1: type = fn_type @F.loc16 [concrete] -// CHECK:STDOUT: %F.5d382e.1: %F.type.1ad64d.1 = struct_value () [concrete] +// CHECK:STDOUT: %Interface.F.type.1ad64d.1: type = fn_type @Interface.F.loc16 [concrete] +// CHECK:STDOUT: %Interface.F.5d382e.1: %Interface.F.type.1ad64d.1 = struct_value () [concrete] // CHECK:STDOUT: %Interface.assoc_type: type = assoc_entity_type @Interface [concrete] -// CHECK:STDOUT: %assoc0: %Interface.assoc_type = assoc_entity element0, @Interface.%F.decl.loc16 [concrete] -// CHECK:STDOUT: %F.type.1ad64d.2: type = fn_type @F.loc24 [concrete] -// CHECK:STDOUT: %F.5d382e.2: %F.type.1ad64d.2 = struct_value () [concrete] +// CHECK:STDOUT: %assoc0: %Interface.assoc_type = assoc_entity element0, @Interface.%Interface.F.decl.loc16 [concrete] +// CHECK:STDOUT: %Interface.F.type.1ad64d.2: type = fn_type @Interface.F.loc24 [concrete] +// CHECK:STDOUT: %Interface.F.5d382e.2: %Interface.F.type.1ad64d.2 = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -46,25 +46,25 @@ interface Interface { // CHECK:STDOUT: // CHECK:STDOUT: interface @Interface { // CHECK:STDOUT: %Self: %Interface.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %F.decl.loc16: %F.type.1ad64d.1 = fn_decl @F.loc16 [concrete = constants.%F.5d382e.1] {} {} -// CHECK:STDOUT: %assoc0: %Interface.assoc_type = assoc_entity element0, %F.decl.loc16 [concrete = constants.%assoc0] -// CHECK:STDOUT: %F.decl.loc24: %F.type.1ad64d.2 = fn_decl @F.loc24 [concrete = constants.%F.5d382e.2] {} {} +// CHECK:STDOUT: %Interface.F.decl.loc16: %Interface.F.type.1ad64d.1 = fn_decl @Interface.F.loc16 [concrete = constants.%Interface.F.5d382e.1] {} {} +// CHECK:STDOUT: %assoc0: %Interface.assoc_type = assoc_entity element0, %Interface.F.decl.loc16 [concrete = constants.%assoc0] +// CHECK:STDOUT: %Interface.F.decl.loc24: %Interface.F.type.1ad64d.2 = fn_decl @Interface.F.loc24 [concrete = constants.%Interface.F.5d382e.2] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F = %assoc0 -// CHECK:STDOUT: witness = (%F.decl.loc16) +// CHECK:STDOUT: witness = (%Interface.F.decl.loc16) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc16(@Interface.%Self: %Interface.type) { +// CHECK:STDOUT: generic fn @Interface.F.loc16(@Interface.%Self: %Interface.type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc24(@Interface.%Self: %Interface.type) { +// CHECK:STDOUT: generic fn @Interface.F.loc24(@Interface.%Self: %Interface.type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc16(constants.%Self) {} +// CHECK:STDOUT: specific @Interface.F.loc16(constants.%Self) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc24(constants.%Self) {} +// CHECK:STDOUT: specific @Interface.F.loc24(constants.%Self) {} // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/fail_todo_assoc_const_default.carbon b/toolchain/check/testdata/interface/fail_todo_assoc_const_default.carbon index b85158d96453..7649a08513eb 100644 --- a/toolchain/check/testdata/interface/fail_todo_assoc_const_default.carbon +++ b/toolchain/check/testdata/interface/fail_todo_assoc_const_default.carbon @@ -43,18 +43,18 @@ interface I { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_42.20e, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_42.20e, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_42.20e, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_42.20e, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_42.c68: %i32 = int_value 42 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -67,8 +67,8 @@ interface I { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -94,12 +94,12 @@ interface I { // CHECK:STDOUT: %N: %i32 = assoc_const_decl @N [concrete] { // CHECK:STDOUT: %assoc1: %I.assoc_type = assoc_entity element1, @I.%N [concrete = constants.%assoc1] // CHECK:STDOUT: %int_42: Core.IntLiteral = int_value 42 [concrete = constants.%int_42.20e] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc25_27.1: = bound_method %int_42, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc25_27.1: = bound_method %int_42, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc25_27.2: = bound_method %int_42, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc25_27.2(%int_42) [concrete = constants.%int_42.c68] -// CHECK:STDOUT: %.loc25_27.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_42.c68] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc25_27.2(%int_42) [concrete = constants.%int_42.c68] +// CHECK:STDOUT: %.loc25_27.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_42.c68] // CHECK:STDOUT: %.loc25_27.2: %i32 = converted %int_42, %.loc25_27.1 [concrete = constants.%int_42.c68] // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/fail_todo_define_default_fn_inline.carbon b/toolchain/check/testdata/interface/fail_todo_define_default_fn_inline.carbon index ff9b663c80dd..cbce289c6a35 100644 --- a/toolchain/check/testdata/interface/fail_todo_define_default_fn_inline.carbon +++ b/toolchain/check/testdata/interface/fail_todo_define_default_fn_inline.carbon @@ -31,18 +31,18 @@ interface Interface { // CHECK:STDOUT: constants { // CHECK:STDOUT: %Interface.type: type = facet_type <@Interface> [concrete] // CHECK:STDOUT: %Self: %Interface.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %Interface.F.type: type = fn_type @Interface.F [concrete] +// CHECK:STDOUT: %Interface.F: %Interface.F.type = struct_value () [concrete] // CHECK:STDOUT: %Interface.assoc_type: type = assoc_entity_type @Interface [concrete] -// CHECK:STDOUT: %assoc0: %Interface.assoc_type = assoc_entity element0, @Interface.%F.decl [concrete] +// CHECK:STDOUT: %assoc0: %Interface.assoc_type = assoc_entity element0, @Interface.%Interface.F.decl [concrete] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %G.type: type = fn_type @G [concrete] -// CHECK:STDOUT: %G: %G.type = struct_value () [concrete] -// CHECK:STDOUT: %assoc1: %Interface.assoc_type = assoc_entity element1, @Interface.%G.decl [concrete] +// CHECK:STDOUT: %Interface.G.type: type = fn_type @Interface.G [concrete] +// CHECK:STDOUT: %Interface.G: %Interface.G.type = struct_value () [concrete] +// CHECK:STDOUT: %assoc1: %Interface.assoc_type = assoc_entity element1, @Interface.%Interface.G.decl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -65,9 +65,9 @@ interface Interface { // CHECK:STDOUT: // CHECK:STDOUT: interface @Interface { // CHECK:STDOUT: %Self: %Interface.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} -// CHECK:STDOUT: %assoc0: %Interface.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0] -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { +// CHECK:STDOUT: %Interface.F.decl: %Interface.F.type = fn_decl @Interface.F [concrete = constants.%Interface.F] {} {} +// CHECK:STDOUT: %assoc0: %Interface.assoc_type = assoc_entity element0, %Interface.F.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %Interface.G.decl: %Interface.G.type = fn_decl @Interface.G [concrete = constants.%Interface.G] { // CHECK:STDOUT: %a.patt: %pattern_type.7ce = binding_pattern a [concrete] // CHECK:STDOUT: %a.param_patt: %pattern_type.7ce = value_param_pattern %a.patt, call_param0 [concrete] // CHECK:STDOUT: %b.patt: %pattern_type.7ce = binding_pattern b [concrete] @@ -92,16 +92,16 @@ interface Interface { // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param2 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc1: %Interface.assoc_type = assoc_entity element1, %G.decl [concrete = constants.%assoc1] +// CHECK:STDOUT: %assoc1: %Interface.assoc_type = assoc_entity element1, %Interface.G.decl [concrete = constants.%assoc1] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F = %assoc0 // CHECK:STDOUT: .G = %assoc1 -// CHECK:STDOUT: witness = (%F.decl, %G.decl) +// CHECK:STDOUT: witness = (%Interface.F.decl, %Interface.G.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(@Interface.%Self: %Interface.type) { +// CHECK:STDOUT: generic fn @Interface.F(@Interface.%Self: %Interface.type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: fn() { @@ -110,13 +110,13 @@ interface Interface { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @G(@Interface.%Self: %Interface.type) { +// CHECK:STDOUT: generic fn @Interface.G(@Interface.%Self: %Interface.type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: fn(%a.param: %i32, %b.param: %i32) -> %i32 = "int.sadd"; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%Self) {} +// CHECK:STDOUT: specific @Interface.F(constants.%Self) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @G(constants.%Self) {} +// CHECK:STDOUT: specific @Interface.G(constants.%Self) {} // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/fail_todo_define_default_fn_out_of_line.carbon b/toolchain/check/testdata/interface/fail_todo_define_default_fn_out_of_line.carbon index 80be69e3f316..fc472ec7931f 100644 --- a/toolchain/check/testdata/interface/fail_todo_define_default_fn_out_of_line.carbon +++ b/toolchain/check/testdata/interface/fail_todo_define_default_fn_out_of_line.carbon @@ -73,22 +73,22 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; } // CHECK:STDOUT: constants { // CHECK:STDOUT: %Interface.type: type = facet_type <@Interface> [concrete] // CHECK:STDOUT: %Self: %Interface.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.1ad64d.1: type = fn_type @F.loc7 [concrete] -// CHECK:STDOUT: %F.5d382e.1: %F.type.1ad64d.1 = struct_value () [concrete] +// CHECK:STDOUT: %Interface.F.type.1ad64d.1: type = fn_type @Interface.F.loc7 [concrete] +// CHECK:STDOUT: %Interface.F.5d382e.1: %Interface.F.type.1ad64d.1 = struct_value () [concrete] // CHECK:STDOUT: %Interface.assoc_type: type = assoc_entity_type @Interface [concrete] -// CHECK:STDOUT: %assoc0: %Interface.assoc_type = assoc_entity element0, @Interface.%F.decl [concrete] +// CHECK:STDOUT: %assoc0: %Interface.assoc_type = assoc_entity element0, @Interface.%Interface.F.decl [concrete] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %G.type.ef383d.1: type = fn_type @G.loc13 [concrete] -// CHECK:STDOUT: %G.362a5a.1: %G.type.ef383d.1 = struct_value () [concrete] -// CHECK:STDOUT: %assoc1: %Interface.assoc_type = assoc_entity element1, @Interface.%G.decl [concrete] -// CHECK:STDOUT: %F.type.1ad64d.2: type = fn_type @F.loc23 [concrete] -// CHECK:STDOUT: %F.5d382e.2: %F.type.1ad64d.2 = struct_value () [concrete] -// CHECK:STDOUT: %G.type.ef383d.2: type = fn_type @G.loc32 [concrete] -// CHECK:STDOUT: %G.362a5a.2: %G.type.ef383d.2 = struct_value () [concrete] +// CHECK:STDOUT: %Interface.G.type.ef383d.1: type = fn_type @Interface.G.loc13 [concrete] +// CHECK:STDOUT: %Interface.G.362a5a.1: %Interface.G.type.ef383d.1 = struct_value () [concrete] +// CHECK:STDOUT: %assoc1: %Interface.assoc_type = assoc_entity element1, @Interface.%Interface.G.decl [concrete] +// CHECK:STDOUT: %Interface.F.type.1ad64d.2: type = fn_type @Interface.F.loc23 [concrete] +// CHECK:STDOUT: %Interface.F.5d382e.2: %Interface.F.type.1ad64d.2 = struct_value () [concrete] +// CHECK:STDOUT: %Interface.G.type.ef383d.2: type = fn_type @Interface.G.loc32 [concrete] +// CHECK:STDOUT: %Interface.G.362a5a.2: %Interface.G.type.ef383d.2 = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -107,8 +107,8 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; } // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Interface.decl: type = interface_decl @Interface [concrete = constants.%Interface.type] {} {} -// CHECK:STDOUT: %F.decl: %F.type.1ad64d.2 = fn_decl @F.loc23 [concrete = constants.%F.5d382e.2] {} {} -// CHECK:STDOUT: %G.decl: %G.type.ef383d.2 = fn_decl @G.loc32 [concrete = constants.%G.362a5a.2] { +// CHECK:STDOUT: %Interface.F.decl: %Interface.F.type.1ad64d.2 = fn_decl @Interface.F.loc23 [concrete = constants.%Interface.F.5d382e.2] {} {} +// CHECK:STDOUT: %Interface.G.decl: %Interface.G.type.ef383d.2 = fn_decl @Interface.G.loc32 [concrete = constants.%Interface.G.362a5a.2] { // CHECK:STDOUT: %a.patt: %pattern_type.7ce = binding_pattern a [concrete] // CHECK:STDOUT: %a.param_patt: %pattern_type.7ce = value_param_pattern %a.patt, call_param0 [concrete] // CHECK:STDOUT: %b.patt: %pattern_type.7ce = binding_pattern b [concrete] @@ -137,9 +137,9 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; } // CHECK:STDOUT: // CHECK:STDOUT: interface @Interface { // CHECK:STDOUT: %Self: %Interface.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %F.decl: %F.type.1ad64d.1 = fn_decl @F.loc7 [concrete = constants.%F.5d382e.1] {} {} -// CHECK:STDOUT: %assoc0: %Interface.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0] -// CHECK:STDOUT: %G.decl: %G.type.ef383d.1 = fn_decl @G.loc13 [concrete = constants.%G.362a5a.1] { +// CHECK:STDOUT: %Interface.F.decl: %Interface.F.type.1ad64d.1 = fn_decl @Interface.F.loc7 [concrete = constants.%Interface.F.5d382e.1] {} {} +// CHECK:STDOUT: %assoc0: %Interface.assoc_type = assoc_entity element0, %Interface.F.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %Interface.G.decl: %Interface.G.type.ef383d.1 = fn_decl @Interface.G.loc13 [concrete = constants.%Interface.G.362a5a.1] { // CHECK:STDOUT: %a.patt: %pattern_type.7ce = binding_pattern a [concrete] // CHECK:STDOUT: %a.param_patt: %pattern_type.7ce = value_param_pattern %a.patt, call_param0 [concrete] // CHECK:STDOUT: %b.patt: %pattern_type.7ce = binding_pattern b [concrete] @@ -164,24 +164,24 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; } // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param2 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc1: %Interface.assoc_type = assoc_entity element1, %G.decl [concrete = constants.%assoc1] +// CHECK:STDOUT: %assoc1: %Interface.assoc_type = assoc_entity element1, %Interface.G.decl [concrete = constants.%assoc1] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F = %assoc0 // CHECK:STDOUT: .G = %assoc1 -// CHECK:STDOUT: witness = (%F.decl, %G.decl) +// CHECK:STDOUT: witness = (%Interface.F.decl, %Interface.G.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc7(@Interface.%Self: %Interface.type) { +// CHECK:STDOUT: generic fn @Interface.F.loc7(@Interface.%Self: %Interface.type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @G.loc13(@Interface.%Self: %Interface.type) { +// CHECK:STDOUT: generic fn @Interface.G.loc13(@Interface.%Self: %Interface.type) { // CHECK:STDOUT: fn(%a.param: %i32, %b.param: %i32) -> %i32; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc23(@Interface.%Self: %Interface.type) { +// CHECK:STDOUT: generic fn @Interface.F.loc23(@Interface.%Self: %Interface.type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: fn() { @@ -190,19 +190,19 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; } // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @G.loc32(@Interface.%Self: %Interface.type) { +// CHECK:STDOUT: generic fn @Interface.G.loc32(@Interface.%Self: %Interface.type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: fn(%a.param: %i32, %b.param: %i32) -> %i32 = "int.sadd"; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc7(constants.%Self) {} +// CHECK:STDOUT: specific @Interface.F.loc7(constants.%Self) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @G.loc13(constants.%Self) {} +// CHECK:STDOUT: specific @Interface.G.loc13(constants.%Self) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc23(constants.%Self) {} +// CHECK:STDOUT: specific @Interface.F.loc23(constants.%Self) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @G.loc32(constants.%Self) {} +// CHECK:STDOUT: specific @Interface.G.loc32(constants.%Self) {} // CHECK:STDOUT: // CHECK:STDOUT: --- dependent_return_type.carbon // CHECK:STDOUT: @@ -214,8 +214,8 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; } // CHECK:STDOUT: %U: type = bind_symbolic_name U, 1 [symbolic] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %pattern_type.a32: type = pattern_type %U [symbolic] -// CHECK:STDOUT: %F.type: type = fn_type @F, @C(%Self) [symbolic] -// CHECK:STDOUT: %F: %F.type = struct_value () [symbolic] +// CHECK:STDOUT: %C.F.type: type = fn_type @C.F, @C(%Self) [symbolic] +// CHECK:STDOUT: %C.F: %C.F.type = struct_value () [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %require_complete.b54: = require_complete_type %U [symbolic] @@ -236,28 +236,28 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; } // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Interface.decl: type = interface_decl @Interface [concrete = constants.%Interface.type] {} {} -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [symbolic = constants.%F] { -// CHECK:STDOUT: %self.patt: @F.%pattern_type.loc14_10 (%pattern_type.68b) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.%pattern_type.loc14_10 (%pattern_type.68b) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %C.F.decl: %C.F.type = fn_decl @C.F [symbolic = constants.%C.F] { +// CHECK:STDOUT: %self.patt: @C.F.%pattern_type.loc14_10 (%pattern_type.68b) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @C.F.%pattern_type.loc14_10 (%pattern_type.68b) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %U.patt: %pattern_type.98f = symbolic_binding_pattern U, 1 [concrete] -// CHECK:STDOUT: %u.patt: @F.%pattern_type.loc14_32 (%pattern_type.a32) = binding_pattern u [concrete] -// CHECK:STDOUT: %u.param_patt: @F.%pattern_type.loc14_32 (%pattern_type.a32) = value_param_pattern %u.patt, call_param1 [concrete] -// CHECK:STDOUT: %return.patt: @F.%pattern_type.loc14_32 (%pattern_type.a32) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @F.%pattern_type.loc14_32 (%pattern_type.a32) = out_param_pattern %return.patt, call_param2 [concrete] +// CHECK:STDOUT: %u.patt: @C.F.%pattern_type.loc14_32 (%pattern_type.a32) = binding_pattern u [concrete] +// CHECK:STDOUT: %u.param_patt: @C.F.%pattern_type.loc14_32 (%pattern_type.a32) = value_param_pattern %u.patt, call_param1 [concrete] +// CHECK:STDOUT: %return.patt: @C.F.%pattern_type.loc14_32 (%pattern_type.a32) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @C.F.%pattern_type.loc14_32 (%pattern_type.a32) = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %U.ref.loc20_49: type = name_ref U, %U.loc20 [symbolic = %U.loc14_22.2 (constants.%U)] -// CHECK:STDOUT: %self.param.loc20: @F.%C (%C) = value_param call_param0 +// CHECK:STDOUT: %U.ref.loc20_49: type = name_ref U, %U.loc20 [symbolic = %U.loc14_22.1 (constants.%U)] +// CHECK:STDOUT: %self.param.loc20: @C.F.%C (%C) = value_param call_param0 // CHECK:STDOUT: %.loc20_24.1: type = splice_block %Self.ref.loc20 [symbolic = %C (constants.%C)] { // CHECK:STDOUT: %.loc20_24.2: type = specific_constant constants.%C, @C(constants.%Self) [symbolic = %C (constants.%C)] // CHECK:STDOUT: %Self.ref.loc20: type = name_ref Self, %.loc20_24.2 [symbolic = %C (constants.%C)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self.loc20: @F.%C (%C) = bind_name self, %self.param.loc20 -// CHECK:STDOUT: %U.loc20: type = bind_symbolic_name U, 1 [symbolic = %U.loc14_22.2 (constants.%U)] -// CHECK:STDOUT: %u.param.loc20: @F.%U.loc14_22.2 (%U) = value_param call_param1 -// CHECK:STDOUT: %U.ref.loc20_43: type = name_ref U, %U.loc20 [symbolic = %U.loc14_22.2 (constants.%U)] -// CHECK:STDOUT: %u.loc20: @F.%U.loc14_22.2 (%U) = bind_name u, %u.param.loc20 -// CHECK:STDOUT: %return.param.loc20: ref @F.%U.loc14_22.2 (%U) = out_param call_param2 -// CHECK:STDOUT: %return.loc20: ref @F.%U.loc14_22.2 (%U) = return_slot %return.param.loc20 +// CHECK:STDOUT: %self.loc20: @C.F.%C (%C) = bind_name self, %self.param.loc20 +// CHECK:STDOUT: %U.loc20: type = bind_symbolic_name U, 1 [symbolic = %U.loc14_22.1 (constants.%U)] +// CHECK:STDOUT: %u.param.loc20: @C.F.%U.loc14_22.1 (%U) = value_param call_param1 +// CHECK:STDOUT: %U.ref.loc20_43: type = name_ref U, %U.loc20 [symbolic = %U.loc14_22.1 (constants.%U)] +// CHECK:STDOUT: %u.loc20: @C.F.%U.loc14_22.1 (%U) = bind_name u, %u.param.loc20 +// CHECK:STDOUT: %return.param.loc20: ref @C.F.%U.loc14_22.1 (%U) = out_param call_param2 +// CHECK:STDOUT: %return.loc20: ref @C.F.%U.loc14_22.1 (%U) = return_slot %return.param.loc20 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -274,32 +274,32 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; } // CHECK:STDOUT: generic class @C(@Interface.%Self: %Interface.type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Self: %Interface.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %F.type: type = fn_type @F, @C(%Self) [symbolic = %F.type (constants.%F.type)] -// CHECK:STDOUT: %F: @C.%F.type (%F.type) = struct_value () [symbolic = %F (constants.%F)] +// CHECK:STDOUT: %C.F.type: type = fn_type @C.F, @C(%Self) [symbolic = %C.F.type (constants.%C.F.type)] +// CHECK:STDOUT: %C.F: @C.%C.F.type (%C.F.type) = struct_value () [symbolic = %C.F (constants.%C.F)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %F.decl: @C.%F.type (%F.type) = fn_decl @F [symbolic = @C.%F (constants.%F)] { -// CHECK:STDOUT: %self.patt: @F.%pattern_type.loc14_10 (%pattern_type.68b) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.%pattern_type.loc14_10 (%pattern_type.68b) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %C.F.decl: @C.%C.F.type (%C.F.type) = fn_decl @C.F [symbolic = @C.%C.F (constants.%C.F)] { +// CHECK:STDOUT: %self.patt: @C.F.%pattern_type.loc14_10 (%pattern_type.68b) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @C.F.%pattern_type.loc14_10 (%pattern_type.68b) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %U.patt: %pattern_type.98f = symbolic_binding_pattern U, 1 [concrete] -// CHECK:STDOUT: %u.patt: @F.%pattern_type.loc14_32 (%pattern_type.a32) = binding_pattern u [concrete] -// CHECK:STDOUT: %u.param_patt: @F.%pattern_type.loc14_32 (%pattern_type.a32) = value_param_pattern %u.patt, call_param1 [concrete] -// CHECK:STDOUT: %return.patt: @F.%pattern_type.loc14_32 (%pattern_type.a32) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @F.%pattern_type.loc14_32 (%pattern_type.a32) = out_param_pattern %return.patt, call_param2 [concrete] +// CHECK:STDOUT: %u.patt: @C.F.%pattern_type.loc14_32 (%pattern_type.a32) = binding_pattern u [concrete] +// CHECK:STDOUT: %u.param_patt: @C.F.%pattern_type.loc14_32 (%pattern_type.a32) = value_param_pattern %u.patt, call_param1 [concrete] +// CHECK:STDOUT: %return.patt: @C.F.%pattern_type.loc14_32 (%pattern_type.a32) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @C.F.%pattern_type.loc14_32 (%pattern_type.a32) = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %U.ref.loc14_41: type = name_ref U, %U.loc14_22.1 [symbolic = %U.loc14_22.2 (constants.%U)] -// CHECK:STDOUT: %self.param.loc14: @F.%C (%C) = value_param call_param0 +// CHECK:STDOUT: %U.ref.loc14_41: type = name_ref U, %U.loc14_22.2 [symbolic = %U.loc14_22.1 (constants.%U)] +// CHECK:STDOUT: %self.param.loc14: @C.F.%C (%C) = value_param call_param0 // CHECK:STDOUT: %.loc14_16.1: type = splice_block %Self.ref.loc14 [symbolic = %C (constants.%C)] { // CHECK:STDOUT: %.loc14_16.2: type = specific_constant constants.%C, @C(constants.%Self) [symbolic = %C (constants.%C)] // CHECK:STDOUT: %Self.ref.loc14: type = name_ref Self, %.loc14_16.2 [symbolic = %C (constants.%C)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self.loc14: @F.%C (%C) = bind_name self, %self.param.loc14 -// CHECK:STDOUT: %U.loc14_22.1: type = bind_symbolic_name U, 1 [symbolic = %U.loc14_22.2 (constants.%U)] -// CHECK:STDOUT: %u.param.loc14: @F.%U.loc14_22.2 (%U) = value_param call_param1 -// CHECK:STDOUT: %U.ref.loc14_35: type = name_ref U, %U.loc14_22.1 [symbolic = %U.loc14_22.2 (constants.%U)] -// CHECK:STDOUT: %u.loc14: @F.%U.loc14_22.2 (%U) = bind_name u, %u.param.loc14 -// CHECK:STDOUT: %return.param.loc14: ref @F.%U.loc14_22.2 (%U) = out_param call_param2 -// CHECK:STDOUT: %return.loc14: ref @F.%U.loc14_22.2 (%U) = return_slot %return.param.loc14 +// CHECK:STDOUT: %self.loc14: @C.F.%C (%C) = bind_name self, %self.param.loc14 +// CHECK:STDOUT: %U.loc14_22.2: type = bind_symbolic_name U, 1 [symbolic = %U.loc14_22.1 (constants.%U)] +// CHECK:STDOUT: %u.param.loc14: @C.F.%U.loc14_22.1 (%U) = value_param call_param1 +// CHECK:STDOUT: %U.ref.loc14_35: type = name_ref U, %U.loc14_22.2 [symbolic = %U.loc14_22.1 (constants.%U)] +// CHECK:STDOUT: %u.loc14: @C.F.%U.loc14_22.1 (%U) = bind_name u, %u.param.loc14 +// CHECK:STDOUT: %return.param.loc14: ref @C.F.%U.loc14_22.1 (%U) = out_param call_param2 +// CHECK:STDOUT: %return.loc14: ref @C.F.%U.loc14_22.1 (%U) = return_slot %return.param.loc14 // CHECK:STDOUT: } // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] @@ -307,24 +307,24 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; } // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %C.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(@Interface.%Self: %Interface.type, %U.loc14_22.1: type) { +// CHECK:STDOUT: generic fn @C.F(@Interface.%Self: %Interface.type, %U.loc14_22.2: type) { // CHECK:STDOUT: %Self: %Interface.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %C: type = class_type @C, @C(%Self) [symbolic = %C (constants.%C)] // CHECK:STDOUT: %pattern_type.loc14_10: type = pattern_type %C [symbolic = %pattern_type.loc14_10 (constants.%pattern_type.68b)] -// CHECK:STDOUT: %U.loc14_22.2: type = bind_symbolic_name U, 1 [symbolic = %U.loc14_22.2 (constants.%U)] -// CHECK:STDOUT: %pattern_type.loc14_32: type = pattern_type %U.loc14_22.2 [symbolic = %pattern_type.loc14_32 (constants.%pattern_type.a32)] +// CHECK:STDOUT: %U.loc14_22.1: type = bind_symbolic_name U, 1 [symbolic = %U.loc14_22.1 (constants.%U)] +// CHECK:STDOUT: %pattern_type.loc14_32: type = pattern_type %U.loc14_22.1 [symbolic = %pattern_type.loc14_32 (constants.%pattern_type.a32)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc20_46: = require_complete_type %U.loc14_22.2 [symbolic = %require_complete.loc20_46 (constants.%require_complete.b54)] +// CHECK:STDOUT: %require_complete.loc20_46: = require_complete_type %U.loc14_22.1 [symbolic = %require_complete.loc20_46 (constants.%require_complete.b54)] // CHECK:STDOUT: %require_complete.loc20_22: = require_complete_type %C [symbolic = %require_complete.loc20_22 (constants.%require_complete.e44)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param.loc20: @F.%C (%C), %u.param.loc20: @F.%U.loc14_22.2 (%U)) -> @F.%U.loc14_22.2 (%U) { +// CHECK:STDOUT: fn(%self.param.loc20: @C.F.%C (%C), %u.param.loc20: @C.F.%U.loc14_22.1 (%U)) -> @C.F.%U.loc14_22.1 (%U) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %u.ref: @F.%U.loc14_22.2 (%U) = name_ref u, %u.loc20 +// CHECK:STDOUT: %u.ref: @C.F.%U.loc14_22.1 (%U) = name_ref u, %u.loc20 // CHECK:STDOUT: return %u.ref // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -332,15 +332,15 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; } // CHECK:STDOUT: specific @C(constants.%Self) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %F.type => constants.%F.type -// CHECK:STDOUT: %F => constants.%F +// CHECK:STDOUT: %C.F.type => constants.%C.F.type +// CHECK:STDOUT: %C.F => constants.%C.F // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%Self, constants.%U) { +// CHECK:STDOUT: specific @C.F(constants.%Self, constants.%U) { // CHECK:STDOUT: %Self => constants.%Self // CHECK:STDOUT: %C => constants.%C // CHECK:STDOUT: %pattern_type.loc14_10 => constants.%pattern_type.68b -// CHECK:STDOUT: %U.loc14_22.2 => constants.%U +// CHECK:STDOUT: %U.loc14_22.1 => constants.%U // CHECK:STDOUT: %pattern_type.loc14_32 => constants.%pattern_type.a32 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/fail_todo_generic_default_fn.carbon b/toolchain/check/testdata/interface/fail_todo_generic_default_fn.carbon index 6dca2e63e286..141d54e00180 100644 --- a/toolchain/check/testdata/interface/fail_todo_generic_default_fn.carbon +++ b/toolchain/check/testdata/interface/fail_todo_generic_default_fn.carbon @@ -37,12 +37,12 @@ fn I(T:! type).F[self: Self]() -> Self { return self; } // CHECK:STDOUT: %Self: %I.type.325 = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic] // CHECK:STDOUT: %pattern_type.4be: type = pattern_type %Self.as_type [symbolic] -// CHECK:STDOUT: %F.type.2aef59.1: type = fn_type @F.loc17, @I(%T) [symbolic] -// CHECK:STDOUT: %F.bb2dd4.1: %F.type.2aef59.1 = struct_value () [symbolic] +// CHECK:STDOUT: %I.F.type.2aef59.1: type = fn_type @I.F.loc17, @I(%T) [symbolic] +// CHECK:STDOUT: %I.F.bb2dd4.1: %I.F.type.2aef59.1 = struct_value () [symbolic] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I, @I(%T) [symbolic] -// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%F.decl [symbolic] -// CHECK:STDOUT: %F.type.2aef59.2: type = fn_type @F.loc27, @I(%T) [symbolic] -// CHECK:STDOUT: %F.bb2dd4.2: %F.type.2aef59.2 = struct_value () [symbolic] +// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%I.F.decl [symbolic] +// CHECK:STDOUT: %I.F.type.2aef59.2: type = fn_type @I.F.loc27, @I(%T) [symbolic] +// CHECK:STDOUT: %I.F.bb2dd4.2: %I.F.type.2aef59.2 = struct_value () [symbolic] // CHECK:STDOUT: %require_complete: = require_complete_type %Self.as_type [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -55,27 +55,27 @@ fn I(T:! type).F[self: Self]() -> Self { return self; } // CHECK:STDOUT: } { // CHECK:STDOUT: %T.loc15_13.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc15_13.1 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type.2aef59.2 = fn_decl @F.loc27 [symbolic = constants.%F.bb2dd4.2] { -// CHECK:STDOUT: %self.patt: @F.loc27.%pattern_type (%pattern_type.4be) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.loc27.%pattern_type (%pattern_type.4be) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: @F.loc27.%pattern_type (%pattern_type.4be) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @F.loc27.%pattern_type (%pattern_type.4be) = out_param_pattern %return.patt, call_param1 [concrete] +// CHECK:STDOUT: %I.F.decl: %I.F.type.2aef59.2 = fn_decl @I.F.loc27 [symbolic = constants.%I.F.bb2dd4.2] { +// CHECK:STDOUT: %self.patt: @I.F.loc27.%pattern_type (%pattern_type.4be) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @I.F.loc27.%pattern_type (%pattern_type.4be) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %return.patt: @I.F.loc27.%pattern_type (%pattern_type.4be) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @I.F.loc27.%pattern_type (%pattern_type.4be) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.loc27_6: type = bind_symbolic_name T, 0 [symbolic = @I.%T.loc15_13.1 (constants.%T)] -// CHECK:STDOUT: %.loc27_35.1: @F.loc27.%I.type (%I.type.325) = specific_constant @I.%Self.1, @I(constants.%T) [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.ref.loc27_35: @F.loc27.%I.type (%I.type.325) = name_ref Self, %.loc27_35.1 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %.loc27_35.1: @I.F.loc27.%I.type (%I.type.325) = specific_constant @I.%Self.1, @I(constants.%T) [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %Self.ref.loc27_35: @I.F.loc27.%I.type (%I.type.325) = name_ref Self, %.loc27_35.1 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %Self.as_type.loc27_35: type = facet_access_type %Self.ref.loc27_35 [symbolic = %Self.as_type.loc27_24.1 (constants.%Self.as_type)] // CHECK:STDOUT: %.loc27_35.2: type = converted %Self.ref.loc27_35, %Self.as_type.loc27_35 [symbolic = %Self.as_type.loc27_24.1 (constants.%Self.as_type)] -// CHECK:STDOUT: %self.param: @F.loc27.%Self.as_type.loc27_24.1 (%Self.as_type) = value_param call_param0 +// CHECK:STDOUT: %self.param: @I.F.loc27.%Self.as_type.loc27_24.1 (%Self.as_type) = value_param call_param0 // CHECK:STDOUT: %.loc27_24.1: type = splice_block %.loc27_24.3 [symbolic = %Self.as_type.loc27_24.1 (constants.%Self.as_type)] { -// CHECK:STDOUT: %.loc27_24.2: @F.loc27.%I.type (%I.type.325) = specific_constant @I.%Self.1, @I(constants.%T) [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.ref.loc27_24: @F.loc27.%I.type (%I.type.325) = name_ref Self, %.loc27_24.2 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %.loc27_24.2: @I.F.loc27.%I.type (%I.type.325) = specific_constant @I.%Self.1, @I(constants.%T) [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %Self.ref.loc27_24: @I.F.loc27.%I.type (%I.type.325) = name_ref Self, %.loc27_24.2 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %Self.as_type.loc27_24.2: type = facet_access_type %Self.ref.loc27_24 [symbolic = %Self.as_type.loc27_24.1 (constants.%Self.as_type)] // CHECK:STDOUT: %.loc27_24.3: type = converted %Self.ref.loc27_24, %Self.as_type.loc27_24.2 [symbolic = %Self.as_type.loc27_24.1 (constants.%Self.as_type)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.loc27.%Self.as_type.loc27_24.1 (%Self.as_type) = bind_name self, %self.param -// CHECK:STDOUT: %return.param: ref @F.loc27.%Self.as_type.loc27_24.1 (%Self.as_type) = out_param call_param1 -// CHECK:STDOUT: %return: ref @F.loc27.%Self.as_type.loc27_24.1 (%Self.as_type) = return_slot %return.param +// CHECK:STDOUT: %self: @I.F.loc27.%Self.as_type.loc27_24.1 (%Self.as_type) = bind_name self, %self.param +// CHECK:STDOUT: %return.param: ref @I.F.loc27.%Self.as_type.loc27_24.1 (%Self.as_type) = out_param call_param1 +// CHECK:STDOUT: %return: ref @I.F.loc27.%Self.as_type.loc27_24.1 (%Self.as_type) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -85,66 +85,66 @@ fn I(T:! type).F[self: Self]() -> Self { return self; } // CHECK:STDOUT: !definition: // CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T.loc15_13.1)> [symbolic = %I.type (constants.%I.type.325)] // CHECK:STDOUT: %Self.2: @I.%I.type (%I.type.325) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] -// CHECK:STDOUT: %F.type: type = fn_type @F.loc17, @I(%T.loc15_13.1) [symbolic = %F.type (constants.%F.type.2aef59.1)] -// CHECK:STDOUT: %F: @I.%F.type (%F.type.2aef59.1) = struct_value () [symbolic = %F (constants.%F.bb2dd4.1)] +// CHECK:STDOUT: %I.F.type: type = fn_type @I.F.loc17, @I(%T.loc15_13.1) [symbolic = %I.F.type (constants.%I.F.type.2aef59.1)] +// CHECK:STDOUT: %I.F: @I.%I.F.type (%I.F.type.2aef59.1) = struct_value () [symbolic = %I.F (constants.%I.F.bb2dd4.1)] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I, @I(%T.loc15_13.1) [symbolic = %I.assoc_type (constants.%I.assoc_type)] -// CHECK:STDOUT: %assoc0.loc17_29.2: @I.%I.assoc_type (%I.assoc_type) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc17_29.2 (constants.%assoc0)] +// CHECK:STDOUT: %assoc0.loc17_29.2: @I.%I.assoc_type (%I.assoc_type) = assoc_entity element0, %I.F.decl [symbolic = %assoc0.loc17_29.2 (constants.%assoc0)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: %Self.1: @I.%I.type (%I.type.325) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] -// CHECK:STDOUT: %F.decl: @I.%F.type (%F.type.2aef59.1) = fn_decl @F.loc17 [symbolic = @I.%F (constants.%F.bb2dd4.1)] { -// CHECK:STDOUT: %self.patt: @F.loc17.%pattern_type (%pattern_type.4be) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.loc17.%pattern_type (%pattern_type.4be) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: @F.loc17.%pattern_type (%pattern_type.4be) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @F.loc17.%pattern_type (%pattern_type.4be) = out_param_pattern %return.patt, call_param1 [concrete] +// CHECK:STDOUT: %I.F.decl: @I.%I.F.type (%I.F.type.2aef59.1) = fn_decl @I.F.loc17 [symbolic = @I.%I.F (constants.%I.F.bb2dd4.1)] { +// CHECK:STDOUT: %self.patt: @I.F.loc17.%pattern_type (%pattern_type.4be) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @I.F.loc17.%pattern_type (%pattern_type.4be) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %return.patt: @I.F.loc17.%pattern_type (%pattern_type.4be) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @I.F.loc17.%pattern_type (%pattern_type.4be) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc17_25.1: @F.loc17.%I.type (%I.type.325) = specific_constant @I.%Self.1, @I(constants.%T) [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.ref.loc17_25: @F.loc17.%I.type (%I.type.325) = name_ref Self, %.loc17_25.1 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc17_25: type = facet_access_type %Self.ref.loc17_25 [symbolic = %Self.as_type.loc17_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc17_25.2: type = converted %Self.ref.loc17_25, %Self.as_type.loc17_25 [symbolic = %Self.as_type.loc17_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %self.param: @F.loc17.%Self.as_type.loc17_14.2 (%Self.as_type) = value_param call_param0 -// CHECK:STDOUT: %.loc17_14.1: type = splice_block %.loc17_14.3 [symbolic = %Self.as_type.loc17_14.2 (constants.%Self.as_type)] { -// CHECK:STDOUT: %.loc17_14.2: @F.loc17.%I.type (%I.type.325) = specific_constant @I.%Self.1, @I(constants.%T) [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.ref.loc17_14: @F.loc17.%I.type (%I.type.325) = name_ref Self, %.loc17_14.2 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc17_14.1: type = facet_access_type %Self.ref.loc17_14 [symbolic = %Self.as_type.loc17_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc17_14.3: type = converted %Self.ref.loc17_14, %Self.as_type.loc17_14.1 [symbolic = %Self.as_type.loc17_14.2 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc17_25.1: @I.F.loc17.%I.type (%I.type.325) = specific_constant @I.%Self.1, @I(constants.%T) [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %Self.ref.loc17_25: @I.F.loc17.%I.type (%I.type.325) = name_ref Self, %.loc17_25.1 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %Self.as_type.loc17_25: type = facet_access_type %Self.ref.loc17_25 [symbolic = %Self.as_type.loc17_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc17_25.2: type = converted %Self.ref.loc17_25, %Self.as_type.loc17_25 [symbolic = %Self.as_type.loc17_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %self.param: @I.F.loc17.%Self.as_type.loc17_14.1 (%Self.as_type) = value_param call_param0 +// CHECK:STDOUT: %.loc17_14.1: type = splice_block %.loc17_14.3 [symbolic = %Self.as_type.loc17_14.1 (constants.%Self.as_type)] { +// CHECK:STDOUT: %.loc17_14.2: @I.F.loc17.%I.type (%I.type.325) = specific_constant @I.%Self.1, @I(constants.%T) [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %Self.ref.loc17_14: @I.F.loc17.%I.type (%I.type.325) = name_ref Self, %.loc17_14.2 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %Self.as_type.loc17_14.2: type = facet_access_type %Self.ref.loc17_14 [symbolic = %Self.as_type.loc17_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc17_14.3: type = converted %Self.ref.loc17_14, %Self.as_type.loc17_14.2 [symbolic = %Self.as_type.loc17_14.1 (constants.%Self.as_type)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.loc17.%Self.as_type.loc17_14.2 (%Self.as_type) = bind_name self, %self.param -// CHECK:STDOUT: %return.param: ref @F.loc17.%Self.as_type.loc17_14.2 (%Self.as_type) = out_param call_param1 -// CHECK:STDOUT: %return: ref @F.loc17.%Self.as_type.loc17_14.2 (%Self.as_type) = return_slot %return.param +// CHECK:STDOUT: %self: @I.F.loc17.%Self.as_type.loc17_14.1 (%Self.as_type) = bind_name self, %self.param +// CHECK:STDOUT: %return.param: ref @I.F.loc17.%Self.as_type.loc17_14.1 (%Self.as_type) = out_param call_param1 +// CHECK:STDOUT: %return: ref @I.F.loc17.%Self.as_type.loc17_14.1 (%Self.as_type) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0.loc17_29.1: @I.%I.assoc_type (%I.assoc_type) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc17_29.2 (constants.%assoc0)] +// CHECK:STDOUT: %assoc0.loc17_29.1: @I.%I.assoc_type (%I.assoc_type) = assoc_entity element0, %I.F.decl [symbolic = %assoc0.loc17_29.2 (constants.%assoc0)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 // CHECK:STDOUT: .F = %assoc0.loc17_29.1 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%I.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc17(@I.%T.loc15_13.2: type, @I.%Self.1: @I.%I.type (%I.type.325)) { +// CHECK:STDOUT: generic fn @I.F.loc17(@I.%T.loc15_13.2: type, @I.%Self.1: @I.%I.type (%I.type.325)) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T)> [symbolic = %I.type (constants.%I.type.325)] -// CHECK:STDOUT: %Self: @F.loc17.%I.type (%I.type.325) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc17_14.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc17_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc17_14.2 [symbolic = %pattern_type (constants.%pattern_type.4be)] +// CHECK:STDOUT: %Self: @I.F.loc17.%I.type (%I.type.325) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %Self.as_type.loc17_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc17_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc17_14.1 [symbolic = %pattern_type (constants.%pattern_type.4be)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @F.loc17.%Self.as_type.loc17_14.2 (%Self.as_type)) -> @F.loc17.%Self.as_type.loc17_14.2 (%Self.as_type); +// CHECK:STDOUT: fn(%self.param: @I.F.loc17.%Self.as_type.loc17_14.1 (%Self.as_type)) -> @I.F.loc17.%Self.as_type.loc17_14.1 (%Self.as_type); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc27(%T.loc27_6: type, @I.%Self.1: @I.%I.type (%I.type.325)) { +// CHECK:STDOUT: generic fn @I.F.loc27(%T.loc27_6: type, @I.%Self.1: @I.%I.type (%I.type.325)) { // CHECK:STDOUT: %T.loc27_24: type = bind_symbolic_name T, 0 [symbolic = %T.loc27_24 (constants.%T)] // CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T.loc27_24)> [symbolic = %I.type (constants.%I.type.325)] -// CHECK:STDOUT: %Self: @F.loc27.%I.type (%I.type.325) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %Self: @I.F.loc27.%I.type (%I.type.325) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %Self.as_type.loc27_24.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc27_24.1 (constants.%Self.as_type)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc27_24.1 [symbolic = %pattern_type (constants.%pattern_type.4be)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %Self.as_type.loc27_24.1 [symbolic = %require_complete (constants.%require_complete)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @F.loc27.%Self.as_type.loc27_24.1 (%Self.as_type)) -> @F.loc27.%Self.as_type.loc27_24.1 (%Self.as_type) { +// CHECK:STDOUT: fn(%self.param: @I.F.loc27.%Self.as_type.loc27_24.1 (%Self.as_type)) -> @I.F.loc27.%Self.as_type.loc27_24.1 (%Self.as_type) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %self.ref: @F.loc27.%Self.as_type.loc27_24.1 (%Self.as_type) = name_ref self, %self +// CHECK:STDOUT: %self.ref: @I.F.loc27.%Self.as_type.loc27_24.1 (%Self.as_type) = name_ref self, %self // CHECK:STDOUT: return %self.ref // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -155,21 +155,21 @@ fn I(T:! type).F[self: Self]() -> Self { return self; } // CHECK:STDOUT: !definition: // CHECK:STDOUT: %I.type => constants.%I.type.325 // CHECK:STDOUT: %Self.2 => constants.%Self -// CHECK:STDOUT: %F.type => constants.%F.type.2aef59.1 -// CHECK:STDOUT: %F => constants.%F.bb2dd4.1 +// CHECK:STDOUT: %I.F.type => constants.%I.F.type.2aef59.1 +// CHECK:STDOUT: %I.F => constants.%I.F.bb2dd4.1 // CHECK:STDOUT: %I.assoc_type => constants.%I.assoc_type // CHECK:STDOUT: %assoc0.loc17_29.2 => constants.%assoc0 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc17(constants.%T, constants.%Self) { +// CHECK:STDOUT: specific @I.F.loc17(constants.%T, constants.%Self) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %I.type => constants.%I.type.325 // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %Self.as_type.loc17_14.2 => constants.%Self.as_type +// CHECK:STDOUT: %Self.as_type.loc17_14.1 => constants.%Self.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.4be // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc27(constants.%T, constants.%Self) { +// CHECK:STDOUT: specific @I.F.loc27(constants.%T, constants.%Self) { // CHECK:STDOUT: %T.loc27_24 => constants.%T // CHECK:STDOUT: %I.type => constants.%I.type.325 // CHECK:STDOUT: %Self => constants.%Self diff --git a/toolchain/check/testdata/interface/fail_todo_modifiers.carbon b/toolchain/check/testdata/interface/fail_todo_modifiers.carbon index bd815758bc45..885ca200f877 100644 --- a/toolchain/check/testdata/interface/fail_todo_modifiers.carbon +++ b/toolchain/check/testdata/interface/fail_todo_modifiers.carbon @@ -30,13 +30,13 @@ interface Modifiers { // CHECK:STDOUT: constants { // CHECK:STDOUT: %Modifiers.type: type = facet_type <@Modifiers> [concrete] // CHECK:STDOUT: %Self: %Modifiers.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %Final.type: type = fn_type @Final [concrete] -// CHECK:STDOUT: %Final: %Final.type = struct_value () [concrete] +// CHECK:STDOUT: %Modifiers.Final.type: type = fn_type @Modifiers.Final [concrete] +// CHECK:STDOUT: %Modifiers.Final: %Modifiers.Final.type = struct_value () [concrete] // CHECK:STDOUT: %Modifiers.assoc_type: type = assoc_entity_type @Modifiers [concrete] -// CHECK:STDOUT: %assoc0: %Modifiers.assoc_type = assoc_entity element0, @Modifiers.%Final.decl [concrete] -// CHECK:STDOUT: %Default.type: type = fn_type @Default [concrete] -// CHECK:STDOUT: %Default: %Default.type = struct_value () [concrete] -// CHECK:STDOUT: %assoc1: %Modifiers.assoc_type = assoc_entity element1, @Modifiers.%Default.decl [concrete] +// CHECK:STDOUT: %assoc0: %Modifiers.assoc_type = assoc_entity element0, @Modifiers.%Modifiers.Final.decl [concrete] +// CHECK:STDOUT: %Modifiers.Default.type: type = fn_type @Modifiers.Default [concrete] +// CHECK:STDOUT: %Modifiers.Default: %Modifiers.Default.type = struct_value () [concrete] +// CHECK:STDOUT: %assoc1: %Modifiers.assoc_type = assoc_entity element1, @Modifiers.%Modifiers.Default.decl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -48,19 +48,19 @@ interface Modifiers { // CHECK:STDOUT: // CHECK:STDOUT: interface @Modifiers { // CHECK:STDOUT: %Self: %Modifiers.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %Final.decl: %Final.type = fn_decl @Final [concrete = constants.%Final] {} {} -// CHECK:STDOUT: %assoc0: %Modifiers.assoc_type = assoc_entity element0, %Final.decl [concrete = constants.%assoc0] -// CHECK:STDOUT: %Default.decl: %Default.type = fn_decl @Default [concrete = constants.%Default] {} {} -// CHECK:STDOUT: %assoc1: %Modifiers.assoc_type = assoc_entity element1, %Default.decl [concrete = constants.%assoc1] +// CHECK:STDOUT: %Modifiers.Final.decl: %Modifiers.Final.type = fn_decl @Modifiers.Final [concrete = constants.%Modifiers.Final] {} {} +// CHECK:STDOUT: %assoc0: %Modifiers.assoc_type = assoc_entity element0, %Modifiers.Final.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %Modifiers.Default.decl: %Modifiers.Default.type = fn_decl @Modifiers.Default [concrete = constants.%Modifiers.Default] {} {} +// CHECK:STDOUT: %assoc1: %Modifiers.assoc_type = assoc_entity element1, %Modifiers.Default.decl [concrete = constants.%assoc1] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .Final = %assoc0 // CHECK:STDOUT: .Default = %assoc1 -// CHECK:STDOUT: witness = (%Final.decl, %Default.decl) +// CHECK:STDOUT: witness = (%Modifiers.Final.decl, %Modifiers.Default.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Final(@Modifiers.%Self: %Modifiers.type) { +// CHECK:STDOUT: generic fn @Modifiers.Final(@Modifiers.%Self: %Modifiers.type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: fn() { @@ -69,7 +69,7 @@ interface Modifiers { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Default(@Modifiers.%Self: %Modifiers.type) { +// CHECK:STDOUT: generic fn @Modifiers.Default(@Modifiers.%Self: %Modifiers.type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: fn() { @@ -78,7 +78,7 @@ interface Modifiers { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Final(constants.%Self) {} +// CHECK:STDOUT: specific @Modifiers.Final(constants.%Self) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @Default(constants.%Self) {} +// CHECK:STDOUT: specific @Modifiers.Default(constants.%Self) {} // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/generic.carbon b/toolchain/check/testdata/interface/generic.carbon index 59f05af5bc47..cb8a93c1ea36 100644 --- a/toolchain/check/testdata/interface/generic.carbon +++ b/toolchain/check/testdata/interface/generic.carbon @@ -80,23 +80,23 @@ fn G(T:! Generic(B)) { // CHECK:STDOUT: %WithAssocFn.type.ce6: type = facet_type <@WithAssocFn, @WithAssocFn(%T.8b3)> [symbolic] // CHECK:STDOUT: %Self.088: %WithAssocFn.type.ce6 = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %pattern_type.019: type = pattern_type %X [concrete] -// CHECK:STDOUT: %F.type.1af: type = fn_type @F.loc10, @WithAssocFn(%T.8b3) [symbolic] -// CHECK:STDOUT: %F.b7d: %F.type.1af = struct_value () [symbolic] +// CHECK:STDOUT: %WithAssocFn.F.type.1af: type = fn_type @WithAssocFn.F, @WithAssocFn(%T.8b3) [symbolic] +// CHECK:STDOUT: %WithAssocFn.F.b7d: %WithAssocFn.F.type.1af = struct_value () [symbolic] // CHECK:STDOUT: %WithAssocFn.assoc_type.b2f: type = assoc_entity_type @WithAssocFn, @WithAssocFn(%T.8b3) [symbolic] -// CHECK:STDOUT: %assoc0.fc5: %WithAssocFn.assoc_type.b2f = assoc_entity element0, @WithAssocFn.%F.decl [symbolic] +// CHECK:STDOUT: %assoc0.fc5: %WithAssocFn.assoc_type.b2f = assoc_entity element0, @WithAssocFn.%WithAssocFn.F.decl [symbolic] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %Simple.type.51f: type = facet_type <@Simple, @Simple(%C)> [concrete] // CHECK:STDOUT: %Self.21f: %Simple.type.51f = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %Simple.impl_witness: = impl_witness @C.%Simple.impl_witness_table [concrete] // CHECK:STDOUT: %WithAssocFn.type.683: type = facet_type <@WithAssocFn, @WithAssocFn(%C)> [concrete] // CHECK:STDOUT: %Self.7ae: %WithAssocFn.type.683 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %F.type.18c: type = fn_type @F.loc10, @WithAssocFn(%C) [concrete] -// CHECK:STDOUT: %F.e46: %F.type.18c = struct_value () [concrete] +// CHECK:STDOUT: %WithAssocFn.F.type.18c: type = fn_type @WithAssocFn.F, @WithAssocFn(%C) [concrete] +// CHECK:STDOUT: %WithAssocFn.F.e46: %WithAssocFn.F.type.18c = struct_value () [concrete] // CHECK:STDOUT: %WithAssocFn.assoc_type.9ea: type = assoc_entity_type @WithAssocFn, @WithAssocFn(%C) [concrete] -// CHECK:STDOUT: %assoc0.cad: %WithAssocFn.assoc_type.9ea = assoc_entity element0, @WithAssocFn.%F.decl [concrete] +// CHECK:STDOUT: %assoc0.cad: %WithAssocFn.assoc_type.9ea = assoc_entity element0, @WithAssocFn.%WithAssocFn.F.decl [concrete] // CHECK:STDOUT: %WithAssocFn.impl_witness: = impl_witness @C.%WithAssocFn.impl_witness_table [concrete] -// CHECK:STDOUT: %F.type.005: type = fn_type @F.loc16 [concrete] -// CHECK:STDOUT: %F.317: %F.type.005 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.WithAssocFn.impl.F.type: type = fn_type @C.as.WithAssocFn.impl.F [concrete] +// CHECK:STDOUT: %C.as.WithAssocFn.impl.F: %C.as.WithAssocFn.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %WithAssocFn.facet: %WithAssocFn.type.683 = facet_value %C, (%WithAssocFn.impl_witness) [concrete] // CHECK:STDOUT: %X.val: %X = struct_value () [concrete] // CHECK:STDOUT: %N: %T.8b3 = bind_symbolic_name N, 1 [symbolic] @@ -186,14 +186,14 @@ fn G(T:! Generic(B)) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %WithAssocFn.type: type = facet_type <@WithAssocFn, @WithAssocFn(%T.loc8_23.1)> [symbolic = %WithAssocFn.type (constants.%WithAssocFn.type.ce6)] // CHECK:STDOUT: %Self.2: @WithAssocFn.%WithAssocFn.type (%WithAssocFn.type.ce6) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.088)] -// CHECK:STDOUT: %F.type: type = fn_type @F.loc10, @WithAssocFn(%T.loc8_23.1) [symbolic = %F.type (constants.%F.type.1af)] -// CHECK:STDOUT: %F: @WithAssocFn.%F.type (%F.type.1af) = struct_value () [symbolic = %F (constants.%F.b7d)] +// CHECK:STDOUT: %WithAssocFn.F.type: type = fn_type @WithAssocFn.F, @WithAssocFn(%T.loc8_23.1) [symbolic = %WithAssocFn.F.type (constants.%WithAssocFn.F.type.1af)] +// CHECK:STDOUT: %WithAssocFn.F: @WithAssocFn.%WithAssocFn.F.type (%WithAssocFn.F.type.1af) = struct_value () [symbolic = %WithAssocFn.F (constants.%WithAssocFn.F.b7d)] // CHECK:STDOUT: %WithAssocFn.assoc_type: type = assoc_entity_type @WithAssocFn, @WithAssocFn(%T.loc8_23.1) [symbolic = %WithAssocFn.assoc_type (constants.%WithAssocFn.assoc_type.b2f)] -// CHECK:STDOUT: %assoc0.loc10_14.2: @WithAssocFn.%WithAssocFn.assoc_type (%WithAssocFn.assoc_type.b2f) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc10_14.2 (constants.%assoc0.fc5)] +// CHECK:STDOUT: %assoc0.loc10_14.2: @WithAssocFn.%WithAssocFn.assoc_type (%WithAssocFn.assoc_type.b2f) = assoc_entity element0, %WithAssocFn.F.decl [symbolic = %assoc0.loc10_14.2 (constants.%assoc0.fc5)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: %Self.1: @WithAssocFn.%WithAssocFn.type (%WithAssocFn.type.ce6) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.088)] -// CHECK:STDOUT: %F.decl: @WithAssocFn.%F.type (%F.type.1af) = fn_decl @F.loc10 [symbolic = @WithAssocFn.%F (constants.%F.b7d)] { +// CHECK:STDOUT: %WithAssocFn.F.decl: @WithAssocFn.%WithAssocFn.F.type (%WithAssocFn.F.type.1af) = fn_decl @WithAssocFn.F [symbolic = @WithAssocFn.%WithAssocFn.F (constants.%WithAssocFn.F.b7d)] { // CHECK:STDOUT: %return.patt: %pattern_type.019 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.019 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -201,13 +201,13 @@ fn G(T:! Generic(B)) { // CHECK:STDOUT: %return.param: ref %X = out_param call_param0 // CHECK:STDOUT: %return: ref %X = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0.loc10_14.1: @WithAssocFn.%WithAssocFn.assoc_type (%WithAssocFn.assoc_type.b2f) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc10_14.2 (constants.%assoc0.fc5)] +// CHECK:STDOUT: %assoc0.loc10_14.1: @WithAssocFn.%WithAssocFn.assoc_type (%WithAssocFn.assoc_type.b2f) = assoc_entity element0, %WithAssocFn.F.decl [symbolic = %assoc0.loc10_14.2 (constants.%assoc0.fc5)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 // CHECK:STDOUT: .X = // CHECK:STDOUT: .F = %assoc0.loc10_14.1 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%WithAssocFn.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -219,13 +219,13 @@ fn G(T:! Generic(B)) { // CHECK:STDOUT: interface; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Simple.impl: %Self.ref as %Simple.type { +// CHECK:STDOUT: impl @C.as.Simple.impl: %Self.ref as %Simple.type { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = @C.%Simple.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @WithAssocFn.impl: %Self.ref as %WithAssocFn.type { -// CHECK:STDOUT: %F.decl: %F.type.005 = fn_decl @F.loc16 [concrete = constants.%F.317] { +// CHECK:STDOUT: impl @C.as.WithAssocFn.impl: %Self.ref as %WithAssocFn.type { +// CHECK:STDOUT: %C.as.WithAssocFn.impl.F.decl: %C.as.WithAssocFn.impl.F.type = fn_decl @C.as.WithAssocFn.impl.F [concrete = constants.%C.as.WithAssocFn.impl.F] { // CHECK:STDOUT: %return.patt: %pattern_type.019 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.019 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -236,7 +236,7 @@ fn G(T:! Generic(B)) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .X = -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %C.as.WithAssocFn.impl.F.decl // CHECK:STDOUT: witness = @C.%WithAssocFn.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: @@ -250,21 +250,21 @@ fn G(T:! Generic(B)) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: impl_decl @Simple.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.Simple.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] // CHECK:STDOUT: %Simple.ref: %Simple.type.3b3 = name_ref Simple, file.%Simple.decl [concrete = constants.%Simple.generic] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %Simple.type: type = facet_type <@Simple, @Simple(constants.%C)> [concrete = constants.%Simple.type.51f] // CHECK:STDOUT: } -// CHECK:STDOUT: %Simple.impl_witness_table = impl_witness_table (), @Simple.impl [concrete] +// CHECK:STDOUT: %Simple.impl_witness_table = impl_witness_table (), @C.as.Simple.impl [concrete] // CHECK:STDOUT: %Simple.impl_witness: = impl_witness %Simple.impl_witness_table [concrete = constants.%Simple.impl_witness] -// CHECK:STDOUT: impl_decl @WithAssocFn.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.WithAssocFn.impl [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] // CHECK:STDOUT: %WithAssocFn.ref: %WithAssocFn.type.509 = name_ref WithAssocFn, file.%WithAssocFn.decl [concrete = constants.%WithAssocFn.generic] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %WithAssocFn.type: type = facet_type <@WithAssocFn, @WithAssocFn(constants.%C)> [concrete = constants.%WithAssocFn.type.683] // CHECK:STDOUT: } -// CHECK:STDOUT: %WithAssocFn.impl_witness_table = impl_witness_table (@WithAssocFn.impl.%F.decl), @WithAssocFn.impl [concrete] +// CHECK:STDOUT: %WithAssocFn.impl_witness_table = impl_witness_table (@C.as.WithAssocFn.impl.%C.as.WithAssocFn.impl.F.decl), @C.as.WithAssocFn.impl [concrete] // CHECK:STDOUT: %WithAssocFn.impl_witness: = impl_witness %WithAssocFn.impl_witness_table [concrete = constants.%WithAssocFn.impl_witness] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] @@ -278,11 +278,11 @@ fn G(T:! Generic(B)) { // CHECK:STDOUT: .X = // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc10(@WithAssocFn.%T.loc8_23.2: type, @WithAssocFn.%Self.1: @WithAssocFn.%WithAssocFn.type (%WithAssocFn.type.ce6)) { +// CHECK:STDOUT: generic fn @WithAssocFn.F(@WithAssocFn.%T.loc8_23.2: type, @WithAssocFn.%Self.1: @WithAssocFn.%WithAssocFn.type (%WithAssocFn.type.ce6)) { // CHECK:STDOUT: fn() -> %return.param: %X; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc16() -> %return.param: %X { +// CHECK:STDOUT: fn @C.as.WithAssocFn.impl.F() -> %return.param: %X { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %.loc17_15.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc17_15.2: init %X = class_init (), %return [concrete = constants.%X.val] @@ -325,7 +325,7 @@ fn G(T:! Generic(B)) { // CHECK:STDOUT: %T.loc8_23.1 => constants.%T.8b3 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc10(constants.%T.8b3, constants.%Self.088) {} +// CHECK:STDOUT: specific @WithAssocFn.F(constants.%T.8b3, constants.%Self.088) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @Simple(constants.%C) { // CHECK:STDOUT: %T.loc4_18.1 => constants.%C @@ -341,13 +341,13 @@ fn G(T:! Generic(B)) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %WithAssocFn.type => constants.%WithAssocFn.type.683 // CHECK:STDOUT: %Self.2 => constants.%Self.7ae -// CHECK:STDOUT: %F.type => constants.%F.type.18c -// CHECK:STDOUT: %F => constants.%F.e46 +// CHECK:STDOUT: %WithAssocFn.F.type => constants.%WithAssocFn.F.type.18c +// CHECK:STDOUT: %WithAssocFn.F => constants.%WithAssocFn.F.e46 // CHECK:STDOUT: %WithAssocFn.assoc_type => constants.%WithAssocFn.assoc_type.9ea // CHECK:STDOUT: %assoc0.loc10_14.2 => constants.%assoc0.cad // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc10(constants.%C, constants.%WithAssocFn.facet) {} +// CHECK:STDOUT: specific @WithAssocFn.F(constants.%C, constants.%WithAssocFn.facet) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @WithImplicitArgs(constants.%T.8b3, constants.%N) { // CHECK:STDOUT: %T.loc22_28.1 => constants.%T.8b3 diff --git a/toolchain/check/testdata/interface/generic_binding_after_assoc_const.carbon b/toolchain/check/testdata/interface/generic_binding_after_assoc_const.carbon index dd20c3aa3b4a..d37e9dc2e6fd 100644 --- a/toolchain/check/testdata/interface/generic_binding_after_assoc_const.carbon +++ b/toolchain/check/testdata/interface/generic_binding_after_assoc_const.carbon @@ -27,14 +27,14 @@ interface I { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 1 [symbolic] // CHECK:STDOUT: %pattern_type: type = pattern_type type [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %I.F.type: type = fn_type @I.F [concrete] +// CHECK:STDOUT: %I.F: %I.F.type = struct_value () [concrete] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] -// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%F.decl [concrete] +// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%I.F.decl [concrete] // CHECK:STDOUT: %assoc1: %I.assoc_type = assoc_entity element1, @I.%U [concrete] -// CHECK:STDOUT: %G.type: type = fn_type @G [concrete] -// CHECK:STDOUT: %G: %G.type = struct_value () [concrete] -// CHECK:STDOUT: %assoc2: %I.assoc_type = assoc_entity element2, @I.%G.decl [concrete] +// CHECK:STDOUT: %I.G.type: type = fn_type @I.G [concrete] +// CHECK:STDOUT: %I.G: %I.G.type = struct_value () [concrete] +// CHECK:STDOUT: %assoc2: %I.assoc_type = assoc_entity element2, @I.%I.G.decl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -46,53 +46,53 @@ interface I { // CHECK:STDOUT: // CHECK:STDOUT: interface @I { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { +// CHECK:STDOUT: %I.F.decl: %I.F.type = fn_decl @I.F [concrete = constants.%I.F] { // CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.loc16_8.1: type = bind_symbolic_name T, 1 [symbolic = %T.loc16_8.2 (constants.%T)] +// CHECK:STDOUT: %T.loc16_8.2: type = bind_symbolic_name T, 1 [symbolic = %T.loc16_8.1 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %I.F.decl [concrete = constants.%assoc0] // CHECK:STDOUT: %U: type = assoc_const_decl @U [concrete] { // CHECK:STDOUT: %assoc1: %I.assoc_type = assoc_entity element1, @I.%U [concrete = constants.%assoc1] // CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { +// CHECK:STDOUT: %I.G.decl: %I.G.type = fn_decl @I.G [concrete = constants.%I.G] { // CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.loc20_8.1: type = bind_symbolic_name T, 1 [symbolic = %T.loc20_8.2 (constants.%T)] +// CHECK:STDOUT: %T.loc20_8.2: type = bind_symbolic_name T, 1 [symbolic = %T.loc20_8.1 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc2: %I.assoc_type = assoc_entity element2, %G.decl [concrete = constants.%assoc2] +// CHECK:STDOUT: %assoc2: %I.assoc_type = assoc_entity element2, %I.G.decl [concrete = constants.%assoc2] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F = %assoc0 // CHECK:STDOUT: .U = @U.%assoc1 // CHECK:STDOUT: .G = %assoc2 -// CHECK:STDOUT: witness = (%F.decl, %U, %G.decl) +// CHECK:STDOUT: witness = (%I.F.decl, %U, %I.G.decl) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic assoc_const @U(@I.%Self: %I.type) { // CHECK:STDOUT: assoc_const U:! type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(@I.%Self: %I.type, %T.loc16_8.1: type) { -// CHECK:STDOUT: %T.loc16_8.2: type = bind_symbolic_name T, 1 [symbolic = %T.loc16_8.2 (constants.%T)] +// CHECK:STDOUT: generic fn @I.F(@I.%Self: %I.type, %T.loc16_8.2: type) { +// CHECK:STDOUT: %T.loc16_8.1: type = bind_symbolic_name T, 1 [symbolic = %T.loc16_8.1 (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @G(@I.%Self: %I.type, %T.loc20_8.1: type) { -// CHECK:STDOUT: %T.loc20_8.2: type = bind_symbolic_name T, 1 [symbolic = %T.loc20_8.2 (constants.%T)] +// CHECK:STDOUT: generic fn @I.G(@I.%Self: %I.type, %T.loc20_8.2: type) { +// CHECK:STDOUT: %T.loc20_8.1: type = bind_symbolic_name T, 1 [symbolic = %T.loc20_8.1 (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%Self, constants.%T) { -// CHECK:STDOUT: %T.loc16_8.2 => constants.%T +// CHECK:STDOUT: specific @I.F(constants.%Self, constants.%T) { +// CHECK:STDOUT: %T.loc16_8.1 => constants.%T // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @U(constants.%Self) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @G(constants.%Self, constants.%T) { -// CHECK:STDOUT: %T.loc20_8.2 => constants.%T +// CHECK:STDOUT: specific @I.G(constants.%Self, constants.%T) { +// CHECK:STDOUT: %T.loc20_8.1 => constants.%T // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/generic_import.carbon b/toolchain/check/testdata/interface/generic_import.carbon index 0377d1419c60..f9287b1cdc56 100644 --- a/toolchain/check/testdata/interface/generic_import.carbon +++ b/toolchain/check/testdata/interface/generic_import.carbon @@ -40,10 +40,10 @@ impl C as AddWith(C) { // CHECK:STDOUT: %AddWith.generic: %AddWith.type.b35 = struct_value () [concrete] // CHECK:STDOUT: %AddWith.type.bc7: type = facet_type <@AddWith, @AddWith(%T)> [symbolic] // CHECK:STDOUT: %Self: %AddWith.type.bc7 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %F.type: type = fn_type @F, @AddWith(%T) [symbolic] -// CHECK:STDOUT: %F: %F.type = struct_value () [symbolic] +// CHECK:STDOUT: %AddWith.F.type: type = fn_type @AddWith.F, @AddWith(%T) [symbolic] +// CHECK:STDOUT: %AddWith.F: %AddWith.F.type = struct_value () [symbolic] // CHECK:STDOUT: %AddWith.assoc_type: type = assoc_entity_type @AddWith, @AddWith(%T) [symbolic] -// CHECK:STDOUT: %assoc0: %AddWith.assoc_type = assoc_entity element0, @AddWith.%F.decl [symbolic] +// CHECK:STDOUT: %assoc0: %AddWith.assoc_type = assoc_entity element0, @AddWith.%AddWith.F.decl [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -63,24 +63,24 @@ impl C as AddWith(C) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %AddWith.type: type = facet_type <@AddWith, @AddWith(%T.loc4_19.1)> [symbolic = %AddWith.type (constants.%AddWith.type.bc7)] // CHECK:STDOUT: %Self.2: @AddWith.%AddWith.type (%AddWith.type.bc7) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] -// CHECK:STDOUT: %F.type: type = fn_type @F, @AddWith(%T.loc4_19.1) [symbolic = %F.type (constants.%F.type)] -// CHECK:STDOUT: %F: @AddWith.%F.type (%F.type) = struct_value () [symbolic = %F (constants.%F)] +// CHECK:STDOUT: %AddWith.F.type: type = fn_type @AddWith.F, @AddWith(%T.loc4_19.1) [symbolic = %AddWith.F.type (constants.%AddWith.F.type)] +// CHECK:STDOUT: %AddWith.F: @AddWith.%AddWith.F.type (%AddWith.F.type) = struct_value () [symbolic = %AddWith.F (constants.%AddWith.F)] // CHECK:STDOUT: %AddWith.assoc_type: type = assoc_entity_type @AddWith, @AddWith(%T.loc4_19.1) [symbolic = %AddWith.assoc_type (constants.%AddWith.assoc_type)] -// CHECK:STDOUT: %assoc0.loc5_9.2: @AddWith.%AddWith.assoc_type (%AddWith.assoc_type) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc5_9.2 (constants.%assoc0)] +// CHECK:STDOUT: %assoc0.loc5_9.2: @AddWith.%AddWith.assoc_type (%AddWith.assoc_type) = assoc_entity element0, %AddWith.F.decl [symbolic = %assoc0.loc5_9.2 (constants.%assoc0)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: %Self.1: @AddWith.%AddWith.type (%AddWith.type.bc7) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] -// CHECK:STDOUT: %F.decl: @AddWith.%F.type (%F.type) = fn_decl @F [symbolic = @AddWith.%F (constants.%F)] {} {} -// CHECK:STDOUT: %assoc0.loc5_9.1: @AddWith.%AddWith.assoc_type (%AddWith.assoc_type) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc5_9.2 (constants.%assoc0)] +// CHECK:STDOUT: %AddWith.F.decl: @AddWith.%AddWith.F.type (%AddWith.F.type) = fn_decl @AddWith.F [symbolic = @AddWith.%AddWith.F (constants.%AddWith.F)] {} {} +// CHECK:STDOUT: %assoc0.loc5_9.1: @AddWith.%AddWith.assoc_type (%AddWith.assoc_type) = assoc_entity element0, %AddWith.F.decl [symbolic = %assoc0.loc5_9.2 (constants.%assoc0)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 // CHECK:STDOUT: .F = %assoc0.loc5_9.1 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%AddWith.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(@AddWith.%T.loc4_19.2: type, @AddWith.%Self.1: @AddWith.%AddWith.type (%AddWith.type.bc7)) { +// CHECK:STDOUT: generic fn @AddWith.F(@AddWith.%T.loc4_19.2: type, @AddWith.%Self.1: @AddWith.%AddWith.type (%AddWith.type.bc7)) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: @@ -88,7 +88,7 @@ impl C as AddWith(C) { // CHECK:STDOUT: %T.loc4_19.1 => constants.%T // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%T, constants.%Self) {} +// CHECK:STDOUT: specific @AddWith.F(constants.%T, constants.%Self) {} // CHECK:STDOUT: // CHECK:STDOUT: --- b.carbon // CHECK:STDOUT: @@ -101,19 +101,19 @@ impl C as AddWith(C) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %AddWith.type.bc7: type = facet_type <@AddWith, @AddWith(%T)> [symbolic] // CHECK:STDOUT: %Self.deb: %AddWith.type.bc7 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %F.type.fbc: type = fn_type @F.1, @AddWith(%T) [symbolic] -// CHECK:STDOUT: %F.be3: %F.type.fbc = struct_value () [symbolic] +// CHECK:STDOUT: %AddWith.F.type.fbc: type = fn_type @AddWith.F, @AddWith(%T) [symbolic] +// CHECK:STDOUT: %AddWith.F.be3: %AddWith.F.type.fbc = struct_value () [symbolic] // CHECK:STDOUT: %AddWith.assoc_type.36e: type = assoc_entity_type @AddWith, @AddWith(%T) [symbolic] // CHECK:STDOUT: %assoc0.6a8: %AddWith.assoc_type.36e = assoc_entity element0, imports.%Main.import_ref.0c5 [symbolic] // CHECK:STDOUT: %AddWith.type.e8e: type = facet_type <@AddWith, @AddWith(%C)> [concrete] // CHECK:STDOUT: %Self.fbb: %AddWith.type.e8e = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %F.type.cd2: type = fn_type @F.1, @AddWith(%C) [concrete] -// CHECK:STDOUT: %F.b58: %F.type.cd2 = struct_value () [concrete] +// CHECK:STDOUT: %AddWith.F.type.cd2: type = fn_type @AddWith.F, @AddWith(%C) [concrete] +// CHECK:STDOUT: %AddWith.F.b58: %AddWith.F.type.cd2 = struct_value () [concrete] // CHECK:STDOUT: %AddWith.assoc_type.3f0: type = assoc_entity_type @AddWith, @AddWith(%C) [concrete] // CHECK:STDOUT: %assoc0.730: %AddWith.assoc_type.3f0 = assoc_entity element0, imports.%Main.import_ref.0c5 [concrete] // CHECK:STDOUT: %AddWith.impl_witness: = impl_witness file.%AddWith.impl_witness_table [concrete] -// CHECK:STDOUT: %F.type.c09: type = fn_type @F.loc8 [concrete] -// CHECK:STDOUT: %F.e62: %F.type.c09 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.AddWith.impl.F.type: type = fn_type @C.as.AddWith.impl.F [concrete] +// CHECK:STDOUT: %C.as.AddWith.impl.F: %C.as.AddWith.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %AddWith.facet: %AddWith.type.e8e = facet_value %C, (%AddWith.impl_witness) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -122,7 +122,7 @@ impl C as AddWith(C) { // CHECK:STDOUT: %Main.import_ref.5ab3ec.1: type = import_ref Main//a, loc4_19, loaded [symbolic = @AddWith.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.476 = import_ref Main//a, inst25 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.c77 = import_ref Main//a, loc5_9, unloaded -// CHECK:STDOUT: %Main.F: @AddWith.%F.type (%F.type.fbc) = import_ref Main//a, F, loaded [symbolic = @AddWith.%F (constants.%F.be3)] +// CHECK:STDOUT: %Main.F: @AddWith.%AddWith.F.type (%AddWith.F.type.fbc) = import_ref Main//a, F, loaded [symbolic = @AddWith.%AddWith.F (constants.%AddWith.F.be3)] // CHECK:STDOUT: %Main.import_ref.5ab3ec.2: type = import_ref Main//a, loc4_19, loaded [symbolic = @AddWith.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.5a4: @AddWith.%AddWith.type (%AddWith.type.bc7) = import_ref Main//a, inst25 [no loc], loaded [symbolic = @AddWith.%Self (constants.%Self.deb)] // CHECK:STDOUT: %Main.import_ref.0c5 = import_ref Main//a, loc5_9, unloaded @@ -135,13 +135,13 @@ impl C as AddWith(C) { // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} -// CHECK:STDOUT: impl_decl @AddWith.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.AddWith.impl [concrete] {} { // CHECK:STDOUT: %C.ref.loc7_6: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %AddWith.ref: %AddWith.type.b35 = name_ref AddWith, imports.%Main.AddWith [concrete = constants.%AddWith.generic] // CHECK:STDOUT: %C.ref.loc7_19: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %AddWith.type: type = facet_type <@AddWith, @AddWith(constants.%C)> [concrete = constants.%AddWith.type.e8e] // CHECK:STDOUT: } -// CHECK:STDOUT: %AddWith.impl_witness_table = impl_witness_table (@AddWith.impl.%F.decl), @AddWith.impl [concrete] +// CHECK:STDOUT: %AddWith.impl_witness_table = impl_witness_table (@C.as.AddWith.impl.%C.as.AddWith.impl.F.decl), @C.as.AddWith.impl [concrete] // CHECK:STDOUT: %AddWith.impl_witness: = impl_witness %AddWith.impl_witness_table [concrete = constants.%AddWith.impl_witness] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -151,8 +151,8 @@ impl C as AddWith(C) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %AddWith.type: type = facet_type <@AddWith, @AddWith(%T)> [symbolic = %AddWith.type (constants.%AddWith.type.bc7)] // CHECK:STDOUT: %Self: @AddWith.%AddWith.type (%AddWith.type.bc7) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.deb)] -// CHECK:STDOUT: %F.type: type = fn_type @F.1, @AddWith(%T) [symbolic = %F.type (constants.%F.type.fbc)] -// CHECK:STDOUT: %F: @AddWith.%F.type (%F.type.fbc) = struct_value () [symbolic = %F (constants.%F.be3)] +// CHECK:STDOUT: %AddWith.F.type: type = fn_type @AddWith.F, @AddWith(%T) [symbolic = %AddWith.F.type (constants.%AddWith.F.type.fbc)] +// CHECK:STDOUT: %AddWith.F: @AddWith.%AddWith.F.type (%AddWith.F.type.fbc) = struct_value () [symbolic = %AddWith.F (constants.%AddWith.F.be3)] // CHECK:STDOUT: %AddWith.assoc_type: type = assoc_entity_type @AddWith, @AddWith(%T) [symbolic = %AddWith.assoc_type (constants.%AddWith.assoc_type.36e)] // CHECK:STDOUT: %assoc0: @AddWith.%AddWith.assoc_type (%AddWith.assoc_type.36e) = assoc_entity element0, imports.%Main.import_ref.0c5 [symbolic = %assoc0 (constants.%assoc0.6a8)] // CHECK:STDOUT: @@ -164,11 +164,11 @@ impl C as AddWith(C) { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @AddWith.impl: %C.ref.loc7_6 as %AddWith.type { -// CHECK:STDOUT: %F.decl: %F.type.c09 = fn_decl @F.loc8 [concrete = constants.%F.e62] {} {} +// CHECK:STDOUT: impl @C.as.AddWith.impl: %C.ref.loc7_6 as %AddWith.type { +// CHECK:STDOUT: %C.as.AddWith.impl.F.decl: %C.as.AddWith.impl.F.type = fn_decl @C.as.AddWith.impl.F [concrete = constants.%C.as.AddWith.impl.F] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %C.as.AddWith.impl.F.decl // CHECK:STDOUT: witness = file.%AddWith.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: @@ -181,11 +181,11 @@ impl C as AddWith(C) { // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.1(imports.%Main.import_ref.5ab3ec.2: type, imports.%Main.import_ref.5a4: @AddWith.%AddWith.type (%AddWith.type.bc7)) [from "a.carbon"] { +// CHECK:STDOUT: generic fn @AddWith.F(imports.%Main.import_ref.5ab3ec.2: type, imports.%Main.import_ref.5a4: @AddWith.%AddWith.type (%AddWith.type.bc7)) [from "a.carbon"] { // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.loc8() { +// CHECK:STDOUT: fn @C.as.AddWith.impl.F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -194,7 +194,7 @@ impl C as AddWith(C) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.1(constants.%T, constants.%Self.deb) {} +// CHECK:STDOUT: specific @AddWith.F(constants.%T, constants.%Self.deb) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @AddWith(constants.%C) { // CHECK:STDOUT: %T => constants.%C @@ -202,11 +202,11 @@ impl C as AddWith(C) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %AddWith.type => constants.%AddWith.type.e8e // CHECK:STDOUT: %Self => constants.%Self.fbb -// CHECK:STDOUT: %F.type => constants.%F.type.cd2 -// CHECK:STDOUT: %F => constants.%F.b58 +// CHECK:STDOUT: %AddWith.F.type => constants.%AddWith.F.type.cd2 +// CHECK:STDOUT: %AddWith.F => constants.%AddWith.F.b58 // CHECK:STDOUT: %AddWith.assoc_type => constants.%AddWith.assoc_type.3f0 // CHECK:STDOUT: %assoc0 => constants.%assoc0.730 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.1(constants.%C, constants.%AddWith.facet) {} +// CHECK:STDOUT: specific @AddWith.F(constants.%C, constants.%AddWith.facet) {} // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/generic_method.carbon b/toolchain/check/testdata/interface/generic_method.carbon index 8baacf67f5e9..181d26ef51b5 100644 --- a/toolchain/check/testdata/interface/generic_method.carbon +++ b/toolchain/check/testdata/interface/generic_method.carbon @@ -97,10 +97,10 @@ fn CallIndirect() { // CHECK:STDOUT: %Self.as_type.81d: type = facet_access_type %Self.753 [symbolic] // CHECK:STDOUT: %tuple.type.bd2: type = tuple_type (%T.8b3, %Self.as_type.81d, %U.2cb) [symbolic] // CHECK:STDOUT: %pattern_type.44c: type = pattern_type %tuple.type.bd2 [symbolic] -// CHECK:STDOUT: %F.type.17a: type = fn_type @F.loc6, @A(%T.8b3) [symbolic] -// CHECK:STDOUT: %F.0d8: %F.type.17a = struct_value () [symbolic] +// CHECK:STDOUT: %A.F.type.17a: type = fn_type @A.F, @A(%T.8b3) [symbolic] +// CHECK:STDOUT: %A.F.0d8: %A.F.type.17a = struct_value () [symbolic] // CHECK:STDOUT: %A.assoc_type.ed3: type = assoc_entity_type @A, @A(%T.8b3) [symbolic] -// CHECK:STDOUT: %assoc0.fcb: %A.assoc_type.ed3 = assoc_entity element0, @A.%F.decl [symbolic] +// CHECK:STDOUT: %assoc0.fcb: %A.assoc_type.ed3 = assoc_entity element0, @A.%A.F.decl [symbolic] // CHECK:STDOUT: %X: type = class_type @X [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] @@ -108,18 +108,18 @@ fn CallIndirect() { // CHECK:STDOUT: %Z: type = class_type @Z [concrete] // CHECK:STDOUT: %A.type.91f: type = facet_type <@A, @A(%X)> [concrete] // CHECK:STDOUT: %Self.1bb: %A.type.91f = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %F.type.13d: type = fn_type @F.loc6, @A(%X) [concrete] -// CHECK:STDOUT: %F.d83: %F.type.13d = struct_value () [concrete] +// CHECK:STDOUT: %A.F.type.13d: type = fn_type @A.F, @A(%X) [concrete] +// CHECK:STDOUT: %A.F.d83: %A.F.type.13d = struct_value () [concrete] // CHECK:STDOUT: %A.assoc_type.296: type = assoc_entity_type @A, @A(%X) [concrete] -// CHECK:STDOUT: %assoc0.5f6: %A.assoc_type.296 = assoc_entity element0, @A.%F.decl [concrete] +// CHECK:STDOUT: %assoc0.5f6: %A.assoc_type.296 = assoc_entity element0, @A.%A.F.decl [concrete] // CHECK:STDOUT: %A.impl_witness: = impl_witness file.%A.impl_witness_table [concrete] // CHECK:STDOUT: %U.8b3: type = bind_symbolic_name U, 0 [symbolic] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %U.8b3 [symbolic] // CHECK:STDOUT: %tuple.type.ff9: type = tuple_type (type, type, type) [concrete] // CHECK:STDOUT: %tuple.type.765: type = tuple_type (%X, %Y, %U.8b3) [symbolic] // CHECK:STDOUT: %pattern_type.340: type = pattern_type %tuple.type.765 [symbolic] -// CHECK:STDOUT: %F.type.436: type = fn_type @F.loc16 [concrete] -// CHECK:STDOUT: %F.ce9: %F.type.436 = struct_value () [concrete] +// CHECK:STDOUT: %Y.as.A.impl.F.type: type = fn_type @Y.as.A.impl.F [concrete] +// CHECK:STDOUT: %Y.as.A.impl.F: %Y.as.A.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %A.facet.552: %A.type.91f = facet_value %Y, (%A.impl_witness) [concrete] // CHECK:STDOUT: %tuple.type.a0c: type = tuple_type (type, %A.type.91f, type) [concrete] // CHECK:STDOUT: %require_complete.816: = require_complete_type %tuple.type.765 [symbolic] @@ -129,28 +129,28 @@ fn CallIndirect() { // CHECK:STDOUT: %Y.val: %Y = struct_value () [concrete] // CHECK:STDOUT: %Call.type: type = fn_type @Call [concrete] // CHECK:STDOUT: %Call: %Call.type = struct_value () [concrete] -// CHECK:STDOUT: %.a60: type = fn_type_with_self_type %F.type.13d, %A.facet.552 [concrete] +// CHECK:STDOUT: %.a60: type = fn_type_with_self_type %A.F.type.13d, %A.facet.552 [concrete] // CHECK:STDOUT: %pattern_type.8f9: type = pattern_type %Z [concrete] // CHECK:STDOUT: %tuple.type.f6b: type = tuple_type (%X, %Y, %Z) [concrete] // CHECK:STDOUT: %pattern_type.ef1: type = pattern_type %tuple.type.f6b [concrete] -// CHECK:STDOUT: %F.specific_fn: = specific_function %F.ce9, @F.loc16(%Z) [concrete] +// CHECK:STDOUT: %Y.as.A.impl.F.specific_fn: = specific_function %Y.as.A.impl.F, @Y.as.A.impl.F(%Z) [concrete] // CHECK:STDOUT: %Z.val: %Z = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.bae: type = fn_type @Op.2 [concrete] -// CHECK:STDOUT: %Op.type.bc9: type = fn_type @Op.1, @Destroy.impl(%T.8b3) [symbolic] -// CHECK:STDOUT: %Op.46f: %Op.type.bc9 = struct_value () [symbolic] -// CHECK:STDOUT: %Op.type.f73: type = fn_type @Op.1, @Destroy.impl(%Z) [concrete] -// CHECK:STDOUT: %Op.6e3: %Op.type.f73 = struct_value () [concrete] +// CHECK:STDOUT: %Destroy.Op.type: type = fn_type @Destroy.Op [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.bc9: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%T.8b3) [symbolic] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.46f: %T.as.Destroy.impl.Op.type.bc9 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.f73: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%Z) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.6e3: %T.as.Destroy.impl.Op.type.f73 = struct_value () [concrete] // CHECK:STDOUT: %ptr.fb6: type = ptr_type %Z [concrete] -// CHECK:STDOUT: %Op.specific_fn.3b7: = specific_function %Op.6e3, @Op.1(%Z) [concrete] -// CHECK:STDOUT: %Destroy.impl_witness.955: = impl_witness imports.%Destroy.impl_witness_table, @Destroy.impl(%tuple.type.f6b) [concrete] -// CHECK:STDOUT: %Op.type.495: type = fn_type @Op.1, @Destroy.impl(%tuple.type.f6b) [concrete] -// CHECK:STDOUT: %Op.51a: %Op.type.495 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.3b7: = specific_function %T.as.Destroy.impl.Op.6e3, @T.as.Destroy.impl.Op(%Z) [concrete] +// CHECK:STDOUT: %Destroy.impl_witness.955: = impl_witness imports.%Destroy.impl_witness_table, @T.as.Destroy.impl(%tuple.type.f6b) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.495: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%tuple.type.f6b) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.51a: %T.as.Destroy.impl.Op.type.495 = struct_value () [concrete] // CHECK:STDOUT: %ptr.959: type = ptr_type %tuple.type.f6b [concrete] // CHECK:STDOUT: %complete_type.456: = complete_type_witness %ptr.959 [concrete] // CHECK:STDOUT: %Destroy.facet.1f2: %Destroy.type = facet_value %tuple.type.f6b, (%Destroy.impl_witness.955) [concrete] -// CHECK:STDOUT: %.a86: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.1f2 [concrete] -// CHECK:STDOUT: %Op.specific_fn.8e5: = specific_function %Op.51a, @Op.1(%tuple.type.f6b) [concrete] +// CHECK:STDOUT: %.a86: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.1f2 [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.8e5: = specific_function %T.as.Destroy.impl.Op.51a, @T.as.Destroy.impl.Op(%tuple.type.f6b) [concrete] // CHECK:STDOUT: %T.9c2: %A.type.91f = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.817: type = pattern_type %A.type.91f [concrete] // CHECK:STDOUT: %CallGeneric.type: type = fn_type @CallGeneric [concrete] @@ -158,19 +158,19 @@ fn CallIndirect() { // CHECK:STDOUT: %T.as_type: type = facet_access_type %T.9c2 [symbolic] // CHECK:STDOUT: %A.lookup_impl_witness: = lookup_impl_witness %T.9c2, @A, @A(%X) [symbolic] // CHECK:STDOUT: %A.facet.11f: %A.type.91f = facet_value %T.as_type, (%A.lookup_impl_witness) [symbolic] -// CHECK:STDOUT: %.ffa: type = fn_type_with_self_type %F.type.13d, %A.facet.11f [symbolic] +// CHECK:STDOUT: %.ffa: type = fn_type_with_self_type %A.F.type.13d, %A.facet.11f [symbolic] // CHECK:STDOUT: %impl.elem0.0e5: %.ffa = impl_witness_access %A.lookup_impl_witness, element0 [symbolic] // CHECK:STDOUT: %tuple.type.e28: type = tuple_type (%X, %T.as_type, %Z) [symbolic] // CHECK:STDOUT: %pattern_type.f25: type = pattern_type %tuple.type.e28 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.e7e: = specific_impl_function %impl.elem0.0e5, @F.loc6(%X, %A.facet.11f, %Z) [symbolic] +// CHECK:STDOUT: %specific_impl_fn.e7e: = specific_impl_function %impl.elem0.0e5, @A.F(%X, %A.facet.11f, %Z) [symbolic] // CHECK:STDOUT: %require_complete.500: = require_complete_type %tuple.type.e28 [symbolic] // CHECK:STDOUT: %ptr.103: type = ptr_type %tuple.type.e28 [symbolic] // CHECK:STDOUT: %require_complete.8d3: = require_complete_type %ptr.103 [symbolic] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %tuple.type.e28, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.1a6: %Destroy.type = facet_value %tuple.type.e28, (%Destroy.lookup_impl_witness) [symbolic] -// CHECK:STDOUT: %.efa: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.1a6 [symbolic] +// CHECK:STDOUT: %.efa: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.1a6 [symbolic] // CHECK:STDOUT: %impl.elem0.305: %.efa = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.52a: = specific_impl_function %impl.elem0.305, @Op.2(%Destroy.facet.1a6) [symbolic] +// CHECK:STDOUT: %specific_impl_fn.52a: = specific_impl_function %impl.elem0.305, @Destroy.Op(%Destroy.facet.1a6) [symbolic] // CHECK:STDOUT: %CallIndirect.type: type = fn_type @CallIndirect [concrete] // CHECK:STDOUT: %CallIndirect: %CallIndirect.type = struct_value () [concrete] // CHECK:STDOUT: %CallGeneric.specific_fn: = specific_function %CallGeneric, @CallGeneric(%A.facet.552) [concrete] @@ -185,8 +185,8 @@ fn CallIndirect() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @Destroy.impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @Destroy.impl.%Op (constants.%Op.46f)] -// CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @Destroy.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.0b9: @T.as.Destroy.impl.%T.as.Destroy.impl.Op.type (%T.as.Destroy.impl.Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @T.as.Destroy.impl.%T.as.Destroy.impl.Op (constants.%T.as.Destroy.impl.Op.46f)] +// CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @T.as.Destroy.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -209,13 +209,13 @@ fn CallIndirect() { // CHECK:STDOUT: %X.decl: type = class_decl @X [concrete = constants.%X] {} {} // CHECK:STDOUT: %Y.decl: type = class_decl @Y [concrete = constants.%Y] {} {} // CHECK:STDOUT: %Z.decl: type = class_decl @Z [concrete = constants.%Z] {} {} -// CHECK:STDOUT: impl_decl @A.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @Y.as.A.impl [concrete] {} { // CHECK:STDOUT: %Y.ref: type = name_ref Y, file.%Y.decl [concrete = constants.%Y] // CHECK:STDOUT: %A.ref: %A.type.495 = name_ref A, file.%A.decl [concrete = constants.%A.generic] // CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [concrete = constants.%X] // CHECK:STDOUT: %A.type: type = facet_type <@A, @A(constants.%X)> [concrete = constants.%A.type.91f] // CHECK:STDOUT: } -// CHECK:STDOUT: %A.impl_witness_table = impl_witness_table (@A.impl.%F.decl), @A.impl [concrete] +// CHECK:STDOUT: %A.impl_witness_table = impl_witness_table (@Y.as.A.impl.%Y.as.A.impl.F.decl), @Y.as.A.impl [concrete] // CHECK:STDOUT: %A.impl_witness: = impl_witness %A.impl_witness_table [concrete = constants.%A.impl_witness] // CHECK:STDOUT: %Call.decl: %Call.type = fn_decl @Call [concrete = constants.%Call] {} {} // CHECK:STDOUT: %CallGeneric.decl: %CallGeneric.type = fn_decl @CallGeneric [concrete = constants.%CallGeneric] { @@ -237,52 +237,52 @@ fn CallIndirect() { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %A.type: type = facet_type <@A, @A(%T.loc5_13.1)> [symbolic = %A.type (constants.%A.type.75a)] // CHECK:STDOUT: %Self.2: @A.%A.type (%A.type.75a) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.753)] -// CHECK:STDOUT: %F.type: type = fn_type @F.loc6, @A(%T.loc5_13.1) [symbolic = %F.type (constants.%F.type.17a)] -// CHECK:STDOUT: %F: @A.%F.type (%F.type.17a) = struct_value () [symbolic = %F (constants.%F.0d8)] +// CHECK:STDOUT: %A.F.type: type = fn_type @A.F, @A(%T.loc5_13.1) [symbolic = %A.F.type (constants.%A.F.type.17a)] +// CHECK:STDOUT: %A.F: @A.%A.F.type (%A.F.type.17a) = struct_value () [symbolic = %A.F (constants.%A.F.0d8)] // CHECK:STDOUT: %A.assoc_type: type = assoc_entity_type @A, @A(%T.loc5_13.1) [symbolic = %A.assoc_type (constants.%A.assoc_type.ed3)] -// CHECK:STDOUT: %assoc0.loc6_39.2: @A.%A.assoc_type (%A.assoc_type.ed3) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc6_39.2 (constants.%assoc0.fcb)] +// CHECK:STDOUT: %assoc0.loc6_39.2: @A.%A.assoc_type (%A.assoc_type.ed3) = assoc_entity element0, %A.F.decl [symbolic = %assoc0.loc6_39.2 (constants.%assoc0.fcb)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: %Self.1: @A.%A.type (%A.type.75a) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.753)] -// CHECK:STDOUT: %F.decl: @A.%F.type (%F.type.17a) = fn_decl @F.loc6 [symbolic = @A.%F (constants.%F.0d8)] { +// CHECK:STDOUT: %A.F.decl: @A.%A.F.type (%A.F.type.17a) = fn_decl @A.F [symbolic = @A.%A.F (constants.%A.F.0d8)] { // CHECK:STDOUT: %U.patt: %pattern_type.98f = symbolic_binding_pattern U, 2 [concrete] -// CHECK:STDOUT: %u.patt: @F.loc6.%pattern_type.loc6_18 (%pattern_type.20f) = binding_pattern u [concrete] -// CHECK:STDOUT: %u.param_patt: @F.loc6.%pattern_type.loc6_18 (%pattern_type.20f) = value_param_pattern %u.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: @F.loc6.%pattern_type.loc6_24 (%pattern_type.44c) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @F.loc6.%pattern_type.loc6_24 (%pattern_type.44c) = out_param_pattern %return.patt, call_param1 [concrete] +// CHECK:STDOUT: %u.patt: @A.F.%pattern_type.loc6_18 (%pattern_type.20f) = binding_pattern u [concrete] +// CHECK:STDOUT: %u.param_patt: @A.F.%pattern_type.loc6_18 (%pattern_type.20f) = value_param_pattern %u.patt, call_param0 [concrete] +// CHECK:STDOUT: %return.patt: @A.F.%pattern_type.loc6_24 (%pattern_type.44c) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @A.F.%pattern_type.loc6_24 (%pattern_type.44c) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, @A.%T.loc5_13.2 [symbolic = %T (constants.%T.8b3)] -// CHECK:STDOUT: %.loc6_31: @F.loc6.%A.type (%A.type.75a) = specific_constant @A.%Self.1, @A(constants.%T.8b3) [symbolic = %Self (constants.%Self.753)] -// CHECK:STDOUT: %Self.ref: @F.loc6.%A.type (%A.type.75a) = name_ref Self, %.loc6_31 [symbolic = %Self (constants.%Self.753)] -// CHECK:STDOUT: %U.ref.loc6_37: type = name_ref U, %U.loc6_8.1 [symbolic = %U.loc6_8.2 (constants.%U.2cb)] -// CHECK:STDOUT: %.loc6_38.1: @F.loc6.%tuple.type.loc6_38.1 (%tuple.type.e59) = tuple_literal (%T.ref, %Self.ref, %U.ref.loc6_37) -// CHECK:STDOUT: %Self.as_type.loc6_38.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc6_38.2 (constants.%Self.as_type.81d)] -// CHECK:STDOUT: %.loc6_38.2: type = converted %Self.ref, %Self.as_type.loc6_38.1 [symbolic = %Self.as_type.loc6_38.2 (constants.%Self.as_type.81d)] +// CHECK:STDOUT: %.loc6_31: @A.F.%A.type (%A.type.75a) = specific_constant @A.%Self.1, @A(constants.%T.8b3) [symbolic = %Self (constants.%Self.753)] +// CHECK:STDOUT: %Self.ref: @A.F.%A.type (%A.type.75a) = name_ref Self, %.loc6_31 [symbolic = %Self (constants.%Self.753)] +// CHECK:STDOUT: %U.ref.loc6_37: type = name_ref U, %U.loc6_8.2 [symbolic = %U.loc6_8.1 (constants.%U.2cb)] +// CHECK:STDOUT: %.loc6_38.1: @A.F.%tuple.type.loc6_38.1 (%tuple.type.e59) = tuple_literal (%T.ref, %Self.ref, %U.ref.loc6_37) +// CHECK:STDOUT: %Self.as_type.loc6_38.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc6_38.1 (constants.%Self.as_type.81d)] +// CHECK:STDOUT: %.loc6_38.2: type = converted %Self.ref, %Self.as_type.loc6_38.2 [symbolic = %Self.as_type.loc6_38.1 (constants.%Self.as_type.81d)] // CHECK:STDOUT: %.loc6_38.3: type = converted %.loc6_38.1, constants.%tuple.type.bd2 [symbolic = %tuple.type.loc6_38.2 (constants.%tuple.type.bd2)] -// CHECK:STDOUT: %U.loc6_8.1: type = bind_symbolic_name U, 2 [symbolic = %U.loc6_8.2 (constants.%U.2cb)] -// CHECK:STDOUT: %u.param: @F.loc6.%U.loc6_8.2 (%U.2cb) = value_param call_param0 -// CHECK:STDOUT: %U.ref.loc6_21: type = name_ref U, %U.loc6_8.1 [symbolic = %U.loc6_8.2 (constants.%U.2cb)] -// CHECK:STDOUT: %u: @F.loc6.%U.loc6_8.2 (%U.2cb) = bind_name u, %u.param -// CHECK:STDOUT: %return.param: ref @F.loc6.%tuple.type.loc6_38.2 (%tuple.type.bd2) = out_param call_param1 -// CHECK:STDOUT: %return: ref @F.loc6.%tuple.type.loc6_38.2 (%tuple.type.bd2) = return_slot %return.param +// CHECK:STDOUT: %U.loc6_8.2: type = bind_symbolic_name U, 2 [symbolic = %U.loc6_8.1 (constants.%U.2cb)] +// CHECK:STDOUT: %u.param: @A.F.%U.loc6_8.1 (%U.2cb) = value_param call_param0 +// CHECK:STDOUT: %U.ref.loc6_21: type = name_ref U, %U.loc6_8.2 [symbolic = %U.loc6_8.1 (constants.%U.2cb)] +// CHECK:STDOUT: %u: @A.F.%U.loc6_8.1 (%U.2cb) = bind_name u, %u.param +// CHECK:STDOUT: %return.param: ref @A.F.%tuple.type.loc6_38.2 (%tuple.type.bd2) = out_param call_param1 +// CHECK:STDOUT: %return: ref @A.F.%tuple.type.loc6_38.2 (%tuple.type.bd2) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0.loc6_39.1: @A.%A.assoc_type (%A.assoc_type.ed3) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc6_39.2 (constants.%assoc0.fcb)] +// CHECK:STDOUT: %assoc0.loc6_39.1: @A.%A.assoc_type (%A.assoc_type.ed3) = assoc_entity element0, %A.F.decl [symbolic = %assoc0.loc6_39.2 (constants.%assoc0.fcb)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 // CHECK:STDOUT: .T = // CHECK:STDOUT: .F = %assoc0.loc6_39.1 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%A.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @A.impl: %Y.ref as %A.type { -// CHECK:STDOUT: %F.decl: %F.type.436 = fn_decl @F.loc16 [concrete = constants.%F.ce9] { +// CHECK:STDOUT: impl @Y.as.A.impl: %Y.ref as %A.type { +// CHECK:STDOUT: %Y.as.A.impl.F.decl: %Y.as.A.impl.F.type = fn_decl @Y.as.A.impl.F [concrete = constants.%Y.as.A.impl.F] { // CHECK:STDOUT: %U.patt: %pattern_type.98f = symbolic_binding_pattern U, 0 [concrete] -// CHECK:STDOUT: %u.patt: @F.loc16.%pattern_type.loc16_18 (%pattern_type.7dc) = binding_pattern u [concrete] -// CHECK:STDOUT: %u.param_patt: @F.loc16.%pattern_type.loc16_18 (%pattern_type.7dc) = value_param_pattern %u.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: @F.loc16.%pattern_type.loc16_24 (%pattern_type.340) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @F.loc16.%pattern_type.loc16_24 (%pattern_type.340) = out_param_pattern %return.patt, call_param1 [concrete] +// CHECK:STDOUT: %u.patt: @Y.as.A.impl.F.%pattern_type.loc16_18 (%pattern_type.7dc) = binding_pattern u [concrete] +// CHECK:STDOUT: %u.param_patt: @Y.as.A.impl.F.%pattern_type.loc16_18 (%pattern_type.7dc) = value_param_pattern %u.patt, call_param0 [concrete] +// CHECK:STDOUT: %return.patt: @Y.as.A.impl.F.%pattern_type.loc16_24 (%pattern_type.340) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @Y.as.A.impl.F.%pattern_type.loc16_24 (%pattern_type.340) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [concrete = constants.%X] // CHECK:STDOUT: %Y.ref: type = name_ref Y, file.%Y.decl [concrete = constants.%Y] @@ -290,17 +290,17 @@ fn CallIndirect() { // CHECK:STDOUT: %.loc16_35.1: %tuple.type.ff9 = tuple_literal (%X.ref, %Y.ref, %U.ref.loc16_34) // CHECK:STDOUT: %.loc16_35.2: type = converted %.loc16_35.1, constants.%tuple.type.765 [symbolic = %tuple.type.loc16 (constants.%tuple.type.765)] // CHECK:STDOUT: %U.loc16_8.2: type = bind_symbolic_name U, 0 [symbolic = %U.loc16_8.1 (constants.%U.8b3)] -// CHECK:STDOUT: %u.param: @F.loc16.%U.loc16_8.1 (%U.8b3) = value_param call_param0 +// CHECK:STDOUT: %u.param: @Y.as.A.impl.F.%U.loc16_8.1 (%U.8b3) = value_param call_param0 // CHECK:STDOUT: %U.ref.loc16_21: type = name_ref U, %U.loc16_8.2 [symbolic = %U.loc16_8.1 (constants.%U.8b3)] -// CHECK:STDOUT: %u: @F.loc16.%U.loc16_8.1 (%U.8b3) = bind_name u, %u.param -// CHECK:STDOUT: %return.param: ref @F.loc16.%tuple.type.loc16 (%tuple.type.765) = out_param call_param1 -// CHECK:STDOUT: %return: ref @F.loc16.%tuple.type.loc16 (%tuple.type.765) = return_slot %return.param +// CHECK:STDOUT: %u: @Y.as.A.impl.F.%U.loc16_8.1 (%U.8b3) = bind_name u, %u.param +// CHECK:STDOUT: %return.param: ref @Y.as.A.impl.F.%tuple.type.loc16 (%tuple.type.765) = out_param call_param1 +// CHECK:STDOUT: %return: ref @Y.as.A.impl.F.%tuple.type.loc16 (%tuple.type.765) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .X = // CHECK:STDOUT: .Y = -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %Y.as.A.impl.F.decl // CHECK:STDOUT: witness = file.%A.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: @@ -331,21 +331,21 @@ fn CallIndirect() { // CHECK:STDOUT: .Self = constants.%Z // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc6(@A.%T.loc5_13.2: type, @A.%Self.1: @A.%A.type (%A.type.75a), %U.loc6_8.1: type) { -// CHECK:STDOUT: %U.loc6_8.2: type = bind_symbolic_name U, 2 [symbolic = %U.loc6_8.2 (constants.%U.2cb)] -// CHECK:STDOUT: %pattern_type.loc6_18: type = pattern_type %U.loc6_8.2 [symbolic = %pattern_type.loc6_18 (constants.%pattern_type.20f)] +// CHECK:STDOUT: generic fn @A.F(@A.%T.loc5_13.2: type, @A.%Self.1: @A.%A.type (%A.type.75a), %U.loc6_8.2: type) { +// CHECK:STDOUT: %U.loc6_8.1: type = bind_symbolic_name U, 2 [symbolic = %U.loc6_8.1 (constants.%U.2cb)] +// CHECK:STDOUT: %pattern_type.loc6_18: type = pattern_type %U.loc6_8.1 [symbolic = %pattern_type.loc6_18 (constants.%pattern_type.20f)] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T.8b3)] // CHECK:STDOUT: %A.type: type = facet_type <@A, @A(%T)> [symbolic = %A.type (constants.%A.type.75a)] -// CHECK:STDOUT: %Self: @F.loc6.%A.type (%A.type.75a) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.753)] +// CHECK:STDOUT: %Self: @A.F.%A.type (%A.type.75a) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.753)] // CHECK:STDOUT: %tuple.type.loc6_38.1: type = tuple_type (type, %A.type, type) [symbolic = %tuple.type.loc6_38.1 (constants.%tuple.type.e59)] -// CHECK:STDOUT: %Self.as_type.loc6_38.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc6_38.2 (constants.%Self.as_type.81d)] -// CHECK:STDOUT: %tuple.type.loc6_38.2: type = tuple_type (%T, %Self.as_type.loc6_38.2, %U.loc6_8.2) [symbolic = %tuple.type.loc6_38.2 (constants.%tuple.type.bd2)] +// CHECK:STDOUT: %Self.as_type.loc6_38.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc6_38.1 (constants.%Self.as_type.81d)] +// CHECK:STDOUT: %tuple.type.loc6_38.2: type = tuple_type (%T, %Self.as_type.loc6_38.1, %U.loc6_8.1) [symbolic = %tuple.type.loc6_38.2 (constants.%tuple.type.bd2)] // CHECK:STDOUT: %pattern_type.loc6_24: type = pattern_type %tuple.type.loc6_38.2 [symbolic = %pattern_type.loc6_24 (constants.%pattern_type.44c)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%u.param: @F.loc6.%U.loc6_8.2 (%U.2cb)) -> @F.loc6.%tuple.type.loc6_38.2 (%tuple.type.bd2); +// CHECK:STDOUT: fn(%u.param: @A.F.%U.loc6_8.1 (%U.2cb)) -> @A.F.%tuple.type.loc6_38.2 (%tuple.type.bd2); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc16(%U.loc16_8.2: type) { +// CHECK:STDOUT: generic fn @Y.as.A.impl.F(%U.loc16_8.2: type) { // CHECK:STDOUT: %U.loc16_8.1: type = bind_symbolic_name U, 0 [symbolic = %U.loc16_8.1 (constants.%U.8b3)] // CHECK:STDOUT: %pattern_type.loc16_18: type = pattern_type %U.loc16_8.1 [symbolic = %pattern_type.loc16_18 (constants.%pattern_type.7dc)] // CHECK:STDOUT: %tuple.type.loc16: type = tuple_type (constants.%X, constants.%Y, %U.loc16_8.1) [symbolic = %tuple.type.loc16 (constants.%tuple.type.765)] @@ -356,22 +356,22 @@ fn CallIndirect() { // CHECK:STDOUT: %require_complete.loc16_19: = require_complete_type %U.loc16_8.1 [symbolic = %require_complete.loc16_19 (constants.%require_complete.4ae)] // CHECK:STDOUT: %tuple.type.loc17: type = tuple_type (constants.%empty_struct_type, constants.%empty_struct_type, %U.loc16_8.1) [symbolic = %tuple.type.loc17 (constants.%tuple.type.a41)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%u.param: @F.loc16.%U.loc16_8.1 (%U.8b3)) -> %return.param: @F.loc16.%tuple.type.loc16 (%tuple.type.765) { +// CHECK:STDOUT: fn(%u.param: @Y.as.A.impl.F.%U.loc16_8.1 (%U.8b3)) -> %return.param: @Y.as.A.impl.F.%tuple.type.loc16 (%tuple.type.765) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %.loc17_14.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc17_18.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %u.ref: @F.loc16.%U.loc16_8.1 (%U.8b3) = name_ref u, %u -// CHECK:STDOUT: %.loc17_22.1: @F.loc16.%tuple.type.loc17 (%tuple.type.a41) = tuple_literal (%.loc17_14.1, %.loc17_18.1, %u.ref) +// CHECK:STDOUT: %u.ref: @Y.as.A.impl.F.%U.loc16_8.1 (%U.8b3) = name_ref u, %u +// CHECK:STDOUT: %.loc17_22.1: @Y.as.A.impl.F.%tuple.type.loc17 (%tuple.type.a41) = tuple_literal (%.loc17_14.1, %.loc17_18.1, %u.ref) // CHECK:STDOUT: %tuple.elem0: ref %X = tuple_access %return, element0 // CHECK:STDOUT: %.loc17_14.2: init %X = class_init (), %tuple.elem0 [concrete = constants.%X.val] // CHECK:STDOUT: %.loc17_22.2: init %X = converted %.loc17_14.1, %.loc17_14.2 [concrete = constants.%X.val] // CHECK:STDOUT: %tuple.elem1: ref %Y = tuple_access %return, element1 // CHECK:STDOUT: %.loc17_18.2: init %Y = class_init (), %tuple.elem1 [concrete = constants.%Y.val] // CHECK:STDOUT: %.loc17_22.3: init %Y = converted %.loc17_18.1, %.loc17_18.2 [concrete = constants.%Y.val] -// CHECK:STDOUT: %tuple.elem2: ref @F.loc16.%U.loc16_8.1 (%U.8b3) = tuple_access %return, element2 -// CHECK:STDOUT: %.loc17_22.4: init @F.loc16.%U.loc16_8.1 (%U.8b3) = initialize_from %u.ref to %tuple.elem2 -// CHECK:STDOUT: %.loc17_22.5: init @F.loc16.%tuple.type.loc16 (%tuple.type.765) = tuple_init (%.loc17_22.2, %.loc17_22.3, %.loc17_22.4) to %return -// CHECK:STDOUT: %.loc17_23: init @F.loc16.%tuple.type.loc16 (%tuple.type.765) = converted %.loc17_22.1, %.loc17_22.5 +// CHECK:STDOUT: %tuple.elem2: ref @Y.as.A.impl.F.%U.loc16_8.1 (%U.8b3) = tuple_access %return, element2 +// CHECK:STDOUT: %.loc17_22.4: init @Y.as.A.impl.F.%U.loc16_8.1 (%U.8b3) = initialize_from %u.ref to %tuple.elem2 +// CHECK:STDOUT: %.loc17_22.5: init @Y.as.A.impl.F.%tuple.type.loc16 (%tuple.type.765) = tuple_init (%.loc17_22.2, %.loc17_22.3, %.loc17_22.4) to %return +// CHECK:STDOUT: %.loc17_23: init @Y.as.A.impl.F.%tuple.type.loc16 (%tuple.type.765) = converted %.loc17_22.1, %.loc17_22.5 // CHECK:STDOUT: return %.loc17_23 to %return // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -388,28 +388,28 @@ fn CallIndirect() { // CHECK:STDOUT: %F.ref: %A.assoc_type.296 = name_ref F, %.loc22_14.1 [concrete = constants.%assoc0.5f6] // CHECK:STDOUT: %as_type: type = facet_access_type %.loc22_6 [concrete = constants.%Y] // CHECK:STDOUT: %.loc22_14.2: type = converted %.loc22_6, %as_type [concrete = constants.%Y] -// CHECK:STDOUT: %impl.elem0: %.a60 = impl_witness_access constants.%A.impl_witness, element0 [concrete = constants.%F.ce9] +// CHECK:STDOUT: %impl.elem0: %.a60 = impl_witness_access constants.%A.impl_witness, element0 [concrete = constants.%Y.as.A.impl.F] // CHECK:STDOUT: %Z.ref: type = name_ref Z, file.%Z.decl [concrete = constants.%Z] // CHECK:STDOUT: %.loc22_21.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @F.loc16(constants.%Z) [concrete = constants.%F.specific_fn] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Y.as.A.impl.F(constants.%Z) [concrete = constants.%Y.as.A.impl.F.specific_fn] // CHECK:STDOUT: %.loc22_22.1: ref %tuple.type.f6b = temporary_storage // CHECK:STDOUT: %.loc22_21.2: ref %Z = temporary_storage // CHECK:STDOUT: %.loc22_21.3: init %Z = class_init (), %.loc22_21.2 [concrete = constants.%Z.val] // CHECK:STDOUT: %.loc22_21.4: ref %Z = temporary %.loc22_21.2, %.loc22_21.3 // CHECK:STDOUT: %.loc22_21.5: ref %Z = converted %.loc22_21.1, %.loc22_21.4 // CHECK:STDOUT: %.loc22_21.6: %Z = bind_value %.loc22_21.5 -// CHECK:STDOUT: %F.call: init %tuple.type.f6b = call %specific_fn(%.loc22_21.6) to %.loc22_22.1 -// CHECK:STDOUT: %.loc22_22.2: ref %tuple.type.f6b = temporary %.loc22_22.1, %F.call -// CHECK:STDOUT: %Op.bound.loc22_21: = bound_method %.loc22_21.2, constants.%Op.6e3 -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.6e3, @Op.1(constants.%Z) [concrete = constants.%Op.specific_fn.3b7] -// CHECK:STDOUT: %bound_method.loc22_21: = bound_method %.loc22_21.2, %Op.specific_fn.1 +// CHECK:STDOUT: %Y.as.A.impl.F.call: init %tuple.type.f6b = call %specific_fn(%.loc22_21.6) to %.loc22_22.1 +// CHECK:STDOUT: %.loc22_22.2: ref %tuple.type.f6b = temporary %.loc22_22.1, %Y.as.A.impl.F.call +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc22_21: = bound_method %.loc22_21.2, constants.%T.as.Destroy.impl.Op.6e3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.6e3, @T.as.Destroy.impl.Op(constants.%Z) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.3b7] +// CHECK:STDOUT: %bound_method.loc22_21: = bound_method %.loc22_21.2, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc22_21: %ptr.fb6 = addr_of %.loc22_21.2 -// CHECK:STDOUT: %no_op.loc22_21: init %empty_tuple.type = call %bound_method.loc22_21(%addr.loc22_21) -// CHECK:STDOUT: %Op.bound.loc22_22: = bound_method %.loc22_22.1, constants.%Op.51a -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.51a, @Op.1(constants.%tuple.type.f6b) [concrete = constants.%Op.specific_fn.8e5] -// CHECK:STDOUT: %bound_method.loc22_22: = bound_method %.loc22_22.1, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc22_21: init %empty_tuple.type = call %bound_method.loc22_21(%addr.loc22_21) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc22_22: = bound_method %.loc22_22.1, constants.%T.as.Destroy.impl.Op.51a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.51a, @T.as.Destroy.impl.Op(constants.%tuple.type.f6b) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.8e5] +// CHECK:STDOUT: %bound_method.loc22_22: = bound_method %.loc22_22.1, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc22_22: %ptr.959 = addr_of %.loc22_22.1 -// CHECK:STDOUT: %no_op.loc22_22: init %empty_tuple.type = call %bound_method.loc22_22(%addr.loc22_22) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc22_22: init %empty_tuple.type = call %bound_method.loc22_22(%addr.loc22_22) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -420,16 +420,16 @@ fn CallIndirect() { // CHECK:STDOUT: %T.as_type.loc26_4.2: type = facet_access_type %T.loc25_16.1 [symbolic = %T.as_type.loc26_4.2 (constants.%T.as_type)] // CHECK:STDOUT: %A.lookup_impl_witness: = lookup_impl_witness %T.loc25_16.1, @A, @A(constants.%X) [symbolic = %A.lookup_impl_witness (constants.%A.lookup_impl_witness)] // CHECK:STDOUT: %A.facet: %A.type.91f = facet_value %T.as_type.loc26_4.2, (%A.lookup_impl_witness) [symbolic = %A.facet (constants.%A.facet.11f)] -// CHECK:STDOUT: %.loc26_4.3: type = fn_type_with_self_type constants.%F.type.13d, %A.facet [symbolic = %.loc26_4.3 (constants.%.ffa)] +// CHECK:STDOUT: %.loc26_4.3: type = fn_type_with_self_type constants.%A.F.type.13d, %A.facet [symbolic = %.loc26_4.3 (constants.%.ffa)] // CHECK:STDOUT: %impl.elem0.loc26_4.2: @CallGeneric.%.loc26_4.3 (%.ffa) = impl_witness_access %A.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc26_4.2 (constants.%impl.elem0.0e5)] -// CHECK:STDOUT: %specific_impl_fn.loc26_4.2: = specific_impl_function %impl.elem0.loc26_4.2, @F.loc6(constants.%X, %A.facet, constants.%Z) [symbolic = %specific_impl_fn.loc26_4.2 (constants.%specific_impl_fn.e7e)] +// CHECK:STDOUT: %specific_impl_fn.loc26_4.2: = specific_impl_function %impl.elem0.loc26_4.2, @A.F(constants.%X, %A.facet, constants.%Z) [symbolic = %specific_impl_fn.loc26_4.2 (constants.%specific_impl_fn.e7e)] // CHECK:STDOUT: %tuple.type: type = tuple_type (constants.%X, %T.as_type.loc26_4.2, constants.%Z) [symbolic = %tuple.type (constants.%tuple.type.e28)] // CHECK:STDOUT: %require_complete.loc26_12.1: = require_complete_type %tuple.type [symbolic = %require_complete.loc26_12.1 (constants.%require_complete.500)] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %tuple.type, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness)] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %tuple.type, (%Destroy.lookup_impl_witness) [symbolic = %Destroy.facet (constants.%Destroy.facet.1a6)] -// CHECK:STDOUT: %.loc26_12.5: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.loc26_12.5 (constants.%.efa)] +// CHECK:STDOUT: %.loc26_12.5: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet [symbolic = %.loc26_12.5 (constants.%.efa)] // CHECK:STDOUT: %impl.elem0.loc26_12.2: @CallGeneric.%.loc26_12.5 (%.efa) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc26_12.2 (constants.%impl.elem0.305)] -// CHECK:STDOUT: %specific_impl_fn.loc26_12.2: = specific_impl_function %impl.elem0.loc26_12.2, @Op.2(%Destroy.facet) [symbolic = %specific_impl_fn.loc26_12.2 (constants.%specific_impl_fn.52a)] +// CHECK:STDOUT: %specific_impl_fn.loc26_12.2: = specific_impl_function %impl.elem0.loc26_12.2, @Destroy.Op(%Destroy.facet) [symbolic = %specific_impl_fn.loc26_12.2 (constants.%specific_impl_fn.52a)] // CHECK:STDOUT: %ptr: type = ptr_type %tuple.type [symbolic = %ptr (constants.%ptr.103)] // CHECK:STDOUT: %require_complete.loc26_12.2: = require_complete_type %ptr [symbolic = %require_complete.loc26_12.2 (constants.%require_complete.8d3)] // CHECK:STDOUT: @@ -443,7 +443,7 @@ fn CallIndirect() { // CHECK:STDOUT: %impl.elem0.loc26_4.1: @CallGeneric.%.loc26_4.3 (%.ffa) = impl_witness_access constants.%A.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc26_4.2 (constants.%impl.elem0.0e5)] // CHECK:STDOUT: %Z.ref: type = name_ref Z, file.%Z.decl [concrete = constants.%Z] // CHECK:STDOUT: %.loc26_11.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %specific_impl_fn.loc26_4.1: = specific_impl_function %impl.elem0.loc26_4.1, @F.loc6(constants.%X, constants.%A.facet.11f, constants.%Z) [symbolic = %specific_impl_fn.loc26_4.2 (constants.%specific_impl_fn.e7e)] +// CHECK:STDOUT: %specific_impl_fn.loc26_4.1: = specific_impl_function %impl.elem0.loc26_4.1, @A.F(constants.%X, constants.%A.facet.11f, constants.%Z) [symbolic = %specific_impl_fn.loc26_4.2 (constants.%specific_impl_fn.e7e)] // CHECK:STDOUT: %.loc26_12.1: ref @CallGeneric.%tuple.type (%tuple.type.e28) = temporary_storage // CHECK:STDOUT: %.loc26_11.2: ref %Z = temporary_storage // CHECK:STDOUT: %.loc26_11.3: init %Z = class_init (), %.loc26_11.2 [concrete = constants.%Z.val] @@ -452,14 +452,14 @@ fn CallIndirect() { // CHECK:STDOUT: %.loc26_11.6: %Z = bind_value %.loc26_11.5 // CHECK:STDOUT: %.loc26_12.2: init @CallGeneric.%tuple.type (%tuple.type.e28) = call %specific_impl_fn.loc26_4.1(%.loc26_11.6) to %.loc26_12.1 // CHECK:STDOUT: %.loc26_12.3: ref @CallGeneric.%tuple.type (%tuple.type.e28) = temporary %.loc26_12.1, %.loc26_12.2 -// CHECK:STDOUT: %Op.bound: = bound_method %.loc26_11.2, constants.%Op.6e3 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.6e3, @Op.1(constants.%Z) [concrete = constants.%Op.specific_fn.3b7] -// CHECK:STDOUT: %bound_method.loc26_11: = bound_method %.loc26_11.2, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc26_11.2, constants.%T.as.Destroy.impl.Op.6e3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.6e3, @T.as.Destroy.impl.Op(constants.%Z) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.3b7] +// CHECK:STDOUT: %bound_method.loc26_11: = bound_method %.loc26_11.2, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr.loc26_11: %ptr.fb6 = addr_of %.loc26_11.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc26_11(%addr.loc26_11) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc26_11(%addr.loc26_11) // CHECK:STDOUT: %impl.elem0.loc26_12.1: @CallGeneric.%.loc26_12.5 (%.efa) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc26_12.2 (constants.%impl.elem0.305)] // CHECK:STDOUT: %bound_method.loc26_12.1: = bound_method %.loc26_12.1, %impl.elem0.loc26_12.1 -// CHECK:STDOUT: %specific_impl_fn.loc26_12.1: = specific_impl_function %impl.elem0.loc26_12.1, @Op.2(constants.%Destroy.facet.1a6) [symbolic = %specific_impl_fn.loc26_12.2 (constants.%specific_impl_fn.52a)] +// CHECK:STDOUT: %specific_impl_fn.loc26_12.1: = specific_impl_function %impl.elem0.loc26_12.1, @Destroy.Op(constants.%Destroy.facet.1a6) [symbolic = %specific_impl_fn.loc26_12.2 (constants.%specific_impl_fn.52a)] // CHECK:STDOUT: %bound_method.loc26_12.2: = bound_method %.loc26_12.1, %specific_impl_fn.loc26_12.1 // CHECK:STDOUT: %addr.loc26_12: @CallGeneric.%ptr (%ptr.103) = addr_of %.loc26_12.1 // CHECK:STDOUT: %.loc26_12.4: init %empty_tuple.type = call %bound_method.loc26_12.2(%addr.loc26_12) @@ -482,14 +482,14 @@ fn CallIndirect() { // CHECK:STDOUT: %T.loc5_13.1 => constants.%T.8b3 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc6(constants.%T.8b3, constants.%Self.753, constants.%U.2cb) { -// CHECK:STDOUT: %U.loc6_8.2 => constants.%U.2cb +// CHECK:STDOUT: specific @A.F(constants.%T.8b3, constants.%Self.753, constants.%U.2cb) { +// CHECK:STDOUT: %U.loc6_8.1 => constants.%U.2cb // CHECK:STDOUT: %pattern_type.loc6_18 => constants.%pattern_type.20f // CHECK:STDOUT: %T => constants.%T.8b3 // CHECK:STDOUT: %A.type => constants.%A.type.75a // CHECK:STDOUT: %Self => constants.%Self.753 // CHECK:STDOUT: %tuple.type.loc6_38.1 => constants.%tuple.type.e59 -// CHECK:STDOUT: %Self.as_type.loc6_38.2 => constants.%Self.as_type.81d +// CHECK:STDOUT: %Self.as_type.loc6_38.1 => constants.%Self.as_type.81d // CHECK:STDOUT: %tuple.type.loc6_38.2 => constants.%tuple.type.bd2 // CHECK:STDOUT: %pattern_type.loc6_24 => constants.%pattern_type.44c // CHECK:STDOUT: } @@ -500,32 +500,32 @@ fn CallIndirect() { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %A.type => constants.%A.type.91f // CHECK:STDOUT: %Self.2 => constants.%Self.1bb -// CHECK:STDOUT: %F.type => constants.%F.type.13d -// CHECK:STDOUT: %F => constants.%F.d83 +// CHECK:STDOUT: %A.F.type => constants.%A.F.type.13d +// CHECK:STDOUT: %A.F => constants.%A.F.d83 // CHECK:STDOUT: %A.assoc_type => constants.%A.assoc_type.296 // CHECK:STDOUT: %assoc0.loc6_39.2 => constants.%assoc0.5f6 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc16(constants.%U.8b3) { +// CHECK:STDOUT: specific @Y.as.A.impl.F(constants.%U.8b3) { // CHECK:STDOUT: %U.loc16_8.1 => constants.%U.8b3 // CHECK:STDOUT: %pattern_type.loc16_18 => constants.%pattern_type.7dc // CHECK:STDOUT: %tuple.type.loc16 => constants.%tuple.type.765 // CHECK:STDOUT: %pattern_type.loc16_24 => constants.%pattern_type.340 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc6(constants.%X, constants.%A.facet.552, constants.%U.8b3) { -// CHECK:STDOUT: %U.loc6_8.2 => constants.%U.8b3 +// CHECK:STDOUT: specific @A.F(constants.%X, constants.%A.facet.552, constants.%U.8b3) { +// CHECK:STDOUT: %U.loc6_8.1 => constants.%U.8b3 // CHECK:STDOUT: %pattern_type.loc6_18 => constants.%pattern_type.7dc // CHECK:STDOUT: %T => constants.%X // CHECK:STDOUT: %A.type => constants.%A.type.91f // CHECK:STDOUT: %Self => constants.%A.facet.552 // CHECK:STDOUT: %tuple.type.loc6_38.1 => constants.%tuple.type.a0c -// CHECK:STDOUT: %Self.as_type.loc6_38.2 => constants.%Y +// CHECK:STDOUT: %Self.as_type.loc6_38.1 => constants.%Y // CHECK:STDOUT: %tuple.type.loc6_38.2 => constants.%tuple.type.765 // CHECK:STDOUT: %pattern_type.loc6_24 => constants.%pattern_type.340 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc16(constants.%Z) { +// CHECK:STDOUT: specific @Y.as.A.impl.F(constants.%Z) { // CHECK:STDOUT: %U.loc16_8.1 => constants.%Z // CHECK:STDOUT: %pattern_type.loc16_18 => constants.%pattern_type.8f9 // CHECK:STDOUT: %tuple.type.loc16 => constants.%tuple.type.f6b @@ -541,14 +541,14 @@ fn CallIndirect() { // CHECK:STDOUT: %T.loc25_16.1 => constants.%T.9c2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc6(constants.%X, constants.%A.facet.11f, constants.%Z) { -// CHECK:STDOUT: %U.loc6_8.2 => constants.%Z +// CHECK:STDOUT: specific @A.F(constants.%X, constants.%A.facet.11f, constants.%Z) { +// CHECK:STDOUT: %U.loc6_8.1 => constants.%Z // CHECK:STDOUT: %pattern_type.loc6_18 => constants.%pattern_type.8f9 // CHECK:STDOUT: %T => constants.%X // CHECK:STDOUT: %A.type => constants.%A.type.91f // CHECK:STDOUT: %Self => constants.%A.facet.11f // CHECK:STDOUT: %tuple.type.loc6_38.1 => constants.%tuple.type.a0c -// CHECK:STDOUT: %Self.as_type.loc6_38.2 => constants.%T.as_type +// CHECK:STDOUT: %Self.as_type.loc6_38.1 => constants.%T.as_type // CHECK:STDOUT: %tuple.type.loc6_38.2 => constants.%tuple.type.e28 // CHECK:STDOUT: %pattern_type.loc6_24 => constants.%pattern_type.f25 // CHECK:STDOUT: } @@ -561,27 +561,27 @@ fn CallIndirect() { // CHECK:STDOUT: %A.lookup_impl_witness => constants.%A.impl_witness // CHECK:STDOUT: %A.facet => constants.%A.facet.552 // CHECK:STDOUT: %.loc26_4.3 => constants.%.a60 -// CHECK:STDOUT: %impl.elem0.loc26_4.2 => constants.%F.ce9 -// CHECK:STDOUT: %specific_impl_fn.loc26_4.2 => constants.%F.specific_fn +// CHECK:STDOUT: %impl.elem0.loc26_4.2 => constants.%Y.as.A.impl.F +// CHECK:STDOUT: %specific_impl_fn.loc26_4.2 => constants.%Y.as.A.impl.F.specific_fn // CHECK:STDOUT: %tuple.type => constants.%tuple.type.f6b // CHECK:STDOUT: %require_complete.loc26_12.1 => constants.%complete_type.a64 // CHECK:STDOUT: %Destroy.lookup_impl_witness => constants.%Destroy.impl_witness.955 // CHECK:STDOUT: %Destroy.facet => constants.%Destroy.facet.1f2 // CHECK:STDOUT: %.loc26_12.5 => constants.%.a86 -// CHECK:STDOUT: %impl.elem0.loc26_12.2 => constants.%Op.51a -// CHECK:STDOUT: %specific_impl_fn.loc26_12.2 => constants.%Op.specific_fn.8e5 +// CHECK:STDOUT: %impl.elem0.loc26_12.2 => constants.%T.as.Destroy.impl.Op.51a +// CHECK:STDOUT: %specific_impl_fn.loc26_12.2 => constants.%T.as.Destroy.impl.Op.specific_fn.8e5 // CHECK:STDOUT: %ptr => constants.%ptr.959 // CHECK:STDOUT: %require_complete.loc26_12.2 => constants.%complete_type.456 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc6(constants.%X, constants.%A.facet.552, constants.%Z) { -// CHECK:STDOUT: %U.loc6_8.2 => constants.%Z +// CHECK:STDOUT: specific @A.F(constants.%X, constants.%A.facet.552, constants.%Z) { +// CHECK:STDOUT: %U.loc6_8.1 => constants.%Z // CHECK:STDOUT: %pattern_type.loc6_18 => constants.%pattern_type.8f9 // CHECK:STDOUT: %T => constants.%X // CHECK:STDOUT: %A.type => constants.%A.type.91f // CHECK:STDOUT: %Self => constants.%A.facet.552 // CHECK:STDOUT: %tuple.type.loc6_38.1 => constants.%tuple.type.a0c -// CHECK:STDOUT: %Self.as_type.loc6_38.2 => constants.%Y +// CHECK:STDOUT: %Self.as_type.loc6_38.1 => constants.%Y // CHECK:STDOUT: %tuple.type.loc6_38.2 => constants.%tuple.type.f6b // CHECK:STDOUT: %pattern_type.loc6_24 => constants.%pattern_type.ef1 // CHECK:STDOUT: } @@ -602,10 +602,10 @@ fn CallIndirect() { // CHECK:STDOUT: %Self.as_type.81d: type = facet_access_type %Self.753 [symbolic] // CHECK:STDOUT: %tuple.type.bd2: type = tuple_type (%T.8b3, %Self.as_type.81d, %U.2cb) [symbolic] // CHECK:STDOUT: %pattern_type.44c: type = pattern_type %tuple.type.bd2 [symbolic] -// CHECK:STDOUT: %F.type.17a: type = fn_type @F.loc6, @A(%T.8b3) [symbolic] -// CHECK:STDOUT: %F.0d8: %F.type.17a = struct_value () [symbolic] +// CHECK:STDOUT: %A.F.type.17a: type = fn_type @A.F, @A(%T.8b3) [symbolic] +// CHECK:STDOUT: %A.F.0d8: %A.F.type.17a = struct_value () [symbolic] // CHECK:STDOUT: %A.assoc_type.ed3: type = assoc_entity_type @A, @A(%T.8b3) [symbolic] -// CHECK:STDOUT: %assoc0.fcb: %A.assoc_type.ed3 = assoc_entity element0, @A.%F.decl [symbolic] +// CHECK:STDOUT: %assoc0.fcb: %A.assoc_type.ed3 = assoc_entity element0, @A.%A.F.decl [symbolic] // CHECK:STDOUT: %X: type = class_type @X [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] @@ -619,67 +619,67 @@ fn CallIndirect() { // CHECK:STDOUT: %tuple.type.30b: type = tuple_type (%V1, %V2) [symbolic] // CHECK:STDOUT: %A.type.f21: type = facet_type <@A, @A(%W)> [symbolic] // CHECK:STDOUT: %Self.4fe: %A.type.f21 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %F.type.904: type = fn_type @F.loc6, @A(%W) [symbolic] -// CHECK:STDOUT: %F.1ee: %F.type.904 = struct_value () [symbolic] +// CHECK:STDOUT: %A.F.type.904: type = fn_type @A.F, @A(%W) [symbolic] +// CHECK:STDOUT: %A.F.1ee: %A.F.type.904 = struct_value () [symbolic] // CHECK:STDOUT: %A.assoc_type.b05: type = assoc_entity_type @A, @A(%W) [symbolic] -// CHECK:STDOUT: %assoc0.c82: %A.assoc_type.b05 = assoc_entity element0, @A.%F.decl [symbolic] +// CHECK:STDOUT: %assoc0.c82: %A.assoc_type.b05 = assoc_entity element0, @A.%A.F.decl [symbolic] // CHECK:STDOUT: %require_complete.796: = require_complete_type %A.type.f21 [symbolic] -// CHECK:STDOUT: %A.impl_witness.f15: = impl_witness file.%A.impl_witness_table, @A.impl(%V1, %V2, %W) [symbolic] +// CHECK:STDOUT: %A.impl_witness.f15: = impl_witness file.%A.impl_witness_table, @tuple.type.as.A.impl(%V1, %V2, %W) [symbolic] // CHECK:STDOUT: %U.753: type = bind_symbolic_name U, 3 [symbolic] // CHECK:STDOUT: %pattern_type.549: type = pattern_type %U.753 [symbolic] // CHECK:STDOUT: %tuple.type.11f: type = tuple_type (type, %tuple.type.24b, type) [concrete] // CHECK:STDOUT: %tuple.type.8ae: type = tuple_type (%W, %tuple.type.30b, %U.753) [symbolic] // CHECK:STDOUT: %pattern_type.d4a: type = pattern_type %tuple.type.8ae [symbolic] -// CHECK:STDOUT: %F.type.b3e: type = fn_type @F.loc17, @A.impl(%V1, %V2, %W) [symbolic] -// CHECK:STDOUT: %F.d79: %F.type.b3e = struct_value () [symbolic] +// CHECK:STDOUT: %tuple.type.as.A.impl.F.type.b3e: type = fn_type @tuple.type.as.A.impl.F, @tuple.type.as.A.impl(%V1, %V2, %W) [symbolic] +// CHECK:STDOUT: %tuple.type.as.A.impl.F.d79: %tuple.type.as.A.impl.F.type.b3e = struct_value () [symbolic] // CHECK:STDOUT: %A.facet.461: %A.type.f21 = facet_value %tuple.type.30b, (%A.impl_witness.f15) [symbolic] // CHECK:STDOUT: %tuple.type.136: type = tuple_type (type, %A.type.f21, type) [symbolic] // CHECK:STDOUT: %require_complete.d4d: = require_complete_type %tuple.type.8ae [symbolic] // CHECK:STDOUT: %require_complete.ed4: = require_complete_type %U.753 [symbolic] -// CHECK:STDOUT: %F.specific_fn.7d9: = specific_function %F.d79, @F.loc17(%V1, %V2, %W, %U.753) [symbolic] +// CHECK:STDOUT: %tuple.type.as.A.impl.F.specific_fn.7d9: = specific_function %tuple.type.as.A.impl.F.d79, @tuple.type.as.A.impl.F(%V1, %V2, %W, %U.753) [symbolic] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.bae: type = fn_type @Op.1 [concrete] -// CHECK:STDOUT: %Op.type.bc9: type = fn_type @Op.2, @Destroy.impl(%T.8b3) [symbolic] -// CHECK:STDOUT: %Op.46f: %Op.type.bc9 = struct_value () [symbolic] +// CHECK:STDOUT: %Destroy.Op.type: type = fn_type @Destroy.Op [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.bc9: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%T.8b3) [symbolic] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.46f: %T.as.Destroy.impl.Op.type.bc9 = struct_value () [symbolic] // CHECK:STDOUT: %ptr.ab5: type = ptr_type %tuple.type.8ae [symbolic] // CHECK:STDOUT: %require_complete.293: = require_complete_type %ptr.ab5 [symbolic] // CHECK:STDOUT: %Destroy.lookup_impl_witness.0d1: = lookup_impl_witness %tuple.type.8ae, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.3f0: %Destroy.type = facet_value %tuple.type.8ae, (%Destroy.lookup_impl_witness.0d1) [symbolic] -// CHECK:STDOUT: %.a93: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.3f0 [symbolic] +// CHECK:STDOUT: %.a93: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.3f0 [symbolic] // CHECK:STDOUT: %impl.elem0.9fc: %.a93 = impl_witness_access %Destroy.lookup_impl_witness.0d1, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.2c6: = specific_impl_function %impl.elem0.9fc, @Op.1(%Destroy.facet.3f0) [symbolic] +// CHECK:STDOUT: %specific_impl_fn.2c6: = specific_impl_function %impl.elem0.9fc, @Destroy.Op(%Destroy.facet.3f0) [symbolic] // CHECK:STDOUT: %Call.type: type = fn_type @Call [concrete] // CHECK:STDOUT: %Call: %Call.type = struct_value () [concrete] // CHECK:STDOUT: %tuple.type.a46: type = tuple_type (%Y1, %Y2) [concrete] // CHECK:STDOUT: %A.type.91f: type = facet_type <@A, @A(%X)> [concrete] // CHECK:STDOUT: %Self.1bb: %A.type.91f = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %F.type.13d: type = fn_type @F.loc6, @A(%X) [concrete] -// CHECK:STDOUT: %F.d83: %F.type.13d = struct_value () [concrete] +// CHECK:STDOUT: %A.F.type.13d: type = fn_type @A.F, @A(%X) [concrete] +// CHECK:STDOUT: %A.F.d83: %A.F.type.13d = struct_value () [concrete] // CHECK:STDOUT: %A.assoc_type.296: type = assoc_entity_type @A, @A(%X) [concrete] -// CHECK:STDOUT: %assoc0.5f6: %A.assoc_type.296 = assoc_entity element0, @A.%F.decl [concrete] +// CHECK:STDOUT: %assoc0.5f6: %A.assoc_type.296 = assoc_entity element0, @A.%A.F.decl [concrete] // CHECK:STDOUT: %complete_type.d76: = complete_type_witness %A.type.91f [concrete] -// CHECK:STDOUT: %A.impl_witness.8ac: = impl_witness file.%A.impl_witness_table, @A.impl(%Y1, %Y2, %X) [concrete] -// CHECK:STDOUT: %F.type.bf7: type = fn_type @F.loc17, @A.impl(%Y1, %Y2, %X) [concrete] -// CHECK:STDOUT: %F.93b: %F.type.bf7 = struct_value () [concrete] +// CHECK:STDOUT: %A.impl_witness.8ac: = impl_witness file.%A.impl_witness_table, @tuple.type.as.A.impl(%Y1, %Y2, %X) [concrete] +// CHECK:STDOUT: %tuple.type.as.A.impl.F.type.bf7: type = fn_type @tuple.type.as.A.impl.F, @tuple.type.as.A.impl(%Y1, %Y2, %X) [concrete] +// CHECK:STDOUT: %tuple.type.as.A.impl.F.93b: %tuple.type.as.A.impl.F.type.bf7 = struct_value () [concrete] // CHECK:STDOUT: %A.facet.414: %A.type.91f = facet_value %tuple.type.a46, (%A.impl_witness.8ac) [concrete] -// CHECK:STDOUT: %.406: type = fn_type_with_self_type %F.type.13d, %A.facet.414 [concrete] +// CHECK:STDOUT: %.406: type = fn_type_with_self_type %A.F.type.13d, %A.facet.414 [concrete] // CHECK:STDOUT: %pattern_type.8f9: type = pattern_type %Z [concrete] // CHECK:STDOUT: %tuple.type.415: type = tuple_type (%X, %tuple.type.a46, %Z) [concrete] // CHECK:STDOUT: %pattern_type.0b2: type = pattern_type %tuple.type.415 [concrete] -// CHECK:STDOUT: %F.specific_fn.79b: = specific_function %F.93b, @F.loc17(%Y1, %Y2, %X, %Z) [concrete] +// CHECK:STDOUT: %tuple.type.as.A.impl.F.specific_fn.79b: = specific_function %tuple.type.as.A.impl.F.93b, @tuple.type.as.A.impl.F(%Y1, %Y2, %X, %Z) [concrete] // CHECK:STDOUT: %Z.val: %Z = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.f73: type = fn_type @Op.2, @Destroy.impl(%Z) [concrete] -// CHECK:STDOUT: %Op.6e3: %Op.type.f73 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.f73: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%Z) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.6e3: %T.as.Destroy.impl.Op.type.f73 = struct_value () [concrete] // CHECK:STDOUT: %ptr.fb6: type = ptr_type %Z [concrete] -// CHECK:STDOUT: %Op.specific_fn.3b7: = specific_function %Op.6e3, @Op.2(%Z) [concrete] -// CHECK:STDOUT: %Destroy.impl_witness.c80: = impl_witness imports.%Destroy.impl_witness_table, @Destroy.impl(%tuple.type.415) [concrete] -// CHECK:STDOUT: %Op.type.2a3: type = fn_type @Op.2, @Destroy.impl(%tuple.type.415) [concrete] -// CHECK:STDOUT: %Op.66e: %Op.type.2a3 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.3b7: = specific_function %T.as.Destroy.impl.Op.6e3, @T.as.Destroy.impl.Op(%Z) [concrete] +// CHECK:STDOUT: %Destroy.impl_witness.c80: = impl_witness imports.%Destroy.impl_witness_table, @T.as.Destroy.impl(%tuple.type.415) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.2a3: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%tuple.type.415) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.66e: %T.as.Destroy.impl.Op.type.2a3 = struct_value () [concrete] // CHECK:STDOUT: %ptr.ad9: type = ptr_type %tuple.type.415 [concrete] // CHECK:STDOUT: %complete_type.e23: = complete_type_witness %ptr.ad9 [concrete] // CHECK:STDOUT: %Destroy.facet.2b1: %Destroy.type = facet_value %tuple.type.415, (%Destroy.impl_witness.c80) [concrete] -// CHECK:STDOUT: %.1b7: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.2b1 [concrete] -// CHECK:STDOUT: %Op.specific_fn.ce9: = specific_function %Op.66e, @Op.2(%tuple.type.415) [concrete] +// CHECK:STDOUT: %.1b7: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.2b1 [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.ce9: = specific_function %T.as.Destroy.impl.Op.66e, @T.as.Destroy.impl.Op(%tuple.type.415) [concrete] // CHECK:STDOUT: %T.9c2: %A.type.91f = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.817: type = pattern_type %A.type.91f [concrete] // CHECK:STDOUT: %CallGeneric.type: type = fn_type @CallGeneric [concrete] @@ -687,20 +687,20 @@ fn CallIndirect() { // CHECK:STDOUT: %T.as_type: type = facet_access_type %T.9c2 [symbolic] // CHECK:STDOUT: %A.lookup_impl_witness: = lookup_impl_witness %T.9c2, @A, @A(%X) [symbolic] // CHECK:STDOUT: %A.facet.11f: %A.type.91f = facet_value %T.as_type, (%A.lookup_impl_witness) [symbolic] -// CHECK:STDOUT: %.ffa: type = fn_type_with_self_type %F.type.13d, %A.facet.11f [symbolic] +// CHECK:STDOUT: %.ffa: type = fn_type_with_self_type %A.F.type.13d, %A.facet.11f [symbolic] // CHECK:STDOUT: %impl.elem0.0e5: %.ffa = impl_witness_access %A.lookup_impl_witness, element0 [symbolic] // CHECK:STDOUT: %tuple.type.a0c: type = tuple_type (type, %A.type.91f, type) [concrete] // CHECK:STDOUT: %tuple.type.e28: type = tuple_type (%X, %T.as_type, %Z) [symbolic] // CHECK:STDOUT: %pattern_type.f25: type = pattern_type %tuple.type.e28 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.e7e: = specific_impl_function %impl.elem0.0e5, @F.loc6(%X, %A.facet.11f, %Z) [symbolic] +// CHECK:STDOUT: %specific_impl_fn.e7e: = specific_impl_function %impl.elem0.0e5, @A.F(%X, %A.facet.11f, %Z) [symbolic] // CHECK:STDOUT: %require_complete.500: = require_complete_type %tuple.type.e28 [symbolic] // CHECK:STDOUT: %ptr.103: type = ptr_type %tuple.type.e28 [symbolic] // CHECK:STDOUT: %require_complete.8d3: = require_complete_type %ptr.103 [symbolic] // CHECK:STDOUT: %Destroy.lookup_impl_witness.1a2: = lookup_impl_witness %tuple.type.e28, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.1a6: %Destroy.type = facet_value %tuple.type.e28, (%Destroy.lookup_impl_witness.1a2) [symbolic] -// CHECK:STDOUT: %.efa: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.1a6 [symbolic] +// CHECK:STDOUT: %.efa: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.1a6 [symbolic] // CHECK:STDOUT: %impl.elem0.305: %.efa = impl_witness_access %Destroy.lookup_impl_witness.1a2, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.52a: = specific_impl_function %impl.elem0.305, @Op.1(%Destroy.facet.1a6) [symbolic] +// CHECK:STDOUT: %specific_impl_fn.52a: = specific_impl_function %impl.elem0.305, @Destroy.Op(%Destroy.facet.1a6) [symbolic] // CHECK:STDOUT: %CallIndirect.type: type = fn_type @CallIndirect [concrete] // CHECK:STDOUT: %CallIndirect: %CallIndirect.type = struct_value () [concrete] // CHECK:STDOUT: %CallGeneric.specific_fn: = specific_function %CallGeneric, @CallGeneric(%A.facet.414) [concrete] @@ -714,8 +714,8 @@ fn CallIndirect() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @Destroy.impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @Destroy.impl.%Op (constants.%Op.46f)] -// CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @Destroy.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.0b9: @T.as.Destroy.impl.%T.as.Destroy.impl.Op.type (%T.as.Destroy.impl.Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @T.as.Destroy.impl.%T.as.Destroy.impl.Op (constants.%T.as.Destroy.impl.Op.46f)] +// CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @T.as.Destroy.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -740,24 +740,24 @@ fn CallIndirect() { // CHECK:STDOUT: %Y1.decl: type = class_decl @Y1 [concrete = constants.%Y1] {} {} // CHECK:STDOUT: %Y2.decl: type = class_decl @Y2 [concrete = constants.%Y2] {} {} // CHECK:STDOUT: %Z.decl: type = class_decl @Z [concrete = constants.%Z] {} {} -// CHECK:STDOUT: impl_decl @A.impl [concrete] { +// CHECK:STDOUT: impl_decl @tuple.type.as.A.impl [concrete] { // CHECK:STDOUT: %V1.patt: %pattern_type.98f = symbolic_binding_pattern V1, 0 [concrete] // CHECK:STDOUT: %V2.patt: %pattern_type.98f = symbolic_binding_pattern V2, 1 [concrete] // CHECK:STDOUT: %W.patt: %pattern_type.98f = symbolic_binding_pattern W, 2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %V1.ref: type = name_ref V1, %V1.loc14_14.1 [symbolic = %V1.loc14_14.2 (constants.%V1)] -// CHECK:STDOUT: %V2.ref: type = name_ref V2, %V2.loc14_25.1 [symbolic = %V2.loc14_25.2 (constants.%V2)] +// CHECK:STDOUT: %V1.ref: type = name_ref V1, %V1.loc14_14.2 [symbolic = %V1.loc14_14.1 (constants.%V1)] +// CHECK:STDOUT: %V2.ref: type = name_ref V2, %V2.loc14_25.2 [symbolic = %V2.loc14_25.1 (constants.%V2)] // CHECK:STDOUT: %.loc14_53.1: %tuple.type.24b = tuple_literal (%V1.ref, %V2.ref) // CHECK:STDOUT: %.loc14_53.2: type = converted %.loc14_53.1, constants.%tuple.type.30b [symbolic = %tuple.type (constants.%tuple.type.30b)] // CHECK:STDOUT: %A.ref: %A.type.495 = name_ref A, file.%A.decl [concrete = constants.%A.generic] -// CHECK:STDOUT: %W.ref: type = name_ref W, %W.loc14_36.1 [symbolic = %W.loc14_36.2 (constants.%W)] -// CHECK:STDOUT: %A.type.loc14_61.1: type = facet_type <@A, @A(constants.%W)> [symbolic = %A.type.loc14_61.2 (constants.%A.type.f21)] -// CHECK:STDOUT: %V1.loc14_14.1: type = bind_symbolic_name V1, 0 [symbolic = %V1.loc14_14.2 (constants.%V1)] -// CHECK:STDOUT: %V2.loc14_25.1: type = bind_symbolic_name V2, 1 [symbolic = %V2.loc14_25.2 (constants.%V2)] -// CHECK:STDOUT: %W.loc14_36.1: type = bind_symbolic_name W, 2 [symbolic = %W.loc14_36.2 (constants.%W)] +// CHECK:STDOUT: %W.ref: type = name_ref W, %W.loc14_36.2 [symbolic = %W.loc14_36.1 (constants.%W)] +// CHECK:STDOUT: %A.type.loc14_61.2: type = facet_type <@A, @A(constants.%W)> [symbolic = %A.type.loc14_61.1 (constants.%A.type.f21)] +// CHECK:STDOUT: %V1.loc14_14.2: type = bind_symbolic_name V1, 0 [symbolic = %V1.loc14_14.1 (constants.%V1)] +// CHECK:STDOUT: %V2.loc14_25.2: type = bind_symbolic_name V2, 1 [symbolic = %V2.loc14_25.1 (constants.%V2)] +// CHECK:STDOUT: %W.loc14_36.2: type = bind_symbolic_name W, 2 [symbolic = %W.loc14_36.1 (constants.%W)] // CHECK:STDOUT: } -// CHECK:STDOUT: %A.impl_witness_table = impl_witness_table (@A.impl.%F.decl), @A.impl [concrete] -// CHECK:STDOUT: %A.impl_witness: = impl_witness %A.impl_witness_table, @A.impl(constants.%V1, constants.%V2, constants.%W) [symbolic = @A.impl.%A.impl_witness (constants.%A.impl_witness.f15)] +// CHECK:STDOUT: %A.impl_witness_table = impl_witness_table (@tuple.type.as.A.impl.%tuple.type.as.A.impl.F.decl), @tuple.type.as.A.impl [concrete] +// CHECK:STDOUT: %A.impl_witness: = impl_witness %A.impl_witness_table, @tuple.type.as.A.impl(constants.%V1, constants.%V2, constants.%W) [symbolic = @tuple.type.as.A.impl.%A.impl_witness (constants.%A.impl_witness.f15)] // CHECK:STDOUT: %Call.decl: %Call.type = fn_decl @Call [concrete = constants.%Call] {} {} // CHECK:STDOUT: %CallGeneric.decl: %CallGeneric.type = fn_decl @CallGeneric [concrete = constants.%CallGeneric] { // CHECK:STDOUT: %T.patt: %pattern_type.817 = symbolic_binding_pattern T, 0 [concrete] @@ -778,87 +778,87 @@ fn CallIndirect() { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %A.type: type = facet_type <@A, @A(%T.loc5_13.1)> [symbolic = %A.type (constants.%A.type.75a)] // CHECK:STDOUT: %Self.2: @A.%A.type (%A.type.75a) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.753)] -// CHECK:STDOUT: %F.type: type = fn_type @F.loc6, @A(%T.loc5_13.1) [symbolic = %F.type (constants.%F.type.17a)] -// CHECK:STDOUT: %F: @A.%F.type (%F.type.17a) = struct_value () [symbolic = %F (constants.%F.0d8)] +// CHECK:STDOUT: %A.F.type: type = fn_type @A.F, @A(%T.loc5_13.1) [symbolic = %A.F.type (constants.%A.F.type.17a)] +// CHECK:STDOUT: %A.F: @A.%A.F.type (%A.F.type.17a) = struct_value () [symbolic = %A.F (constants.%A.F.0d8)] // CHECK:STDOUT: %A.assoc_type: type = assoc_entity_type @A, @A(%T.loc5_13.1) [symbolic = %A.assoc_type (constants.%A.assoc_type.ed3)] -// CHECK:STDOUT: %assoc0.loc6_39.2: @A.%A.assoc_type (%A.assoc_type.ed3) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc6_39.2 (constants.%assoc0.fcb)] +// CHECK:STDOUT: %assoc0.loc6_39.2: @A.%A.assoc_type (%A.assoc_type.ed3) = assoc_entity element0, %A.F.decl [symbolic = %assoc0.loc6_39.2 (constants.%assoc0.fcb)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: %Self.1: @A.%A.type (%A.type.75a) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.753)] -// CHECK:STDOUT: %F.decl: @A.%F.type (%F.type.17a) = fn_decl @F.loc6 [symbolic = @A.%F (constants.%F.0d8)] { +// CHECK:STDOUT: %A.F.decl: @A.%A.F.type (%A.F.type.17a) = fn_decl @A.F [symbolic = @A.%A.F (constants.%A.F.0d8)] { // CHECK:STDOUT: %U.patt: %pattern_type.98f = symbolic_binding_pattern U, 2 [concrete] -// CHECK:STDOUT: %u.patt: @F.loc6.%pattern_type.loc6_18 (%pattern_type.20f) = binding_pattern u [concrete] -// CHECK:STDOUT: %u.param_patt: @F.loc6.%pattern_type.loc6_18 (%pattern_type.20f) = value_param_pattern %u.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: @F.loc6.%pattern_type.loc6_24 (%pattern_type.44c) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @F.loc6.%pattern_type.loc6_24 (%pattern_type.44c) = out_param_pattern %return.patt, call_param1 [concrete] +// CHECK:STDOUT: %u.patt: @A.F.%pattern_type.loc6_18 (%pattern_type.20f) = binding_pattern u [concrete] +// CHECK:STDOUT: %u.param_patt: @A.F.%pattern_type.loc6_18 (%pattern_type.20f) = value_param_pattern %u.patt, call_param0 [concrete] +// CHECK:STDOUT: %return.patt: @A.F.%pattern_type.loc6_24 (%pattern_type.44c) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @A.F.%pattern_type.loc6_24 (%pattern_type.44c) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, @A.%T.loc5_13.2 [symbolic = %T (constants.%T.8b3)] -// CHECK:STDOUT: %.loc6_31: @F.loc6.%A.type (%A.type.75a) = specific_constant @A.%Self.1, @A(constants.%T.8b3) [symbolic = %Self (constants.%Self.753)] -// CHECK:STDOUT: %Self.ref: @F.loc6.%A.type (%A.type.75a) = name_ref Self, %.loc6_31 [symbolic = %Self (constants.%Self.753)] -// CHECK:STDOUT: %U.ref.loc6_37: type = name_ref U, %U.loc6_8.1 [symbolic = %U.loc6_8.2 (constants.%U.2cb)] -// CHECK:STDOUT: %.loc6_38.1: @F.loc6.%tuple.type.loc6_38.1 (%tuple.type.e59) = tuple_literal (%T.ref, %Self.ref, %U.ref.loc6_37) -// CHECK:STDOUT: %Self.as_type.loc6_38.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc6_38.2 (constants.%Self.as_type.81d)] -// CHECK:STDOUT: %.loc6_38.2: type = converted %Self.ref, %Self.as_type.loc6_38.1 [symbolic = %Self.as_type.loc6_38.2 (constants.%Self.as_type.81d)] +// CHECK:STDOUT: %.loc6_31: @A.F.%A.type (%A.type.75a) = specific_constant @A.%Self.1, @A(constants.%T.8b3) [symbolic = %Self (constants.%Self.753)] +// CHECK:STDOUT: %Self.ref: @A.F.%A.type (%A.type.75a) = name_ref Self, %.loc6_31 [symbolic = %Self (constants.%Self.753)] +// CHECK:STDOUT: %U.ref.loc6_37: type = name_ref U, %U.loc6_8.2 [symbolic = %U.loc6_8.1 (constants.%U.2cb)] +// CHECK:STDOUT: %.loc6_38.1: @A.F.%tuple.type.loc6_38.1 (%tuple.type.e59) = tuple_literal (%T.ref, %Self.ref, %U.ref.loc6_37) +// CHECK:STDOUT: %Self.as_type.loc6_38.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc6_38.1 (constants.%Self.as_type.81d)] +// CHECK:STDOUT: %.loc6_38.2: type = converted %Self.ref, %Self.as_type.loc6_38.2 [symbolic = %Self.as_type.loc6_38.1 (constants.%Self.as_type.81d)] // CHECK:STDOUT: %.loc6_38.3: type = converted %.loc6_38.1, constants.%tuple.type.bd2 [symbolic = %tuple.type.loc6_38.2 (constants.%tuple.type.bd2)] -// CHECK:STDOUT: %U.loc6_8.1: type = bind_symbolic_name U, 2 [symbolic = %U.loc6_8.2 (constants.%U.2cb)] -// CHECK:STDOUT: %u.param: @F.loc6.%U.loc6_8.2 (%U.2cb) = value_param call_param0 -// CHECK:STDOUT: %U.ref.loc6_21: type = name_ref U, %U.loc6_8.1 [symbolic = %U.loc6_8.2 (constants.%U.2cb)] -// CHECK:STDOUT: %u: @F.loc6.%U.loc6_8.2 (%U.2cb) = bind_name u, %u.param -// CHECK:STDOUT: %return.param: ref @F.loc6.%tuple.type.loc6_38.2 (%tuple.type.bd2) = out_param call_param1 -// CHECK:STDOUT: %return: ref @F.loc6.%tuple.type.loc6_38.2 (%tuple.type.bd2) = return_slot %return.param +// CHECK:STDOUT: %U.loc6_8.2: type = bind_symbolic_name U, 2 [symbolic = %U.loc6_8.1 (constants.%U.2cb)] +// CHECK:STDOUT: %u.param: @A.F.%U.loc6_8.1 (%U.2cb) = value_param call_param0 +// CHECK:STDOUT: %U.ref.loc6_21: type = name_ref U, %U.loc6_8.2 [symbolic = %U.loc6_8.1 (constants.%U.2cb)] +// CHECK:STDOUT: %u: @A.F.%U.loc6_8.1 (%U.2cb) = bind_name u, %u.param +// CHECK:STDOUT: %return.param: ref @A.F.%tuple.type.loc6_38.2 (%tuple.type.bd2) = out_param call_param1 +// CHECK:STDOUT: %return: ref @A.F.%tuple.type.loc6_38.2 (%tuple.type.bd2) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0.loc6_39.1: @A.%A.assoc_type (%A.assoc_type.ed3) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc6_39.2 (constants.%assoc0.fcb)] +// CHECK:STDOUT: %assoc0.loc6_39.1: @A.%A.assoc_type (%A.assoc_type.ed3) = assoc_entity element0, %A.F.decl [symbolic = %assoc0.loc6_39.2 (constants.%assoc0.fcb)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 // CHECK:STDOUT: .T = // CHECK:STDOUT: .F = %assoc0.loc6_39.1 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%A.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @A.impl(%V1.loc14_14.1: type, %V2.loc14_25.1: type, %W.loc14_36.1: type) { -// CHECK:STDOUT: %V1.loc14_14.2: type = bind_symbolic_name V1, 0 [symbolic = %V1.loc14_14.2 (constants.%V1)] -// CHECK:STDOUT: %V2.loc14_25.2: type = bind_symbolic_name V2, 1 [symbolic = %V2.loc14_25.2 (constants.%V2)] -// CHECK:STDOUT: %W.loc14_36.2: type = bind_symbolic_name W, 2 [symbolic = %W.loc14_36.2 (constants.%W)] -// CHECK:STDOUT: %tuple.type: type = tuple_type (%V1.loc14_14.2, %V2.loc14_25.2) [symbolic = %tuple.type (constants.%tuple.type.30b)] -// CHECK:STDOUT: %A.type.loc14_61.2: type = facet_type <@A, @A(%W.loc14_36.2)> [symbolic = %A.type.loc14_61.2 (constants.%A.type.f21)] -// CHECK:STDOUT: %require_complete: = require_complete_type %A.type.loc14_61.2 [symbolic = %require_complete (constants.%require_complete.796)] -// CHECK:STDOUT: %A.impl_witness: = impl_witness file.%A.impl_witness_table, @A.impl(%V1.loc14_14.2, %V2.loc14_25.2, %W.loc14_36.2) [symbolic = %A.impl_witness (constants.%A.impl_witness.f15)] +// CHECK:STDOUT: generic impl @tuple.type.as.A.impl(%V1.loc14_14.2: type, %V2.loc14_25.2: type, %W.loc14_36.2: type) { +// CHECK:STDOUT: %V1.loc14_14.1: type = bind_symbolic_name V1, 0 [symbolic = %V1.loc14_14.1 (constants.%V1)] +// CHECK:STDOUT: %V2.loc14_25.1: type = bind_symbolic_name V2, 1 [symbolic = %V2.loc14_25.1 (constants.%V2)] +// CHECK:STDOUT: %W.loc14_36.1: type = bind_symbolic_name W, 2 [symbolic = %W.loc14_36.1 (constants.%W)] +// CHECK:STDOUT: %tuple.type: type = tuple_type (%V1.loc14_14.1, %V2.loc14_25.1) [symbolic = %tuple.type (constants.%tuple.type.30b)] +// CHECK:STDOUT: %A.type.loc14_61.1: type = facet_type <@A, @A(%W.loc14_36.1)> [symbolic = %A.type.loc14_61.1 (constants.%A.type.f21)] +// CHECK:STDOUT: %require_complete: = require_complete_type %A.type.loc14_61.1 [symbolic = %require_complete (constants.%require_complete.796)] +// CHECK:STDOUT: %A.impl_witness: = impl_witness file.%A.impl_witness_table, @tuple.type.as.A.impl(%V1.loc14_14.1, %V2.loc14_25.1, %W.loc14_36.1) [symbolic = %A.impl_witness (constants.%A.impl_witness.f15)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type: type = fn_type @F.loc17, @A.impl(%V1.loc14_14.2, %V2.loc14_25.2, %W.loc14_36.2) [symbolic = %F.type (constants.%F.type.b3e)] -// CHECK:STDOUT: %F: @A.impl.%F.type (%F.type.b3e) = struct_value () [symbolic = %F (constants.%F.d79)] +// CHECK:STDOUT: %tuple.type.as.A.impl.F.type: type = fn_type @tuple.type.as.A.impl.F, @tuple.type.as.A.impl(%V1.loc14_14.1, %V2.loc14_25.1, %W.loc14_36.1) [symbolic = %tuple.type.as.A.impl.F.type (constants.%tuple.type.as.A.impl.F.type.b3e)] +// CHECK:STDOUT: %tuple.type.as.A.impl.F: @tuple.type.as.A.impl.%tuple.type.as.A.impl.F.type (%tuple.type.as.A.impl.F.type.b3e) = struct_value () [symbolic = %tuple.type.as.A.impl.F (constants.%tuple.type.as.A.impl.F.d79)] // CHECK:STDOUT: -// CHECK:STDOUT: impl: %.loc14_53.2 as %A.type.loc14_61.1 { -// CHECK:STDOUT: %F.decl: @A.impl.%F.type (%F.type.b3e) = fn_decl @F.loc17 [symbolic = @A.impl.%F (constants.%F.d79)] { +// CHECK:STDOUT: impl: %.loc14_53.2 as %A.type.loc14_61.2 { +// CHECK:STDOUT: %tuple.type.as.A.impl.F.decl: @tuple.type.as.A.impl.%tuple.type.as.A.impl.F.type (%tuple.type.as.A.impl.F.type.b3e) = fn_decl @tuple.type.as.A.impl.F [symbolic = @tuple.type.as.A.impl.%tuple.type.as.A.impl.F (constants.%tuple.type.as.A.impl.F.d79)] { // CHECK:STDOUT: %U.patt: %pattern_type.98f = symbolic_binding_pattern U, 3 [concrete] -// CHECK:STDOUT: %u.patt: @F.loc17.%pattern_type.loc17_18 (%pattern_type.549) = binding_pattern u [concrete] -// CHECK:STDOUT: %u.param_patt: @F.loc17.%pattern_type.loc17_18 (%pattern_type.549) = value_param_pattern %u.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: @F.loc17.%pattern_type.loc17_24 (%pattern_type.d4a) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @F.loc17.%pattern_type.loc17_24 (%pattern_type.d4a) = out_param_pattern %return.patt, call_param1 [concrete] +// CHECK:STDOUT: %u.patt: @tuple.type.as.A.impl.F.%pattern_type.loc17_18 (%pattern_type.549) = binding_pattern u [concrete] +// CHECK:STDOUT: %u.param_patt: @tuple.type.as.A.impl.F.%pattern_type.loc17_18 (%pattern_type.549) = value_param_pattern %u.patt, call_param0 [concrete] +// CHECK:STDOUT: %return.patt: @tuple.type.as.A.impl.F.%pattern_type.loc17_24 (%pattern_type.d4a) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @tuple.type.as.A.impl.F.%pattern_type.loc17_24 (%pattern_type.d4a) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %W.ref: type = name_ref W, @A.impl.%W.loc14_36.1 [symbolic = %W (constants.%W)] -// CHECK:STDOUT: %V1.ref: type = name_ref V1, @A.impl.%V1.loc14_14.1 [symbolic = %V1 (constants.%V1)] -// CHECK:STDOUT: %V2.ref: type = name_ref V2, @A.impl.%V2.loc14_25.1 [symbolic = %V2 (constants.%V2)] +// CHECK:STDOUT: %W.ref: type = name_ref W, @tuple.type.as.A.impl.%W.loc14_36.2 [symbolic = %W (constants.%W)] +// CHECK:STDOUT: %V1.ref: type = name_ref V1, @tuple.type.as.A.impl.%V1.loc14_14.2 [symbolic = %V1 (constants.%V1)] +// CHECK:STDOUT: %V2.ref: type = name_ref V2, @tuple.type.as.A.impl.%V2.loc14_25.2 [symbolic = %V2 (constants.%V2)] // CHECK:STDOUT: %.loc17_38: %tuple.type.24b = tuple_literal (%V1.ref, %V2.ref) // CHECK:STDOUT: %U.ref.loc17_41: type = name_ref U, %U.loc17_8.2 [symbolic = %U.loc17_8.1 (constants.%U.753)] // CHECK:STDOUT: %.loc17_42.1: %tuple.type.11f = tuple_literal (%W.ref, %.loc17_38, %U.ref.loc17_41) // CHECK:STDOUT: %.loc17_42.2: type = converted %.loc17_38, constants.%tuple.type.30b [symbolic = %tuple.type.loc17_42.1 (constants.%tuple.type.30b)] // CHECK:STDOUT: %.loc17_42.3: type = converted %.loc17_42.1, constants.%tuple.type.8ae [symbolic = %tuple.type.loc17_42.2 (constants.%tuple.type.8ae)] // CHECK:STDOUT: %U.loc17_8.2: type = bind_symbolic_name U, 3 [symbolic = %U.loc17_8.1 (constants.%U.753)] -// CHECK:STDOUT: %u.param: @F.loc17.%U.loc17_8.1 (%U.753) = value_param call_param0 +// CHECK:STDOUT: %u.param: @tuple.type.as.A.impl.F.%U.loc17_8.1 (%U.753) = value_param call_param0 // CHECK:STDOUT: %U.ref.loc17_21: type = name_ref U, %U.loc17_8.2 [symbolic = %U.loc17_8.1 (constants.%U.753)] -// CHECK:STDOUT: %u: @F.loc17.%U.loc17_8.1 (%U.753) = bind_name u, %u.param -// CHECK:STDOUT: %return.param: ref @F.loc17.%tuple.type.loc17_42.2 (%tuple.type.8ae) = out_param call_param1 -// CHECK:STDOUT: %return: ref @F.loc17.%tuple.type.loc17_42.2 (%tuple.type.8ae) = return_slot %return.param +// CHECK:STDOUT: %u: @tuple.type.as.A.impl.F.%U.loc17_8.1 (%U.753) = bind_name u, %u.param +// CHECK:STDOUT: %return.param: ref @tuple.type.as.A.impl.F.%tuple.type.loc17_42.2 (%tuple.type.8ae) = out_param call_param1 +// CHECK:STDOUT: %return: ref @tuple.type.as.A.impl.F.%tuple.type.loc17_42.2 (%tuple.type.8ae) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .W = // CHECK:STDOUT: .V1 = // CHECK:STDOUT: .V2 = -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %tuple.type.as.A.impl.F.decl // CHECK:STDOUT: witness = file.%A.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -899,21 +899,21 @@ fn CallIndirect() { // CHECK:STDOUT: .Self = constants.%Z // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc6(@A.%T.loc5_13.2: type, @A.%Self.1: @A.%A.type (%A.type.75a), %U.loc6_8.1: type) { -// CHECK:STDOUT: %U.loc6_8.2: type = bind_symbolic_name U, 2 [symbolic = %U.loc6_8.2 (constants.%U.2cb)] -// CHECK:STDOUT: %pattern_type.loc6_18: type = pattern_type %U.loc6_8.2 [symbolic = %pattern_type.loc6_18 (constants.%pattern_type.20f)] +// CHECK:STDOUT: generic fn @A.F(@A.%T.loc5_13.2: type, @A.%Self.1: @A.%A.type (%A.type.75a), %U.loc6_8.2: type) { +// CHECK:STDOUT: %U.loc6_8.1: type = bind_symbolic_name U, 2 [symbolic = %U.loc6_8.1 (constants.%U.2cb)] +// CHECK:STDOUT: %pattern_type.loc6_18: type = pattern_type %U.loc6_8.1 [symbolic = %pattern_type.loc6_18 (constants.%pattern_type.20f)] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T.8b3)] // CHECK:STDOUT: %A.type: type = facet_type <@A, @A(%T)> [symbolic = %A.type (constants.%A.type.75a)] -// CHECK:STDOUT: %Self: @F.loc6.%A.type (%A.type.75a) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.753)] +// CHECK:STDOUT: %Self: @A.F.%A.type (%A.type.75a) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.753)] // CHECK:STDOUT: %tuple.type.loc6_38.1: type = tuple_type (type, %A.type, type) [symbolic = %tuple.type.loc6_38.1 (constants.%tuple.type.e59)] -// CHECK:STDOUT: %Self.as_type.loc6_38.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc6_38.2 (constants.%Self.as_type.81d)] -// CHECK:STDOUT: %tuple.type.loc6_38.2: type = tuple_type (%T, %Self.as_type.loc6_38.2, %U.loc6_8.2) [symbolic = %tuple.type.loc6_38.2 (constants.%tuple.type.bd2)] +// CHECK:STDOUT: %Self.as_type.loc6_38.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc6_38.1 (constants.%Self.as_type.81d)] +// CHECK:STDOUT: %tuple.type.loc6_38.2: type = tuple_type (%T, %Self.as_type.loc6_38.1, %U.loc6_8.1) [symbolic = %tuple.type.loc6_38.2 (constants.%tuple.type.bd2)] // CHECK:STDOUT: %pattern_type.loc6_24: type = pattern_type %tuple.type.loc6_38.2 [symbolic = %pattern_type.loc6_24 (constants.%pattern_type.44c)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%u.param: @F.loc6.%U.loc6_8.2 (%U.2cb)) -> @F.loc6.%tuple.type.loc6_38.2 (%tuple.type.bd2); +// CHECK:STDOUT: fn(%u.param: @A.F.%U.loc6_8.1 (%U.2cb)) -> @A.F.%tuple.type.loc6_38.2 (%tuple.type.bd2); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc17(@A.impl.%V1.loc14_14.1: type, @A.impl.%V2.loc14_25.1: type, @A.impl.%W.loc14_36.1: type, %U.loc17_8.2: type) { +// CHECK:STDOUT: generic fn @tuple.type.as.A.impl.F(@tuple.type.as.A.impl.%V1.loc14_14.2: type, @tuple.type.as.A.impl.%V2.loc14_25.2: type, @tuple.type.as.A.impl.%W.loc14_36.2: type, %U.loc17_8.2: type) { // CHECK:STDOUT: %U.loc17_8.1: type = bind_symbolic_name U, 3 [symbolic = %U.loc17_8.1 (constants.%U.753)] // CHECK:STDOUT: %pattern_type.loc17_18: type = pattern_type %U.loc17_8.1 [symbolic = %pattern_type.loc17_18 (constants.%pattern_type.549)] // CHECK:STDOUT: %W: type = bind_symbolic_name W, 2 [symbolic = %W (constants.%W)] @@ -926,33 +926,33 @@ fn CallIndirect() { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete.loc17_24.1: = require_complete_type %tuple.type.loc17_42.2 [symbolic = %require_complete.loc17_24.1 (constants.%require_complete.d4d)] // CHECK:STDOUT: %require_complete.loc17_19: = require_complete_type %U.loc17_8.1 [symbolic = %require_complete.loc17_19 (constants.%require_complete.ed4)] -// CHECK:STDOUT: %F.type: type = fn_type @F.loc17, @A.impl(%V1, %V2, %W) [symbolic = %F.type (constants.%F.type.b3e)] -// CHECK:STDOUT: %F: @F.loc17.%F.type (%F.type.b3e) = struct_value () [symbolic = %F (constants.%F.d79)] -// CHECK:STDOUT: %F.specific_fn.loc18_12.2: = specific_function %F, @F.loc17(%V1, %V2, %W, %U.loc17_8.1) [symbolic = %F.specific_fn.loc18_12.2 (constants.%F.specific_fn.7d9)] +// CHECK:STDOUT: %tuple.type.as.A.impl.F.type: type = fn_type @tuple.type.as.A.impl.F, @tuple.type.as.A.impl(%V1, %V2, %W) [symbolic = %tuple.type.as.A.impl.F.type (constants.%tuple.type.as.A.impl.F.type.b3e)] +// CHECK:STDOUT: %tuple.type.as.A.impl.F: @tuple.type.as.A.impl.F.%tuple.type.as.A.impl.F.type (%tuple.type.as.A.impl.F.type.b3e) = struct_value () [symbolic = %tuple.type.as.A.impl.F (constants.%tuple.type.as.A.impl.F.d79)] +// CHECK:STDOUT: %tuple.type.as.A.impl.F.specific_fn.loc18_12.2: = specific_function %tuple.type.as.A.impl.F, @tuple.type.as.A.impl.F(%V1, %V2, %W, %U.loc17_8.1) [symbolic = %tuple.type.as.A.impl.F.specific_fn.loc18_12.2 (constants.%tuple.type.as.A.impl.F.specific_fn.7d9)] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %tuple.type.loc17_42.2, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness.0d1)] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %tuple.type.loc17_42.2, (%Destroy.lookup_impl_witness) [symbolic = %Destroy.facet (constants.%Destroy.facet.3f0)] -// CHECK:STDOUT: %.loc17_24.3: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.loc17_24.3 (constants.%.a93)] -// CHECK:STDOUT: %impl.elem0.loc17_24.2: @F.loc17.%.loc17_24.3 (%.a93) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc17_24.2 (constants.%impl.elem0.9fc)] -// CHECK:STDOUT: %specific_impl_fn.loc17_24.2: = specific_impl_function %impl.elem0.loc17_24.2, @Op.1(%Destroy.facet) [symbolic = %specific_impl_fn.loc17_24.2 (constants.%specific_impl_fn.2c6)] +// CHECK:STDOUT: %.loc17_24.3: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet [symbolic = %.loc17_24.3 (constants.%.a93)] +// CHECK:STDOUT: %impl.elem0.loc17_24.2: @tuple.type.as.A.impl.F.%.loc17_24.3 (%.a93) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc17_24.2 (constants.%impl.elem0.9fc)] +// CHECK:STDOUT: %specific_impl_fn.loc17_24.2: = specific_impl_function %impl.elem0.loc17_24.2, @Destroy.Op(%Destroy.facet) [symbolic = %specific_impl_fn.loc17_24.2 (constants.%specific_impl_fn.2c6)] // CHECK:STDOUT: %ptr: type = ptr_type %tuple.type.loc17_42.2 [symbolic = %ptr (constants.%ptr.ab5)] // CHECK:STDOUT: %require_complete.loc17_24.2: = require_complete_type %ptr [symbolic = %require_complete.loc17_24.2 (constants.%require_complete.293)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%u.param: @F.loc17.%U.loc17_8.1 (%U.753)) -> %return.param: @F.loc17.%tuple.type.loc17_42.2 (%tuple.type.8ae) { +// CHECK:STDOUT: fn(%u.param: @tuple.type.as.A.impl.F.%U.loc17_8.1 (%U.753)) -> %return.param: @tuple.type.as.A.impl.F.%tuple.type.loc17_42.2 (%tuple.type.8ae) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc18: @F.loc17.%F.type (%F.type.b3e) = specific_constant @A.impl.%F.decl, @A.impl(constants.%V1, constants.%V2, constants.%W) [symbolic = %F (constants.%F.d79)] -// CHECK:STDOUT: %F.ref: @F.loc17.%F.type (%F.type.b3e) = name_ref F, %.loc18 [symbolic = %F (constants.%F.d79)] +// CHECK:STDOUT: %.loc18: @tuple.type.as.A.impl.F.%tuple.type.as.A.impl.F.type (%tuple.type.as.A.impl.F.type.b3e) = specific_constant @tuple.type.as.A.impl.%tuple.type.as.A.impl.F.decl, @tuple.type.as.A.impl(constants.%V1, constants.%V2, constants.%W) [symbolic = %tuple.type.as.A.impl.F (constants.%tuple.type.as.A.impl.F.d79)] +// CHECK:STDOUT: %F.ref: @tuple.type.as.A.impl.F.%tuple.type.as.A.impl.F.type (%tuple.type.as.A.impl.F.type.b3e) = name_ref F, %.loc18 [symbolic = %tuple.type.as.A.impl.F (constants.%tuple.type.as.A.impl.F.d79)] // CHECK:STDOUT: %U.ref.loc18: type = name_ref U, %U.loc17_8.2 [symbolic = %U.loc17_8.1 (constants.%U.753)] -// CHECK:STDOUT: %u.ref: @F.loc17.%U.loc17_8.1 (%U.753) = name_ref u, %u -// CHECK:STDOUT: %F.specific_fn.loc18_12.1: = specific_function %F.ref, @F.loc17(constants.%V1, constants.%V2, constants.%W, constants.%U.753) [symbolic = %F.specific_fn.loc18_12.2 (constants.%F.specific_fn.7d9)] -// CHECK:STDOUT: %.loc17_24.1: ref @F.loc17.%tuple.type.loc17_42.2 (%tuple.type.8ae) = splice_block %return {} -// CHECK:STDOUT: %F.call: init @F.loc17.%tuple.type.loc17_42.2 (%tuple.type.8ae) = call %F.specific_fn.loc18_12.1(%u.ref) to %.loc17_24.1 -// CHECK:STDOUT: %impl.elem0.loc17_24.1: @F.loc17.%.loc17_24.3 (%.a93) = impl_witness_access constants.%Destroy.lookup_impl_witness.0d1, element0 [symbolic = %impl.elem0.loc17_24.2 (constants.%impl.elem0.9fc)] +// CHECK:STDOUT: %u.ref: @tuple.type.as.A.impl.F.%U.loc17_8.1 (%U.753) = name_ref u, %u +// CHECK:STDOUT: %tuple.type.as.A.impl.F.specific_fn.loc18_12.1: = specific_function %F.ref, @tuple.type.as.A.impl.F(constants.%V1, constants.%V2, constants.%W, constants.%U.753) [symbolic = %tuple.type.as.A.impl.F.specific_fn.loc18_12.2 (constants.%tuple.type.as.A.impl.F.specific_fn.7d9)] +// CHECK:STDOUT: %.loc17_24.1: ref @tuple.type.as.A.impl.F.%tuple.type.loc17_42.2 (%tuple.type.8ae) = splice_block %return {} +// CHECK:STDOUT: %tuple.type.as.A.impl.F.call: init @tuple.type.as.A.impl.F.%tuple.type.loc17_42.2 (%tuple.type.8ae) = call %tuple.type.as.A.impl.F.specific_fn.loc18_12.1(%u.ref) to %.loc17_24.1 +// CHECK:STDOUT: %impl.elem0.loc17_24.1: @tuple.type.as.A.impl.F.%.loc17_24.3 (%.a93) = impl_witness_access constants.%Destroy.lookup_impl_witness.0d1, element0 [symbolic = %impl.elem0.loc17_24.2 (constants.%impl.elem0.9fc)] // CHECK:STDOUT: %bound_method.loc17_24.1: = bound_method %.loc17_24.1, %impl.elem0.loc17_24.1 -// CHECK:STDOUT: %specific_impl_fn.loc17_24.1: = specific_impl_function %impl.elem0.loc17_24.1, @Op.1(constants.%Destroy.facet.3f0) [symbolic = %specific_impl_fn.loc17_24.2 (constants.%specific_impl_fn.2c6)] +// CHECK:STDOUT: %specific_impl_fn.loc17_24.1: = specific_impl_function %impl.elem0.loc17_24.1, @Destroy.Op(constants.%Destroy.facet.3f0) [symbolic = %specific_impl_fn.loc17_24.2 (constants.%specific_impl_fn.2c6)] // CHECK:STDOUT: %bound_method.loc17_24.2: = bound_method %.loc17_24.1, %specific_impl_fn.loc17_24.1 -// CHECK:STDOUT: %addr: @F.loc17.%ptr (%ptr.ab5) = addr_of %.loc17_24.1 +// CHECK:STDOUT: %addr: @tuple.type.as.A.impl.F.%ptr (%ptr.ab5) = addr_of %.loc17_24.1 // CHECK:STDOUT: %.loc17_24.2: init %empty_tuple.type = call %bound_method.loc17_24.2(%addr) -// CHECK:STDOUT: return %F.call to %return +// CHECK:STDOUT: return %tuple.type.as.A.impl.F.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -971,28 +971,28 @@ fn CallIndirect() { // CHECK:STDOUT: %F.ref: %A.assoc_type.296 = name_ref F, %.loc24_31.1 [concrete = constants.%assoc0.5f6] // CHECK:STDOUT: %as_type: type = facet_access_type %.loc24_23 [concrete = constants.%tuple.type.a46] // CHECK:STDOUT: %.loc24_31.2: type = converted %.loc24_23, %as_type [concrete = constants.%tuple.type.a46] -// CHECK:STDOUT: %impl.elem0: %.406 = impl_witness_access constants.%A.impl_witness.8ac, element0 [concrete = constants.%F.93b] +// CHECK:STDOUT: %impl.elem0: %.406 = impl_witness_access constants.%A.impl_witness.8ac, element0 [concrete = constants.%tuple.type.as.A.impl.F.93b] // CHECK:STDOUT: %Z.ref: type = name_ref Z, file.%Z.decl [concrete = constants.%Z] // CHECK:STDOUT: %.loc24_38.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @F.loc17(constants.%Y1, constants.%Y2, constants.%X, constants.%Z) [concrete = constants.%F.specific_fn.79b] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @tuple.type.as.A.impl.F(constants.%Y1, constants.%Y2, constants.%X, constants.%Z) [concrete = constants.%tuple.type.as.A.impl.F.specific_fn.79b] // CHECK:STDOUT: %.loc24_39.1: ref %tuple.type.415 = temporary_storage // CHECK:STDOUT: %.loc24_38.2: ref %Z = temporary_storage // CHECK:STDOUT: %.loc24_38.3: init %Z = class_init (), %.loc24_38.2 [concrete = constants.%Z.val] // CHECK:STDOUT: %.loc24_38.4: ref %Z = temporary %.loc24_38.2, %.loc24_38.3 // CHECK:STDOUT: %.loc24_38.5: ref %Z = converted %.loc24_38.1, %.loc24_38.4 // CHECK:STDOUT: %.loc24_38.6: %Z = bind_value %.loc24_38.5 -// CHECK:STDOUT: %F.call: init %tuple.type.415 = call %specific_fn(%.loc24_38.6) to %.loc24_39.1 -// CHECK:STDOUT: %.loc24_39.2: ref %tuple.type.415 = temporary %.loc24_39.1, %F.call -// CHECK:STDOUT: %Op.bound.loc24_38: = bound_method %.loc24_38.2, constants.%Op.6e3 -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.6e3, @Op.2(constants.%Z) [concrete = constants.%Op.specific_fn.3b7] -// CHECK:STDOUT: %bound_method.loc24_38: = bound_method %.loc24_38.2, %Op.specific_fn.1 +// CHECK:STDOUT: %tuple.type.as.A.impl.F.call: init %tuple.type.415 = call %specific_fn(%.loc24_38.6) to %.loc24_39.1 +// CHECK:STDOUT: %.loc24_39.2: ref %tuple.type.415 = temporary %.loc24_39.1, %tuple.type.as.A.impl.F.call +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc24_38: = bound_method %.loc24_38.2, constants.%T.as.Destroy.impl.Op.6e3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.6e3, @T.as.Destroy.impl.Op(constants.%Z) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.3b7] +// CHECK:STDOUT: %bound_method.loc24_38: = bound_method %.loc24_38.2, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc24_38: %ptr.fb6 = addr_of %.loc24_38.2 -// CHECK:STDOUT: %no_op.loc24_38: init %empty_tuple.type = call %bound_method.loc24_38(%addr.loc24_38) -// CHECK:STDOUT: %Op.bound.loc24_39: = bound_method %.loc24_39.1, constants.%Op.66e -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.66e, @Op.2(constants.%tuple.type.415) [concrete = constants.%Op.specific_fn.ce9] -// CHECK:STDOUT: %bound_method.loc24_39: = bound_method %.loc24_39.1, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc24_38: init %empty_tuple.type = call %bound_method.loc24_38(%addr.loc24_38) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc24_39: = bound_method %.loc24_39.1, constants.%T.as.Destroy.impl.Op.66e +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.66e, @T.as.Destroy.impl.Op(constants.%tuple.type.415) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.ce9] +// CHECK:STDOUT: %bound_method.loc24_39: = bound_method %.loc24_39.1, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc24_39: %ptr.ad9 = addr_of %.loc24_39.1 -// CHECK:STDOUT: %no_op.loc24_39: init %empty_tuple.type = call %bound_method.loc24_39(%addr.loc24_39) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc24_39: init %empty_tuple.type = call %bound_method.loc24_39(%addr.loc24_39) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1003,16 +1003,16 @@ fn CallIndirect() { // CHECK:STDOUT: %T.as_type.loc28_4.2: type = facet_access_type %T.loc27_16.1 [symbolic = %T.as_type.loc28_4.2 (constants.%T.as_type)] // CHECK:STDOUT: %A.lookup_impl_witness: = lookup_impl_witness %T.loc27_16.1, @A, @A(constants.%X) [symbolic = %A.lookup_impl_witness (constants.%A.lookup_impl_witness)] // CHECK:STDOUT: %A.facet: %A.type.91f = facet_value %T.as_type.loc28_4.2, (%A.lookup_impl_witness) [symbolic = %A.facet (constants.%A.facet.11f)] -// CHECK:STDOUT: %.loc28_4.3: type = fn_type_with_self_type constants.%F.type.13d, %A.facet [symbolic = %.loc28_4.3 (constants.%.ffa)] +// CHECK:STDOUT: %.loc28_4.3: type = fn_type_with_self_type constants.%A.F.type.13d, %A.facet [symbolic = %.loc28_4.3 (constants.%.ffa)] // CHECK:STDOUT: %impl.elem0.loc28_4.2: @CallGeneric.%.loc28_4.3 (%.ffa) = impl_witness_access %A.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc28_4.2 (constants.%impl.elem0.0e5)] -// CHECK:STDOUT: %specific_impl_fn.loc28_4.2: = specific_impl_function %impl.elem0.loc28_4.2, @F.loc6(constants.%X, %A.facet, constants.%Z) [symbolic = %specific_impl_fn.loc28_4.2 (constants.%specific_impl_fn.e7e)] +// CHECK:STDOUT: %specific_impl_fn.loc28_4.2: = specific_impl_function %impl.elem0.loc28_4.2, @A.F(constants.%X, %A.facet, constants.%Z) [symbolic = %specific_impl_fn.loc28_4.2 (constants.%specific_impl_fn.e7e)] // CHECK:STDOUT: %tuple.type: type = tuple_type (constants.%X, %T.as_type.loc28_4.2, constants.%Z) [symbolic = %tuple.type (constants.%tuple.type.e28)] // CHECK:STDOUT: %require_complete.loc28_12.1: = require_complete_type %tuple.type [symbolic = %require_complete.loc28_12.1 (constants.%require_complete.500)] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %tuple.type, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness.1a2)] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %tuple.type, (%Destroy.lookup_impl_witness) [symbolic = %Destroy.facet (constants.%Destroy.facet.1a6)] -// CHECK:STDOUT: %.loc28_12.5: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.loc28_12.5 (constants.%.efa)] +// CHECK:STDOUT: %.loc28_12.5: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet [symbolic = %.loc28_12.5 (constants.%.efa)] // CHECK:STDOUT: %impl.elem0.loc28_12.2: @CallGeneric.%.loc28_12.5 (%.efa) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc28_12.2 (constants.%impl.elem0.305)] -// CHECK:STDOUT: %specific_impl_fn.loc28_12.2: = specific_impl_function %impl.elem0.loc28_12.2, @Op.1(%Destroy.facet) [symbolic = %specific_impl_fn.loc28_12.2 (constants.%specific_impl_fn.52a)] +// CHECK:STDOUT: %specific_impl_fn.loc28_12.2: = specific_impl_function %impl.elem0.loc28_12.2, @Destroy.Op(%Destroy.facet) [symbolic = %specific_impl_fn.loc28_12.2 (constants.%specific_impl_fn.52a)] // CHECK:STDOUT: %ptr: type = ptr_type %tuple.type [symbolic = %ptr (constants.%ptr.103)] // CHECK:STDOUT: %require_complete.loc28_12.2: = require_complete_type %ptr [symbolic = %require_complete.loc28_12.2 (constants.%require_complete.8d3)] // CHECK:STDOUT: @@ -1026,7 +1026,7 @@ fn CallIndirect() { // CHECK:STDOUT: %impl.elem0.loc28_4.1: @CallGeneric.%.loc28_4.3 (%.ffa) = impl_witness_access constants.%A.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc28_4.2 (constants.%impl.elem0.0e5)] // CHECK:STDOUT: %Z.ref: type = name_ref Z, file.%Z.decl [concrete = constants.%Z] // CHECK:STDOUT: %.loc28_11.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %specific_impl_fn.loc28_4.1: = specific_impl_function %impl.elem0.loc28_4.1, @F.loc6(constants.%X, constants.%A.facet.11f, constants.%Z) [symbolic = %specific_impl_fn.loc28_4.2 (constants.%specific_impl_fn.e7e)] +// CHECK:STDOUT: %specific_impl_fn.loc28_4.1: = specific_impl_function %impl.elem0.loc28_4.1, @A.F(constants.%X, constants.%A.facet.11f, constants.%Z) [symbolic = %specific_impl_fn.loc28_4.2 (constants.%specific_impl_fn.e7e)] // CHECK:STDOUT: %.loc28_12.1: ref @CallGeneric.%tuple.type (%tuple.type.e28) = temporary_storage // CHECK:STDOUT: %.loc28_11.2: ref %Z = temporary_storage // CHECK:STDOUT: %.loc28_11.3: init %Z = class_init (), %.loc28_11.2 [concrete = constants.%Z.val] @@ -1035,14 +1035,14 @@ fn CallIndirect() { // CHECK:STDOUT: %.loc28_11.6: %Z = bind_value %.loc28_11.5 // CHECK:STDOUT: %.loc28_12.2: init @CallGeneric.%tuple.type (%tuple.type.e28) = call %specific_impl_fn.loc28_4.1(%.loc28_11.6) to %.loc28_12.1 // CHECK:STDOUT: %.loc28_12.3: ref @CallGeneric.%tuple.type (%tuple.type.e28) = temporary %.loc28_12.1, %.loc28_12.2 -// CHECK:STDOUT: %Op.bound: = bound_method %.loc28_11.2, constants.%Op.6e3 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.6e3, @Op.2(constants.%Z) [concrete = constants.%Op.specific_fn.3b7] -// CHECK:STDOUT: %bound_method.loc28_11: = bound_method %.loc28_11.2, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc28_11.2, constants.%T.as.Destroy.impl.Op.6e3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.6e3, @T.as.Destroy.impl.Op(constants.%Z) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.3b7] +// CHECK:STDOUT: %bound_method.loc28_11: = bound_method %.loc28_11.2, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr.loc28_11: %ptr.fb6 = addr_of %.loc28_11.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc28_11(%addr.loc28_11) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc28_11(%addr.loc28_11) // CHECK:STDOUT: %impl.elem0.loc28_12.1: @CallGeneric.%.loc28_12.5 (%.efa) = impl_witness_access constants.%Destroy.lookup_impl_witness.1a2, element0 [symbolic = %impl.elem0.loc28_12.2 (constants.%impl.elem0.305)] // CHECK:STDOUT: %bound_method.loc28_12.1: = bound_method %.loc28_12.1, %impl.elem0.loc28_12.1 -// CHECK:STDOUT: %specific_impl_fn.loc28_12.1: = specific_impl_function %impl.elem0.loc28_12.1, @Op.1(constants.%Destroy.facet.1a6) [symbolic = %specific_impl_fn.loc28_12.2 (constants.%specific_impl_fn.52a)] +// CHECK:STDOUT: %specific_impl_fn.loc28_12.1: = specific_impl_function %impl.elem0.loc28_12.1, @Destroy.Op(constants.%Destroy.facet.1a6) [symbolic = %specific_impl_fn.loc28_12.2 (constants.%specific_impl_fn.52a)] // CHECK:STDOUT: %bound_method.loc28_12.2: = bound_method %.loc28_12.1, %specific_impl_fn.loc28_12.1 // CHECK:STDOUT: %addr.loc28_12: @CallGeneric.%ptr (%ptr.103) = addr_of %.loc28_12.1 // CHECK:STDOUT: %.loc28_12.4: init %empty_tuple.type = call %bound_method.loc28_12.2(%addr.loc28_12) @@ -1068,14 +1068,14 @@ fn CallIndirect() { // CHECK:STDOUT: %T.loc5_13.1 => constants.%T.8b3 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc6(constants.%T.8b3, constants.%Self.753, constants.%U.2cb) { -// CHECK:STDOUT: %U.loc6_8.2 => constants.%U.2cb +// CHECK:STDOUT: specific @A.F(constants.%T.8b3, constants.%Self.753, constants.%U.2cb) { +// CHECK:STDOUT: %U.loc6_8.1 => constants.%U.2cb // CHECK:STDOUT: %pattern_type.loc6_18 => constants.%pattern_type.20f // CHECK:STDOUT: %T => constants.%T.8b3 // CHECK:STDOUT: %A.type => constants.%A.type.75a // CHECK:STDOUT: %Self => constants.%Self.753 // CHECK:STDOUT: %tuple.type.loc6_38.1 => constants.%tuple.type.e59 -// CHECK:STDOUT: %Self.as_type.loc6_38.2 => constants.%Self.as_type.81d +// CHECK:STDOUT: %Self.as_type.loc6_38.1 => constants.%Self.as_type.81d // CHECK:STDOUT: %tuple.type.loc6_38.2 => constants.%tuple.type.bd2 // CHECK:STDOUT: %pattern_type.loc6_24 => constants.%pattern_type.44c // CHECK:STDOUT: } @@ -1086,27 +1086,27 @@ fn CallIndirect() { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %A.type => constants.%A.type.f21 // CHECK:STDOUT: %Self.2 => constants.%Self.4fe -// CHECK:STDOUT: %F.type => constants.%F.type.904 -// CHECK:STDOUT: %F => constants.%F.1ee +// CHECK:STDOUT: %A.F.type => constants.%A.F.type.904 +// CHECK:STDOUT: %A.F => constants.%A.F.1ee // CHECK:STDOUT: %A.assoc_type => constants.%A.assoc_type.b05 // CHECK:STDOUT: %assoc0.loc6_39.2 => constants.%assoc0.c82 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @A.impl(constants.%V1, constants.%V2, constants.%W) { -// CHECK:STDOUT: %V1.loc14_14.2 => constants.%V1 -// CHECK:STDOUT: %V2.loc14_25.2 => constants.%V2 -// CHECK:STDOUT: %W.loc14_36.2 => constants.%W +// CHECK:STDOUT: specific @tuple.type.as.A.impl(constants.%V1, constants.%V2, constants.%W) { +// CHECK:STDOUT: %V1.loc14_14.1 => constants.%V1 +// CHECK:STDOUT: %V2.loc14_25.1 => constants.%V2 +// CHECK:STDOUT: %W.loc14_36.1 => constants.%W // CHECK:STDOUT: %tuple.type => constants.%tuple.type.30b -// CHECK:STDOUT: %A.type.loc14_61.2 => constants.%A.type.f21 +// CHECK:STDOUT: %A.type.loc14_61.1 => constants.%A.type.f21 // CHECK:STDOUT: %require_complete => constants.%require_complete.796 // CHECK:STDOUT: %A.impl_witness => constants.%A.impl_witness.f15 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.b3e -// CHECK:STDOUT: %F => constants.%F.d79 +// CHECK:STDOUT: %tuple.type.as.A.impl.F.type => constants.%tuple.type.as.A.impl.F.type.b3e +// CHECK:STDOUT: %tuple.type.as.A.impl.F => constants.%tuple.type.as.A.impl.F.d79 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc17(constants.%V1, constants.%V2, constants.%W, constants.%U.753) { +// CHECK:STDOUT: specific @tuple.type.as.A.impl.F(constants.%V1, constants.%V2, constants.%W, constants.%U.753) { // CHECK:STDOUT: %U.loc17_8.1 => constants.%U.753 // CHECK:STDOUT: %pattern_type.loc17_18 => constants.%pattern_type.549 // CHECK:STDOUT: %W => constants.%W @@ -1119,9 +1119,9 @@ fn CallIndirect() { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete.loc17_24.1 => constants.%require_complete.d4d // CHECK:STDOUT: %require_complete.loc17_19 => constants.%require_complete.ed4 -// CHECK:STDOUT: %F.type => constants.%F.type.b3e -// CHECK:STDOUT: %F => constants.%F.d79 -// CHECK:STDOUT: %F.specific_fn.loc18_12.2 => constants.%F.specific_fn.7d9 +// CHECK:STDOUT: %tuple.type.as.A.impl.F.type => constants.%tuple.type.as.A.impl.F.type.b3e +// CHECK:STDOUT: %tuple.type.as.A.impl.F => constants.%tuple.type.as.A.impl.F.d79 +// CHECK:STDOUT: %tuple.type.as.A.impl.F.specific_fn.loc18_12.2 => constants.%tuple.type.as.A.impl.F.specific_fn.7d9 // CHECK:STDOUT: %Destroy.lookup_impl_witness => constants.%Destroy.lookup_impl_witness.0d1 // CHECK:STDOUT: %Destroy.facet => constants.%Destroy.facet.3f0 // CHECK:STDOUT: %.loc17_24.3 => constants.%.a93 @@ -1131,14 +1131,14 @@ fn CallIndirect() { // CHECK:STDOUT: %require_complete.loc17_24.2 => constants.%require_complete.293 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc6(constants.%W, constants.%A.facet.461, constants.%U.753) { -// CHECK:STDOUT: %U.loc6_8.2 => constants.%U.753 +// CHECK:STDOUT: specific @A.F(constants.%W, constants.%A.facet.461, constants.%U.753) { +// CHECK:STDOUT: %U.loc6_8.1 => constants.%U.753 // CHECK:STDOUT: %pattern_type.loc6_18 => constants.%pattern_type.549 // CHECK:STDOUT: %T => constants.%W // CHECK:STDOUT: %A.type => constants.%A.type.f21 // CHECK:STDOUT: %Self => constants.%A.facet.461 // CHECK:STDOUT: %tuple.type.loc6_38.1 => constants.%tuple.type.136 -// CHECK:STDOUT: %Self.as_type.loc6_38.2 => constants.%tuple.type.30b +// CHECK:STDOUT: %Self.as_type.loc6_38.1 => constants.%tuple.type.30b // CHECK:STDOUT: %tuple.type.loc6_38.2 => constants.%tuple.type.8ae // CHECK:STDOUT: %pattern_type.loc6_24 => constants.%pattern_type.d4a // CHECK:STDOUT: } @@ -1149,27 +1149,27 @@ fn CallIndirect() { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %A.type => constants.%A.type.91f // CHECK:STDOUT: %Self.2 => constants.%Self.1bb -// CHECK:STDOUT: %F.type => constants.%F.type.13d -// CHECK:STDOUT: %F => constants.%F.d83 +// CHECK:STDOUT: %A.F.type => constants.%A.F.type.13d +// CHECK:STDOUT: %A.F => constants.%A.F.d83 // CHECK:STDOUT: %A.assoc_type => constants.%A.assoc_type.296 // CHECK:STDOUT: %assoc0.loc6_39.2 => constants.%assoc0.5f6 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @A.impl(constants.%Y1, constants.%Y2, constants.%X) { -// CHECK:STDOUT: %V1.loc14_14.2 => constants.%Y1 -// CHECK:STDOUT: %V2.loc14_25.2 => constants.%Y2 -// CHECK:STDOUT: %W.loc14_36.2 => constants.%X +// CHECK:STDOUT: specific @tuple.type.as.A.impl(constants.%Y1, constants.%Y2, constants.%X) { +// CHECK:STDOUT: %V1.loc14_14.1 => constants.%Y1 +// CHECK:STDOUT: %V2.loc14_25.1 => constants.%Y2 +// CHECK:STDOUT: %W.loc14_36.1 => constants.%X // CHECK:STDOUT: %tuple.type => constants.%tuple.type.a46 -// CHECK:STDOUT: %A.type.loc14_61.2 => constants.%A.type.91f +// CHECK:STDOUT: %A.type.loc14_61.1 => constants.%A.type.91f // CHECK:STDOUT: %require_complete => constants.%complete_type.d76 // CHECK:STDOUT: %A.impl_witness => constants.%A.impl_witness.8ac // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.bf7 -// CHECK:STDOUT: %F => constants.%F.93b +// CHECK:STDOUT: %tuple.type.as.A.impl.F.type => constants.%tuple.type.as.A.impl.F.type.bf7 +// CHECK:STDOUT: %tuple.type.as.A.impl.F => constants.%tuple.type.as.A.impl.F.93b // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc17(constants.%Y1, constants.%Y2, constants.%X, constants.%Z) { +// CHECK:STDOUT: specific @tuple.type.as.A.impl.F(constants.%Y1, constants.%Y2, constants.%X, constants.%Z) { // CHECK:STDOUT: %U.loc17_8.1 => constants.%Z // CHECK:STDOUT: %pattern_type.loc17_18 => constants.%pattern_type.8f9 // CHECK:STDOUT: %W => constants.%X @@ -1182,14 +1182,14 @@ fn CallIndirect() { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete.loc17_24.1 => constants.%complete_type.aa8 // CHECK:STDOUT: %require_complete.loc17_19 => constants.%complete_type.357 -// CHECK:STDOUT: %F.type => constants.%F.type.bf7 -// CHECK:STDOUT: %F => constants.%F.93b -// CHECK:STDOUT: %F.specific_fn.loc18_12.2 => constants.%F.specific_fn.79b +// CHECK:STDOUT: %tuple.type.as.A.impl.F.type => constants.%tuple.type.as.A.impl.F.type.bf7 +// CHECK:STDOUT: %tuple.type.as.A.impl.F => constants.%tuple.type.as.A.impl.F.93b +// CHECK:STDOUT: %tuple.type.as.A.impl.F.specific_fn.loc18_12.2 => constants.%tuple.type.as.A.impl.F.specific_fn.79b // CHECK:STDOUT: %Destroy.lookup_impl_witness => constants.%Destroy.impl_witness.c80 // CHECK:STDOUT: %Destroy.facet => constants.%Destroy.facet.2b1 // CHECK:STDOUT: %.loc17_24.3 => constants.%.1b7 -// CHECK:STDOUT: %impl.elem0.loc17_24.2 => constants.%Op.66e -// CHECK:STDOUT: %specific_impl_fn.loc17_24.2 => constants.%Op.specific_fn.ce9 +// CHECK:STDOUT: %impl.elem0.loc17_24.2 => constants.%T.as.Destroy.impl.Op.66e +// CHECK:STDOUT: %specific_impl_fn.loc17_24.2 => constants.%T.as.Destroy.impl.Op.specific_fn.ce9 // CHECK:STDOUT: %ptr => constants.%ptr.ad9 // CHECK:STDOUT: %require_complete.loc17_24.2 => constants.%complete_type.e23 // CHECK:STDOUT: } @@ -1198,14 +1198,14 @@ fn CallIndirect() { // CHECK:STDOUT: %T.loc27_16.1 => constants.%T.9c2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc6(constants.%X, constants.%A.facet.11f, constants.%Z) { -// CHECK:STDOUT: %U.loc6_8.2 => constants.%Z +// CHECK:STDOUT: specific @A.F(constants.%X, constants.%A.facet.11f, constants.%Z) { +// CHECK:STDOUT: %U.loc6_8.1 => constants.%Z // CHECK:STDOUT: %pattern_type.loc6_18 => constants.%pattern_type.8f9 // CHECK:STDOUT: %T => constants.%X // CHECK:STDOUT: %A.type => constants.%A.type.91f // CHECK:STDOUT: %Self => constants.%A.facet.11f // CHECK:STDOUT: %tuple.type.loc6_38.1 => constants.%tuple.type.a0c -// CHECK:STDOUT: %Self.as_type.loc6_38.2 => constants.%T.as_type +// CHECK:STDOUT: %Self.as_type.loc6_38.1 => constants.%T.as_type // CHECK:STDOUT: %tuple.type.loc6_38.2 => constants.%tuple.type.e28 // CHECK:STDOUT: %pattern_type.loc6_24 => constants.%pattern_type.f25 // CHECK:STDOUT: } @@ -1218,27 +1218,27 @@ fn CallIndirect() { // CHECK:STDOUT: %A.lookup_impl_witness => constants.%A.impl_witness.8ac // CHECK:STDOUT: %A.facet => constants.%A.facet.414 // CHECK:STDOUT: %.loc28_4.3 => constants.%.406 -// CHECK:STDOUT: %impl.elem0.loc28_4.2 => constants.%F.93b -// CHECK:STDOUT: %specific_impl_fn.loc28_4.2 => constants.%F.specific_fn.79b +// CHECK:STDOUT: %impl.elem0.loc28_4.2 => constants.%tuple.type.as.A.impl.F.93b +// CHECK:STDOUT: %specific_impl_fn.loc28_4.2 => constants.%tuple.type.as.A.impl.F.specific_fn.79b // CHECK:STDOUT: %tuple.type => constants.%tuple.type.415 // CHECK:STDOUT: %require_complete.loc28_12.1 => constants.%complete_type.aa8 // CHECK:STDOUT: %Destroy.lookup_impl_witness => constants.%Destroy.impl_witness.c80 // CHECK:STDOUT: %Destroy.facet => constants.%Destroy.facet.2b1 // CHECK:STDOUT: %.loc28_12.5 => constants.%.1b7 -// CHECK:STDOUT: %impl.elem0.loc28_12.2 => constants.%Op.66e -// CHECK:STDOUT: %specific_impl_fn.loc28_12.2 => constants.%Op.specific_fn.ce9 +// CHECK:STDOUT: %impl.elem0.loc28_12.2 => constants.%T.as.Destroy.impl.Op.66e +// CHECK:STDOUT: %specific_impl_fn.loc28_12.2 => constants.%T.as.Destroy.impl.Op.specific_fn.ce9 // CHECK:STDOUT: %ptr => constants.%ptr.ad9 // CHECK:STDOUT: %require_complete.loc28_12.2 => constants.%complete_type.e23 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc6(constants.%X, constants.%A.facet.414, constants.%Z) { -// CHECK:STDOUT: %U.loc6_8.2 => constants.%Z +// CHECK:STDOUT: specific @A.F(constants.%X, constants.%A.facet.414, constants.%Z) { +// CHECK:STDOUT: %U.loc6_8.1 => constants.%Z // CHECK:STDOUT: %pattern_type.loc6_18 => constants.%pattern_type.8f9 // CHECK:STDOUT: %T => constants.%X // CHECK:STDOUT: %A.type => constants.%A.type.91f // CHECK:STDOUT: %Self => constants.%A.facet.414 // CHECK:STDOUT: %tuple.type.loc6_38.1 => constants.%tuple.type.a0c -// CHECK:STDOUT: %Self.as_type.loc6_38.2 => constants.%tuple.type.a46 +// CHECK:STDOUT: %Self.as_type.loc6_38.1 => constants.%tuple.type.a46 // CHECK:STDOUT: %tuple.type.loc6_38.2 => constants.%tuple.type.415 // CHECK:STDOUT: %pattern_type.loc6_24 => constants.%pattern_type.0b2 // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/interface/generic_vs_params.carbon b/toolchain/check/testdata/interface/generic_vs_params.carbon index 04189d1287db..0a8f86d31f93 100644 --- a/toolchain/check/testdata/interface/generic_vs_params.carbon +++ b/toolchain/check/testdata/interface/generic_vs_params.carbon @@ -137,28 +137,28 @@ interface Bar[T:! type] {} // CHECK:STDOUT: %T.loc8_9.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc8_9.1 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %X.decl: type = class_decl @X [concrete = constants.%X] {} {} -// CHECK:STDOUT: impl_decl @NotGenericNoParams.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @X.as.NotGenericNoParams.impl [concrete] {} { // CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [concrete = constants.%X] // CHECK:STDOUT: %NotGenericNoParams.ref: type = name_ref NotGenericNoParams, file.%NotGenericNoParams.decl [concrete = constants.%NotGenericNoParams.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %NotGenericNoParams.impl_witness_table = impl_witness_table (), @NotGenericNoParams.impl [concrete] +// CHECK:STDOUT: %NotGenericNoParams.impl_witness_table = impl_witness_table (), @X.as.NotGenericNoParams.impl [concrete] // CHECK:STDOUT: %NotGenericNoParams.impl_witness: = impl_witness %NotGenericNoParams.impl_witness_table [concrete = constants.%NotGenericNoParams.impl_witness] -// CHECK:STDOUT: impl_decl @NotGenericButParams.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @X.as.NotGenericButParams.impl [concrete] {} { // CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [concrete = constants.%X] // CHECK:STDOUT: %NotGenericButParams.ref: %NotGenericButParams.type.f26 = name_ref NotGenericButParams, file.%NotGenericButParams.decl [concrete = constants.%NotGenericButParams.generic] // CHECK:STDOUT: %NotGenericButParams.type: type = facet_type <@NotGenericButParams> [concrete = constants.%NotGenericButParams.type.014] // CHECK:STDOUT: } -// CHECK:STDOUT: %NotGenericButParams.impl_witness_table = impl_witness_table (), @NotGenericButParams.impl [concrete] +// CHECK:STDOUT: %NotGenericButParams.impl_witness_table = impl_witness_table (), @X.as.NotGenericButParams.impl [concrete] // CHECK:STDOUT: %NotGenericButParams.impl_witness: = impl_witness %NotGenericButParams.impl_witness_table [concrete = constants.%NotGenericButParams.impl_witness] -// CHECK:STDOUT: impl_decl @GenericAndParams.impl.87f [concrete] {} { +// CHECK:STDOUT: impl_decl @X.as.GenericAndParams.impl.87f [concrete] {} { // CHECK:STDOUT: %X.ref.loc16_6: type = name_ref X, file.%X.decl [concrete = constants.%X] // CHECK:STDOUT: %GenericAndParams.ref: %GenericAndParams.type.cde = name_ref GenericAndParams, file.%GenericAndParams.decl [concrete = constants.%GenericAndParams.generic.827] // CHECK:STDOUT: %X.ref.loc16_28: type = name_ref X, file.%X.decl [concrete = constants.%X] // CHECK:STDOUT: %GenericAndParams.type: type = facet_type <@GenericAndParams.loc6, @GenericAndParams.loc6(constants.%X)> [concrete = constants.%GenericAndParams.type.4b6] // CHECK:STDOUT: } -// CHECK:STDOUT: %GenericAndParams.impl_witness_table.loc16 = impl_witness_table (), @GenericAndParams.impl.87f [concrete] +// CHECK:STDOUT: %GenericAndParams.impl_witness_table.loc16 = impl_witness_table (), @X.as.GenericAndParams.impl.87f [concrete] // CHECK:STDOUT: %GenericAndParams.impl_witness.loc16: = impl_witness %GenericAndParams.impl_witness_table.loc16 [concrete = constants.%GenericAndParams.impl_witness.c06] -// CHECK:STDOUT: impl_decl @GenericNoParams.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @X.as.GenericNoParams.impl [concrete] {} { // CHECK:STDOUT: %X.ref.loc17_6: type = name_ref X, file.%X.decl [concrete = constants.%X] // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] // CHECK:STDOUT: %X.ref.loc17_13: type = name_ref X, file.%X.decl [concrete = constants.%X] @@ -166,9 +166,9 @@ interface Bar[T:! type] {} // CHECK:STDOUT: %.loc17: type = specific_constant @C.%GenericNoParams.decl, @C(constants.%X) [concrete = constants.%GenericNoParams.type.b7e] // CHECK:STDOUT: %GenericNoParams.ref: type = name_ref GenericNoParams, %.loc17 [concrete = constants.%GenericNoParams.type.b7e] // CHECK:STDOUT: } -// CHECK:STDOUT: %GenericNoParams.impl_witness_table = impl_witness_table (), @GenericNoParams.impl [concrete] +// CHECK:STDOUT: %GenericNoParams.impl_witness_table = impl_witness_table (), @X.as.GenericNoParams.impl [concrete] // CHECK:STDOUT: %GenericNoParams.impl_witness: = impl_witness %GenericNoParams.impl_witness_table [concrete = constants.%GenericNoParams.impl_witness] -// CHECK:STDOUT: impl_decl @GenericAndParams.impl.15f [concrete] {} { +// CHECK:STDOUT: impl_decl @X.as.GenericAndParams.impl.15f [concrete] {} { // CHECK:STDOUT: %X.ref.loc18_6: type = name_ref X, file.%X.decl [concrete = constants.%X] // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] // CHECK:STDOUT: %X.ref.loc18_13: type = name_ref X, file.%X.decl [concrete = constants.%X] @@ -178,7 +178,7 @@ interface Bar[T:! type] {} // CHECK:STDOUT: %X.ref.loc18_33: type = name_ref X, file.%X.decl [concrete = constants.%X] // CHECK:STDOUT: %GenericAndParams.type: type = facet_type <@GenericAndParams.loc10, @GenericAndParams.loc10(constants.%X, constants.%X)> [concrete = constants.%GenericAndParams.type.79c] // CHECK:STDOUT: } -// CHECK:STDOUT: %GenericAndParams.impl_witness_table.loc18 = impl_witness_table (), @GenericAndParams.impl.15f [concrete] +// CHECK:STDOUT: %GenericAndParams.impl_witness_table.loc18 = impl_witness_table (), @X.as.GenericAndParams.impl.15f [concrete] // CHECK:STDOUT: %GenericAndParams.impl_witness.loc18: = impl_witness %GenericAndParams.impl_witness_table.loc18 [concrete = constants.%GenericAndParams.impl_witness.c9b] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -229,12 +229,12 @@ interface Bar[T:! type] {} // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic interface @GenericAndParams.loc10(@C.%T.loc8_9.2: type, %U.loc10_30.1: type) { -// CHECK:STDOUT: %U.loc10_30.2: type = bind_symbolic_name U, 1 [symbolic = %U.loc10_30.2 (constants.%U)] +// CHECK:STDOUT: generic interface @GenericAndParams.loc10(@C.%T.loc8_9.2: type, %U.loc10_30.2: type) { +// CHECK:STDOUT: %U.loc10_30.1: type = bind_symbolic_name U, 1 [symbolic = %U.loc10_30.1 (constants.%U)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %GenericAndParams.type: type = facet_type <@GenericAndParams.loc10, @GenericAndParams.loc10(%T, %U.loc10_30.2)> [symbolic = %GenericAndParams.type (constants.%GenericAndParams.type.d96)] +// CHECK:STDOUT: %GenericAndParams.type: type = facet_type <@GenericAndParams.loc10, @GenericAndParams.loc10(%T, %U.loc10_30.1)> [symbolic = %GenericAndParams.type (constants.%GenericAndParams.type.d96)] // CHECK:STDOUT: %Self.2: @GenericAndParams.loc10.%GenericAndParams.type (%GenericAndParams.type.d96) = bind_symbolic_name Self, 2 [symbolic = %Self.2 (constants.%Self.37a)] // CHECK:STDOUT: // CHECK:STDOUT: interface { @@ -246,27 +246,27 @@ interface Bar[T:! type] {} // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @NotGenericNoParams.impl: %X.ref as %NotGenericNoParams.ref { +// CHECK:STDOUT: impl @X.as.NotGenericNoParams.impl: %X.ref as %NotGenericNoParams.ref { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%NotGenericNoParams.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @NotGenericButParams.impl: %X.ref as %NotGenericButParams.type { +// CHECK:STDOUT: impl @X.as.NotGenericButParams.impl: %X.ref as %NotGenericButParams.type { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%NotGenericButParams.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @GenericAndParams.impl.87f: %X.ref.loc16_6 as %GenericAndParams.type { +// CHECK:STDOUT: impl @X.as.GenericAndParams.impl.87f: %X.ref.loc16_6 as %GenericAndParams.type { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%GenericAndParams.impl_witness.loc16 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @GenericNoParams.impl: %X.ref.loc17_6 as %GenericNoParams.ref { +// CHECK:STDOUT: impl @X.as.GenericNoParams.impl: %X.ref.loc17_6 as %GenericNoParams.ref { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%GenericNoParams.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @GenericAndParams.impl.15f: %X.ref.loc18_6 as %GenericAndParams.type { +// CHECK:STDOUT: impl @X.as.GenericAndParams.impl.15f: %X.ref.loc18_6 as %GenericAndParams.type { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = file.%GenericAndParams.impl_witness.loc18 // CHECK:STDOUT: } @@ -284,7 +284,7 @@ interface Bar[T:! type] {} // CHECK:STDOUT: %GenericAndParams.decl: @C.%GenericAndParams.type (%GenericAndParams.type.597) = interface_decl @GenericAndParams.loc10 [symbolic = @C.%GenericAndParams.generic (constants.%GenericAndParams.generic.2ec)] { // CHECK:STDOUT: %U.patt: %pattern_type = symbolic_binding_pattern U, 1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %U.loc10_30.1: type = bind_symbolic_name U, 1 [symbolic = %U.loc10_30.2 (constants.%U)] +// CHECK:STDOUT: %U.loc10_30.2: type = bind_symbolic_name U, 1 [symbolic = %U.loc10_30.1 (constants.%U)] // CHECK:STDOUT: } // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] @@ -317,7 +317,7 @@ interface Bar[T:! type] {} // CHECK:STDOUT: specific @GenericNoParams(constants.%T) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @GenericAndParams.loc10(constants.%T, constants.%U) { -// CHECK:STDOUT: %U.loc10_30.2 => constants.%U +// CHECK:STDOUT: %U.loc10_30.1 => constants.%U // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @GenericAndParams.loc6(constants.%X) { @@ -345,7 +345,7 @@ interface Bar[T:! type] {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @GenericAndParams.loc10(constants.%X, constants.%X) { -// CHECK:STDOUT: %U.loc10_30.2 => constants.%X +// CHECK:STDOUT: %U.loc10_30.1 => constants.%X // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %T => constants.%X diff --git a/toolchain/check/testdata/interface/import.carbon b/toolchain/check/testdata/interface/import.carbon index 31a948aee046..36e8054173e9 100644 --- a/toolchain/check/testdata/interface/import.carbon +++ b/toolchain/check/testdata/interface/import.carbon @@ -61,16 +61,16 @@ var f: ForwardDeclared* = &f_ref.f; // CHECK:STDOUT: %Self.1c7: %Basic.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Basic.assoc_type: type = assoc_entity_type @Basic [concrete] // CHECK:STDOUT: %assoc0.0d9: %Basic.assoc_type = assoc_entity element0, @Basic.%T [concrete] -// CHECK:STDOUT: %F.type.320: type = fn_type @F.loc9 [concrete] -// CHECK:STDOUT: %F.952: %F.type.320 = struct_value () [concrete] -// CHECK:STDOUT: %assoc1.9b4: %Basic.assoc_type = assoc_entity element1, @Basic.%F.decl [concrete] +// CHECK:STDOUT: %Basic.F.type: type = fn_type @Basic.F [concrete] +// CHECK:STDOUT: %Basic.F: %Basic.F.type = struct_value () [concrete] +// CHECK:STDOUT: %assoc1.9b4: %Basic.assoc_type = assoc_entity element1, @Basic.%Basic.F.decl [concrete] // CHECK:STDOUT: %ForwardDeclared.type: type = facet_type <@ForwardDeclared> [concrete] // CHECK:STDOUT: %Self.efa: %ForwardDeclared.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %ForwardDeclared.assoc_type: type = assoc_entity_type @ForwardDeclared [concrete] // CHECK:STDOUT: %assoc0.27c: %ForwardDeclared.assoc_type = assoc_entity element0, @ForwardDeclared.%T [concrete] -// CHECK:STDOUT: %F.type.505: type = fn_type @F.loc17 [concrete] -// CHECK:STDOUT: %F.eb5: %F.type.505 = struct_value () [concrete] -// CHECK:STDOUT: %assoc1.c80: %ForwardDeclared.assoc_type = assoc_entity element1, @ForwardDeclared.%F.decl [concrete] +// CHECK:STDOUT: %ForwardDeclared.F.type: type = fn_type @ForwardDeclared.F [concrete] +// CHECK:STDOUT: %ForwardDeclared.F: %ForwardDeclared.F.type = struct_value () [concrete] +// CHECK:STDOUT: %assoc1.c80: %ForwardDeclared.assoc_type = assoc_entity element1, @ForwardDeclared.%ForwardDeclared.F.decl [concrete] // CHECK:STDOUT: %struct_type.f: type = struct_type {.f: %ForwardDeclared.type} [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %struct_type.f [concrete] // CHECK:STDOUT: } @@ -110,14 +110,14 @@ var f: ForwardDeclared* = &f_ref.f; // CHECK:STDOUT: %T: type = assoc_const_decl @T.loc8 [concrete] { // CHECK:STDOUT: %assoc0: %Basic.assoc_type = assoc_entity element0, @Basic.%T [concrete = constants.%assoc0.0d9] // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type.320 = fn_decl @F.loc9 [concrete = constants.%F.952] {} {} -// CHECK:STDOUT: %assoc1: %Basic.assoc_type = assoc_entity element1, %F.decl [concrete = constants.%assoc1.9b4] +// CHECK:STDOUT: %Basic.F.decl: %Basic.F.type = fn_decl @Basic.F [concrete = constants.%Basic.F] {} {} +// CHECK:STDOUT: %assoc1: %Basic.assoc_type = assoc_entity element1, %Basic.F.decl [concrete = constants.%assoc1.9b4] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .T = @T.loc8.%assoc0 // CHECK:STDOUT: .F = %assoc1 -// CHECK:STDOUT: witness = (%T, %F.decl) +// CHECK:STDOUT: witness = (%T, %Basic.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @ForwardDeclared { @@ -125,14 +125,14 @@ var f: ForwardDeclared* = &f_ref.f; // CHECK:STDOUT: %T: type = assoc_const_decl @T.loc16 [concrete] { // CHECK:STDOUT: %assoc0: %ForwardDeclared.assoc_type = assoc_entity element0, @ForwardDeclared.%T [concrete = constants.%assoc0.27c] // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type.505 = fn_decl @F.loc17 [concrete = constants.%F.eb5] {} {} -// CHECK:STDOUT: %assoc1: %ForwardDeclared.assoc_type = assoc_entity element1, %F.decl [concrete = constants.%assoc1.c80] +// CHECK:STDOUT: %ForwardDeclared.F.decl: %ForwardDeclared.F.type = fn_decl @ForwardDeclared.F [concrete = constants.%ForwardDeclared.F] {} {} +// CHECK:STDOUT: %assoc1: %ForwardDeclared.assoc_type = assoc_entity element1, %ForwardDeclared.F.decl [concrete = constants.%assoc1.c80] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .T = @T.loc16.%assoc0 // CHECK:STDOUT: .F = %assoc1 -// CHECK:STDOUT: witness = (%T, %F.decl) +// CHECK:STDOUT: witness = (%T, %ForwardDeclared.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic assoc_const @T.loc8(@Basic.%Self: %Basic.type) { @@ -143,21 +143,21 @@ var f: ForwardDeclared* = &f_ref.f; // CHECK:STDOUT: assoc_const T:! type; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc9(@Basic.%Self: %Basic.type) { +// CHECK:STDOUT: generic fn @Basic.F(@Basic.%Self: %Basic.type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.loc17(@ForwardDeclared.%Self: %ForwardDeclared.type) { +// CHECK:STDOUT: generic fn @ForwardDeclared.F(@ForwardDeclared.%Self: %ForwardDeclared.type) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @T.loc8(constants.%Self.1c7) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc9(constants.%Self.1c7) {} +// CHECK:STDOUT: specific @Basic.F(constants.%Self.1c7) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @T.loc16(constants.%Self.efa) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.loc17(constants.%Self.efa) {} +// CHECK:STDOUT: specific @ForwardDeclared.F(constants.%Self.efa) {} // CHECK:STDOUT: // CHECK:STDOUT: --- b.carbon // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/import_interface_decl.carbon b/toolchain/check/testdata/interface/import_interface_decl.carbon index c4e4f048da9e..ed506a7a61ac 100644 --- a/toolchain/check/testdata/interface/import_interface_decl.carbon +++ b/toolchain/check/testdata/interface/import_interface_decl.carbon @@ -74,12 +74,12 @@ impl library "[[@TEST_NAME]]"; // CHECK:STDOUT: .B = %B.decl // CHECK:STDOUT: } // CHECK:STDOUT: %B.decl: type = interface_decl @B [concrete = constants.%B.type] {} {} -// CHECK:STDOUT: impl_decl @B.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @empty_tuple.type.as.B.impl [concrete] {} { // CHECK:STDOUT: %.loc7_7.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc7_7.2: type = converted %.loc7_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %B.impl_witness_table = impl_witness_table (), @B.impl [concrete] +// CHECK:STDOUT: %B.impl_witness_table = impl_witness_table (), @empty_tuple.type.as.B.impl [concrete] // CHECK:STDOUT: %B.impl_witness: = impl_witness %B.impl_witness_table [concrete = constants.%B.impl_witness] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -91,7 +91,7 @@ impl library "[[@TEST_NAME]]"; // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @B.impl: %.loc7_7.2 as %B.ref; +// CHECK:STDOUT: impl @empty_tuple.type.as.B.impl: %.loc7_7.2 as %B.ref; // CHECK:STDOUT: // CHECK:STDOUT: --- b.impl.carbon // CHECK:STDOUT: @@ -121,5 +121,5 @@ impl library "[[@TEST_NAME]]"; // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @B.impl: imports.%Main.import_ref.e5c as imports.%Main.import_ref.171 [from "fail_b.carbon"]; +// CHECK:STDOUT: impl @empty_tuple.type.as.B.impl: imports.%Main.import_ref.e5c as imports.%Main.import_ref.171 [from "fail_b.carbon"]; // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/local.carbon b/toolchain/check/testdata/interface/local.carbon index d9e5820b3e48..74acd2e0a216 100644 --- a/toolchain/check/testdata/interface/local.carbon +++ b/toolchain/check/testdata/interface/local.carbon @@ -32,16 +32,16 @@ fn F() { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic] // CHECK:STDOUT: %pattern_type.744: type = pattern_type %Self.as_type [symbolic] -// CHECK:STDOUT: %G.type.bff: type = fn_type @G.loc17 [concrete] -// CHECK:STDOUT: %G.f0a: %G.type.bff = struct_value () [concrete] +// CHECK:STDOUT: %I.G.type: type = fn_type @I.G [concrete] +// CHECK:STDOUT: %I.G: %I.G.type = struct_value () [concrete] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] -// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%G.decl [concrete] +// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%I.G.decl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @F.%I.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] -// CHECK:STDOUT: %G.type.c84: type = fn_type @G.loc20 [concrete] -// CHECK:STDOUT: %G.5a2: %G.type.c84 = struct_value () [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.I.impl.G.type: type = fn_type @empty_tuple.type.as.I.impl.G [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.I.impl.G: %empty_tuple.type.as.I.impl.G.type = struct_value () [concrete] // CHECK:STDOUT: %I.facet: %I.type = facet_value %empty_tuple.type, (%I.impl_witness) [concrete] -// CHECK:STDOUT: %.ba5: type = fn_type_with_self_type %G.type.bff, %I.facet [concrete] +// CHECK:STDOUT: %.ba5: type = fn_type_with_self_type %I.G.type, %I.facet [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -54,84 +54,84 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: interface @I { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %G.decl: %G.type.bff = fn_decl @G.loc17 [concrete = constants.%G.f0a] { -// CHECK:STDOUT: %self.patt: @G.loc17.%pattern_type (%pattern_type.744) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @G.loc17.%pattern_type (%pattern_type.744) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %I.G.decl: %I.G.type = fn_decl @I.G [concrete = constants.%I.G] { +// CHECK:STDOUT: %self.patt: @I.G.%pattern_type (%pattern_type.744) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @I.G.%pattern_type (%pattern_type.744) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @G.loc17.%Self.as_type.loc17_16.2 (%Self.as_type) = value_param call_param0 -// CHECK:STDOUT: %.loc17_16.1: type = splice_block %.loc17_16.2 [symbolic = %Self.as_type.loc17_16.2 (constants.%Self.as_type)] { +// CHECK:STDOUT: %self.param: @I.G.%Self.as_type.loc17_16.1 (%Self.as_type) = value_param call_param0 +// CHECK:STDOUT: %.loc17_16.1: type = splice_block %.loc17_16.2 [symbolic = %Self.as_type.loc17_16.1 (constants.%Self.as_type)] { // CHECK:STDOUT: %Self.ref: %I.type = name_ref Self, @I.%Self [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc17_16.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc17_16.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc17_16.2: type = converted %Self.ref, %Self.as_type.loc17_16.1 [symbolic = %Self.as_type.loc17_16.2 (constants.%Self.as_type)] +// CHECK:STDOUT: %Self.as_type.loc17_16.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc17_16.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc17_16.2: type = converted %Self.ref, %Self.as_type.loc17_16.2 [symbolic = %Self.as_type.loc17_16.1 (constants.%Self.as_type)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @G.loc17.%Self.as_type.loc17_16.2 (%Self.as_type) = bind_name self, %self.param +// CHECK:STDOUT: %self: @I.G.%Self.as_type.loc17_16.1 (%Self.as_type) = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %G.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %I.G.decl [concrete = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .G = %assoc0 -// CHECK:STDOUT: witness = (%G.decl) +// CHECK:STDOUT: witness = (%I.G.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @I.impl: %.loc19_9.2 as %I.ref { -// CHECK:STDOUT: %G.decl: %G.type.c84 = fn_decl @G.loc20 [concrete = constants.%G.5a2] { +// CHECK:STDOUT: impl @empty_tuple.type.as.I.impl: %.loc19_9.2 as %I.ref { +// CHECK:STDOUT: %empty_tuple.type.as.I.impl.G.decl: %empty_tuple.type.as.I.impl.G.type = fn_decl @empty_tuple.type.as.I.impl.G [concrete = constants.%empty_tuple.type.as.I.impl.G] { // CHECK:STDOUT: %self.patt: %pattern_type.cb1 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.cb1 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %self.param: %empty_tuple.type = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @I.impl.%.loc19_9.2 [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @empty_tuple.type.as.I.impl.%.loc19_9.2 [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %self: %empty_tuple.type = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .G = %empty_tuple.type.as.I.impl.G.decl // CHECK:STDOUT: witness = @F.%I.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} -// CHECK:STDOUT: impl_decl @I.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @empty_tuple.type.as.I.impl [concrete] {} { // CHECK:STDOUT: %.loc19_9.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc19_9.2: type = converted %.loc19_9.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %I.ref: type = name_ref I, @F.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (@I.impl.%G.decl), @I.impl [concrete] +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (@empty_tuple.type.as.I.impl.%empty_tuple.type.as.I.impl.G.decl), @empty_tuple.type.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness] // CHECK:STDOUT: %.loc22_4.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %I.ref: type = name_ref I, %I.decl [concrete = constants.%I.type] // CHECK:STDOUT: %G.ref: %I.assoc_type = name_ref G, @I.%assoc0 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: %.ba5 = impl_witness_access constants.%I.impl_witness, element0 [concrete = constants.%G.5a2] +// CHECK:STDOUT: %impl.elem0: %.ba5 = impl_witness_access constants.%I.impl_witness, element0 [concrete = constants.%empty_tuple.type.as.I.impl.G] // CHECK:STDOUT: %bound_method: = bound_method %.loc22_4.1, %impl.elem0 // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc22_4.2: %empty_tuple.type = converted %.loc22_4.1, %empty_tuple [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %G.call: init %empty_tuple.type = call %bound_method(%.loc22_4.2) +// CHECK:STDOUT: %empty_tuple.type.as.I.impl.G.call: init %empty_tuple.type = call %bound_method(%.loc22_4.2) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @G.loc17(@I.%Self: %I.type) { +// CHECK:STDOUT: generic fn @I.G(@I.%Self: %I.type) { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc17_16.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc17_16.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc17_16.2 [symbolic = %pattern_type (constants.%pattern_type.744)] +// CHECK:STDOUT: %Self.as_type.loc17_16.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc17_16.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc17_16.1 [symbolic = %pattern_type (constants.%pattern_type.744)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @G.loc17.%Self.as_type.loc17_16.2 (%Self.as_type)); +// CHECK:STDOUT: fn(%self.param: @I.G.%Self.as_type.loc17_16.1 (%Self.as_type)); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G.loc20(%self.param: %empty_tuple.type) { +// CHECK:STDOUT: fn @empty_tuple.type.as.I.impl.G(%self.param: %empty_tuple.type) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @G.loc17(constants.%Self) { +// CHECK:STDOUT: specific @I.G(constants.%Self) { // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %Self.as_type.loc17_16.2 => constants.%Self.as_type +// CHECK:STDOUT: %Self.as_type.loc17_16.1 => constants.%Self.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.744 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @G.loc17(constants.%I.facet) { +// CHECK:STDOUT: specific @I.G(constants.%I.facet) { // CHECK:STDOUT: %Self => constants.%I.facet -// CHECK:STDOUT: %Self.as_type.loc17_16.2 => constants.%empty_tuple.type +// CHECK:STDOUT: %Self.as_type.loc17_16.1 => constants.%empty_tuple.type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.cb1 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/self.carbon b/toolchain/check/testdata/interface/self.carbon index f9e5f62aeb86..623e0643c844 100644 --- a/toolchain/check/testdata/interface/self.carbon +++ b/toolchain/check/testdata/interface/self.carbon @@ -23,10 +23,10 @@ interface UseSelf { // CHECK:STDOUT: %Self: %UseSelf.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type [symbolic] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %UseSelf.F.type: type = fn_type @UseSelf.F [concrete] +// CHECK:STDOUT: %UseSelf.F: %UseSelf.F.type = struct_value () [concrete] // CHECK:STDOUT: %UseSelf.assoc_type: type = assoc_entity_type @UseSelf [concrete] -// CHECK:STDOUT: %assoc0: %UseSelf.assoc_type = assoc_entity element0, @UseSelf.%F.decl [concrete] +// CHECK:STDOUT: %assoc0: %UseSelf.assoc_type = assoc_entity element0, @UseSelf.%UseSelf.F.decl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -38,44 +38,44 @@ interface UseSelf { // CHECK:STDOUT: // CHECK:STDOUT: interface @UseSelf { // CHECK:STDOUT: %Self: %UseSelf.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { -// CHECK:STDOUT: %self.patt: @F.%pattern_type (%pattern_type) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.%pattern_type (%pattern_type) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: @F.%pattern_type (%pattern_type) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @F.%pattern_type (%pattern_type) = out_param_pattern %return.patt, call_param1 [concrete] +// CHECK:STDOUT: %UseSelf.F.decl: %UseSelf.F.type = fn_decl @UseSelf.F [concrete = constants.%UseSelf.F] { +// CHECK:STDOUT: %self.patt: @UseSelf.F.%pattern_type (%pattern_type) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @UseSelf.F.%pattern_type (%pattern_type) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %return.patt: @UseSelf.F.%pattern_type (%pattern_type) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @UseSelf.F.%pattern_type (%pattern_type) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc16_25: %UseSelf.type = name_ref Self, @UseSelf.%Self [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc16_25: type = facet_access_type %Self.ref.loc16_25 [symbolic = %Self.as_type.loc16_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc16_25: type = converted %Self.ref.loc16_25, %Self.as_type.loc16_25 [symbolic = %Self.as_type.loc16_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %self.param: @F.%Self.as_type.loc16_14.2 (%Self.as_type) = value_param call_param0 -// CHECK:STDOUT: %.loc16_14.1: type = splice_block %.loc16_14.2 [symbolic = %Self.as_type.loc16_14.2 (constants.%Self.as_type)] { +// CHECK:STDOUT: %Self.as_type.loc16_25: type = facet_access_type %Self.ref.loc16_25 [symbolic = %Self.as_type.loc16_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc16_25: type = converted %Self.ref.loc16_25, %Self.as_type.loc16_25 [symbolic = %Self.as_type.loc16_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %self.param: @UseSelf.F.%Self.as_type.loc16_14.1 (%Self.as_type) = value_param call_param0 +// CHECK:STDOUT: %.loc16_14.1: type = splice_block %.loc16_14.2 [symbolic = %Self.as_type.loc16_14.1 (constants.%Self.as_type)] { // CHECK:STDOUT: %Self.ref.loc16_14: %UseSelf.type = name_ref Self, @UseSelf.%Self [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc16_14.1: type = facet_access_type %Self.ref.loc16_14 [symbolic = %Self.as_type.loc16_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc16_14.2: type = converted %Self.ref.loc16_14, %Self.as_type.loc16_14.1 [symbolic = %Self.as_type.loc16_14.2 (constants.%Self.as_type)] +// CHECK:STDOUT: %Self.as_type.loc16_14.2: type = facet_access_type %Self.ref.loc16_14 [symbolic = %Self.as_type.loc16_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc16_14.2: type = converted %Self.ref.loc16_14, %Self.as_type.loc16_14.2 [symbolic = %Self.as_type.loc16_14.1 (constants.%Self.as_type)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.%Self.as_type.loc16_14.2 (%Self.as_type) = bind_name self, %self.param -// CHECK:STDOUT: %return.param: ref @F.%Self.as_type.loc16_14.2 (%Self.as_type) = out_param call_param1 -// CHECK:STDOUT: %return: ref @F.%Self.as_type.loc16_14.2 (%Self.as_type) = return_slot %return.param +// CHECK:STDOUT: %self: @UseSelf.F.%Self.as_type.loc16_14.1 (%Self.as_type) = bind_name self, %self.param +// CHECK:STDOUT: %return.param: ref @UseSelf.F.%Self.as_type.loc16_14.1 (%Self.as_type) = out_param call_param1 +// CHECK:STDOUT: %return: ref @UseSelf.F.%Self.as_type.loc16_14.1 (%Self.as_type) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %UseSelf.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0] +// CHECK:STDOUT: %assoc0: %UseSelf.assoc_type = assoc_entity element0, %UseSelf.F.decl [concrete = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .F = %assoc0 -// CHECK:STDOUT: witness = (%F.decl) +// CHECK:STDOUT: witness = (%UseSelf.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(@UseSelf.%Self: %UseSelf.type) { +// CHECK:STDOUT: generic fn @UseSelf.F(@UseSelf.%Self: %UseSelf.type) { // CHECK:STDOUT: %Self: %UseSelf.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc16_14.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc16_14.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc16_14.2 [symbolic = %pattern_type (constants.%pattern_type)] +// CHECK:STDOUT: %Self.as_type.loc16_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc16_14.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc16_14.1 [symbolic = %pattern_type (constants.%pattern_type)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @F.%Self.as_type.loc16_14.2 (%Self.as_type)) -> @F.%Self.as_type.loc16_14.2 (%Self.as_type); +// CHECK:STDOUT: fn(%self.param: @UseSelf.F.%Self.as_type.loc16_14.1 (%Self.as_type)) -> @UseSelf.F.%Self.as_type.loc16_14.1 (%Self.as_type); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%Self) { +// CHECK:STDOUT: specific @UseSelf.F(constants.%Self) { // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %Self.as_type.loc16_14.2 => constants.%Self.as_type +// CHECK:STDOUT: %Self.as_type.loc16_14.1 => constants.%Self.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/todo_define_not_default.carbon b/toolchain/check/testdata/interface/todo_define_not_default.carbon index adcd32427433..b3830ee15bdb 100644 --- a/toolchain/check/testdata/interface/todo_define_not_default.carbon +++ b/toolchain/check/testdata/interface/todo_define_not_default.carbon @@ -28,18 +28,18 @@ interface I { // CHECK:STDOUT: constants { // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] // CHECK:STDOUT: %Self.826: %I.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %I.F.type: type = fn_type @I.F [concrete] +// CHECK:STDOUT: %I.F: %I.F.type = struct_value () [concrete] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] -// CHECK:STDOUT: %assoc0.82e: %I.assoc_type = assoc_entity element0, @I.%F.decl [concrete] +// CHECK:STDOUT: %assoc0.82e: %I.assoc_type = assoc_entity element0, @I.%I.F.decl [concrete] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %G.type: type = fn_type @G [concrete] -// CHECK:STDOUT: %G: %G.type = struct_value () [concrete] -// CHECK:STDOUT: %assoc1: %I.assoc_type = assoc_entity element1, @I.%G.decl [concrete] +// CHECK:STDOUT: %I.G.type: type = fn_type @I.G [concrete] +// CHECK:STDOUT: %I.G: %I.G.type = struct_value () [concrete] +// CHECK:STDOUT: %assoc1: %I.assoc_type = assoc_entity element1, @I.%I.G.decl [concrete] // CHECK:STDOUT: %assoc2: %I.assoc_type = assoc_entity element2, @I.%T [concrete] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] // CHECK:STDOUT: %tuple.type.d07: type = tuple_type (%i32, %i32) [concrete] @@ -48,18 +48,18 @@ interface I { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_42.20e, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_42.20e, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_42.20e, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_42.20e, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_42.c68: %i32 = int_value 42 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -72,8 +72,8 @@ interface I { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -87,9 +87,9 @@ interface I { // CHECK:STDOUT: // CHECK:STDOUT: interface @I { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.826] -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} -// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0.82e] -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { +// CHECK:STDOUT: %I.F.decl: %I.F.type = fn_decl @I.F [concrete = constants.%I.F] {} {} +// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %I.F.decl [concrete = constants.%assoc0.82e] +// CHECK:STDOUT: %I.G.decl: %I.G.type = fn_decl @I.G [concrete = constants.%I.G] { // CHECK:STDOUT: %a.patt: %pattern_type.7ce = binding_pattern a [concrete] // CHECK:STDOUT: %a.param_patt: %pattern_type.7ce = value_param_pattern %a.patt, call_param0 [concrete] // CHECK:STDOUT: %b.patt: %pattern_type.7ce = binding_pattern b [concrete] @@ -114,7 +114,7 @@ interface I { // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param2 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc1: %I.assoc_type = assoc_entity element1, %G.decl [concrete = constants.%assoc1] +// CHECK:STDOUT: %assoc1: %I.assoc_type = assoc_entity element1, %I.G.decl [concrete = constants.%assoc1] // CHECK:STDOUT: %T: type = assoc_const_decl @T [concrete] { // CHECK:STDOUT: %assoc2: %I.assoc_type = assoc_entity element2, @I.%T [concrete = constants.%assoc2] // CHECK:STDOUT: %int_32.loc22_19: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -127,12 +127,12 @@ interface I { // CHECK:STDOUT: %N: %i32 = assoc_const_decl @N [concrete] { // CHECK:STDOUT: %assoc3: %I.assoc_type = assoc_entity element3, @I.%N [concrete = constants.%assoc3] // CHECK:STDOUT: %int_42: Core.IntLiteral = int_value 42 [concrete = constants.%int_42.20e] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc23_19.1: = bound_method %int_42, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc23_19.1: = bound_method %int_42, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc23_19.2: = bound_method %int_42, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc23_19.2(%int_42) [concrete = constants.%int_42.c68] -// CHECK:STDOUT: %.loc23_19.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_42.c68] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc23_19.2(%int_42) [concrete = constants.%int_42.c68] +// CHECK:STDOUT: %.loc23_19.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_42.c68] // CHECK:STDOUT: %.loc23_19.2: %i32 = converted %int_42, %.loc23_19.1 [concrete = constants.%int_42.c68] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -142,7 +142,7 @@ interface I { // CHECK:STDOUT: .G = %assoc1 // CHECK:STDOUT: .T = @T.%assoc2 // CHECK:STDOUT: .N = @N.%assoc3 -// CHECK:STDOUT: witness = (%F.decl, %G.decl, %T, %N) +// CHECK:STDOUT: witness = (%I.F.decl, %I.G.decl, %T, %N) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic assoc_const @T(@I.%Self: %I.type) { @@ -157,7 +157,7 @@ interface I { // CHECK:STDOUT: assoc_const N:! %i32 = %.loc23_19.2; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(@I.%Self: %I.type) { +// CHECK:STDOUT: generic fn @I.F(@I.%Self: %I.type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: fn() { @@ -166,15 +166,15 @@ interface I { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @G(@I.%Self: %I.type) { +// CHECK:STDOUT: generic fn @I.G(@I.%Self: %I.type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: fn(%a.param: %i32, %b.param: %i32) -> %i32 = "int.sadd"; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%Self.826) {} +// CHECK:STDOUT: specific @I.F(constants.%Self.826) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @G(constants.%Self.826) {} +// CHECK:STDOUT: specific @I.G(constants.%Self.826) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @T(constants.%Self.826) {} // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interop/cpp/class/class.carbon b/toolchain/check/testdata/interop/cpp/class/class.carbon index 6df643967f68..174c585858a4 100644 --- a/toolchain/check/testdata/interop/cpp/class/class.carbon +++ b/toolchain/check/testdata/interop/cpp/class/class.carbon @@ -463,8 +463,8 @@ fn MyF(bar: Cpp.Bar*); // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Bar: type = class_type @Bar [concrete] -// CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] -// CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] +// CHECK:STDOUT: %Bar.foo.type: type = fn_type @Bar.foo [concrete] +// CHECK:STDOUT: %Bar.foo: %Bar.foo.type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -473,7 +473,7 @@ fn MyF(bar: Cpp.Bar*); // CHECK:STDOUT: import Cpp//... // CHECK:STDOUT: } // CHECK:STDOUT: %Bar.decl: type = class_decl @Bar [concrete = constants.%Bar] {} {} -// CHECK:STDOUT: %foo.decl: %foo.type = fn_decl @foo [concrete = constants.%foo] {} {} +// CHECK:STDOUT: %Bar.foo.decl: %Bar.foo.type = fn_decl @Bar.foo [concrete = constants.%Bar.foo] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @MyF() { @@ -481,8 +481,8 @@ fn MyF(bar: Cpp.Bar*); // CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: // CHECK:STDOUT: %Bar.ref: type = name_ref Bar, imports.%Bar.decl [concrete = constants.%Bar] -// CHECK:STDOUT: %foo.ref: %foo.type = name_ref foo, imports.%foo.decl [concrete = constants.%foo] -// CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref() +// CHECK:STDOUT: %foo.ref: %Bar.foo.type = name_ref foo, imports.%Bar.foo.decl [concrete = constants.%Bar.foo] +// CHECK:STDOUT: %Bar.foo.call: init %empty_tuple.type = call %foo.ref() // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -576,11 +576,11 @@ fn MyF(bar: Cpp.Bar*); // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Bar1: type = class_type @Bar1 [concrete] -// CHECK:STDOUT: %foo1.type: type = fn_type @foo1 [concrete] -// CHECK:STDOUT: %foo1: %foo1.type = struct_value () [concrete] +// CHECK:STDOUT: %Bar1.foo1.type: type = fn_type @Bar1.foo1 [concrete] +// CHECK:STDOUT: %Bar1.foo1: %Bar1.foo1.type = struct_value () [concrete] // CHECK:STDOUT: %Bar2: type = class_type @Bar2 [concrete] -// CHECK:STDOUT: %foo2.type: type = fn_type @foo2 [concrete] -// CHECK:STDOUT: %foo2: %foo2.type = struct_value () [concrete] +// CHECK:STDOUT: %Bar2.foo2.type: type = fn_type @Bar2.foo2 [concrete] +// CHECK:STDOUT: %Bar2.foo2: %Bar2.foo2.type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -590,9 +590,9 @@ fn MyF(bar: Cpp.Bar*); // CHECK:STDOUT: import Cpp//... // CHECK:STDOUT: } // CHECK:STDOUT: %Bar1.decl: type = class_decl @Bar1 [concrete = constants.%Bar1] {} {} -// CHECK:STDOUT: %foo1.decl: %foo1.type = fn_decl @foo1 [concrete = constants.%foo1] {} {} +// CHECK:STDOUT: %Bar1.foo1.decl: %Bar1.foo1.type = fn_decl @Bar1.foo1 [concrete = constants.%Bar1.foo1] {} {} // CHECK:STDOUT: %Bar2.decl: type = class_decl @Bar2 [concrete = constants.%Bar2] {} {} -// CHECK:STDOUT: %foo2.decl: %foo2.type = fn_decl @foo2 [concrete = constants.%foo2] {} {} +// CHECK:STDOUT: %Bar2.foo2.decl: %Bar2.foo2.type = fn_decl @Bar2.foo2 [concrete = constants.%Bar2.foo2] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @MyF() { @@ -600,17 +600,17 @@ fn MyF(bar: Cpp.Bar*); // CHECK:STDOUT: %Cpp.ref.loc8: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: // CHECK:STDOUT: %Bar1.ref: type = name_ref Bar1, imports.%Bar1.decl [concrete = constants.%Bar1] -// CHECK:STDOUT: %foo1.ref.loc8: %foo1.type = name_ref foo1, imports.%foo1.decl [concrete = constants.%foo1] -// CHECK:STDOUT: %foo1.call.loc8: init %empty_tuple.type = call %foo1.ref.loc8() +// CHECK:STDOUT: %foo1.ref.loc8: %Bar1.foo1.type = name_ref foo1, imports.%Bar1.foo1.decl [concrete = constants.%Bar1.foo1] +// CHECK:STDOUT: %Bar1.foo1.call.loc8: init %empty_tuple.type = call %foo1.ref.loc8() // CHECK:STDOUT: %Cpp.ref.loc9: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: // CHECK:STDOUT: %Bar2.ref.loc9: type = name_ref Bar2, imports.%Bar2.decl [concrete = constants.%Bar2] -// CHECK:STDOUT: %foo1.ref.loc9: %foo1.type = name_ref foo1, imports.%foo1.decl [concrete = constants.%foo1] -// CHECK:STDOUT: %foo1.call.loc9: init %empty_tuple.type = call %foo1.ref.loc9() +// CHECK:STDOUT: %foo1.ref.loc9: %Bar1.foo1.type = name_ref foo1, imports.%Bar1.foo1.decl [concrete = constants.%Bar1.foo1] +// CHECK:STDOUT: %Bar1.foo1.call.loc9: init %empty_tuple.type = call %foo1.ref.loc9() // CHECK:STDOUT: %Cpp.ref.loc10: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %Bar2.ref.loc10: type = name_ref Bar2, imports.%Bar2.decl [concrete = constants.%Bar2] -// CHECK:STDOUT: %foo2.ref: %foo2.type = name_ref foo2, imports.%foo2.decl [concrete = constants.%foo2] -// CHECK:STDOUT: %foo2.call: init %empty_tuple.type = call %foo2.ref() +// CHECK:STDOUT: %foo2.ref: %Bar2.foo2.type = name_ref foo2, imports.%Bar2.foo2.decl [concrete = constants.%Bar2.foo2] +// CHECK:STDOUT: %Bar2.foo2.call: init %empty_tuple.type = call %foo2.ref() // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -722,8 +722,8 @@ fn MyF(bar: Cpp.Bar*); // CHECK:STDOUT: %complete_type.fff: = complete_type_witness %struct_type.base.36d [concrete] // CHECK:STDOUT: %MyF.type: type = fn_type @MyF [concrete] // CHECK:STDOUT: %MyF: %MyF.type = struct_value () [concrete] -// CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] -// CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] +// CHECK:STDOUT: %Bar.foo.type: type = fn_type @Bar.foo [concrete] +// CHECK:STDOUT: %Bar.foo: %Bar.foo.type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -732,7 +732,7 @@ fn MyF(bar: Cpp.Bar*); // CHECK:STDOUT: import Cpp//... // CHECK:STDOUT: } // CHECK:STDOUT: %Bar.decl: type = class_decl @Bar [concrete = constants.%Bar] {} {} -// CHECK:STDOUT: %foo.decl: %foo.type = fn_decl @foo [concrete = constants.%foo] {} {} +// CHECK:STDOUT: %Bar.foo.decl: %Bar.foo.type = fn_decl @Bar.foo [concrete = constants.%Bar.foo] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -760,8 +760,8 @@ fn MyF(bar: Cpp.Bar*); // CHECK:STDOUT: fn @MyF() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl [concrete = constants.%Derived] -// CHECK:STDOUT: %foo.ref: %foo.type = name_ref foo, imports.%foo.decl [concrete = constants.%foo] -// CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref() +// CHECK:STDOUT: %foo.ref: %Bar.foo.type = name_ref foo, imports.%Bar.foo.decl [concrete = constants.%Bar.foo] +// CHECK:STDOUT: %Bar.foo.call: init %empty_tuple.type = call %foo.ref() // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interop/cpp/class/method.carbon b/toolchain/check/testdata/interop/cpp/class/method.carbon index ce7e9b4fbe4d..2a4e3ed63dbd 100644 --- a/toolchain/check/testdata/interop/cpp/class/method.carbon +++ b/toolchain/check/testdata/interop/cpp/class/method.carbon @@ -154,15 +154,15 @@ fn Ref(p: Cpp.HasQualifiers*) { // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %const_this.type: type = fn_type @const_this [concrete] -// CHECK:STDOUT: %const_this: %const_this.type = struct_value () [concrete] -// CHECK:STDOUT: %const_ref_this.type: type = fn_type @const_ref_this [concrete] -// CHECK:STDOUT: %const_ref_this: %const_ref_this.type = struct_value () [concrete] +// CHECK:STDOUT: %HasQualifiers.const_this.type: type = fn_type @HasQualifiers.const_this [concrete] +// CHECK:STDOUT: %HasQualifiers.const_this: %HasQualifiers.const_this.type = struct_value () [concrete] +// CHECK:STDOUT: %HasQualifiers.const_ref_this.type: type = fn_type @HasQualifiers.const_ref_this [concrete] +// CHECK:STDOUT: %HasQualifiers.const_ref_this: %HasQualifiers.const_ref_this.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.f6d: type = pattern_type auto [concrete] -// CHECK:STDOUT: %plain.type: type = fn_type @plain [concrete] -// CHECK:STDOUT: %plain: %plain.type = struct_value () [concrete] -// CHECK:STDOUT: %ref_this.type: type = fn_type @ref_this [concrete] -// CHECK:STDOUT: %ref_this: %ref_this.type = struct_value () [concrete] +// CHECK:STDOUT: %HasQualifiers.plain.type: type = fn_type @HasQualifiers.plain [concrete] +// CHECK:STDOUT: %HasQualifiers.plain: %HasQualifiers.plain.type = struct_value () [concrete] +// CHECK:STDOUT: %HasQualifiers.ref_this.type: type = fn_type @HasQualifiers.ref_this [concrete] +// CHECK:STDOUT: %HasQualifiers.ref_this: %HasQualifiers.ref_this.type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -175,21 +175,21 @@ fn Ref(p: Cpp.HasQualifiers*) { // CHECK:STDOUT: import Cpp//... // CHECK:STDOUT: } // CHECK:STDOUT: %HasQualifiers.decl: type = class_decl @HasQualifiers [concrete = constants.%HasQualifiers] {} {} -// CHECK:STDOUT: %const_this.decl: %const_this.type = fn_decl @const_this [concrete = constants.%const_this] { +// CHECK:STDOUT: %HasQualifiers.const_this.decl: %HasQualifiers.const_this.type = fn_decl @HasQualifiers.const_this [concrete = constants.%HasQualifiers.const_this] { // CHECK:STDOUT: %self.patt: %pattern_type.e15 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.e15 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %self.param: %HasQualifiers = value_param call_param0 // CHECK:STDOUT: %self: %HasQualifiers = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %const_ref_this.decl: %const_ref_this.type = fn_decl @const_ref_this [concrete = constants.%const_ref_this] { +// CHECK:STDOUT: %HasQualifiers.const_ref_this.decl: %HasQualifiers.const_ref_this.type = fn_decl @HasQualifiers.const_ref_this [concrete = constants.%HasQualifiers.const_ref_this] { // CHECK:STDOUT: %self.patt: %pattern_type.e15 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.e15 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %self.param: %HasQualifiers = value_param call_param0 // CHECK:STDOUT: %self: %HasQualifiers = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %plain.decl: %plain.type = fn_decl @plain [concrete = constants.%plain] { +// CHECK:STDOUT: %HasQualifiers.plain.decl: %HasQualifiers.plain.type = fn_decl @HasQualifiers.plain [concrete = constants.%HasQualifiers.plain] { // CHECK:STDOUT: %self.patt: %pattern_type.bc1 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.bc1 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %.1: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] @@ -197,7 +197,7 @@ fn Ref(p: Cpp.HasQualifiers*) { // CHECK:STDOUT: %self.param: %ptr.ec3 = value_param call_param0 // CHECK:STDOUT: %self: %ptr.ec3 = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %ref_this.decl: %ref_this.type = fn_decl @ref_this [concrete = constants.%ref_this] { +// CHECK:STDOUT: %HasQualifiers.ref_this.decl: %HasQualifiers.ref_this.type = fn_decl @HasQualifiers.ref_this [concrete = constants.%HasQualifiers.ref_this] { // CHECK:STDOUT: %self.patt: %pattern_type.bc1 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.bc1 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %.1: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] @@ -246,57 +246,57 @@ fn Ref(p: Cpp.HasQualifiers*) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%HasQualifiers -// CHECK:STDOUT: .const_this = imports.%const_this.decl -// CHECK:STDOUT: .const_ref_this = imports.%const_ref_this.decl -// CHECK:STDOUT: .plain = imports.%plain.decl -// CHECK:STDOUT: .ref_this = imports.%ref_this.decl +// CHECK:STDOUT: .const_this = imports.%HasQualifiers.const_this.decl +// CHECK:STDOUT: .const_ref_this = imports.%HasQualifiers.const_ref_this.decl +// CHECK:STDOUT: .plain = imports.%HasQualifiers.plain.decl +// CHECK:STDOUT: .ref_this = imports.%HasQualifiers.ref_this.decl // CHECK:STDOUT: import Cpp//... // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F(%v.param: %HasQualifiers, %p.param: %ptr.ec3) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %v.ref.loc8: %HasQualifiers = name_ref v, %v -// CHECK:STDOUT: %const_this.ref.loc8: %const_this.type = name_ref const_this, imports.%const_this.decl [concrete = constants.%const_this] -// CHECK:STDOUT: %const_this.bound.loc8: = bound_method %v.ref.loc8, %const_this.ref.loc8 -// CHECK:STDOUT: %const_this.call.loc8: init %empty_tuple.type = call %const_this.bound.loc8(%v.ref.loc8) +// CHECK:STDOUT: %const_this.ref.loc8: %HasQualifiers.const_this.type = name_ref const_this, imports.%HasQualifiers.const_this.decl [concrete = constants.%HasQualifiers.const_this] +// CHECK:STDOUT: %HasQualifiers.const_this.bound.loc8: = bound_method %v.ref.loc8, %const_this.ref.loc8 +// CHECK:STDOUT: %HasQualifiers.const_this.call.loc8: init %empty_tuple.type = call %HasQualifiers.const_this.bound.loc8(%v.ref.loc8) // CHECK:STDOUT: %v.ref.loc9: %HasQualifiers = name_ref v, %v -// CHECK:STDOUT: %const_ref_this.ref.loc9: %const_ref_this.type = name_ref const_ref_this, imports.%const_ref_this.decl [concrete = constants.%const_ref_this] -// CHECK:STDOUT: %const_ref_this.bound.loc9: = bound_method %v.ref.loc9, %const_ref_this.ref.loc9 -// CHECK:STDOUT: %const_ref_this.call.loc9: init %empty_tuple.type = call %const_ref_this.bound.loc9(%v.ref.loc9) +// CHECK:STDOUT: %const_ref_this.ref.loc9: %HasQualifiers.const_ref_this.type = name_ref const_ref_this, imports.%HasQualifiers.const_ref_this.decl [concrete = constants.%HasQualifiers.const_ref_this] +// CHECK:STDOUT: %HasQualifiers.const_ref_this.bound.loc9: = bound_method %v.ref.loc9, %const_ref_this.ref.loc9 +// CHECK:STDOUT: %HasQualifiers.const_ref_this.call.loc9: init %empty_tuple.type = call %HasQualifiers.const_ref_this.bound.loc9(%v.ref.loc9) // CHECK:STDOUT: %p.ref.loc11: %ptr.ec3 = name_ref p, %p // CHECK:STDOUT: %.loc11: ref %HasQualifiers = deref %p.ref.loc11 -// CHECK:STDOUT: %plain.ref: %plain.type = name_ref plain, imports.%plain.decl [concrete = constants.%plain] -// CHECK:STDOUT: %plain.bound: = bound_method %.loc11, %plain.ref +// CHECK:STDOUT: %plain.ref: %HasQualifiers.plain.type = name_ref plain, imports.%HasQualifiers.plain.decl [concrete = constants.%HasQualifiers.plain] +// CHECK:STDOUT: %HasQualifiers.plain.bound: = bound_method %.loc11, %plain.ref // CHECK:STDOUT: %addr.loc11: %ptr.ec3 = addr_of %.loc11 -// CHECK:STDOUT: %plain.call: init %empty_tuple.type = call %plain.bound(%addr.loc11) +// CHECK:STDOUT: %HasQualifiers.plain.call: init %empty_tuple.type = call %HasQualifiers.plain.bound(%addr.loc11) // CHECK:STDOUT: %p.ref.loc12: %ptr.ec3 = name_ref p, %p // CHECK:STDOUT: %.loc12: ref %HasQualifiers = deref %p.ref.loc12 -// CHECK:STDOUT: %ref_this.ref: %ref_this.type = name_ref ref_this, imports.%ref_this.decl [concrete = constants.%ref_this] -// CHECK:STDOUT: %ref_this.bound: = bound_method %.loc12, %ref_this.ref +// CHECK:STDOUT: %ref_this.ref: %HasQualifiers.ref_this.type = name_ref ref_this, imports.%HasQualifiers.ref_this.decl [concrete = constants.%HasQualifiers.ref_this] +// CHECK:STDOUT: %HasQualifiers.ref_this.bound: = bound_method %.loc12, %ref_this.ref // CHECK:STDOUT: %addr.loc12: %ptr.ec3 = addr_of %.loc12 -// CHECK:STDOUT: %ref_this.call: init %empty_tuple.type = call %ref_this.bound(%addr.loc12) +// CHECK:STDOUT: %HasQualifiers.ref_this.call: init %empty_tuple.type = call %HasQualifiers.ref_this.bound(%addr.loc12) // CHECK:STDOUT: %p.ref.loc13: %ptr.ec3 = name_ref p, %p // CHECK:STDOUT: %.loc13_4.1: ref %HasQualifiers = deref %p.ref.loc13 -// CHECK:STDOUT: %const_this.ref.loc13: %const_this.type = name_ref const_this, imports.%const_this.decl [concrete = constants.%const_this] -// CHECK:STDOUT: %const_this.bound.loc13: = bound_method %.loc13_4.1, %const_this.ref.loc13 +// CHECK:STDOUT: %const_this.ref.loc13: %HasQualifiers.const_this.type = name_ref const_this, imports.%HasQualifiers.const_this.decl [concrete = constants.%HasQualifiers.const_this] +// CHECK:STDOUT: %HasQualifiers.const_this.bound.loc13: = bound_method %.loc13_4.1, %const_this.ref.loc13 // CHECK:STDOUT: %.loc13_4.2: %HasQualifiers = bind_value %.loc13_4.1 -// CHECK:STDOUT: %const_this.call.loc13: init %empty_tuple.type = call %const_this.bound.loc13(%.loc13_4.2) +// CHECK:STDOUT: %HasQualifiers.const_this.call.loc13: init %empty_tuple.type = call %HasQualifiers.const_this.bound.loc13(%.loc13_4.2) // CHECK:STDOUT: %p.ref.loc14: %ptr.ec3 = name_ref p, %p // CHECK:STDOUT: %.loc14_4.1: ref %HasQualifiers = deref %p.ref.loc14 -// CHECK:STDOUT: %const_ref_this.ref.loc14: %const_ref_this.type = name_ref const_ref_this, imports.%const_ref_this.decl [concrete = constants.%const_ref_this] -// CHECK:STDOUT: %const_ref_this.bound.loc14: = bound_method %.loc14_4.1, %const_ref_this.ref.loc14 +// CHECK:STDOUT: %const_ref_this.ref.loc14: %HasQualifiers.const_ref_this.type = name_ref const_ref_this, imports.%HasQualifiers.const_ref_this.decl [concrete = constants.%HasQualifiers.const_ref_this] +// CHECK:STDOUT: %HasQualifiers.const_ref_this.bound.loc14: = bound_method %.loc14_4.1, %const_ref_this.ref.loc14 // CHECK:STDOUT: %.loc14_4.2: %HasQualifiers = bind_value %.loc14_4.1 -// CHECK:STDOUT: %const_ref_this.call.loc14: init %empty_tuple.type = call %const_ref_this.bound.loc14(%.loc14_4.2) +// CHECK:STDOUT: %HasQualifiers.const_ref_this.call.loc14: init %empty_tuple.type = call %HasQualifiers.const_ref_this.bound.loc14(%.loc14_4.2) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @const_this(%self.param: %HasQualifiers); +// CHECK:STDOUT: fn @HasQualifiers.const_this(%self.param: %HasQualifiers); // CHECK:STDOUT: -// CHECK:STDOUT: fn @const_ref_this(%self.param: %HasQualifiers); +// CHECK:STDOUT: fn @HasQualifiers.const_ref_this(%self.param: %HasQualifiers); // CHECK:STDOUT: -// CHECK:STDOUT: fn @plain(%self.param: %ptr.ec3); +// CHECK:STDOUT: fn @HasQualifiers.plain(%self.param: %ptr.ec3); // CHECK:STDOUT: -// CHECK:STDOUT: fn @ref_this(%self.param: %ptr.ec3); +// CHECK:STDOUT: fn @HasQualifiers.ref_this(%self.param: %ptr.ec3); // CHECK:STDOUT: // CHECK:STDOUT: --- fail_bad_object_param_qualifiers_by_value.carbon // CHECK:STDOUT: @@ -311,16 +311,16 @@ fn Ref(p: Cpp.HasQualifiers*) { // CHECK:STDOUT: %ptr.ec3: type = ptr_type %HasQualifiers [concrete] // CHECK:STDOUT: %pattern_type.bc1: type = pattern_type %ptr.ec3 [concrete] // CHECK:STDOUT: %pattern_type.f6d: type = pattern_type auto [concrete] -// CHECK:STDOUT: %plain.type: type = fn_type @plain [concrete] -// CHECK:STDOUT: %plain: %plain.type = struct_value () [concrete] -// CHECK:STDOUT: %volatile_this.type: type = fn_type @volatile_this [concrete] -// CHECK:STDOUT: %volatile_this: %volatile_this.type = struct_value () [concrete] -// CHECK:STDOUT: %ref_this.type: type = fn_type @ref_this [concrete] -// CHECK:STDOUT: %ref_this: %ref_this.type = struct_value () [concrete] +// CHECK:STDOUT: %HasQualifiers.plain.type: type = fn_type @HasQualifiers.plain [concrete] +// CHECK:STDOUT: %HasQualifiers.plain: %HasQualifiers.plain.type = struct_value () [concrete] +// CHECK:STDOUT: %HasQualifiers.volatile_this.type: type = fn_type @HasQualifiers.volatile_this [concrete] +// CHECK:STDOUT: %HasQualifiers.volatile_this: %HasQualifiers.volatile_this.type = struct_value () [concrete] +// CHECK:STDOUT: %HasQualifiers.ref_this.type: type = fn_type @HasQualifiers.ref_this [concrete] +// CHECK:STDOUT: %HasQualifiers.ref_this: %HasQualifiers.ref_this.type = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.e02: type = fn_type @Op.1, @Destroy.impl(%HasQualifiers) [concrete] -// CHECK:STDOUT: %Op.b7c: %Op.type.e02 = struct_value () [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.b7c, @Op.1(%HasQualifiers) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.e02: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%HasQualifiers) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.b7c: %T.as.Destroy.impl.Op.type.e02 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.b7c, @T.as.Destroy.impl.Op(%HasQualifiers) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -334,7 +334,7 @@ fn Ref(p: Cpp.HasQualifiers*) { // CHECK:STDOUT: import Cpp//... // CHECK:STDOUT: } // CHECK:STDOUT: %HasQualifiers.decl: type = class_decl @HasQualifiers [concrete = constants.%HasQualifiers] {} {} -// CHECK:STDOUT: %plain.decl: %plain.type = fn_decl @plain [concrete = constants.%plain] { +// CHECK:STDOUT: %HasQualifiers.plain.decl: %HasQualifiers.plain.type = fn_decl @HasQualifiers.plain [concrete = constants.%HasQualifiers.plain] { // CHECK:STDOUT: %self.patt: %pattern_type.bc1 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.bc1 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %.1: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] @@ -342,7 +342,7 @@ fn Ref(p: Cpp.HasQualifiers*) { // CHECK:STDOUT: %self.param: %ptr.ec3 = value_param call_param0 // CHECK:STDOUT: %self: %ptr.ec3 = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %volatile_this.decl: %volatile_this.type = fn_decl @volatile_this [concrete = constants.%volatile_this] { +// CHECK:STDOUT: %HasQualifiers.volatile_this.decl: %HasQualifiers.volatile_this.type = fn_decl @HasQualifiers.volatile_this [concrete = constants.%HasQualifiers.volatile_this] { // CHECK:STDOUT: %self.patt: = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %.1: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] @@ -350,7 +350,7 @@ fn Ref(p: Cpp.HasQualifiers*) { // CHECK:STDOUT: %self.param: = value_param call_param0 // CHECK:STDOUT: %self: = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %ref_this.decl: %ref_this.type = fn_decl @ref_this [concrete = constants.%ref_this] { +// CHECK:STDOUT: %HasQualifiers.ref_this.decl: %HasQualifiers.ref_this.type = fn_decl @HasQualifiers.ref_this [concrete = constants.%HasQualifiers.ref_this] { // CHECK:STDOUT: %self.patt: %pattern_type.bc1 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.bc1 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %.1: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] @@ -391,9 +391,9 @@ fn Ref(p: Cpp.HasQualifiers*) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%HasQualifiers -// CHECK:STDOUT: .plain = imports.%plain.decl -// CHECK:STDOUT: .volatile_this = imports.%volatile_this.decl -// CHECK:STDOUT: .ref_this = imports.%ref_this.decl +// CHECK:STDOUT: .plain = imports.%HasQualifiers.plain.decl +// CHECK:STDOUT: .volatile_this = imports.%HasQualifiers.volatile_this.decl +// CHECK:STDOUT: .ref_this = imports.%HasQualifiers.ref_this.decl // CHECK:STDOUT: .ref_ref_this = // CHECK:STDOUT: .const_ref_ref_this = // CHECK:STDOUT: import Cpp//... @@ -402,50 +402,50 @@ fn Ref(p: Cpp.HasQualifiers*) { // CHECK:STDOUT: fn @Value(%v.param: %HasQualifiers) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %v.ref.loc12: %HasQualifiers = name_ref v, %v -// CHECK:STDOUT: %plain.ref: %plain.type = name_ref plain, imports.%plain.decl [concrete = constants.%plain] -// CHECK:STDOUT: %plain.bound: = bound_method %v.ref.loc12, %plain.ref +// CHECK:STDOUT: %plain.ref: %HasQualifiers.plain.type = name_ref plain, imports.%HasQualifiers.plain.decl [concrete = constants.%HasQualifiers.plain] +// CHECK:STDOUT: %HasQualifiers.plain.bound: = bound_method %v.ref.loc12, %plain.ref // CHECK:STDOUT: %.loc12: ref %HasQualifiers = temporary_storage // CHECK:STDOUT: %addr.loc12_3.1: %ptr.ec3 = addr_of %.loc12 -// CHECK:STDOUT: %plain.call: init %empty_tuple.type = call %plain.bound(%addr.loc12_3.1) +// CHECK:STDOUT: %HasQualifiers.plain.call: init %empty_tuple.type = call %HasQualifiers.plain.bound(%addr.loc12_3.1) // CHECK:STDOUT: %v.ref.loc27: %HasQualifiers = name_ref v, %v -// CHECK:STDOUT: %volatile_this.ref: %volatile_this.type = name_ref volatile_this, imports.%volatile_this.decl [concrete = constants.%volatile_this] -// CHECK:STDOUT: %volatile_this.bound: = bound_method %v.ref.loc27, %volatile_this.ref +// CHECK:STDOUT: %volatile_this.ref: %HasQualifiers.volatile_this.type = name_ref volatile_this, imports.%HasQualifiers.volatile_this.decl [concrete = constants.%HasQualifiers.volatile_this] +// CHECK:STDOUT: %HasQualifiers.volatile_this.bound: = bound_method %v.ref.loc27, %volatile_this.ref // CHECK:STDOUT: %.loc27: ref %HasQualifiers = temporary_storage // CHECK:STDOUT: %addr.loc27_3.1: %ptr.ec3 = addr_of %.loc27 -// CHECK:STDOUT: %volatile_this.call: init %empty_tuple.type = call %volatile_this.bound() +// CHECK:STDOUT: %HasQualifiers.volatile_this.call: init %empty_tuple.type = call %HasQualifiers.volatile_this.bound() // CHECK:STDOUT: %v.ref.loc34: %HasQualifiers = name_ref v, %v -// CHECK:STDOUT: %ref_this.ref: %ref_this.type = name_ref ref_this, imports.%ref_this.decl [concrete = constants.%ref_this] -// CHECK:STDOUT: %ref_this.bound: = bound_method %v.ref.loc34, %ref_this.ref +// CHECK:STDOUT: %ref_this.ref: %HasQualifiers.ref_this.type = name_ref ref_this, imports.%HasQualifiers.ref_this.decl [concrete = constants.%HasQualifiers.ref_this] +// CHECK:STDOUT: %HasQualifiers.ref_this.bound: = bound_method %v.ref.loc34, %ref_this.ref // CHECK:STDOUT: %.loc34: ref %HasQualifiers = temporary_storage // CHECK:STDOUT: %addr.loc34_3.1: %ptr.ec3 = addr_of %.loc34 -// CHECK:STDOUT: %ref_this.call: init %empty_tuple.type = call %ref_this.bound(%addr.loc34_3.1) +// CHECK:STDOUT: %HasQualifiers.ref_this.call: init %empty_tuple.type = call %HasQualifiers.ref_this.bound(%addr.loc34_3.1) // CHECK:STDOUT: %v.ref.loc43: %HasQualifiers = name_ref v, %v // CHECK:STDOUT: %ref_ref_this.ref: = name_ref ref_ref_this, [concrete = ] // CHECK:STDOUT: %v.ref.loc52: %HasQualifiers = name_ref v, %v // CHECK:STDOUT: %const_ref_ref_this.ref: = name_ref const_ref_ref_this, [concrete = ] -// CHECK:STDOUT: %Op.bound.loc34: = bound_method %.loc34, constants.%Op.b7c -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.b7c, @Op.1(constants.%HasQualifiers) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc34: = bound_method %.loc34, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc34: = bound_method %.loc34, constants.%T.as.Destroy.impl.Op.b7c +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.b7c, @T.as.Destroy.impl.Op(constants.%HasQualifiers) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc34: = bound_method %.loc34, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc34_3.2: %ptr.ec3 = addr_of %.loc34 -// CHECK:STDOUT: %no_op.loc34: init %empty_tuple.type = call %bound_method.loc34(%addr.loc34_3.2) -// CHECK:STDOUT: %Op.bound.loc27: = bound_method %.loc27, constants.%Op.b7c -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.b7c, @Op.1(constants.%HasQualifiers) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc27: = bound_method %.loc27, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc34: init %empty_tuple.type = call %bound_method.loc34(%addr.loc34_3.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc27: = bound_method %.loc27, constants.%T.as.Destroy.impl.Op.b7c +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.b7c, @T.as.Destroy.impl.Op(constants.%HasQualifiers) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc27: = bound_method %.loc27, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc27_3.2: %ptr.ec3 = addr_of %.loc27 -// CHECK:STDOUT: %no_op.loc27: init %empty_tuple.type = call %bound_method.loc27(%addr.loc27_3.2) -// CHECK:STDOUT: %Op.bound.loc12: = bound_method %.loc12, constants.%Op.b7c -// CHECK:STDOUT: %Op.specific_fn.3: = specific_function constants.%Op.b7c, @Op.1(constants.%HasQualifiers) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc12: = bound_method %.loc12, %Op.specific_fn.3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc27: init %empty_tuple.type = call %bound_method.loc27(%addr.loc27_3.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc12: = bound_method %.loc12, constants.%T.as.Destroy.impl.Op.b7c +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.3: = specific_function constants.%T.as.Destroy.impl.Op.b7c, @T.as.Destroy.impl.Op(constants.%HasQualifiers) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc12: = bound_method %.loc12, %T.as.Destroy.impl.Op.specific_fn.3 // CHECK:STDOUT: %addr.loc12_3.2: %ptr.ec3 = addr_of %.loc12 -// CHECK:STDOUT: %no_op.loc12: init %empty_tuple.type = call %bound_method.loc12(%addr.loc12_3.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc12: init %empty_tuple.type = call %bound_method.loc12(%addr.loc12_3.2) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @plain(%self.param: %ptr.ec3); +// CHECK:STDOUT: fn @HasQualifiers.plain(%self.param: %ptr.ec3); // CHECK:STDOUT: -// CHECK:STDOUT: fn @volatile_this(%self.param: ); +// CHECK:STDOUT: fn @HasQualifiers.volatile_this(%self.param: ); // CHECK:STDOUT: -// CHECK:STDOUT: fn @ref_this(%self.param: %ptr.ec3); +// CHECK:STDOUT: fn @HasQualifiers.ref_this(%self.param: %ptr.ec3); // CHECK:STDOUT: // CHECK:STDOUT: --- fail_todo_bad_object_param_qualifiers_by_ref.carbon // CHECK:STDOUT: @@ -459,8 +459,8 @@ fn Ref(p: Cpp.HasQualifiers*) { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Ref: %Ref.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.f6d: type = pattern_type auto [concrete] -// CHECK:STDOUT: %volatile_this.type: type = fn_type @volatile_this [concrete] -// CHECK:STDOUT: %volatile_this: %volatile_this.type = struct_value () [concrete] +// CHECK:STDOUT: %HasQualifiers.volatile_this.type: type = fn_type @HasQualifiers.volatile_this [concrete] +// CHECK:STDOUT: %HasQualifiers.volatile_this: %HasQualifiers.volatile_this.type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -473,7 +473,7 @@ fn Ref(p: Cpp.HasQualifiers*) { // CHECK:STDOUT: import Cpp//... // CHECK:STDOUT: } // CHECK:STDOUT: %HasQualifiers.decl: type = class_decl @HasQualifiers [concrete = constants.%HasQualifiers] {} {} -// CHECK:STDOUT: %volatile_this.decl: %volatile_this.type = fn_decl @volatile_this [concrete = constants.%volatile_this] { +// CHECK:STDOUT: %HasQualifiers.volatile_this.decl: %HasQualifiers.volatile_this.type = fn_decl @HasQualifiers.volatile_this [concrete = constants.%HasQualifiers.volatile_this] { // CHECK:STDOUT: %self.patt: = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %.1: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] @@ -514,7 +514,7 @@ fn Ref(p: Cpp.HasQualifiers*) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%HasQualifiers -// CHECK:STDOUT: .volatile_this = imports.%volatile_this.decl +// CHECK:STDOUT: .volatile_this = imports.%HasQualifiers.volatile_this.decl // CHECK:STDOUT: import Cpp//... // CHECK:STDOUT: } // CHECK:STDOUT: @@ -522,14 +522,14 @@ fn Ref(p: Cpp.HasQualifiers*) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %p.ref: %ptr.ec3 = name_ref p, %p // CHECK:STDOUT: %.loc15: ref %HasQualifiers = deref %p.ref -// CHECK:STDOUT: %volatile_this.ref: %volatile_this.type = name_ref volatile_this, imports.%volatile_this.decl [concrete = constants.%volatile_this] -// CHECK:STDOUT: %volatile_this.bound: = bound_method %.loc15, %volatile_this.ref +// CHECK:STDOUT: %volatile_this.ref: %HasQualifiers.volatile_this.type = name_ref volatile_this, imports.%HasQualifiers.volatile_this.decl [concrete = constants.%HasQualifiers.volatile_this] +// CHECK:STDOUT: %HasQualifiers.volatile_this.bound: = bound_method %.loc15, %volatile_this.ref // CHECK:STDOUT: %addr: %ptr.ec3 = addr_of %.loc15 -// CHECK:STDOUT: %volatile_this.call: init %empty_tuple.type = call %volatile_this.bound() +// CHECK:STDOUT: %HasQualifiers.volatile_this.call: init %empty_tuple.type = call %HasQualifiers.volatile_this.bound() // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @volatile_this(%self.param: ); +// CHECK:STDOUT: fn @HasQualifiers.volatile_this(%self.param: ); // CHECK:STDOUT: // CHECK:STDOUT: --- fail_bad_object_param_qualifiers_ref_ref.carbon // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interop/cpp/class/struct.carbon b/toolchain/check/testdata/interop/cpp/class/struct.carbon index b92cb399d2df..8143dc245e12 100644 --- a/toolchain/check/testdata/interop/cpp/class/struct.carbon +++ b/toolchain/check/testdata/interop/cpp/class/struct.carbon @@ -454,8 +454,8 @@ fn MyF(bar: Cpp.Bar*); // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Bar: type = class_type @Bar [concrete] -// CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] -// CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] +// CHECK:STDOUT: %Bar.foo.type: type = fn_type @Bar.foo [concrete] +// CHECK:STDOUT: %Bar.foo: %Bar.foo.type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -464,7 +464,7 @@ fn MyF(bar: Cpp.Bar*); // CHECK:STDOUT: import Cpp//... // CHECK:STDOUT: } // CHECK:STDOUT: %Bar.decl: type = class_decl @Bar [concrete = constants.%Bar] {} {} -// CHECK:STDOUT: %foo.decl: %foo.type = fn_decl @foo [concrete = constants.%foo] {} {} +// CHECK:STDOUT: %Bar.foo.decl: %Bar.foo.type = fn_decl @Bar.foo [concrete = constants.%Bar.foo] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @MyF() { @@ -472,8 +472,8 @@ fn MyF(bar: Cpp.Bar*); // CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: // CHECK:STDOUT: %Bar.ref: type = name_ref Bar, imports.%Bar.decl [concrete = constants.%Bar] -// CHECK:STDOUT: %foo.ref: %foo.type = name_ref foo, imports.%foo.decl [concrete = constants.%foo] -// CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref() +// CHECK:STDOUT: %foo.ref: %Bar.foo.type = name_ref foo, imports.%Bar.foo.decl [concrete = constants.%Bar.foo] +// CHECK:STDOUT: %Bar.foo.call: init %empty_tuple.type = call %foo.ref() // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -567,11 +567,11 @@ fn MyF(bar: Cpp.Bar*); // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Bar1: type = class_type @Bar1 [concrete] -// CHECK:STDOUT: %foo1.type: type = fn_type @foo1 [concrete] -// CHECK:STDOUT: %foo1: %foo1.type = struct_value () [concrete] +// CHECK:STDOUT: %Bar1.foo1.type: type = fn_type @Bar1.foo1 [concrete] +// CHECK:STDOUT: %Bar1.foo1: %Bar1.foo1.type = struct_value () [concrete] // CHECK:STDOUT: %Bar2: type = class_type @Bar2 [concrete] -// CHECK:STDOUT: %foo2.type: type = fn_type @foo2 [concrete] -// CHECK:STDOUT: %foo2: %foo2.type = struct_value () [concrete] +// CHECK:STDOUT: %Bar2.foo2.type: type = fn_type @Bar2.foo2 [concrete] +// CHECK:STDOUT: %Bar2.foo2: %Bar2.foo2.type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -581,9 +581,9 @@ fn MyF(bar: Cpp.Bar*); // CHECK:STDOUT: import Cpp//... // CHECK:STDOUT: } // CHECK:STDOUT: %Bar1.decl: type = class_decl @Bar1 [concrete = constants.%Bar1] {} {} -// CHECK:STDOUT: %foo1.decl: %foo1.type = fn_decl @foo1 [concrete = constants.%foo1] {} {} +// CHECK:STDOUT: %Bar1.foo1.decl: %Bar1.foo1.type = fn_decl @Bar1.foo1 [concrete = constants.%Bar1.foo1] {} {} // CHECK:STDOUT: %Bar2.decl: type = class_decl @Bar2 [concrete = constants.%Bar2] {} {} -// CHECK:STDOUT: %foo2.decl: %foo2.type = fn_decl @foo2 [concrete = constants.%foo2] {} {} +// CHECK:STDOUT: %Bar2.foo2.decl: %Bar2.foo2.type = fn_decl @Bar2.foo2 [concrete = constants.%Bar2.foo2] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @MyF() { @@ -591,17 +591,17 @@ fn MyF(bar: Cpp.Bar*); // CHECK:STDOUT: %Cpp.ref.loc8: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: // CHECK:STDOUT: %Bar1.ref: type = name_ref Bar1, imports.%Bar1.decl [concrete = constants.%Bar1] -// CHECK:STDOUT: %foo1.ref.loc8: %foo1.type = name_ref foo1, imports.%foo1.decl [concrete = constants.%foo1] -// CHECK:STDOUT: %foo1.call.loc8: init %empty_tuple.type = call %foo1.ref.loc8() +// CHECK:STDOUT: %foo1.ref.loc8: %Bar1.foo1.type = name_ref foo1, imports.%Bar1.foo1.decl [concrete = constants.%Bar1.foo1] +// CHECK:STDOUT: %Bar1.foo1.call.loc8: init %empty_tuple.type = call %foo1.ref.loc8() // CHECK:STDOUT: %Cpp.ref.loc9: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: // CHECK:STDOUT: %Bar2.ref.loc9: type = name_ref Bar2, imports.%Bar2.decl [concrete = constants.%Bar2] -// CHECK:STDOUT: %foo1.ref.loc9: %foo1.type = name_ref foo1, imports.%foo1.decl [concrete = constants.%foo1] -// CHECK:STDOUT: %foo1.call.loc9: init %empty_tuple.type = call %foo1.ref.loc9() +// CHECK:STDOUT: %foo1.ref.loc9: %Bar1.foo1.type = name_ref foo1, imports.%Bar1.foo1.decl [concrete = constants.%Bar1.foo1] +// CHECK:STDOUT: %Bar1.foo1.call.loc9: init %empty_tuple.type = call %foo1.ref.loc9() // CHECK:STDOUT: %Cpp.ref.loc10: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %Bar2.ref.loc10: type = name_ref Bar2, imports.%Bar2.decl [concrete = constants.%Bar2] -// CHECK:STDOUT: %foo2.ref: %foo2.type = name_ref foo2, imports.%foo2.decl [concrete = constants.%foo2] -// CHECK:STDOUT: %foo2.call: init %empty_tuple.type = call %foo2.ref() +// CHECK:STDOUT: %foo2.ref: %Bar2.foo2.type = name_ref foo2, imports.%Bar2.foo2.decl [concrete = constants.%Bar2.foo2] +// CHECK:STDOUT: %Bar2.foo2.call: init %empty_tuple.type = call %foo2.ref() // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -713,8 +713,8 @@ fn MyF(bar: Cpp.Bar*); // CHECK:STDOUT: %complete_type.fff: = complete_type_witness %struct_type.base.36d [concrete] // CHECK:STDOUT: %MyF.type: type = fn_type @MyF [concrete] // CHECK:STDOUT: %MyF: %MyF.type = struct_value () [concrete] -// CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] -// CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] +// CHECK:STDOUT: %Bar.foo.type: type = fn_type @Bar.foo [concrete] +// CHECK:STDOUT: %Bar.foo: %Bar.foo.type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -723,7 +723,7 @@ fn MyF(bar: Cpp.Bar*); // CHECK:STDOUT: import Cpp//... // CHECK:STDOUT: } // CHECK:STDOUT: %Bar.decl: type = class_decl @Bar [concrete = constants.%Bar] {} {} -// CHECK:STDOUT: %foo.decl: %foo.type = fn_decl @foo [concrete = constants.%foo] {} {} +// CHECK:STDOUT: %Bar.foo.decl: %Bar.foo.type = fn_decl @Bar.foo [concrete = constants.%Bar.foo] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -751,8 +751,8 @@ fn MyF(bar: Cpp.Bar*); // CHECK:STDOUT: fn @MyF() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl [concrete = constants.%Derived] -// CHECK:STDOUT: %foo.ref: %foo.type = name_ref foo, imports.%foo.decl [concrete = constants.%foo] -// CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref() +// CHECK:STDOUT: %foo.ref: %Bar.foo.type = name_ref foo, imports.%Bar.foo.decl [concrete = constants.%Bar.foo] +// CHECK:STDOUT: %Bar.foo.call: init %empty_tuple.type = call %foo.ref() // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interop/cpp/class/union.carbon b/toolchain/check/testdata/interop/cpp/class/union.carbon index 811a1b2a4542..a61a269fd2d9 100644 --- a/toolchain/check/testdata/interop/cpp/class/union.carbon +++ b/toolchain/check/testdata/interop/cpp/class/union.carbon @@ -347,8 +347,8 @@ fn MyF(bar: Cpp.Bar*); // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Bar: type = class_type @Bar [concrete] -// CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] -// CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] +// CHECK:STDOUT: %Bar.foo.type: type = fn_type @Bar.foo [concrete] +// CHECK:STDOUT: %Bar.foo: %Bar.foo.type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -357,7 +357,7 @@ fn MyF(bar: Cpp.Bar*); // CHECK:STDOUT: import Cpp//... // CHECK:STDOUT: } // CHECK:STDOUT: %Bar.decl: type = class_decl @Bar [concrete = constants.%Bar] {} {} -// CHECK:STDOUT: %foo.decl: %foo.type = fn_decl @foo [concrete = constants.%foo] {} {} +// CHECK:STDOUT: %Bar.foo.decl: %Bar.foo.type = fn_decl @Bar.foo [concrete = constants.%Bar.foo] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @MyF() { @@ -365,8 +365,8 @@ fn MyF(bar: Cpp.Bar*); // CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: // CHECK:STDOUT: %Bar.ref: type = name_ref Bar, imports.%Bar.decl [concrete = constants.%Bar] -// CHECK:STDOUT: %foo.ref: %foo.type = name_ref foo, imports.%foo.decl [concrete = constants.%foo] -// CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref() +// CHECK:STDOUT: %foo.ref: %Bar.foo.type = name_ref foo, imports.%Bar.foo.decl [concrete = constants.%Bar.foo] +// CHECK:STDOUT: %Bar.foo.call: init %empty_tuple.type = call %foo.ref() // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interop/cpp/function/arithmetic_types_bridged.carbon b/toolchain/check/testdata/interop/cpp/function/arithmetic_types_bridged.carbon index 502e342e1cb4..35afdbdb9fde 100644 --- a/toolchain/check/testdata/interop/cpp/function/arithmetic_types_bridged.carbon +++ b/toolchain/check/testdata/interop/cpp/function/arithmetic_types_bridged.carbon @@ -378,18 +378,18 @@ fn F() { // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %As.type.a96: type = facet_type <@As, @As(%i16)> [concrete] -// CHECK:STDOUT: %Convert.type.be5: type = fn_type @Convert.2, @As(%i16) [concrete] +// CHECK:STDOUT: %As.Convert.type.be5: type = fn_type @As.Convert, @As(%i16) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.062: type = fn_type @Convert.1, @As.impl.686(%To) [symbolic] -// CHECK:STDOUT: %Convert.527: %Convert.type.062 = struct_value () [symbolic] -// CHECK:STDOUT: %As.impl_witness.0ef: = impl_witness imports.%As.impl_witness_table.eb4, @As.impl.686(%int_16) [concrete] -// CHECK:STDOUT: %Convert.type.172: type = fn_type @Convert.1, @As.impl.686(%int_16) [concrete] -// CHECK:STDOUT: %Convert.489: %Convert.type.172 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.062: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.527: %Core.IntLiteral.as.As.impl.Convert.type.062 = struct_value () [symbolic] +// CHECK:STDOUT: %As.impl_witness.0ef: = impl_witness imports.%As.impl_witness_table.eb4, @Core.IntLiteral.as.As.impl(%int_16) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.172: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%int_16) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.489: %Core.IntLiteral.as.As.impl.Convert.type.172 = struct_value () [concrete] // CHECK:STDOUT: %As.facet: %As.type.a96 = facet_value Core.IntLiteral, (%As.impl_witness.0ef) [concrete] -// CHECK:STDOUT: %.91d: type = fn_type_with_self_type %Convert.type.be5, %As.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.489 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.489, @Convert.1(%int_16) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.91d: type = fn_type_with_self_type %As.Convert.type.be5, %As.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert.489 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.As.impl.Convert.489, @Core.IntLiteral.as.As.impl.Convert(%int_16) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.f90: %i16 = int_value 1 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -403,8 +403,8 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import_ref.78a: @As.impl.686.%Convert.type (%Convert.type.062) = import_ref Core//prelude/parts/int, loc25_39, loaded [symbolic = @As.impl.686.%Convert (constants.%Convert.527)] -// CHECK:STDOUT: %As.impl_witness_table.eb4 = impl_witness_table (%Core.import_ref.78a), @As.impl.686 [concrete] +// CHECK:STDOUT: %Core.import_ref.78a: @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert.type (%Core.IntLiteral.as.As.impl.Convert.type.062) = import_ref Core//prelude/parts/int, loc25_39, loaded [symbolic = @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert (constants.%Core.IntLiteral.as.As.impl.Convert.527)] +// CHECK:STDOUT: %As.impl_witness_table.eb4 = impl_witness_table (%Core.import_ref.78a), @Core.IntLiteral.as.As.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { @@ -414,12 +414,12 @@ fn F() { // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_16: Core.IntLiteral = int_value 16 [concrete = constants.%int_16] // CHECK:STDOUT: %i16: type = class_type @Int, @Int(constants.%int_16) [concrete = constants.%i16] -// CHECK:STDOUT: %impl.elem0: %.91d = impl_witness_access constants.%As.impl_witness.0ef, element0 [concrete = constants.%Convert.489] -// CHECK:STDOUT: %bound_method.loc8_13.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_16) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.91d = impl_witness_access constants.%As.impl_witness.0ef, element0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.489] +// CHECK:STDOUT: %bound_method.loc8_13.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.As.impl.Convert(constants.%int_16) [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc8_13.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i16 = call %bound_method.loc8_13.2(%int_1) [concrete = constants.%int_1.f90] -// CHECK:STDOUT: %.loc8_13.1: %i16 = value_of_initializer %int.convert_checked [concrete = constants.%int_1.f90] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.call: init %i16 = call %bound_method.loc8_13.2(%int_1) [concrete = constants.%int_1.f90] +// CHECK:STDOUT: %.loc8_13.1: %i16 = value_of_initializer %Core.IntLiteral.as.As.impl.Convert.call [concrete = constants.%int_1.f90] // CHECK:STDOUT: %.loc8_13.2: %i16 = converted %int_1, %.loc8_13.1 [concrete = constants.%int_1.f90] // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref(%.loc8_13.2) // CHECK:STDOUT: @@ -435,18 +435,18 @@ fn F() { // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] // CHECK:STDOUT: %int_32767.f4b: Core.IntLiteral = int_value 32767 [concrete] // CHECK:STDOUT: %ImplicitAs.type.adb: type = facet_type <@ImplicitAs, @ImplicitAs(%i16)> [concrete] -// CHECK:STDOUT: %Convert.type.fa6: type = fn_type @Convert.2, @ImplicitAs(%i16) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.fa6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i16) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.97b: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_16) [concrete] -// CHECK:STDOUT: %Convert.type.33c: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_16) [concrete] -// CHECK:STDOUT: %Convert.d0a: %Convert.type.33c = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.97b: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_16) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.33c: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_16) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.d0a: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.33c = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.adb = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.97b) [concrete] -// CHECK:STDOUT: %.236: type = fn_type_with_self_type %Convert.type.fa6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_32767.f4b, %Convert.d0a [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.d0a, @Convert.1(%int_16) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_32767.f4b, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.236: type = fn_type_with_self_type %ImplicitAs.Convert.type.fa6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_32767.f4b, %Core.IntLiteral.as.ImplicitAs.impl.Convert.d0a [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.d0a, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_16) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_32767.f4b, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_32767.faa: %i16 = int_value 32767 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -460,8 +460,8 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { @@ -469,12 +469,12 @@ fn F() { // CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.type = name_ref foo, imports.%foo.decl [concrete = constants.%foo] // CHECK:STDOUT: %int_32767: Core.IntLiteral = int_value 32767 [concrete = constants.%int_32767.f4b] -// CHECK:STDOUT: %impl.elem0: %.236 = impl_witness_access constants.%ImplicitAs.impl_witness.97b, element0 [concrete = constants.%Convert.d0a] -// CHECK:STDOUT: %bound_method.loc8_11.1: = bound_method %int_32767, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_16) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.236 = impl_witness_access constants.%ImplicitAs.impl_witness.97b, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.d0a] +// CHECK:STDOUT: %bound_method.loc8_11.1: = bound_method %int_32767, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_16) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc8_11.2: = bound_method %int_32767, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i16 = call %bound_method.loc8_11.2(%int_32767) [concrete = constants.%int_32767.faa] -// CHECK:STDOUT: %.loc8_11.1: %i16 = value_of_initializer %int.convert_checked [concrete = constants.%int_32767.faa] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i16 = call %bound_method.loc8_11.2(%int_32767) [concrete = constants.%int_32767.faa] +// CHECK:STDOUT: %.loc8_11.1: %i16 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_32767.faa] // CHECK:STDOUT: %.loc8_11.2: %i16 = converted %int_32767, %.loc8_11.1 [concrete = constants.%int_32767.faa] // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref(%.loc8_11.2) // CHECK:STDOUT: @@ -490,27 +490,27 @@ fn F() { // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] // CHECK:STDOUT: %int_32768: Core.IntLiteral = int_value 32768 [concrete] // CHECK:STDOUT: %Negate.type: type = facet_type <@Negate> [concrete] -// CHECK:STDOUT: %Op.type.e42: type = fn_type @Op.2 [concrete] +// CHECK:STDOUT: %Negate.Op.type: type = fn_type @Negate.Op [concrete] // CHECK:STDOUT: %Negate.impl_witness.973: = impl_witness imports.%Negate.impl_witness_table.b22 [concrete] // CHECK:STDOUT: %Negate.facet: %Negate.type = facet_value Core.IntLiteral, (%Negate.impl_witness.973) [concrete] -// CHECK:STDOUT: %.d3d: type = fn_type_with_self_type %Op.type.e42, %Negate.facet [concrete] -// CHECK:STDOUT: %Op.type.18a: type = fn_type @Op.1 [concrete] -// CHECK:STDOUT: %Op.99f: %Op.type.18a = struct_value () [concrete] -// CHECK:STDOUT: %Op.bound: = bound_method %int_32768, %Op.99f [concrete] +// CHECK:STDOUT: %.d3d: type = fn_type_with_self_type %Negate.Op.type, %Negate.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.type: type = fn_type @Core.IntLiteral.as.Negate.impl.Op [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op: %Core.IntLiteral.as.Negate.impl.Op.type = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.bound: = bound_method %int_32768, %Core.IntLiteral.as.Negate.impl.Op [concrete] // CHECK:STDOUT: %int_-32768.882: Core.IntLiteral = int_value -32768 [concrete] // CHECK:STDOUT: %ImplicitAs.type.adb: type = facet_type <@ImplicitAs, @ImplicitAs(%i16)> [concrete] -// CHECK:STDOUT: %Convert.type.fa6: type = fn_type @Convert.2, @ImplicitAs(%i16) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.fa6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i16) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.97b: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_16) [concrete] -// CHECK:STDOUT: %Convert.type.33c: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_16) [concrete] -// CHECK:STDOUT: %Convert.d0a: %Convert.type.33c = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.97b: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_16) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.33c: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_16) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.d0a: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.33c = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.adb = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.97b) [concrete] -// CHECK:STDOUT: %.236: type = fn_type_with_self_type %Convert.type.fa6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_-32768.882, %Convert.d0a [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.d0a, @Convert.1(%int_16) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_-32768.882, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.236: type = fn_type_with_self_type %ImplicitAs.Convert.type.fa6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_-32768.882, %Core.IntLiteral.as.ImplicitAs.impl.Convert.d0a [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.d0a, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_16) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_-32768.882, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_-32768.7e5: %i16 = int_value -32768 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -525,10 +525,10 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import_ref.abd = import_ref Core//prelude/parts/int_literal, loc13_50, unloaded -// CHECK:STDOUT: %Core.import_ref.5e6: %Op.type.18a = import_ref Core//prelude/parts/int_literal, loc14_31, loaded [concrete = constants.%Op.99f] -// CHECK:STDOUT: %Negate.impl_witness_table.b22 = impl_witness_table (%Core.import_ref.abd, %Core.import_ref.5e6), @Negate.impl.0ef [concrete] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.5e6: %Core.IntLiteral.as.Negate.impl.Op.type = import_ref Core//prelude/parts/int_literal, loc14_31, loaded [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op] +// CHECK:STDOUT: %Negate.impl_witness_table.b22 = impl_witness_table (%Core.import_ref.abd, %Core.import_ref.5e6), @Core.IntLiteral.as.Negate.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { @@ -536,18 +536,18 @@ fn F() { // CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.type = name_ref foo, imports.%foo.decl [concrete = constants.%foo] // CHECK:STDOUT: %int_32768: Core.IntLiteral = int_value 32768 [concrete = constants.%int_32768] -// CHECK:STDOUT: %impl.elem1: %.d3d = impl_witness_access constants.%Negate.impl_witness.973, element1 [concrete = constants.%Op.99f] -// CHECK:STDOUT: %bound_method.loc8_11.1: = bound_method %int_32768, %impl.elem1 [concrete = constants.%Op.bound] -// CHECK:STDOUT: %int.snegate: init Core.IntLiteral = call %bound_method.loc8_11.1(%int_32768) [concrete = constants.%int_-32768.882] -// CHECK:STDOUT: %impl.elem0: %.236 = impl_witness_access constants.%ImplicitAs.impl_witness.97b, element0 [concrete = constants.%Convert.d0a] -// CHECK:STDOUT: %bound_method.loc8_11.2: = bound_method %int.snegate, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_16) [concrete = constants.%Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc8_11.3: = bound_method %int.snegate, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %.loc8_11.1: Core.IntLiteral = value_of_initializer %int.snegate [concrete = constants.%int_-32768.882] -// CHECK:STDOUT: %.loc8_11.2: Core.IntLiteral = converted %int.snegate, %.loc8_11.1 [concrete = constants.%int_-32768.882] -// CHECK:STDOUT: %int.convert_checked: init %i16 = call %bound_method.loc8_11.3(%.loc8_11.2) [concrete = constants.%int_-32768.7e5] -// CHECK:STDOUT: %.loc8_11.3: %i16 = value_of_initializer %int.convert_checked [concrete = constants.%int_-32768.7e5] -// CHECK:STDOUT: %.loc8_11.4: %i16 = converted %int.snegate, %.loc8_11.3 [concrete = constants.%int_-32768.7e5] +// CHECK:STDOUT: %impl.elem1: %.d3d = impl_witness_access constants.%Negate.impl_witness.973, element1 [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op] +// CHECK:STDOUT: %bound_method.loc8_11.1: = bound_method %int_32768, %impl.elem1 [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op.bound] +// CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.call: init Core.IntLiteral = call %bound_method.loc8_11.1(%int_32768) [concrete = constants.%int_-32768.882] +// CHECK:STDOUT: %impl.elem0: %.236 = impl_witness_access constants.%ImplicitAs.impl_witness.97b, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.d0a] +// CHECK:STDOUT: %bound_method.loc8_11.2: = bound_method %Core.IntLiteral.as.Negate.impl.Op.call, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_16) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc8_11.3: = bound_method %Core.IntLiteral.as.Negate.impl.Op.call, %specific_fn [concrete = constants.%bound_method] +// CHECK:STDOUT: %.loc8_11.1: Core.IntLiteral = value_of_initializer %Core.IntLiteral.as.Negate.impl.Op.call [concrete = constants.%int_-32768.882] +// CHECK:STDOUT: %.loc8_11.2: Core.IntLiteral = converted %Core.IntLiteral.as.Negate.impl.Op.call, %.loc8_11.1 [concrete = constants.%int_-32768.882] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i16 = call %bound_method.loc8_11.3(%.loc8_11.2) [concrete = constants.%int_-32768.7e5] +// CHECK:STDOUT: %.loc8_11.3: %i16 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_-32768.7e5] +// CHECK:STDOUT: %.loc8_11.4: %i16 = converted %Core.IntLiteral.as.Negate.impl.Op.call, %.loc8_11.3 [concrete = constants.%int_-32768.7e5] // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref(%.loc8_11.4) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -562,18 +562,18 @@ fn F() { // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %As.type.a96: type = facet_type <@As, @As(%i16)> [concrete] -// CHECK:STDOUT: %Convert.type.be5: type = fn_type @Convert.2, @As(%i16) [concrete] +// CHECK:STDOUT: %As.Convert.type.be5: type = fn_type @As.Convert, @As(%i16) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.062: type = fn_type @Convert.1, @As.impl.686(%To) [symbolic] -// CHECK:STDOUT: %Convert.527: %Convert.type.062 = struct_value () [symbolic] -// CHECK:STDOUT: %As.impl_witness.0ef: = impl_witness imports.%As.impl_witness_table.eb4, @As.impl.686(%int_16) [concrete] -// CHECK:STDOUT: %Convert.type.172: type = fn_type @Convert.1, @As.impl.686(%int_16) [concrete] -// CHECK:STDOUT: %Convert.489: %Convert.type.172 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.062: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.527: %Core.IntLiteral.as.As.impl.Convert.type.062 = struct_value () [symbolic] +// CHECK:STDOUT: %As.impl_witness.0ef: = impl_witness imports.%As.impl_witness_table.eb4, @Core.IntLiteral.as.As.impl(%int_16) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.172: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%int_16) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.489: %Core.IntLiteral.as.As.impl.Convert.type.172 = struct_value () [concrete] // CHECK:STDOUT: %As.facet: %As.type.a96 = facet_value Core.IntLiteral, (%As.impl_witness.0ef) [concrete] -// CHECK:STDOUT: %.91d: type = fn_type_with_self_type %Convert.type.be5, %As.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.489 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.489, @Convert.1(%int_16) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.91d: type = fn_type_with_self_type %As.Convert.type.be5, %As.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert.489 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.As.impl.Convert.489, @Core.IntLiteral.as.As.impl.Convert(%int_16) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.f90: %i16 = int_value 1 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -587,8 +587,8 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import_ref.78a: @As.impl.686.%Convert.type (%Convert.type.062) = import_ref Core//prelude/parts/int, loc25_39, loaded [symbolic = @As.impl.686.%Convert (constants.%Convert.527)] -// CHECK:STDOUT: %As.impl_witness_table.eb4 = impl_witness_table (%Core.import_ref.78a), @As.impl.686 [concrete] +// CHECK:STDOUT: %Core.import_ref.78a: @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert.type (%Core.IntLiteral.as.As.impl.Convert.type.062) = import_ref Core//prelude/parts/int, loc25_39, loaded [symbolic = @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert (constants.%Core.IntLiteral.as.As.impl.Convert.527)] +// CHECK:STDOUT: %As.impl_witness_table.eb4 = impl_witness_table (%Core.import_ref.78a), @Core.IntLiteral.as.As.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { @@ -598,12 +598,12 @@ fn F() { // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_16: Core.IntLiteral = int_value 16 [concrete = constants.%int_16] // CHECK:STDOUT: %i16: type = class_type @Int, @Int(constants.%int_16) [concrete = constants.%i16] -// CHECK:STDOUT: %impl.elem0: %.91d = impl_witness_access constants.%As.impl_witness.0ef, element0 [concrete = constants.%Convert.489] -// CHECK:STDOUT: %bound_method.loc8_13.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_16) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.91d = impl_witness_access constants.%As.impl_witness.0ef, element0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.489] +// CHECK:STDOUT: %bound_method.loc8_13.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.As.impl.Convert(constants.%int_16) [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc8_13.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i16 = call %bound_method.loc8_13.2(%int_1) [concrete = constants.%int_1.f90] -// CHECK:STDOUT: %.loc8_13.1: %i16 = value_of_initializer %int.convert_checked [concrete = constants.%int_1.f90] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.call: init %i16 = call %bound_method.loc8_13.2(%int_1) [concrete = constants.%int_1.f90] +// CHECK:STDOUT: %.loc8_13.1: %i16 = value_of_initializer %Core.IntLiteral.as.As.impl.Convert.call [concrete = constants.%int_1.f90] // CHECK:STDOUT: %.loc8_13.2: %i16 = converted %int_1, %.loc8_13.1 [concrete = constants.%int_1.f90] // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref(%.loc8_13.2) // CHECK:STDOUT: @@ -619,18 +619,18 @@ fn F() { // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %As.type.a96: type = facet_type <@As, @As(%i16)> [concrete] -// CHECK:STDOUT: %Convert.type.be5: type = fn_type @Convert.2, @As(%i16) [concrete] +// CHECK:STDOUT: %As.Convert.type.be5: type = fn_type @As.Convert, @As(%i16) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.062: type = fn_type @Convert.1, @As.impl.686(%To) [symbolic] -// CHECK:STDOUT: %Convert.527: %Convert.type.062 = struct_value () [symbolic] -// CHECK:STDOUT: %As.impl_witness.0ef: = impl_witness imports.%As.impl_witness_table.eb4, @As.impl.686(%int_16) [concrete] -// CHECK:STDOUT: %Convert.type.172: type = fn_type @Convert.1, @As.impl.686(%int_16) [concrete] -// CHECK:STDOUT: %Convert.489: %Convert.type.172 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.062: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.527: %Core.IntLiteral.as.As.impl.Convert.type.062 = struct_value () [symbolic] +// CHECK:STDOUT: %As.impl_witness.0ef: = impl_witness imports.%As.impl_witness_table.eb4, @Core.IntLiteral.as.As.impl(%int_16) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.172: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%int_16) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.489: %Core.IntLiteral.as.As.impl.Convert.type.172 = struct_value () [concrete] // CHECK:STDOUT: %As.facet: %As.type.a96 = facet_value Core.IntLiteral, (%As.impl_witness.0ef) [concrete] -// CHECK:STDOUT: %.91d: type = fn_type_with_self_type %Convert.type.be5, %As.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.489 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.489, @Convert.1(%int_16) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.91d: type = fn_type_with_self_type %As.Convert.type.be5, %As.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert.489 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.As.impl.Convert.489, @Core.IntLiteral.as.As.impl.Convert(%int_16) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.f90: %i16 = int_value 1 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -644,8 +644,8 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import_ref.78a: @As.impl.686.%Convert.type (%Convert.type.062) = import_ref Core//prelude/parts/int, loc25_39, loaded [symbolic = @As.impl.686.%Convert (constants.%Convert.527)] -// CHECK:STDOUT: %As.impl_witness_table.eb4 = impl_witness_table (%Core.import_ref.78a), @As.impl.686 [concrete] +// CHECK:STDOUT: %Core.import_ref.78a: @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert.type (%Core.IntLiteral.as.As.impl.Convert.type.062) = import_ref Core//prelude/parts/int, loc25_39, loaded [symbolic = @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert (constants.%Core.IntLiteral.as.As.impl.Convert.527)] +// CHECK:STDOUT: %As.impl_witness_table.eb4 = impl_witness_table (%Core.import_ref.78a), @Core.IntLiteral.as.As.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { @@ -655,12 +655,12 @@ fn F() { // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_16: Core.IntLiteral = int_value 16 [concrete = constants.%int_16] // CHECK:STDOUT: %i16: type = class_type @Int, @Int(constants.%int_16) [concrete = constants.%i16] -// CHECK:STDOUT: %impl.elem0: %.91d = impl_witness_access constants.%As.impl_witness.0ef, element0 [concrete = constants.%Convert.489] -// CHECK:STDOUT: %bound_method.loc8_13.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_16) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.91d = impl_witness_access constants.%As.impl_witness.0ef, element0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.489] +// CHECK:STDOUT: %bound_method.loc8_13.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.As.impl.Convert(constants.%int_16) [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc8_13.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i16 = call %bound_method.loc8_13.2(%int_1) [concrete = constants.%int_1.f90] -// CHECK:STDOUT: %.loc8_13.1: %i16 = value_of_initializer %int.convert_checked [concrete = constants.%int_1.f90] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.call: init %i16 = call %bound_method.loc8_13.2(%int_1) [concrete = constants.%int_1.f90] +// CHECK:STDOUT: %.loc8_13.1: %i16 = value_of_initializer %Core.IntLiteral.as.As.impl.Convert.call [concrete = constants.%int_1.f90] // CHECK:STDOUT: %.loc8_13.2: %i16 = converted %int_1, %.loc8_13.1 [concrete = constants.%int_1.f90] // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref(%.loc8_13.2) // CHECK:STDOUT: @@ -676,18 +676,18 @@ fn F() { // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %As.type.a96: type = facet_type <@As, @As(%i16)> [concrete] -// CHECK:STDOUT: %Convert.type.be5: type = fn_type @Convert.2, @As(%i16) [concrete] +// CHECK:STDOUT: %As.Convert.type.be5: type = fn_type @As.Convert, @As(%i16) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.062: type = fn_type @Convert.1, @As.impl.686(%To) [symbolic] -// CHECK:STDOUT: %Convert.527: %Convert.type.062 = struct_value () [symbolic] -// CHECK:STDOUT: %As.impl_witness.0ef: = impl_witness imports.%As.impl_witness_table.eb4, @As.impl.686(%int_16) [concrete] -// CHECK:STDOUT: %Convert.type.172: type = fn_type @Convert.1, @As.impl.686(%int_16) [concrete] -// CHECK:STDOUT: %Convert.489: %Convert.type.172 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.062: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.527: %Core.IntLiteral.as.As.impl.Convert.type.062 = struct_value () [symbolic] +// CHECK:STDOUT: %As.impl_witness.0ef: = impl_witness imports.%As.impl_witness_table.eb4, @Core.IntLiteral.as.As.impl(%int_16) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.172: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%int_16) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.489: %Core.IntLiteral.as.As.impl.Convert.type.172 = struct_value () [concrete] // CHECK:STDOUT: %As.facet: %As.type.a96 = facet_value Core.IntLiteral, (%As.impl_witness.0ef) [concrete] -// CHECK:STDOUT: %.91d: type = fn_type_with_self_type %Convert.type.be5, %As.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.489 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.489, @Convert.1(%int_16) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.91d: type = fn_type_with_self_type %As.Convert.type.be5, %As.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert.489 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.As.impl.Convert.489, @Core.IntLiteral.as.As.impl.Convert(%int_16) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.f90: %i16 = int_value 1 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -701,8 +701,8 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import_ref.78a: @As.impl.686.%Convert.type (%Convert.type.062) = import_ref Core//prelude/parts/int, loc25_39, loaded [symbolic = @As.impl.686.%Convert (constants.%Convert.527)] -// CHECK:STDOUT: %As.impl_witness_table.eb4 = impl_witness_table (%Core.import_ref.78a), @As.impl.686 [concrete] +// CHECK:STDOUT: %Core.import_ref.78a: @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert.type (%Core.IntLiteral.as.As.impl.Convert.type.062) = import_ref Core//prelude/parts/int, loc25_39, loaded [symbolic = @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert (constants.%Core.IntLiteral.as.As.impl.Convert.527)] +// CHECK:STDOUT: %As.impl_witness_table.eb4 = impl_witness_table (%Core.import_ref.78a), @Core.IntLiteral.as.As.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { @@ -712,12 +712,12 @@ fn F() { // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_16: Core.IntLiteral = int_value 16 [concrete = constants.%int_16] // CHECK:STDOUT: %i16: type = class_type @Int, @Int(constants.%int_16) [concrete = constants.%i16] -// CHECK:STDOUT: %impl.elem0: %.91d = impl_witness_access constants.%As.impl_witness.0ef, element0 [concrete = constants.%Convert.489] -// CHECK:STDOUT: %bound_method.loc8_13.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_16) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.91d = impl_witness_access constants.%As.impl_witness.0ef, element0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.489] +// CHECK:STDOUT: %bound_method.loc8_13.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.As.impl.Convert(constants.%int_16) [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc8_13.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i16 = call %bound_method.loc8_13.2(%int_1) [concrete = constants.%int_1.f90] -// CHECK:STDOUT: %.loc8_13.1: %i16 = value_of_initializer %int.convert_checked [concrete = constants.%int_1.f90] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.call: init %i16 = call %bound_method.loc8_13.2(%int_1) [concrete = constants.%int_1.f90] +// CHECK:STDOUT: %.loc8_13.1: %i16 = value_of_initializer %Core.IntLiteral.as.As.impl.Convert.call [concrete = constants.%int_1.f90] // CHECK:STDOUT: %.loc8_13.2: %i16 = converted %int_1, %.loc8_13.1 [concrete = constants.%int_1.f90] // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref(%.loc8_13.2) // CHECK:STDOUT: @@ -733,18 +733,18 @@ fn F() { // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %As.type.a96: type = facet_type <@As, @As(%i16)> [concrete] -// CHECK:STDOUT: %Convert.type.be5: type = fn_type @Convert.2, @As(%i16) [concrete] +// CHECK:STDOUT: %As.Convert.type.be5: type = fn_type @As.Convert, @As(%i16) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.062: type = fn_type @Convert.1, @As.impl.686(%To) [symbolic] -// CHECK:STDOUT: %Convert.527: %Convert.type.062 = struct_value () [symbolic] -// CHECK:STDOUT: %As.impl_witness.0ef: = impl_witness imports.%As.impl_witness_table.eb4, @As.impl.686(%int_16) [concrete] -// CHECK:STDOUT: %Convert.type.172: type = fn_type @Convert.1, @As.impl.686(%int_16) [concrete] -// CHECK:STDOUT: %Convert.489: %Convert.type.172 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.062: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.527: %Core.IntLiteral.as.As.impl.Convert.type.062 = struct_value () [symbolic] +// CHECK:STDOUT: %As.impl_witness.0ef: = impl_witness imports.%As.impl_witness_table.eb4, @Core.IntLiteral.as.As.impl(%int_16) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.172: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%int_16) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.489: %Core.IntLiteral.as.As.impl.Convert.type.172 = struct_value () [concrete] // CHECK:STDOUT: %As.facet: %As.type.a96 = facet_value Core.IntLiteral, (%As.impl_witness.0ef) [concrete] -// CHECK:STDOUT: %.91d: type = fn_type_with_self_type %Convert.type.be5, %As.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.489 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.489, @Convert.1(%int_16) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.91d: type = fn_type_with_self_type %As.Convert.type.be5, %As.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert.489 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.As.impl.Convert.489, @Core.IntLiteral.as.As.impl.Convert(%int_16) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.f90: %i16 = int_value 1 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -758,8 +758,8 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import_ref.78a: @As.impl.686.%Convert.type (%Convert.type.062) = import_ref Core//prelude/parts/int, loc25_39, loaded [symbolic = @As.impl.686.%Convert (constants.%Convert.527)] -// CHECK:STDOUT: %As.impl_witness_table.eb4 = impl_witness_table (%Core.import_ref.78a), @As.impl.686 [concrete] +// CHECK:STDOUT: %Core.import_ref.78a: @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert.type (%Core.IntLiteral.as.As.impl.Convert.type.062) = import_ref Core//prelude/parts/int, loc25_39, loaded [symbolic = @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert (constants.%Core.IntLiteral.as.As.impl.Convert.527)] +// CHECK:STDOUT: %As.impl_witness_table.eb4 = impl_witness_table (%Core.import_ref.78a), @Core.IntLiteral.as.As.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { @@ -769,12 +769,12 @@ fn F() { // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_16: Core.IntLiteral = int_value 16 [concrete = constants.%int_16] // CHECK:STDOUT: %i16: type = class_type @Int, @Int(constants.%int_16) [concrete = constants.%i16] -// CHECK:STDOUT: %impl.elem0: %.91d = impl_witness_access constants.%As.impl_witness.0ef, element0 [concrete = constants.%Convert.489] -// CHECK:STDOUT: %bound_method.loc8_13.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_16) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.91d = impl_witness_access constants.%As.impl_witness.0ef, element0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.489] +// CHECK:STDOUT: %bound_method.loc8_13.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.As.impl.Convert(constants.%int_16) [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc8_13.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i16 = call %bound_method.loc8_13.2(%int_1) [concrete = constants.%int_1.f90] -// CHECK:STDOUT: %.loc8_13.1: %i16 = value_of_initializer %int.convert_checked [concrete = constants.%int_1.f90] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.call: init %i16 = call %bound_method.loc8_13.2(%int_1) [concrete = constants.%int_1.f90] +// CHECK:STDOUT: %.loc8_13.1: %i16 = value_of_initializer %Core.IntLiteral.as.As.impl.Convert.call [concrete = constants.%int_1.f90] // CHECK:STDOUT: %.loc8_13.2: %i16 = converted %int_1, %.loc8_13.1 [concrete = constants.%int_1.f90] // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref(%.loc8_13.2) // CHECK:STDOUT: @@ -791,18 +791,18 @@ fn F() { // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %As.type.a96: type = facet_type <@As, @As(%i16)> [concrete] -// CHECK:STDOUT: %Convert.type.be5: type = fn_type @Convert.2, @As(%i16) [concrete] +// CHECK:STDOUT: %As.Convert.type.be5: type = fn_type @As.Convert, @As(%i16) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.062: type = fn_type @Convert.1, @As.impl.686(%To) [symbolic] -// CHECK:STDOUT: %Convert.527: %Convert.type.062 = struct_value () [symbolic] -// CHECK:STDOUT: %As.impl_witness.0ef: = impl_witness imports.%As.impl_witness_table.eb4, @As.impl.686(%int_16) [concrete] -// CHECK:STDOUT: %Convert.type.172: type = fn_type @Convert.1, @As.impl.686(%int_16) [concrete] -// CHECK:STDOUT: %Convert.489: %Convert.type.172 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.062: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.527: %Core.IntLiteral.as.As.impl.Convert.type.062 = struct_value () [symbolic] +// CHECK:STDOUT: %As.impl_witness.0ef: = impl_witness imports.%As.impl_witness_table.eb4, @Core.IntLiteral.as.As.impl(%int_16) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.172: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%int_16) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.489: %Core.IntLiteral.as.As.impl.Convert.type.172 = struct_value () [concrete] // CHECK:STDOUT: %As.facet: %As.type.a96 = facet_value Core.IntLiteral, (%As.impl_witness.0ef) [concrete] -// CHECK:STDOUT: %.91d: type = fn_type_with_self_type %Convert.type.be5, %As.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.489 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.489, @Convert.1(%int_16) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.91d: type = fn_type_with_self_type %As.Convert.type.be5, %As.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert.489 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.As.impl.Convert.489, @Core.IntLiteral.as.As.impl.Convert(%int_16) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.f90: %i16 = int_value 1 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -816,8 +816,8 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import_ref.78a: @As.impl.686.%Convert.type (%Convert.type.062) = import_ref Core//prelude/parts/int, loc25_39, loaded [symbolic = @As.impl.686.%Convert (constants.%Convert.527)] -// CHECK:STDOUT: %As.impl_witness_table.eb4 = impl_witness_table (%Core.import_ref.78a), @As.impl.686 [concrete] +// CHECK:STDOUT: %Core.import_ref.78a: @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert.type (%Core.IntLiteral.as.As.impl.Convert.type.062) = import_ref Core//prelude/parts/int, loc25_39, loaded [symbolic = @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert (constants.%Core.IntLiteral.as.As.impl.Convert.527)] +// CHECK:STDOUT: %As.impl_witness_table.eb4 = impl_witness_table (%Core.import_ref.78a), @Core.IntLiteral.as.As.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { @@ -827,12 +827,12 @@ fn F() { // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_16: Core.IntLiteral = int_value 16 [concrete = constants.%int_16] // CHECK:STDOUT: %i16: type = class_type @Int, @Int(constants.%int_16) [concrete = constants.%i16] -// CHECK:STDOUT: %impl.elem0: %.91d = impl_witness_access constants.%As.impl_witness.0ef, element0 [concrete = constants.%Convert.489] -// CHECK:STDOUT: %bound_method.loc16_13.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_16) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.91d = impl_witness_access constants.%As.impl_witness.0ef, element0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.489] +// CHECK:STDOUT: %bound_method.loc16_13.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.As.impl.Convert(constants.%int_16) [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc16_13.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i16 = call %bound_method.loc16_13.2(%int_1) [concrete = constants.%int_1.f90] -// CHECK:STDOUT: %.loc16_13.1: %i16 = value_of_initializer %int.convert_checked [concrete = constants.%int_1.f90] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.call: init %i16 = call %bound_method.loc16_13.2(%int_1) [concrete = constants.%int_1.f90] +// CHECK:STDOUT: %.loc16_13.1: %i16 = value_of_initializer %Core.IntLiteral.as.As.impl.Convert.call [concrete = constants.%int_1.f90] // CHECK:STDOUT: %.loc16_13.2: %i16 = converted %int_1, %.loc16_13.1 [concrete = constants.%int_1.f90] // CHECK:STDOUT: %.loc16_13.3: %const = converted %.loc16_13.2, [concrete = ] // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref() diff --git a/toolchain/check/testdata/interop/cpp/function/arithmetic_types_mapped.carbon b/toolchain/check/testdata/interop/cpp/function/arithmetic_types_mapped.carbon index 4e03ebb879e4..83fdac30da92 100644 --- a/toolchain/check/testdata/interop/cpp/function/arithmetic_types_mapped.carbon +++ b/toolchain/check/testdata/interop/cpp/function/arithmetic_types_mapped.carbon @@ -413,18 +413,18 @@ fn F() { // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] // CHECK:STDOUT: %int_2147483647.d89: Core.IntLiteral = int_value 2147483647 [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_2147483647.d89, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_2147483647.d89, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_2147483647.d89, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_2147483647.d89, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2147483647.a74: %i32 = int_value 2147483647 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -438,8 +438,8 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { @@ -447,12 +447,12 @@ fn F() { // CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.type = name_ref foo, imports.%foo.decl [concrete = constants.%foo] // CHECK:STDOUT: %int_2147483647: Core.IntLiteral = int_value 2147483647 [concrete = constants.%int_2147483647.d89] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc8_11.1: = bound_method %int_2147483647, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc8_11.1: = bound_method %int_2147483647, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc8_11.2: = bound_method %int_2147483647, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc8_11.2(%int_2147483647) [concrete = constants.%int_2147483647.a74] -// CHECK:STDOUT: %.loc8_11.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_2147483647.a74] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc8_11.2(%int_2147483647) [concrete = constants.%int_2147483647.a74] +// CHECK:STDOUT: %.loc8_11.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_2147483647.a74] // CHECK:STDOUT: %.loc8_11.2: %i32 = converted %int_2147483647, %.loc8_11.1 [concrete = constants.%int_2147483647.a74] // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref(%.loc8_11.2) // CHECK:STDOUT: @@ -468,27 +468,27 @@ fn F() { // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] // CHECK:STDOUT: %int_2147483648: Core.IntLiteral = int_value 2147483648 [concrete] // CHECK:STDOUT: %Negate.type: type = facet_type <@Negate> [concrete] -// CHECK:STDOUT: %Op.type.e42: type = fn_type @Op.2 [concrete] +// CHECK:STDOUT: %Negate.Op.type: type = fn_type @Negate.Op [concrete] // CHECK:STDOUT: %Negate.impl_witness.973: = impl_witness imports.%Negate.impl_witness_table.b22 [concrete] // CHECK:STDOUT: %Negate.facet: %Negate.type = facet_value Core.IntLiteral, (%Negate.impl_witness.973) [concrete] -// CHECK:STDOUT: %.d3d: type = fn_type_with_self_type %Op.type.e42, %Negate.facet [concrete] -// CHECK:STDOUT: %Op.type.18a: type = fn_type @Op.1 [concrete] -// CHECK:STDOUT: %Op.99f: %Op.type.18a = struct_value () [concrete] -// CHECK:STDOUT: %Op.bound: = bound_method %int_2147483648, %Op.99f [concrete] +// CHECK:STDOUT: %.d3d: type = fn_type_with_self_type %Negate.Op.type, %Negate.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.type: type = fn_type @Core.IntLiteral.as.Negate.impl.Op [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op: %Core.IntLiteral.as.Negate.impl.Op.type = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.bound: = bound_method %int_2147483648, %Core.IntLiteral.as.Negate.impl.Op [concrete] // CHECK:STDOUT: %int_-2147483648.3b9: Core.IntLiteral = int_value -2147483648 [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_-2147483648.3b9, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_-2147483648.3b9, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_-2147483648.3b9, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_-2147483648.3b9, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_-2147483648.95c: %i32 = int_value -2147483648 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -503,10 +503,10 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import_ref.abd = import_ref Core//prelude/parts/int_literal, loc13_50, unloaded -// CHECK:STDOUT: %Core.import_ref.5e6: %Op.type.18a = import_ref Core//prelude/parts/int_literal, loc14_31, loaded [concrete = constants.%Op.99f] -// CHECK:STDOUT: %Negate.impl_witness_table.b22 = impl_witness_table (%Core.import_ref.abd, %Core.import_ref.5e6), @Negate.impl.0ef [concrete] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.5e6: %Core.IntLiteral.as.Negate.impl.Op.type = import_ref Core//prelude/parts/int_literal, loc14_31, loaded [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op] +// CHECK:STDOUT: %Negate.impl_witness_table.b22 = impl_witness_table (%Core.import_ref.abd, %Core.import_ref.5e6), @Core.IntLiteral.as.Negate.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { @@ -514,18 +514,18 @@ fn F() { // CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.type = name_ref foo, imports.%foo.decl [concrete = constants.%foo] // CHECK:STDOUT: %int_2147483648: Core.IntLiteral = int_value 2147483648 [concrete = constants.%int_2147483648] -// CHECK:STDOUT: %impl.elem1: %.d3d = impl_witness_access constants.%Negate.impl_witness.973, element1 [concrete = constants.%Op.99f] -// CHECK:STDOUT: %bound_method.loc8_11.1: = bound_method %int_2147483648, %impl.elem1 [concrete = constants.%Op.bound] -// CHECK:STDOUT: %int.snegate: init Core.IntLiteral = call %bound_method.loc8_11.1(%int_2147483648) [concrete = constants.%int_-2147483648.3b9] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc8_11.2: = bound_method %int.snegate, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc8_11.3: = bound_method %int.snegate, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %.loc8_11.1: Core.IntLiteral = value_of_initializer %int.snegate [concrete = constants.%int_-2147483648.3b9] -// CHECK:STDOUT: %.loc8_11.2: Core.IntLiteral = converted %int.snegate, %.loc8_11.1 [concrete = constants.%int_-2147483648.3b9] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc8_11.3(%.loc8_11.2) [concrete = constants.%int_-2147483648.95c] -// CHECK:STDOUT: %.loc8_11.3: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_-2147483648.95c] -// CHECK:STDOUT: %.loc8_11.4: %i32 = converted %int.snegate, %.loc8_11.3 [concrete = constants.%int_-2147483648.95c] +// CHECK:STDOUT: %impl.elem1: %.d3d = impl_witness_access constants.%Negate.impl_witness.973, element1 [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op] +// CHECK:STDOUT: %bound_method.loc8_11.1: = bound_method %int_2147483648, %impl.elem1 [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op.bound] +// CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.call: init Core.IntLiteral = call %bound_method.loc8_11.1(%int_2147483648) [concrete = constants.%int_-2147483648.3b9] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc8_11.2: = bound_method %Core.IntLiteral.as.Negate.impl.Op.call, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc8_11.3: = bound_method %Core.IntLiteral.as.Negate.impl.Op.call, %specific_fn [concrete = constants.%bound_method] +// CHECK:STDOUT: %.loc8_11.1: Core.IntLiteral = value_of_initializer %Core.IntLiteral.as.Negate.impl.Op.call [concrete = constants.%int_-2147483648.3b9] +// CHECK:STDOUT: %.loc8_11.2: Core.IntLiteral = converted %Core.IntLiteral.as.Negate.impl.Op.call, %.loc8_11.1 [concrete = constants.%int_-2147483648.3b9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc8_11.3(%.loc8_11.2) [concrete = constants.%int_-2147483648.95c] +// CHECK:STDOUT: %.loc8_11.3: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_-2147483648.95c] +// CHECK:STDOUT: %.loc8_11.4: %i32 = converted %Core.IntLiteral.as.Negate.impl.Op.call, %.loc8_11.3 [concrete = constants.%int_-2147483648.95c] // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref(%.loc8_11.4) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -540,18 +540,18 @@ fn F() { // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -565,8 +565,8 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { @@ -574,12 +574,12 @@ fn F() { // CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.type = name_ref foo, imports.%foo.decl [concrete = constants.%foo] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc8_11.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc8_11.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc8_11.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc8_11.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc8_11.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc8_11.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc8_11.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc8_11.2: %i32 = converted %int_1, %.loc8_11.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref(%.loc8_11.2) // CHECK:STDOUT: @@ -595,18 +595,18 @@ fn F() { // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -620,8 +620,8 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { @@ -629,12 +629,12 @@ fn F() { // CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.type = name_ref foo, imports.%foo.decl [concrete = constants.%foo] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc8_11.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc8_11.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc8_11.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc8_11.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc8_11.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc8_11.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc8_11.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc8_11.2: %i32 = converted %int_1, %.loc8_11.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref(%.loc8_11.2) // CHECK:STDOUT: @@ -650,18 +650,18 @@ fn F() { // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -675,8 +675,8 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { @@ -684,12 +684,12 @@ fn F() { // CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.type = name_ref foo, imports.%foo.decl [concrete = constants.%foo] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc8_11.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc8_11.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc8_11.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc8_11.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc8_11.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc8_11.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc8_11.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc8_11.2: %i32 = converted %int_1, %.loc8_11.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref(%.loc8_11.2) // CHECK:STDOUT: @@ -706,21 +706,21 @@ fn F() { // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -734,8 +734,8 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { @@ -744,19 +744,19 @@ fn F() { // CHECK:STDOUT: %foo.ref: %foo.type = name_ref foo, imports.%foo.decl [concrete = constants.%foo] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %impl.elem0.loc8_11: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc8_11.1: = bound_method %int_1, %impl.elem0.loc8_11 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc8_11: = specific_function %impl.elem0.loc8_11, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc8_11: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc8_11.1: = bound_method %int_1, %impl.elem0.loc8_11 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc8_11: = specific_function %impl.elem0.loc8_11, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc8_11.2: = bound_method %int_1, %specific_fn.loc8_11 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc8_11: init %i32 = call %bound_method.loc8_11.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc8_11.1: %i32 = value_of_initializer %int.convert_checked.loc8_11 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc8_11: init %i32 = call %bound_method.loc8_11.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc8_11.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc8_11 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc8_11.2: %i32 = converted %int_1, %.loc8_11.1 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %impl.elem0.loc8_14: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc8_14.1: = bound_method %int_2, %impl.elem0.loc8_14 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc8_14: = specific_function %impl.elem0.loc8_14, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc8_14: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc8_14.1: = bound_method %int_2, %impl.elem0.loc8_14 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc8_14: = specific_function %impl.elem0.loc8_14, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc8_14.2: = bound_method %int_2, %specific_fn.loc8_14 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc8_14: init %i32 = call %bound_method.loc8_14.2(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc8_14.1: %i32 = value_of_initializer %int.convert_checked.loc8_14 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc8_14: init %i32 = call %bound_method.loc8_14.2(%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc8_14.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc8_14 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc8_14.2: %i32 = converted %int_2, %.loc8_14.1 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref(%.loc8_11.2, %.loc8_14.2) // CHECK:STDOUT: @@ -773,31 +773,31 @@ fn F() { // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %foo2.type: type = fn_type @foo2 [concrete] // CHECK:STDOUT: %foo2: %foo2.type = struct_value () [concrete] // CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [concrete] // CHECK:STDOUT: %int_4.0c1: Core.IntLiteral = int_value 4 [concrete] -// CHECK:STDOUT: %Convert.bound.b30: = bound_method %int_3.1ba, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.047: = bound_method %int_3.1ba, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.b30: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.047: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_3.822: %i32 = int_value 3 [concrete] -// CHECK:STDOUT: %Convert.bound.ac3: = bound_method %int_4.0c1, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.1da: = bound_method %int_4.0c1, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ac3: = bound_method %int_4.0c1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.1da: = bound_method %int_4.0c1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_4.940: %i32 = int_value 4 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -812,8 +812,8 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %foo2.decl: %foo2.type = fn_decl @foo2 [concrete = constants.%foo2] { // CHECK:STDOUT: // CHECK:STDOUT: } { @@ -827,38 +827,38 @@ fn F() { // CHECK:STDOUT: %foo1.ref: %foo1.type = name_ref foo1, imports.%foo1.decl [concrete = constants.%foo1] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %impl.elem0.loc8_12: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc8_12.1: = bound_method %int_1, %impl.elem0.loc8_12 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc8_12: = specific_function %impl.elem0.loc8_12, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc8_12: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc8_12.1: = bound_method %int_1, %impl.elem0.loc8_12 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc8_12: = specific_function %impl.elem0.loc8_12, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc8_12.2: = bound_method %int_1, %specific_fn.loc8_12 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc8_12: init %i32 = call %bound_method.loc8_12.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc8_12.1: %i32 = value_of_initializer %int.convert_checked.loc8_12 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc8_12: init %i32 = call %bound_method.loc8_12.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc8_12.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc8_12 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc8_12.2: %i32 = converted %int_1, %.loc8_12.1 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %impl.elem0.loc8_15: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc8_15.1: = bound_method %int_2, %impl.elem0.loc8_15 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc8_15: = specific_function %impl.elem0.loc8_15, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc8_15: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc8_15.1: = bound_method %int_2, %impl.elem0.loc8_15 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc8_15: = specific_function %impl.elem0.loc8_15, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc8_15.2: = bound_method %int_2, %specific_fn.loc8_15 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc8_15: init %i32 = call %bound_method.loc8_15.2(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc8_15.1: %i32 = value_of_initializer %int.convert_checked.loc8_15 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc8_15: init %i32 = call %bound_method.loc8_15.2(%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc8_15.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc8_15 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc8_15.2: %i32 = converted %int_2, %.loc8_15.1 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %foo1.call: init %empty_tuple.type = call %foo1.ref(%.loc8_12.2, %.loc8_15.2) // CHECK:STDOUT: %Cpp.ref.loc9: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo2.ref: %foo2.type = name_ref foo2, imports.%foo2.decl [concrete = constants.%foo2] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete = constants.%int_4.0c1] -// CHECK:STDOUT: %impl.elem0.loc9_12: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc9_12.1: = bound_method %int_3, %impl.elem0.loc9_12 [concrete = constants.%Convert.bound.b30] -// CHECK:STDOUT: %specific_fn.loc9_12: = specific_function %impl.elem0.loc9_12, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc9_12: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc9_12.1: = bound_method %int_3, %impl.elem0.loc9_12 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.b30] +// CHECK:STDOUT: %specific_fn.loc9_12: = specific_function %impl.elem0.loc9_12, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc9_12.2: = bound_method %int_3, %specific_fn.loc9_12 [concrete = constants.%bound_method.047] -// CHECK:STDOUT: %int.convert_checked.loc9_12: init %i32 = call %bound_method.loc9_12.2(%int_3) [concrete = constants.%int_3.822] -// CHECK:STDOUT: %.loc9_12.1: %i32 = value_of_initializer %int.convert_checked.loc9_12 [concrete = constants.%int_3.822] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9_12: init %i32 = call %bound_method.loc9_12.2(%int_3) [concrete = constants.%int_3.822] +// CHECK:STDOUT: %.loc9_12.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9_12 [concrete = constants.%int_3.822] // CHECK:STDOUT: %.loc9_12.2: %i32 = converted %int_3, %.loc9_12.1 [concrete = constants.%int_3.822] -// CHECK:STDOUT: %impl.elem0.loc9_15: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc9_15.1: = bound_method %int_4, %impl.elem0.loc9_15 [concrete = constants.%Convert.bound.ac3] -// CHECK:STDOUT: %specific_fn.loc9_15: = specific_function %impl.elem0.loc9_15, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc9_15: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc9_15.1: = bound_method %int_4, %impl.elem0.loc9_15 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ac3] +// CHECK:STDOUT: %specific_fn.loc9_15: = specific_function %impl.elem0.loc9_15, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc9_15.2: = bound_method %int_4, %specific_fn.loc9_15 [concrete = constants.%bound_method.1da] -// CHECK:STDOUT: %int.convert_checked.loc9_15: init %i32 = call %bound_method.loc9_15.2(%int_4) [concrete = constants.%int_4.940] -// CHECK:STDOUT: %.loc9_15.1: %i32 = value_of_initializer %int.convert_checked.loc9_15 [concrete = constants.%int_4.940] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9_15: init %i32 = call %bound_method.loc9_15.2(%int_4) [concrete = constants.%int_4.940] +// CHECK:STDOUT: %.loc9_15.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9_15 [concrete = constants.%int_4.940] // CHECK:STDOUT: %.loc9_15.2: %i32 = converted %int_4, %.loc9_15.1 [concrete = constants.%int_4.940] // CHECK:STDOUT: %foo2.call: init %empty_tuple.type = call %foo2.ref(%.loc9_12.2, %.loc9_15.2) // CHECK:STDOUT: @@ -874,18 +874,18 @@ fn F() { // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -899,8 +899,8 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { @@ -908,12 +908,12 @@ fn F() { // CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.type = name_ref foo, imports.%foo.decl [concrete = constants.%foo] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc8_11.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc8_11.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc8_11.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc8_11.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc8_11.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc8_11.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc8_11.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc8_11.2: %i32 = converted %int_1, %.loc8_11.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref(%.loc8_11.2) // CHECK:STDOUT: @@ -955,18 +955,18 @@ fn F() { // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -980,8 +980,8 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { @@ -989,12 +989,12 @@ fn F() { // CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.type = name_ref foo, imports.%foo.decl [concrete = constants.%foo] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc8_11.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc8_11.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc8_11.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc8_11.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc8_11.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc8_11.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc8_11.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc8_11.2: %i32 = converted %int_1, %.loc8_11.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref(%.loc8_11.2) // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interop/cpp/function/class.carbon b/toolchain/check/testdata/interop/cpp/function/class.carbon index f32f3c5dd91e..bb4302e017d4 100644 --- a/toolchain/check/testdata/interop/cpp/function/class.carbon +++ b/toolchain/check/testdata/interop/cpp/function/class.carbon @@ -435,8 +435,8 @@ fn F() { // CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.1b3: type = fn_type @Op.1, @Destroy.impl(%C) [concrete] -// CHECK:STDOUT: %Op.21b: %Op.type.1b3 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.1b3: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.21b: %T.as.Destroy.impl.Op.type.1b3 = struct_value () [concrete] // CHECK:STDOUT: %ptr.d9e: type = ptr_type %C [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -464,11 +464,11 @@ fn F() { // CHECK:STDOUT: %.loc8_12.5: ref %C = converted %.loc8_12.1, %.loc8_12.4 // CHECK:STDOUT: %.loc8_12.6: %C = bind_value %.loc8_12.5 // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref(%.loc8_12.6) -// CHECK:STDOUT: %Op.bound: = bound_method %.loc8_12.2, constants.%Op.21b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_12.2, constants.%T.as.Destroy.impl.Op.21b // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc8_12.2, %Op.specific_fn +// CHECK:STDOUT: %bound_method: = bound_method %.loc8_12.2, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.d9e = addr_of %.loc8_12.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -481,8 +481,8 @@ fn F() { // CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.1b3: type = fn_type @Op.1, @Destroy.impl(%C) [concrete] -// CHECK:STDOUT: %Op.21b: %Op.type.1b3 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.1b3: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.21b: %T.as.Destroy.impl.Op.type.1b3 = struct_value () [concrete] // CHECK:STDOUT: %ptr.d9e: type = ptr_type %C [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -510,11 +510,11 @@ fn F() { // CHECK:STDOUT: %.loc8_12.5: ref %C = converted %.loc8_12.1, %.loc8_12.4 // CHECK:STDOUT: %.loc8_12.6: %C = bind_value %.loc8_12.5 // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref(%.loc8_12.6) -// CHECK:STDOUT: %Op.bound: = bound_method %.loc8_12.2, constants.%Op.21b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_12.2, constants.%T.as.Destroy.impl.Op.21b // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc8_12.2, %Op.specific_fn +// CHECK:STDOUT: %bound_method: = bound_method %.loc8_12.2, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.d9e = addr_of %.loc8_12.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -527,8 +527,8 @@ fn F() { // CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.1b3: type = fn_type @Op.1, @Destroy.impl(%C) [concrete] -// CHECK:STDOUT: %Op.21b: %Op.type.1b3 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.1b3: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.21b: %T.as.Destroy.impl.Op.type.1b3 = struct_value () [concrete] // CHECK:STDOUT: %ptr.d9e: type = ptr_type %C [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -556,11 +556,11 @@ fn F() { // CHECK:STDOUT: %.loc8_12.5: ref %C = converted %.loc8_12.1, %.loc8_12.4 // CHECK:STDOUT: %.loc8_12.6: %C = bind_value %.loc8_12.5 // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref(%.loc8_12.6) -// CHECK:STDOUT: %Op.bound: = bound_method %.loc8_12.2, constants.%Op.21b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_12.2, constants.%T.as.Destroy.impl.Op.21b // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc8_12.2, %Op.specific_fn +// CHECK:STDOUT: %bound_method: = bound_method %.loc8_12.2, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.d9e = addr_of %.loc8_12.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -574,8 +574,8 @@ fn F() { // CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.9ae: type = fn_type @Op.1, @Destroy.impl(%C) [concrete] -// CHECK:STDOUT: %Op.dbb: %Op.type.9ae = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.9ae: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.dbb: %T.as.Destroy.impl.Op.type.9ae = struct_value () [concrete] // CHECK:STDOUT: %ptr.838: type = ptr_type %C [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -620,16 +620,16 @@ fn F() { // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%C.decl [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %C = bind_name x, %x.var -// CHECK:STDOUT: %Op.bound.loc10: = bound_method %x.var, constants.%Op.dbb +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10: = bound_method %x.var, constants.%T.as.Destroy.impl.Op.dbb // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc10: = bound_method %x.var, %Op.specific_fn.1 +// CHECK:STDOUT: %bound_method.loc10: = bound_method %x.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc10: %ptr.838 = addr_of %x.var -// CHECK:STDOUT: %no_op.loc10: init %empty_tuple.type = call %bound_method.loc10(%addr.loc10) -// CHECK:STDOUT: %Op.bound.loc8: = bound_method %.loc8_12.2, constants.%Op.dbb +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10: init %empty_tuple.type = call %bound_method.loc10(%addr.loc10) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8: = bound_method %.loc8_12.2, constants.%T.as.Destroy.impl.Op.dbb // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc8: = bound_method %.loc8_12.2, %Op.specific_fn.2 +// CHECK:STDOUT: %bound_method.loc8: = bound_method %.loc8_12.2, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc8: %ptr.838 = addr_of %.loc8_12.2 -// CHECK:STDOUT: %no_op.loc8: init %empty_tuple.type = call %bound_method.loc8(%addr.loc8) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8: init %empty_tuple.type = call %bound_method.loc8(%addr.loc8) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -642,8 +642,8 @@ fn F() { // CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.b28: type = fn_type @Op.1, @Destroy.impl(%C) [concrete] -// CHECK:STDOUT: %Op.f48: %Op.type.b28 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.b28: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.f48: %T.as.Destroy.impl.Op.type.b28 = struct_value () [concrete] // CHECK:STDOUT: %ptr.c0c: type = ptr_type %C [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -676,11 +676,11 @@ fn F() { // CHECK:STDOUT: %.loc8_15.5: ref %C = converted %.loc8_15.1, %.loc8_15.4 // CHECK:STDOUT: %.loc8_15.6: %C = bind_value %.loc8_15.5 // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref(%.loc8_15.6) -// CHECK:STDOUT: %Op.bound: = bound_method %.loc8_15.2, constants.%Op.f48 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_15.2, constants.%T.as.Destroy.impl.Op.f48 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc8_15.2, %Op.specific_fn +// CHECK:STDOUT: %bound_method: = bound_method %.loc8_15.2, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.c0c = addr_of %.loc8_15.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -695,11 +695,11 @@ fn F() { // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.cff: type = pattern_type %O [concrete] -// CHECK:STDOUT: %Op.type.1b8: type = fn_type @Op.1, @Destroy.impl(%O) [concrete] -// CHECK:STDOUT: %Op.2df: %Op.type.1b8 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.1b8: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%O) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.2df: %T.as.Destroy.impl.Op.type.1b8 = struct_value () [concrete] // CHECK:STDOUT: %ptr.820: type = ptr_type %O [concrete] -// CHECK:STDOUT: %Op.type.ac8: type = fn_type @Op.1, @Destroy.impl(%C) [concrete] -// CHECK:STDOUT: %Op.362: %Op.type.ac8 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.ac8: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.362: %T.as.Destroy.impl.Op.type.ac8 = struct_value () [concrete] // CHECK:STDOUT: %ptr.de2: type = ptr_type %C [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -739,16 +739,16 @@ fn F() { // CHECK:STDOUT: %O.ref: type = name_ref O, imports.%O.decl [concrete = constants.%O] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %O = bind_name x, %x.var -// CHECK:STDOUT: %Op.bound.loc9: = bound_method %x.var, constants.%Op.2df +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc9: = bound_method %x.var, constants.%T.as.Destroy.impl.Op.2df // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc9: = bound_method %x.var, %Op.specific_fn.1 +// CHECK:STDOUT: %bound_method.loc9: = bound_method %x.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc9: %ptr.820 = addr_of %x.var -// CHECK:STDOUT: %no_op.loc9: init %empty_tuple.type = call %bound_method.loc9(%addr.loc9) -// CHECK:STDOUT: %Op.bound.loc8: = bound_method %.loc8_12.2, constants.%Op.362 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc9: init %empty_tuple.type = call %bound_method.loc9(%addr.loc9) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8: = bound_method %.loc8_12.2, constants.%T.as.Destroy.impl.Op.362 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc8: = bound_method %.loc8_12.2, %Op.specific_fn.2 +// CHECK:STDOUT: %bound_method.loc8: = bound_method %.loc8_12.2, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc8: %ptr.de2 = addr_of %.loc8_12.2 -// CHECK:STDOUT: %no_op.loc8: init %empty_tuple.type = call %bound_method.loc8(%addr.loc8) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8: init %empty_tuple.type = call %bound_method.loc8(%addr.loc8) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -758,13 +758,13 @@ fn F() { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %bar.type: type = fn_type @bar [concrete] -// CHECK:STDOUT: %bar: %bar.type = struct_value () [concrete] +// CHECK:STDOUT: %C.bar.type: type = fn_type @C.bar [concrete] +// CHECK:STDOUT: %C.bar: %C.bar.type = struct_value () [concrete] // CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.1b3: type = fn_type @Op.1, @Destroy.impl(%C) [concrete] -// CHECK:STDOUT: %Op.21b: %Op.type.1b3 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.1b3: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.21b: %T.as.Destroy.impl.Op.type.1b3 = struct_value () [concrete] // CHECK:STDOUT: %ptr.d9e: type = ptr_type %C [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -775,7 +775,7 @@ fn F() { // CHECK:STDOUT: import Cpp//... // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} -// CHECK:STDOUT: %bar.decl: %bar.type = fn_decl @bar [concrete = constants.%bar] {} {} +// CHECK:STDOUT: %C.bar.decl: %C.bar.type = fn_decl @C.bar [concrete = constants.%C.bar] {} {} // CHECK:STDOUT: %foo.decl: %foo.type = fn_decl @foo [concrete = constants.%foo] { // CHECK:STDOUT: // CHECK:STDOUT: } { @@ -788,8 +788,8 @@ fn F() { // CHECK:STDOUT: %Cpp.ref.loc8: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%C.decl [concrete = constants.%C] -// CHECK:STDOUT: %bar.ref: %bar.type = name_ref bar, imports.%bar.decl [concrete = constants.%bar] -// CHECK:STDOUT: %bar.call: init %empty_tuple.type = call %bar.ref() +// CHECK:STDOUT: %bar.ref: %C.bar.type = name_ref bar, imports.%C.bar.decl [concrete = constants.%C.bar] +// CHECK:STDOUT: %C.bar.call: init %empty_tuple.type = call %bar.ref() // CHECK:STDOUT: %Cpp.ref.loc9: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.type = name_ref foo, imports.%foo.decl [concrete = constants.%foo] // CHECK:STDOUT: %.loc9_12.1: %empty_struct_type = struct_literal () @@ -799,11 +799,11 @@ fn F() { // CHECK:STDOUT: %.loc9_12.5: ref %C = converted %.loc9_12.1, %.loc9_12.4 // CHECK:STDOUT: %.loc9_12.6: %C = bind_value %.loc9_12.5 // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref(%.loc9_12.6) -// CHECK:STDOUT: %Op.bound: = bound_method %.loc9_12.2, constants.%Op.21b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc9_12.2, constants.%T.as.Destroy.impl.Op.21b // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc9_12.2, %Op.specific_fn +// CHECK:STDOUT: %bound_method: = bound_method %.loc9_12.2, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.d9e = addr_of %.loc9_12.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -816,10 +816,10 @@ fn F() { // CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] -// CHECK:STDOUT: %bar.type: type = fn_type @bar [concrete] -// CHECK:STDOUT: %bar: %bar.type = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.1b3: type = fn_type @Op.1, @Destroy.impl(%C) [concrete] -// CHECK:STDOUT: %Op.21b: %Op.type.1b3 = struct_value () [concrete] +// CHECK:STDOUT: %C.bar.type: type = fn_type @C.bar [concrete] +// CHECK:STDOUT: %C.bar: %C.bar.type = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.1b3: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.21b: %T.as.Destroy.impl.Op.type.1b3 = struct_value () [concrete] // CHECK:STDOUT: %ptr.d9e: type = ptr_type %C [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -835,7 +835,7 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: // CHECK:STDOUT: } -// CHECK:STDOUT: %bar.decl: %bar.type = fn_decl @bar [concrete = constants.%bar] {} {} +// CHECK:STDOUT: %C.bar.decl: %C.bar.type = fn_decl @C.bar [concrete = constants.%C.bar] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { @@ -852,13 +852,13 @@ fn F() { // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref(%.loc8_12.6) // CHECK:STDOUT: %Cpp.ref.loc9: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%C.decl [concrete = constants.%C] -// CHECK:STDOUT: %bar.ref: %bar.type = name_ref bar, imports.%bar.decl [concrete = constants.%bar] -// CHECK:STDOUT: %bar.call: init %empty_tuple.type = call %bar.ref() -// CHECK:STDOUT: %Op.bound: = bound_method %.loc8_12.2, constants.%Op.21b +// CHECK:STDOUT: %bar.ref: %C.bar.type = name_ref bar, imports.%C.bar.decl [concrete = constants.%C.bar] +// CHECK:STDOUT: %C.bar.call: init %empty_tuple.type = call %bar.ref() +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_12.2, constants.%T.as.Destroy.impl.Op.21b // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc8_12.2, %Op.specific_fn +// CHECK:STDOUT: %bound_method: = bound_method %.loc8_12.2, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.d9e = addr_of %.loc8_12.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -932,8 +932,8 @@ fn F() { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.1b3: type = fn_type @Op.1, @Destroy.impl(%C) [concrete] -// CHECK:STDOUT: %Op.21b: %Op.type.1b3 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.1b3: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.21b: %T.as.Destroy.impl.Op.type.1b3 = struct_value () [concrete] // CHECK:STDOUT: %ptr.d9e: type = ptr_type %C [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -957,11 +957,11 @@ fn F() { // CHECK:STDOUT: %.loc8_11.1: ref %C = temporary_storage // CHECK:STDOUT: %foo.call: init %C = call %foo.ref() to %.loc8_11.1 // CHECK:STDOUT: %.loc8_11.2: ref %C = temporary %.loc8_11.1, %foo.call -// CHECK:STDOUT: %Op.bound: = bound_method %.loc8_11.1, constants.%Op.21b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_11.1, constants.%T.as.Destroy.impl.Op.21b // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc8_11.1, %Op.specific_fn +// CHECK:STDOUT: %bound_method: = bound_method %.loc8_11.1, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.d9e = addr_of %.loc8_11.1 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interop/cpp/function/full_semir.carbon b/toolchain/check/testdata/interop/cpp/function/full_semir.carbon index 8572b2c08e16..6f0b8887f679 100644 --- a/toolchain/check/testdata/interop/cpp/function/full_semir.carbon +++ b/toolchain/check/testdata/interop/cpp/function/full_semir.carbon @@ -82,18 +82,18 @@ fn F() { // CHECK:STDOUT: %As.type.90f: type = generic_interface_type @As [concrete] // CHECK:STDOUT: %As.generic: %As.type.90f = struct_value () [concrete] // CHECK:STDOUT: %As.type.a96: type = facet_type <@As, @As(%i16)> [concrete] -// CHECK:STDOUT: %Convert.type.be5: type = fn_type @Convert.2, @As(%i16) [concrete] +// CHECK:STDOUT: %As.Convert.type.be5: type = fn_type @As.Convert, @As(%i16) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.062: type = fn_type @Convert.1, @As.impl.686(%To) [symbolic] -// CHECK:STDOUT: %Convert.527: %Convert.type.062 = struct_value () [symbolic] -// CHECK:STDOUT: %As.impl_witness.0ef: = impl_witness imports.%As.impl_witness_table.eb4, @As.impl.686(%int_16) [concrete] -// CHECK:STDOUT: %Convert.type.172: type = fn_type @Convert.1, @As.impl.686(%int_16) [concrete] -// CHECK:STDOUT: %Convert.489: %Convert.type.172 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.062: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.527: %Core.IntLiteral.as.As.impl.Convert.type.062 = struct_value () [symbolic] +// CHECK:STDOUT: %As.impl_witness.0ef: = impl_witness imports.%As.impl_witness_table.eb4, @Core.IntLiteral.as.As.impl(%int_16) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.172: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%int_16) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.489: %Core.IntLiteral.as.As.impl.Convert.type.172 = struct_value () [concrete] // CHECK:STDOUT: %As.facet: %As.type.a96 = facet_value Core.IntLiteral, (%As.impl_witness.0ef) [concrete] -// CHECK:STDOUT: %.91d: type = fn_type_with_self_type %Convert.type.be5, %As.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.489 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.489, @Convert.1(%int_16) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.91d: type = fn_type_with_self_type %As.Convert.type.be5, %As.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert.489 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.As.impl.Convert.489, @Core.IntLiteral.as.As.impl.Convert(%int_16) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.f90: %i16 = int_value 1 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -121,8 +121,8 @@ fn F() { // CHECK:STDOUT: %a: %i16 = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: %Core.As: %As.type.90f = import_ref Core//prelude/parts/as, As, loaded [concrete = constants.%As.generic] -// CHECK:STDOUT: %Core.import_ref.78a: @As.impl.686.%Convert.type (%Convert.type.062) = import_ref Core//prelude/parts/int, loc25_39, loaded [symbolic = @As.impl.686.%Convert (constants.%Convert.527)] -// CHECK:STDOUT: %As.impl_witness_table.eb4 = impl_witness_table (%Core.import_ref.78a), @As.impl.686 [concrete] +// CHECK:STDOUT: %Core.import_ref.78a: @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert.type (%Core.IntLiteral.as.As.impl.Convert.type.062) = import_ref Core//prelude/parts/int, loc25_39, loaded [symbolic = @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert (constants.%Core.IntLiteral.as.As.impl.Convert.527)] +// CHECK:STDOUT: %As.impl_witness_table.eb4 = impl_witness_table (%Core.import_ref.78a), @Core.IntLiteral.as.As.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -145,12 +145,12 @@ fn F() { // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_16: Core.IntLiteral = int_value 16 [concrete = constants.%int_16] // CHECK:STDOUT: %i16: type = class_type @Int, @Int(constants.%int_16) [concrete = constants.%i16] -// CHECK:STDOUT: %impl.elem0: %.91d = impl_witness_access constants.%As.impl_witness.0ef, element0 [concrete = constants.%Convert.489] -// CHECK:STDOUT: %bound_method.loc7_13.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_16) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.91d = impl_witness_access constants.%As.impl_witness.0ef, element0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.489] +// CHECK:STDOUT: %bound_method.loc7_13.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.As.impl.Convert(constants.%int_16) [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc7_13.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i16 = call %bound_method.loc7_13.2(%int_1) [concrete = constants.%int_1.f90] -// CHECK:STDOUT: %.loc7_13.1: %i16 = value_of_initializer %int.convert_checked [concrete = constants.%int_1.f90] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.call: init %i16 = call %bound_method.loc7_13.2(%int_1) [concrete = constants.%int_1.f90] +// CHECK:STDOUT: %.loc7_13.1: %i16 = value_of_initializer %Core.IntLiteral.as.As.impl.Convert.call [concrete = constants.%int_1.f90] // CHECK:STDOUT: %.loc7_13.2: %i16 = converted %int_1, %.loc7_13.1 [concrete = constants.%int_1.f90] // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref(%.loc7_13.2) // CHECK:STDOUT: return @@ -175,18 +175,18 @@ fn F() { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -214,8 +214,8 @@ fn F() { // CHECK:STDOUT: %a: %i32 = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -236,12 +236,12 @@ fn F() { // CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.type = name_ref foo, imports.%foo.decl [concrete = constants.%foo] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc7_11.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc7_11.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc7_11.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc7_11.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc7_11.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc7_11.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc7_11.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc7_11.2: %i32 = converted %int_1, %.loc7_11.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref(%.loc7_11.2) // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/interop/cpp/function/in_template.carbon b/toolchain/check/testdata/interop/cpp/function/in_template.carbon index 61e58793d8fc..85888911a251 100644 --- a/toolchain/check/testdata/interop/cpp/function/in_template.carbon +++ b/toolchain/check/testdata/interop/cpp/function/in_template.carbon @@ -40,22 +40,22 @@ fn F() { // CHECK:STDOUT: %X: type = class_type @X [concrete] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %f.type: type = fn_type @f [concrete] -// CHECK:STDOUT: %f: %f.type = struct_value () [concrete] +// CHECK:STDOUT: %X.f.type: type = fn_type @X.f [concrete] +// CHECK:STDOUT: %X.f: %X.f.type = struct_value () [concrete] // CHECK:STDOUT: %int_42.20e: Core.IntLiteral = int_value 42 [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_42.20e, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_42.20e, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_42.20e, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_42.20e, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_42.c68: %i32 = int_value 42 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -65,13 +65,13 @@ fn F() { // CHECK:STDOUT: import Cpp//... // CHECK:STDOUT: } // CHECK:STDOUT: %X.decl: type = class_decl @X [concrete = constants.%X] {} {} -// CHECK:STDOUT: %f.decl: %f.type = fn_decl @f [concrete = constants.%f] { +// CHECK:STDOUT: %X.f.decl: %X.f.type = fn_decl @X.f [concrete = constants.%X.f] { // CHECK:STDOUT: // CHECK:STDOUT: } { // CHECK:STDOUT: // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { @@ -79,16 +79,16 @@ fn F() { // CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: // CHECK:STDOUT: %Y.ref: type = name_ref Y, imports.%X.decl [concrete = constants.%X] -// CHECK:STDOUT: %f.ref: %f.type = name_ref f, imports.%f.decl [concrete = constants.%f] +// CHECK:STDOUT: %f.ref: %X.f.type = name_ref f, imports.%X.f.decl [concrete = constants.%X.f] // CHECK:STDOUT: %int_42: Core.IntLiteral = int_value 42 [concrete = constants.%int_42.20e] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc8_11.1: = bound_method %int_42, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc8_11.1: = bound_method %int_42, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc8_11.2: = bound_method %int_42, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc8_11.2(%int_42) [concrete = constants.%int_42.c68] -// CHECK:STDOUT: %.loc8_11.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_42.c68] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc8_11.2(%int_42) [concrete = constants.%int_42.c68] +// CHECK:STDOUT: %.loc8_11.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_42.c68] // CHECK:STDOUT: %.loc8_11.2: %i32 = converted %int_42, %.loc8_11.1 [concrete = constants.%int_42.c68] -// CHECK:STDOUT: %f.call: init %empty_tuple.type = call %f.ref(%.loc8_11.2) +// CHECK:STDOUT: %X.f.call: init %empty_tuple.type = call %f.ref(%.loc8_11.2) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interop/cpp/function/pointer.carbon b/toolchain/check/testdata/interop/cpp/function/pointer.carbon index fd0d91e32ae7..f15699282d39 100644 --- a/toolchain/check/testdata/interop/cpp/function/pointer.carbon +++ b/toolchain/check/testdata/interop/cpp/function/pointer.carbon @@ -198,8 +198,8 @@ fn F() { // CHECK:STDOUT: %ptr.5c7: type = ptr_type %S [concrete] // CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.642: type = fn_type @Op.1, @Destroy.impl(%S) [concrete] -// CHECK:STDOUT: %Op.ab5: %Op.type.642 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.642: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%S) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ab5: %T.as.Destroy.impl.Op.type.642 = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -238,11 +238,11 @@ fn F() { // CHECK:STDOUT: %s.ref: ref %S = name_ref s, %s // CHECK:STDOUT: %addr.loc9: %ptr.5c7 = addr_of %s.ref // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref(%addr.loc9) -// CHECK:STDOUT: %Op.bound: = bound_method %s.var, constants.%Op.ab5 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %s.var, constants.%T.as.Destroy.impl.Op.ab5 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %s.var, %Op.specific_fn +// CHECK:STDOUT: %bound_method: = bound_method %s.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr.loc8: %ptr.5c7 = addr_of %s.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr.loc8) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc8) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -259,10 +259,10 @@ fn F() { // CHECK:STDOUT: %ptr.dfe: type = ptr_type %ptr.5c7 [concrete] // CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.c07: type = fn_type @Op.1, @Destroy.impl(%ptr.5c7) [concrete] -// CHECK:STDOUT: %Op.64b: %Op.type.c07 = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.642: type = fn_type @Op.1, @Destroy.impl(%S) [concrete] -// CHECK:STDOUT: %Op.ab5: %Op.type.642 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.c07: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%ptr.5c7) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.64b: %T.as.Destroy.impl.Op.type.c07 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.642: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%S) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ab5: %T.as.Destroy.impl.Op.type.642 = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -315,16 +315,16 @@ fn F() { // CHECK:STDOUT: %p.ref: ref %ptr.5c7 = name_ref p, %p // CHECK:STDOUT: %addr.loc10: %ptr.dfe = addr_of %p.ref // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref(%addr.loc10) -// CHECK:STDOUT: %Op.bound.loc9: = bound_method %p.var, constants.%Op.64b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc9: = bound_method %p.var, constants.%T.as.Destroy.impl.Op.64b // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc9: = bound_method %p.var, %Op.specific_fn.1 +// CHECK:STDOUT: %bound_method.loc9: = bound_method %p.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc9_3: %ptr.dfe = addr_of %p.var -// CHECK:STDOUT: %no_op.loc9: init %empty_tuple.type = call %bound_method.loc9(%addr.loc9_3) -// CHECK:STDOUT: %Op.bound.loc8: = bound_method %s.var, constants.%Op.ab5 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc9: init %empty_tuple.type = call %bound_method.loc9(%addr.loc9_3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8: = bound_method %s.var, constants.%T.as.Destroy.impl.Op.ab5 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc8: = bound_method %s.var, %Op.specific_fn.2 +// CHECK:STDOUT: %bound_method.loc8: = bound_method %s.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc8: %ptr.5c7 = addr_of %s.var -// CHECK:STDOUT: %no_op.loc8: init %empty_tuple.type = call %bound_method.loc8(%addr.loc8) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8: init %empty_tuple.type = call %bound_method.loc8(%addr.loc8) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -340,8 +340,8 @@ fn F() { // CHECK:STDOUT: %ptr.ff5: type = ptr_type %const [concrete] // CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.372: type = fn_type @Op.1, @Destroy.impl(%const) [concrete] -// CHECK:STDOUT: %Op.af7: %Op.type.372 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.372: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%const) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.af7: %T.as.Destroy.impl.Op.type.372 = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -380,16 +380,16 @@ fn F() { // CHECK:STDOUT: %s.ref: ref %const = name_ref s, %s // CHECK:STDOUT: %addr.loc11: %ptr.ff5 = addr_of %s.ref // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref(%addr.loc11) -// CHECK:STDOUT: %Op.bound.loc10_3.1: = bound_method %.loc10_3, constants.%Op.af7 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10_3.1: = bound_method %.loc10_3, constants.%T.as.Destroy.impl.Op.af7 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc10_3.1: = bound_method %.loc10_3, %Op.specific_fn.1 +// CHECK:STDOUT: %bound_method.loc10_3.1: = bound_method %.loc10_3, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc10_3.1: %ptr.ff5 = addr_of %.loc10_3 -// CHECK:STDOUT: %no_op.loc10_3.1: init %empty_tuple.type = call %bound_method.loc10_3.1(%addr.loc10_3.1) -// CHECK:STDOUT: %Op.bound.loc10_3.2: = bound_method %s.var, constants.%Op.af7 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10_3.1: init %empty_tuple.type = call %bound_method.loc10_3.1(%addr.loc10_3.1) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10_3.2: = bound_method %s.var, constants.%T.as.Destroy.impl.Op.af7 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc10_3.2: = bound_method %s.var, %Op.specific_fn.2 +// CHECK:STDOUT: %bound_method.loc10_3.2: = bound_method %s.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc10_3.2: %ptr.ff5 = addr_of %s.var -// CHECK:STDOUT: %no_op.loc10_3.2: init %empty_tuple.type = call %bound_method.loc10_3.2(%addr.loc10_3.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10_3.2: init %empty_tuple.type = call %bound_method.loc10_3.2(%addr.loc10_3.2) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -529,8 +529,8 @@ fn F() { // CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] // CHECK:STDOUT: %ptr.5c7: type = ptr_type %S [concrete] -// CHECK:STDOUT: %Op.type.642: type = fn_type @Op.1, @Destroy.impl(%S) [concrete] -// CHECK:STDOUT: %Op.ab5: %Op.type.642 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.642: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%S) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ab5: %T.as.Destroy.impl.Op.type.642 = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -569,11 +569,11 @@ fn F() { // CHECK:STDOUT: %s.ref: ref %S = name_ref s, %s // CHECK:STDOUT: %addr.loc16: %ptr.5c7 = addr_of %s.ref // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref() -// CHECK:STDOUT: %Op.bound: = bound_method %s.var, constants.%Op.ab5 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %s.var, constants.%T.as.Destroy.impl.Op.ab5 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %s.var, %Op.specific_fn +// CHECK:STDOUT: %bound_method: = bound_method %s.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr.loc8: %ptr.5c7 = addr_of %s.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr.loc8) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc8) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interop/cpp/function/struct.carbon b/toolchain/check/testdata/interop/cpp/function/struct.carbon index 25b925f3a053..037c5ce29b3e 100644 --- a/toolchain/check/testdata/interop/cpp/function/struct.carbon +++ b/toolchain/check/testdata/interop/cpp/function/struct.carbon @@ -434,8 +434,8 @@ fn F() { // CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] // CHECK:STDOUT: %S.val: %S = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.642: type = fn_type @Op.1, @Destroy.impl(%S) [concrete] -// CHECK:STDOUT: %Op.ab5: %Op.type.642 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.642: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%S) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ab5: %T.as.Destroy.impl.Op.type.642 = struct_value () [concrete] // CHECK:STDOUT: %ptr.5c7: type = ptr_type %S [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -463,11 +463,11 @@ fn F() { // CHECK:STDOUT: %.loc8_12.5: ref %S = converted %.loc8_12.1, %.loc8_12.4 // CHECK:STDOUT: %.loc8_12.6: %S = bind_value %.loc8_12.5 // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref(%.loc8_12.6) -// CHECK:STDOUT: %Op.bound: = bound_method %.loc8_12.2, constants.%Op.ab5 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_12.2, constants.%T.as.Destroy.impl.Op.ab5 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc8_12.2, %Op.specific_fn +// CHECK:STDOUT: %bound_method: = bound_method %.loc8_12.2, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.5c7 = addr_of %.loc8_12.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -480,8 +480,8 @@ fn F() { // CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] // CHECK:STDOUT: %S.val: %S = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.642: type = fn_type @Op.1, @Destroy.impl(%S) [concrete] -// CHECK:STDOUT: %Op.ab5: %Op.type.642 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.642: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%S) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ab5: %T.as.Destroy.impl.Op.type.642 = struct_value () [concrete] // CHECK:STDOUT: %ptr.5c7: type = ptr_type %S [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -509,11 +509,11 @@ fn F() { // CHECK:STDOUT: %.loc8_12.5: ref %S = converted %.loc8_12.1, %.loc8_12.4 // CHECK:STDOUT: %.loc8_12.6: %S = bind_value %.loc8_12.5 // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref(%.loc8_12.6) -// CHECK:STDOUT: %Op.bound: = bound_method %.loc8_12.2, constants.%Op.ab5 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_12.2, constants.%T.as.Destroy.impl.Op.ab5 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc8_12.2, %Op.specific_fn +// CHECK:STDOUT: %bound_method: = bound_method %.loc8_12.2, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.5c7 = addr_of %.loc8_12.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -526,8 +526,8 @@ fn F() { // CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] // CHECK:STDOUT: %S.val: %S = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.642: type = fn_type @Op.1, @Destroy.impl(%S) [concrete] -// CHECK:STDOUT: %Op.ab5: %Op.type.642 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.642: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%S) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ab5: %T.as.Destroy.impl.Op.type.642 = struct_value () [concrete] // CHECK:STDOUT: %ptr.5c7: type = ptr_type %S [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -555,11 +555,11 @@ fn F() { // CHECK:STDOUT: %.loc8_12.5: ref %S = converted %.loc8_12.1, %.loc8_12.4 // CHECK:STDOUT: %.loc8_12.6: %S = bind_value %.loc8_12.5 // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref(%.loc8_12.6) -// CHECK:STDOUT: %Op.bound: = bound_method %.loc8_12.2, constants.%Op.ab5 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_12.2, constants.%T.as.Destroy.impl.Op.ab5 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc8_12.2, %Op.specific_fn +// CHECK:STDOUT: %bound_method: = bound_method %.loc8_12.2, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.5c7 = addr_of %.loc8_12.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -573,8 +573,8 @@ fn F() { // CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] // CHECK:STDOUT: %S.val: %S = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.2b5: type = fn_type @Op.1, @Destroy.impl(%S) [concrete] -// CHECK:STDOUT: %Op.9b3: %Op.type.2b5 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.2b5: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%S) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.9b3: %T.as.Destroy.impl.Op.type.2b5 = struct_value () [concrete] // CHECK:STDOUT: %ptr.edf: type = ptr_type %S [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -619,16 +619,16 @@ fn F() { // CHECK:STDOUT: %S.ref: type = name_ref S, imports.%S.decl [concrete = constants.%S] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %S = bind_name x, %x.var -// CHECK:STDOUT: %Op.bound.loc10: = bound_method %x.var, constants.%Op.9b3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10: = bound_method %x.var, constants.%T.as.Destroy.impl.Op.9b3 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc10: = bound_method %x.var, %Op.specific_fn.1 +// CHECK:STDOUT: %bound_method.loc10: = bound_method %x.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc10: %ptr.edf = addr_of %x.var -// CHECK:STDOUT: %no_op.loc10: init %empty_tuple.type = call %bound_method.loc10(%addr.loc10) -// CHECK:STDOUT: %Op.bound.loc8: = bound_method %.loc8_12.2, constants.%Op.9b3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10: init %empty_tuple.type = call %bound_method.loc10(%addr.loc10) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8: = bound_method %.loc8_12.2, constants.%T.as.Destroy.impl.Op.9b3 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc8: = bound_method %.loc8_12.2, %Op.specific_fn.2 +// CHECK:STDOUT: %bound_method.loc8: = bound_method %.loc8_12.2, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc8: %ptr.edf = addr_of %.loc8_12.2 -// CHECK:STDOUT: %no_op.loc8: init %empty_tuple.type = call %bound_method.loc8(%addr.loc8) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8: init %empty_tuple.type = call %bound_method.loc8(%addr.loc8) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -641,8 +641,8 @@ fn F() { // CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] // CHECK:STDOUT: %S.val: %S = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.17f: type = fn_type @Op.1, @Destroy.impl(%S) [concrete] -// CHECK:STDOUT: %Op.463: %Op.type.17f = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.17f: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%S) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.463: %T.as.Destroy.impl.Op.type.17f = struct_value () [concrete] // CHECK:STDOUT: %ptr.887: type = ptr_type %S [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -675,11 +675,11 @@ fn F() { // CHECK:STDOUT: %.loc8_15.5: ref %S = converted %.loc8_15.1, %.loc8_15.4 // CHECK:STDOUT: %.loc8_15.6: %S = bind_value %.loc8_15.5 // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref(%.loc8_15.6) -// CHECK:STDOUT: %Op.bound: = bound_method %.loc8_15.2, constants.%Op.463 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_15.2, constants.%T.as.Destroy.impl.Op.463 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc8_15.2, %Op.specific_fn +// CHECK:STDOUT: %bound_method: = bound_method %.loc8_15.2, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.887 = addr_of %.loc8_15.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -694,11 +694,11 @@ fn F() { // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] // CHECK:STDOUT: %S.val: %S = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.cff: type = pattern_type %O [concrete] -// CHECK:STDOUT: %Op.type.1b8: type = fn_type @Op.1, @Destroy.impl(%O) [concrete] -// CHECK:STDOUT: %Op.2df: %Op.type.1b8 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.1b8: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%O) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.2df: %T.as.Destroy.impl.Op.type.1b8 = struct_value () [concrete] // CHECK:STDOUT: %ptr.820: type = ptr_type %O [concrete] -// CHECK:STDOUT: %Op.type.23f: type = fn_type @Op.1, @Destroy.impl(%S) [concrete] -// CHECK:STDOUT: %Op.952: %Op.type.23f = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.23f: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%S) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.952: %T.as.Destroy.impl.Op.type.23f = struct_value () [concrete] // CHECK:STDOUT: %ptr.149: type = ptr_type %S [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -738,16 +738,16 @@ fn F() { // CHECK:STDOUT: %O.ref: type = name_ref O, imports.%O.decl [concrete = constants.%O] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %O = bind_name x, %x.var -// CHECK:STDOUT: %Op.bound.loc9: = bound_method %x.var, constants.%Op.2df +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc9: = bound_method %x.var, constants.%T.as.Destroy.impl.Op.2df // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc9: = bound_method %x.var, %Op.specific_fn.1 +// CHECK:STDOUT: %bound_method.loc9: = bound_method %x.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc9: %ptr.820 = addr_of %x.var -// CHECK:STDOUT: %no_op.loc9: init %empty_tuple.type = call %bound_method.loc9(%addr.loc9) -// CHECK:STDOUT: %Op.bound.loc8: = bound_method %.loc8_12.2, constants.%Op.952 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc9: init %empty_tuple.type = call %bound_method.loc9(%addr.loc9) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8: = bound_method %.loc8_12.2, constants.%T.as.Destroy.impl.Op.952 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc8: = bound_method %.loc8_12.2, %Op.specific_fn.2 +// CHECK:STDOUT: %bound_method.loc8: = bound_method %.loc8_12.2, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc8: %ptr.149 = addr_of %.loc8_12.2 -// CHECK:STDOUT: %no_op.loc8: init %empty_tuple.type = call %bound_method.loc8(%addr.loc8) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8: init %empty_tuple.type = call %bound_method.loc8(%addr.loc8) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -757,13 +757,13 @@ fn F() { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %S: type = class_type @S [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %bar.type: type = fn_type @bar [concrete] -// CHECK:STDOUT: %bar: %bar.type = struct_value () [concrete] +// CHECK:STDOUT: %S.bar.type: type = fn_type @S.bar [concrete] +// CHECK:STDOUT: %S.bar: %S.bar.type = struct_value () [concrete] // CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] // CHECK:STDOUT: %S.val: %S = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.642: type = fn_type @Op.1, @Destroy.impl(%S) [concrete] -// CHECK:STDOUT: %Op.ab5: %Op.type.642 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.642: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%S) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ab5: %T.as.Destroy.impl.Op.type.642 = struct_value () [concrete] // CHECK:STDOUT: %ptr.5c7: type = ptr_type %S [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -774,7 +774,7 @@ fn F() { // CHECK:STDOUT: import Cpp//... // CHECK:STDOUT: } // CHECK:STDOUT: %S.decl: type = class_decl @S [concrete = constants.%S] {} {} -// CHECK:STDOUT: %bar.decl: %bar.type = fn_decl @bar [concrete = constants.%bar] {} {} +// CHECK:STDOUT: %S.bar.decl: %S.bar.type = fn_decl @S.bar [concrete = constants.%S.bar] {} {} // CHECK:STDOUT: %foo.decl: %foo.type = fn_decl @foo [concrete = constants.%foo] { // CHECK:STDOUT: // CHECK:STDOUT: } { @@ -787,8 +787,8 @@ fn F() { // CHECK:STDOUT: %Cpp.ref.loc8: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: // CHECK:STDOUT: %S.ref: type = name_ref S, imports.%S.decl [concrete = constants.%S] -// CHECK:STDOUT: %bar.ref: %bar.type = name_ref bar, imports.%bar.decl [concrete = constants.%bar] -// CHECK:STDOUT: %bar.call: init %empty_tuple.type = call %bar.ref() +// CHECK:STDOUT: %bar.ref: %S.bar.type = name_ref bar, imports.%S.bar.decl [concrete = constants.%S.bar] +// CHECK:STDOUT: %S.bar.call: init %empty_tuple.type = call %bar.ref() // CHECK:STDOUT: %Cpp.ref.loc9: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.type = name_ref foo, imports.%foo.decl [concrete = constants.%foo] // CHECK:STDOUT: %.loc9_12.1: %empty_struct_type = struct_literal () @@ -798,11 +798,11 @@ fn F() { // CHECK:STDOUT: %.loc9_12.5: ref %S = converted %.loc9_12.1, %.loc9_12.4 // CHECK:STDOUT: %.loc9_12.6: %S = bind_value %.loc9_12.5 // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref(%.loc9_12.6) -// CHECK:STDOUT: %Op.bound: = bound_method %.loc9_12.2, constants.%Op.ab5 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc9_12.2, constants.%T.as.Destroy.impl.Op.ab5 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc9_12.2, %Op.specific_fn +// CHECK:STDOUT: %bound_method: = bound_method %.loc9_12.2, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.5c7 = addr_of %.loc9_12.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -815,10 +815,10 @@ fn F() { // CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] // CHECK:STDOUT: %S.val: %S = struct_value () [concrete] -// CHECK:STDOUT: %bar.type: type = fn_type @bar [concrete] -// CHECK:STDOUT: %bar: %bar.type = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.642: type = fn_type @Op.1, @Destroy.impl(%S) [concrete] -// CHECK:STDOUT: %Op.ab5: %Op.type.642 = struct_value () [concrete] +// CHECK:STDOUT: %S.bar.type: type = fn_type @S.bar [concrete] +// CHECK:STDOUT: %S.bar: %S.bar.type = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.642: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%S) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ab5: %T.as.Destroy.impl.Op.type.642 = struct_value () [concrete] // CHECK:STDOUT: %ptr.5c7: type = ptr_type %S [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -834,7 +834,7 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: // CHECK:STDOUT: } -// CHECK:STDOUT: %bar.decl: %bar.type = fn_decl @bar [concrete = constants.%bar] {} {} +// CHECK:STDOUT: %S.bar.decl: %S.bar.type = fn_decl @S.bar [concrete = constants.%S.bar] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { @@ -851,13 +851,13 @@ fn F() { // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref(%.loc8_12.6) // CHECK:STDOUT: %Cpp.ref.loc9: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %S.ref: type = name_ref S, imports.%S.decl [concrete = constants.%S] -// CHECK:STDOUT: %bar.ref: %bar.type = name_ref bar, imports.%bar.decl [concrete = constants.%bar] -// CHECK:STDOUT: %bar.call: init %empty_tuple.type = call %bar.ref() -// CHECK:STDOUT: %Op.bound: = bound_method %.loc8_12.2, constants.%Op.ab5 +// CHECK:STDOUT: %bar.ref: %S.bar.type = name_ref bar, imports.%S.bar.decl [concrete = constants.%S.bar] +// CHECK:STDOUT: %S.bar.call: init %empty_tuple.type = call %bar.ref() +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_12.2, constants.%T.as.Destroy.impl.Op.ab5 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc8_12.2, %Op.specific_fn +// CHECK:STDOUT: %bound_method: = bound_method %.loc8_12.2, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.5c7 = addr_of %.loc8_12.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -931,8 +931,8 @@ fn F() { // CHECK:STDOUT: %S: type = class_type @S [concrete] // CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.642: type = fn_type @Op.1, @Destroy.impl(%S) [concrete] -// CHECK:STDOUT: %Op.ab5: %Op.type.642 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.642: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%S) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ab5: %T.as.Destroy.impl.Op.type.642 = struct_value () [concrete] // CHECK:STDOUT: %ptr.5c7: type = ptr_type %S [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -956,11 +956,11 @@ fn F() { // CHECK:STDOUT: %.loc8_11.1: ref %S = temporary_storage // CHECK:STDOUT: %foo.call: init %S = call %foo.ref() to %.loc8_11.1 // CHECK:STDOUT: %.loc8_11.2: ref %S = temporary %.loc8_11.1, %foo.call -// CHECK:STDOUT: %Op.bound: = bound_method %.loc8_11.1, constants.%Op.ab5 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_11.1, constants.%T.as.Destroy.impl.Op.ab5 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc8_11.1, %Op.specific_fn +// CHECK:STDOUT: %bound_method: = bound_method %.loc8_11.1, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.5c7 = addr_of %.loc8_11.1 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interop/cpp/function/union.carbon b/toolchain/check/testdata/interop/cpp/function/union.carbon index 8825be139850..a66ba9c7fb09 100644 --- a/toolchain/check/testdata/interop/cpp/function/union.carbon +++ b/toolchain/check/testdata/interop/cpp/function/union.carbon @@ -481,8 +481,8 @@ fn F() { // CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] // CHECK:STDOUT: %U.val: %U = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.0b7: type = fn_type @Op.1, @Destroy.impl(%U) [concrete] -// CHECK:STDOUT: %Op.2fa: %Op.type.0b7 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.0b7: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%U) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.2fa: %T.as.Destroy.impl.Op.type.0b7 = struct_value () [concrete] // CHECK:STDOUT: %ptr.86f: type = ptr_type %U [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -510,11 +510,11 @@ fn F() { // CHECK:STDOUT: %.loc8_12.5: ref %U = converted %.loc8_12.1, %.loc8_12.4 // CHECK:STDOUT: %.loc8_12.6: %U = bind_value %.loc8_12.5 // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref(%.loc8_12.6) -// CHECK:STDOUT: %Op.bound: = bound_method %.loc8_12.2, constants.%Op.2fa +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_12.2, constants.%T.as.Destroy.impl.Op.2fa // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc8_12.2, %Op.specific_fn +// CHECK:STDOUT: %bound_method: = bound_method %.loc8_12.2, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.86f = addr_of %.loc8_12.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -588,8 +588,8 @@ fn F() { // CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] // CHECK:STDOUT: %U.val: %U = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.2e1: type = fn_type @Op.1, @Destroy.impl(%U) [concrete] -// CHECK:STDOUT: %Op.d5d: %Op.type.2e1 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.2e1: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%U) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.d5d: %T.as.Destroy.impl.Op.type.2e1 = struct_value () [concrete] // CHECK:STDOUT: %ptr.87e: type = ptr_type %U [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -634,16 +634,16 @@ fn F() { // CHECK:STDOUT: %U.ref: type = name_ref U, imports.%U.decl [concrete = constants.%U] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %U = bind_name x, %x.var -// CHECK:STDOUT: %Op.bound.loc10: = bound_method %x.var, constants.%Op.d5d +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10: = bound_method %x.var, constants.%T.as.Destroy.impl.Op.d5d // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc10: = bound_method %x.var, %Op.specific_fn.1 +// CHECK:STDOUT: %bound_method.loc10: = bound_method %x.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc10: %ptr.87e = addr_of %x.var -// CHECK:STDOUT: %no_op.loc10: init %empty_tuple.type = call %bound_method.loc10(%addr.loc10) -// CHECK:STDOUT: %Op.bound.loc8: = bound_method %.loc8_12.2, constants.%Op.d5d +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10: init %empty_tuple.type = call %bound_method.loc10(%addr.loc10) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8: = bound_method %.loc8_12.2, constants.%T.as.Destroy.impl.Op.d5d // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc8: = bound_method %.loc8_12.2, %Op.specific_fn.2 +// CHECK:STDOUT: %bound_method.loc8: = bound_method %.loc8_12.2, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc8: %ptr.87e = addr_of %.loc8_12.2 -// CHECK:STDOUT: %no_op.loc8: init %empty_tuple.type = call %bound_method.loc8(%addr.loc8) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8: init %empty_tuple.type = call %bound_method.loc8(%addr.loc8) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -656,8 +656,8 @@ fn F() { // CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] // CHECK:STDOUT: %U.val: %U = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.ee1: type = fn_type @Op.1, @Destroy.impl(%U) [concrete] -// CHECK:STDOUT: %Op.28c: %Op.type.ee1 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.ee1: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%U) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.28c: %T.as.Destroy.impl.Op.type.ee1 = struct_value () [concrete] // CHECK:STDOUT: %ptr.8c1: type = ptr_type %U [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -690,11 +690,11 @@ fn F() { // CHECK:STDOUT: %.loc8_15.5: ref %U = converted %.loc8_15.1, %.loc8_15.4 // CHECK:STDOUT: %.loc8_15.6: %U = bind_value %.loc8_15.5 // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref(%.loc8_15.6) -// CHECK:STDOUT: %Op.bound: = bound_method %.loc8_15.2, constants.%Op.28c +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_15.2, constants.%T.as.Destroy.impl.Op.28c // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc8_15.2, %Op.specific_fn +// CHECK:STDOUT: %bound_method: = bound_method %.loc8_15.2, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.8c1 = addr_of %.loc8_15.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -709,11 +709,11 @@ fn F() { // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] // CHECK:STDOUT: %U.val: %U = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.cff: type = pattern_type %O [concrete] -// CHECK:STDOUT: %Op.type.1b8: type = fn_type @Op.1, @Destroy.impl(%O) [concrete] -// CHECK:STDOUT: %Op.2df: %Op.type.1b8 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.1b8: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%O) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.2df: %T.as.Destroy.impl.Op.type.1b8 = struct_value () [concrete] // CHECK:STDOUT: %ptr.820: type = ptr_type %O [concrete] -// CHECK:STDOUT: %Op.type.8f9: type = fn_type @Op.1, @Destroy.impl(%U) [concrete] -// CHECK:STDOUT: %Op.f3b: %Op.type.8f9 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.8f9: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%U) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.f3b: %T.as.Destroy.impl.Op.type.8f9 = struct_value () [concrete] // CHECK:STDOUT: %ptr.a6c: type = ptr_type %U [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -753,16 +753,16 @@ fn F() { // CHECK:STDOUT: %O.ref: type = name_ref O, imports.%O.decl [concrete = constants.%O] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %O = bind_name x, %x.var -// CHECK:STDOUT: %Op.bound.loc9: = bound_method %x.var, constants.%Op.2df +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc9: = bound_method %x.var, constants.%T.as.Destroy.impl.Op.2df // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc9: = bound_method %x.var, %Op.specific_fn.1 +// CHECK:STDOUT: %bound_method.loc9: = bound_method %x.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc9: %ptr.820 = addr_of %x.var -// CHECK:STDOUT: %no_op.loc9: init %empty_tuple.type = call %bound_method.loc9(%addr.loc9) -// CHECK:STDOUT: %Op.bound.loc8: = bound_method %.loc8_12.2, constants.%Op.f3b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc9: init %empty_tuple.type = call %bound_method.loc9(%addr.loc9) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8: = bound_method %.loc8_12.2, constants.%T.as.Destroy.impl.Op.f3b // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc8: = bound_method %.loc8_12.2, %Op.specific_fn.2 +// CHECK:STDOUT: %bound_method.loc8: = bound_method %.loc8_12.2, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc8: %ptr.a6c = addr_of %.loc8_12.2 -// CHECK:STDOUT: %no_op.loc8: init %empty_tuple.type = call %bound_method.loc8(%addr.loc8) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8: init %empty_tuple.type = call %bound_method.loc8(%addr.loc8) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -772,13 +772,13 @@ fn F() { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %U: type = class_type @U [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %bar.type: type = fn_type @bar [concrete] -// CHECK:STDOUT: %bar: %bar.type = struct_value () [concrete] +// CHECK:STDOUT: %U.bar.type: type = fn_type @U.bar [concrete] +// CHECK:STDOUT: %U.bar: %U.bar.type = struct_value () [concrete] // CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] // CHECK:STDOUT: %U.val: %U = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.0b7: type = fn_type @Op.1, @Destroy.impl(%U) [concrete] -// CHECK:STDOUT: %Op.2fa: %Op.type.0b7 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.0b7: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%U) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.2fa: %T.as.Destroy.impl.Op.type.0b7 = struct_value () [concrete] // CHECK:STDOUT: %ptr.86f: type = ptr_type %U [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -789,7 +789,7 @@ fn F() { // CHECK:STDOUT: import Cpp//... // CHECK:STDOUT: } // CHECK:STDOUT: %U.decl: type = class_decl @U [concrete = constants.%U] {} {} -// CHECK:STDOUT: %bar.decl: %bar.type = fn_decl @bar [concrete = constants.%bar] {} {} +// CHECK:STDOUT: %U.bar.decl: %U.bar.type = fn_decl @U.bar [concrete = constants.%U.bar] {} {} // CHECK:STDOUT: %foo.decl: %foo.type = fn_decl @foo [concrete = constants.%foo] { // CHECK:STDOUT: // CHECK:STDOUT: } { @@ -802,8 +802,8 @@ fn F() { // CHECK:STDOUT: %Cpp.ref.loc8: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: // CHECK:STDOUT: %U.ref: type = name_ref U, imports.%U.decl [concrete = constants.%U] -// CHECK:STDOUT: %bar.ref: %bar.type = name_ref bar, imports.%bar.decl [concrete = constants.%bar] -// CHECK:STDOUT: %bar.call: init %empty_tuple.type = call %bar.ref() +// CHECK:STDOUT: %bar.ref: %U.bar.type = name_ref bar, imports.%U.bar.decl [concrete = constants.%U.bar] +// CHECK:STDOUT: %U.bar.call: init %empty_tuple.type = call %bar.ref() // CHECK:STDOUT: %Cpp.ref.loc9: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.type = name_ref foo, imports.%foo.decl [concrete = constants.%foo] // CHECK:STDOUT: %.loc9_12.1: %empty_struct_type = struct_literal () @@ -813,11 +813,11 @@ fn F() { // CHECK:STDOUT: %.loc9_12.5: ref %U = converted %.loc9_12.1, %.loc9_12.4 // CHECK:STDOUT: %.loc9_12.6: %U = bind_value %.loc9_12.5 // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref(%.loc9_12.6) -// CHECK:STDOUT: %Op.bound: = bound_method %.loc9_12.2, constants.%Op.2fa +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc9_12.2, constants.%T.as.Destroy.impl.Op.2fa // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc9_12.2, %Op.specific_fn +// CHECK:STDOUT: %bound_method: = bound_method %.loc9_12.2, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.86f = addr_of %.loc9_12.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -830,10 +830,10 @@ fn F() { // CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] // CHECK:STDOUT: %U.val: %U = struct_value () [concrete] -// CHECK:STDOUT: %bar.type: type = fn_type @bar [concrete] -// CHECK:STDOUT: %bar: %bar.type = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.0b7: type = fn_type @Op.1, @Destroy.impl(%U) [concrete] -// CHECK:STDOUT: %Op.2fa: %Op.type.0b7 = struct_value () [concrete] +// CHECK:STDOUT: %U.bar.type: type = fn_type @U.bar [concrete] +// CHECK:STDOUT: %U.bar: %U.bar.type = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.0b7: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%U) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.2fa: %T.as.Destroy.impl.Op.type.0b7 = struct_value () [concrete] // CHECK:STDOUT: %ptr.86f: type = ptr_type %U [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -849,7 +849,7 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: // CHECK:STDOUT: } -// CHECK:STDOUT: %bar.decl: %bar.type = fn_decl @bar [concrete = constants.%bar] {} {} +// CHECK:STDOUT: %U.bar.decl: %U.bar.type = fn_decl @U.bar [concrete = constants.%U.bar] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { @@ -866,13 +866,13 @@ fn F() { // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref(%.loc8_12.6) // CHECK:STDOUT: %Cpp.ref.loc9: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %U.ref: type = name_ref U, imports.%U.decl [concrete = constants.%U] -// CHECK:STDOUT: %bar.ref: %bar.type = name_ref bar, imports.%bar.decl [concrete = constants.%bar] -// CHECK:STDOUT: %bar.call: init %empty_tuple.type = call %bar.ref() -// CHECK:STDOUT: %Op.bound: = bound_method %.loc8_12.2, constants.%Op.2fa +// CHECK:STDOUT: %bar.ref: %U.bar.type = name_ref bar, imports.%U.bar.decl [concrete = constants.%U.bar] +// CHECK:STDOUT: %U.bar.call: init %empty_tuple.type = call %bar.ref() +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_12.2, constants.%T.as.Destroy.impl.Op.2fa // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc8_12.2, %Op.specific_fn +// CHECK:STDOUT: %bound_method: = bound_method %.loc8_12.2, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.86f = addr_of %.loc8_12.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -946,8 +946,8 @@ fn F() { // CHECK:STDOUT: %U: type = class_type @U [concrete] // CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.0b7: type = fn_type @Op.1, @Destroy.impl(%U) [concrete] -// CHECK:STDOUT: %Op.2fa: %Op.type.0b7 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.0b7: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%U) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.2fa: %T.as.Destroy.impl.Op.type.0b7 = struct_value () [concrete] // CHECK:STDOUT: %ptr.86f: type = ptr_type %U [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -971,11 +971,11 @@ fn F() { // CHECK:STDOUT: %.loc8_11.1: ref %U = temporary_storage // CHECK:STDOUT: %foo.call: init %U = call %foo.ref() to %.loc8_11.1 // CHECK:STDOUT: %.loc8_11.2: ref %U = temporary %.loc8_11.1, %foo.call -// CHECK:STDOUT: %Op.bound: = bound_method %.loc8_11.1, constants.%Op.2fa +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_11.1, constants.%T.as.Destroy.impl.Op.2fa // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc8_11.1, %Op.specific_fn +// CHECK:STDOUT: %bound_method: = bound_method %.loc8_11.1, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.86f = addr_of %.loc8_11.1 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interop/cpp/namespace.carbon b/toolchain/check/testdata/interop/cpp/namespace.carbon index 273185a0e341..e328c6979f82 100644 --- a/toolchain/check/testdata/interop/cpp/namespace.carbon +++ b/toolchain/check/testdata/interop/cpp/namespace.carbon @@ -311,8 +311,8 @@ fn MyF() { // CHECK:STDOUT: %X: type = class_type @X [concrete] // CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.0e5: type = fn_type @Op.1, @Destroy.impl(%X) [concrete] -// CHECK:STDOUT: %Op.cbf: %Op.type.0e5 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.0e5: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%X) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.cbf: %T.as.Destroy.impl.Op.type.0e5 = struct_value () [concrete] // CHECK:STDOUT: %ptr.13d: type = ptr_type %X [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -336,11 +336,11 @@ fn MyF() { // CHECK:STDOUT: %.loc8_11.1: ref %X = temporary_storage // CHECK:STDOUT: %foo.call: init %X = call %foo.ref() to %.loc8_11.1 // CHECK:STDOUT: %.loc8_11.2: ref %X = temporary %.loc8_11.1, %foo.call -// CHECK:STDOUT: %Op.bound: = bound_method %.loc8_11.1, constants.%Op.cbf +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_11.1, constants.%T.as.Destroy.impl.Op.cbf // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc8_11.1, %Op.specific_fn +// CHECK:STDOUT: %bound_method: = bound_method %.loc8_11.1, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.13d = addr_of %.loc8_11.1 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interop/cpp/typedef.carbon b/toolchain/check/testdata/interop/cpp/typedef.carbon index e287fe004590..bc6b1c8766dd 100644 --- a/toolchain/check/testdata/interop/cpp/typedef.carbon +++ b/toolchain/check/testdata/interop/cpp/typedef.carbon @@ -58,36 +58,36 @@ fn H(var c: Cpp.C, var d: Cpp.D) { // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %int_42.20e: Core.IntLiteral = int_value 42 [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_42.20e, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_42.20e, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_42.20e, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_42.20e, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_42.c68: %i32 = int_value 42 [concrete] // CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] // CHECK:STDOUT: %pattern_type.fe8: type = pattern_type %ptr.235 [concrete] -// CHECK:STDOUT: %Op.type.ba2: type = fn_type @Op.1, @Destroy.impl(%ptr.235) [concrete] -// CHECK:STDOUT: %Op.649: %Op.type.ba2 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.ba2: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%ptr.235) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.649: %T.as.Destroy.impl.Op.type.ba2 = struct_value () [concrete] // CHECK:STDOUT: %ptr.5d5: type = ptr_type %ptr.235 [concrete] -// CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.1, @Destroy.impl(%i32) [concrete] -// CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a17: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.e6a: %T.as.Destroy.impl.Op.type.a17 = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Cpp: = namespace file.%Cpp.import_cpp, [concrete] { -// CHECK:STDOUT: .foo = @F.%i32.1 -// CHECK:STDOUT: .bar = @F.%i32.2 +// CHECK:STDOUT: .foo = @F.%i32.2 +// CHECK:STDOUT: .bar = @F.%i32.1 // CHECK:STDOUT: import Cpp//... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { @@ -98,17 +98,17 @@ fn H(var c: Cpp.C, var d: Cpp.D) { // CHECK:STDOUT: } // CHECK:STDOUT: %n.var: ref %i32 = var %n.var_patt // CHECK:STDOUT: %int_42: Core.IntLiteral = int_value 42 [concrete = constants.%int_42.20e] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc8_3.1: = bound_method %int_42, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc8_3.1: = bound_method %int_42, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc8_3.2: = bound_method %int_42, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc8_3.2(%int_42) [concrete = constants.%int_42.c68] -// CHECK:STDOUT: %.loc8_3: init %i32 = converted %int_42, %int.convert_checked [concrete = constants.%int_42.c68] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc8_3.2(%int_42) [concrete = constants.%int_42.c68] +// CHECK:STDOUT: %.loc8_3: init %i32 = converted %int_42, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_42.c68] // CHECK:STDOUT: assign %n.var, %.loc8_3 // CHECK:STDOUT: %.loc8_13: type = splice_block %foo.ref [concrete = constants.%i32] { // CHECK:STDOUT: %Cpp.ref.loc8: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: -// CHECK:STDOUT: %foo.ref: type = name_ref foo, %i32.1 [concrete = constants.%i32] +// CHECK:STDOUT: %foo.ref: type = name_ref foo, %i32.2 [concrete = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %n: ref %i32 = bind_name n, %n.var // CHECK:STDOUT: name_binding_decl { @@ -122,20 +122,20 @@ fn H(var c: Cpp.C, var d: Cpp.D) { // CHECK:STDOUT: %.loc10: type = splice_block %ptr [concrete = constants.%ptr.235] { // CHECK:STDOUT: %Cpp.ref.loc10: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: -// CHECK:STDOUT: %bar.ref: type = name_ref bar, %i32.2 [concrete = constants.%i32] +// CHECK:STDOUT: %bar.ref: type = name_ref bar, %i32.1 [concrete = constants.%i32] // CHECK:STDOUT: %ptr: type = ptr_type %bar.ref [concrete = constants.%ptr.235] // CHECK:STDOUT: } // CHECK:STDOUT: %p: ref %ptr.235 = bind_name p, %p.var -// CHECK:STDOUT: %Op.bound.loc10: = bound_method %p.var, constants.%Op.649 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10: = bound_method %p.var, constants.%T.as.Destroy.impl.Op.649 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc10: = bound_method %p.var, %Op.specific_fn.1 +// CHECK:STDOUT: %bound_method.loc10: = bound_method %p.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc10_3: %ptr.5d5 = addr_of %p.var -// CHECK:STDOUT: %no_op.loc10: init %empty_tuple.type = call %bound_method.loc10(%addr.loc10_3) -// CHECK:STDOUT: %Op.bound.loc8: = bound_method %n.var, constants.%Op.e6a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10: init %empty_tuple.type = call %bound_method.loc10(%addr.loc10_3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8: = bound_method %n.var, constants.%T.as.Destroy.impl.Op.e6a // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc8_3.3: = bound_method %n.var, %Op.specific_fn.2 +// CHECK:STDOUT: %bound_method.loc8_3.3: = bound_method %n.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc8: %ptr.235 = addr_of %n.var -// CHECK:STDOUT: %no_op.loc8: init %empty_tuple.type = call %bound_method.loc8_3.3(%addr.loc8) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8: init %empty_tuple.type = call %bound_method.loc8_3.3(%addr.loc8) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -146,8 +146,8 @@ fn H(var c: Cpp.C, var d: Cpp.D) { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %ptr.d9e: type = ptr_type %C [concrete] // CHECK:STDOUT: %pattern_type.a31: type = pattern_type %ptr.d9e [concrete] -// CHECK:STDOUT: %Op.type.cb8: type = fn_type @Op.1, @Destroy.impl(%ptr.d9e) [concrete] -// CHECK:STDOUT: %Op.8e3: %Op.type.cb8 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.cb8: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%ptr.d9e) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.8e3: %T.as.Destroy.impl.Op.type.cb8 = struct_value () [concrete] // CHECK:STDOUT: %ptr.01d: type = ptr_type %ptr.d9e [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -190,16 +190,16 @@ fn H(var c: Cpp.C, var d: Cpp.D) { // CHECK:STDOUT: %ptr.loc10: type = ptr_type %C.ref.loc10 [concrete = constants.%ptr.d9e] // CHECK:STDOUT: } // CHECK:STDOUT: %pc: ref %ptr.d9e = bind_name pc, %pc.var -// CHECK:STDOUT: %Op.bound.loc10: = bound_method %pc.var, constants.%Op.8e3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10: = bound_method %pc.var, constants.%T.as.Destroy.impl.Op.8e3 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc10: = bound_method %pc.var, %Op.specific_fn.1 +// CHECK:STDOUT: %bound_method.loc10: = bound_method %pc.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc10_3: %ptr.01d = addr_of %pc.var -// CHECK:STDOUT: %no_op.loc10: init %empty_tuple.type = call %bound_method.loc10(%addr.loc10_3) -// CHECK:STDOUT: %Op.bound.loc9: = bound_method %pd.var, constants.%Op.8e3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10: init %empty_tuple.type = call %bound_method.loc10(%addr.loc10_3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc9: = bound_method %pd.var, constants.%T.as.Destroy.impl.Op.8e3 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc9: = bound_method %pd.var, %Op.specific_fn.2 +// CHECK:STDOUT: %bound_method.loc9: = bound_method %pd.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc9_3: %ptr.01d = addr_of %pd.var -// CHECK:STDOUT: %no_op.loc9: init %empty_tuple.type = call %bound_method.loc9(%addr.loc9_3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc9: init %empty_tuple.type = call %bound_method.loc9(%addr.loc9_3) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/let/compile_time_bindings.carbon b/toolchain/check/testdata/let/compile_time_bindings.carbon index 3b4a157785d3..a90b55aa4717 100644 --- a/toolchain/check/testdata/let/compile_time_bindings.carbon +++ b/toolchain/check/testdata/let/compile_time_bindings.carbon @@ -166,8 +166,8 @@ impl i32 as Empty { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %C.F.type: type = fn_type @C.F [concrete] +// CHECK:STDOUT: %C.F: %C.F.type = struct_value () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] @@ -190,7 +190,7 @@ impl i32 as Empty { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { +// CHECK:STDOUT: %C.F.decl: %C.F.type = fn_decl @C.F [concrete = constants.%C.F] { // CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -216,11 +216,11 @@ impl i32 as Empty { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %C.F.decl // CHECK:STDOUT: .x = %x // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F() -> %empty_tuple.type { +// CHECK:STDOUT: fn @C.F() -> %empty_tuple.type { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %x.ref: %empty_tuple.type = name_ref x, @C.%x // CHECK:STDOUT: return %x.ref @@ -233,8 +233,8 @@ impl i32 as Empty { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %C.F.type: type = fn_type @C.F [concrete] +// CHECK:STDOUT: %C.F: %C.F.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: } @@ -267,7 +267,7 @@ impl i32 as Empty { // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_17.2: %empty_tuple.type = converted %.loc9_17.1, %empty_tuple [concrete = constants.%empty_tuple] // CHECK:STDOUT: %x: %empty_tuple.type = bind_name x, %.loc9_17.2 -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { +// CHECK:STDOUT: %C.F.decl: %C.F.type = fn_decl @C.F [concrete = constants.%C.F] { // CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -283,10 +283,10 @@ impl i32 as Empty { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .x = %x -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %C.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F() -> %empty_tuple.type { +// CHECK:STDOUT: fn @C.F() -> %empty_tuple.type { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %x.ref: %empty_tuple.type = name_ref x, @C.%x // CHECK:STDOUT: return %x.ref @@ -302,8 +302,8 @@ impl i32 as Empty { // CHECK:STDOUT: %tuple.type.9fb: type = tuple_type (%empty_tuple.type) [concrete] // CHECK:STDOUT: %b: %tuple.type.9fb = bind_symbolic_name b, 0 [symbolic] // CHECK:STDOUT: %pattern_type.559: type = pattern_type %tuple.type.9fb [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %C.F.type: type = fn_type @C.F [concrete] +// CHECK:STDOUT: %C.F: %C.F.type = struct_value () [concrete] // CHECK:STDOUT: %tuple.type.2d5: type = tuple_type (%empty_tuple.type, %empty_tuple.type, %empty_tuple.type) [concrete] // CHECK:STDOUT: %ptr.7fe: type = ptr_type %tuple.type.2d5 [concrete] // CHECK:STDOUT: %pattern_type.8c1: type = pattern_type %tuple.type.2d5 [concrete] @@ -320,20 +320,20 @@ impl i32 as Empty { // CHECK:STDOUT: %tuple.elem0.eaf: %empty_tuple.type = tuple_access %c, element0 [symbolic] // CHECK:STDOUT: %tuple.elem1: %empty_tuple.type = tuple_access %c, element1 [symbolic] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.073: type = fn_type @Op.1, @Destroy.impl(%tuple.type.2d5) [concrete] -// CHECK:STDOUT: %Op.dce: %Op.type.073 = struct_value () [concrete] -// CHECK:STDOUT: %Op.specific_fn.234: = specific_function %Op.dce, @Op.1(%tuple.type.2d5) [concrete] -// CHECK:STDOUT: %Op.type.4e8: type = fn_type @Op.1, @Destroy.impl(%tuple.type.bcd) [concrete] -// CHECK:STDOUT: %Op.166: %Op.type.4e8 = struct_value () [concrete] -// CHECK:STDOUT: %Op.specific_fn.48a: = specific_function %Op.166, @Op.1(%tuple.type.bcd) [concrete] -// CHECK:STDOUT: %Op.type.23e: type = fn_type @Op.1, @Destroy.impl(%tuple.type.9fb) [concrete] -// CHECK:STDOUT: %Op.f19: %Op.type.23e = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.073: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%tuple.type.2d5) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.dce: %T.as.Destroy.impl.Op.type.073 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.234: = specific_function %T.as.Destroy.impl.Op.dce, @T.as.Destroy.impl.Op(%tuple.type.2d5) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.4e8: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%tuple.type.bcd) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.166: %T.as.Destroy.impl.Op.type.4e8 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.48a: = specific_function %T.as.Destroy.impl.Op.166, @T.as.Destroy.impl.Op(%tuple.type.bcd) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.23e: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%tuple.type.9fb) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.f19: %T.as.Destroy.impl.Op.type.23e = struct_value () [concrete] // CHECK:STDOUT: %ptr.652: type = ptr_type %tuple.type.9fb [concrete] -// CHECK:STDOUT: %Op.specific_fn.d2b: = specific_function %Op.f19, @Op.1(%tuple.type.9fb) [concrete] -// CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.1, @Destroy.impl(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.d2b: = specific_function %T.as.Destroy.impl.Op.f19, @T.as.Destroy.impl.Op(%tuple.type.9fb) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a63: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ea3: %T.as.Destroy.impl.Op.type.a63 = struct_value () [concrete] // CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] -// CHECK:STDOUT: %Op.specific_fn.393: = specific_function %Op.ea3, @Op.1(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.393: = specific_function %T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(%empty_tuple.type) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -366,7 +366,7 @@ impl i32 as Empty { // CHECK:STDOUT: %empty_tuple.loc9: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_17.2: %empty_tuple.type = converted %.loc9_17.1, %empty_tuple.loc9 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %a: %empty_tuple.type = bind_name a, %.loc9_17.2 -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { +// CHECK:STDOUT: %C.F.decl: %C.F.type = fn_decl @C.F [concrete = constants.%C.F] { // CHECK:STDOUT: %b.patt: %pattern_type.559 = symbolic_binding_pattern b, 0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc10_16.1: type = splice_block %.loc10_16.4 [concrete = constants.%tuple.type.9fb] { @@ -375,7 +375,7 @@ impl i32 as Empty { // CHECK:STDOUT: %.loc10_16.3: type = converted %.loc10_14, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc10_16.4: type = converted %.loc10_16.2, constants.%tuple.type.9fb [concrete = constants.%tuple.type.9fb] // CHECK:STDOUT: } -// CHECK:STDOUT: %b.loc10_8.1: %tuple.type.9fb = bind_symbolic_name b, 0 [symbolic = %b.loc10_8.2 (constants.%b)] +// CHECK:STDOUT: %b.loc10_8.2: %tuple.type.9fb = bind_symbolic_name b, 0 [symbolic = %b.loc10_8.1 (constants.%b)] // CHECK:STDOUT: } // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %d.patt: %pattern_type.8c1 = binding_pattern d [concrete] @@ -410,16 +410,16 @@ impl i32 as Empty { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .a = %a -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %C.F.decl // CHECK:STDOUT: .d = %d // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(%b.loc10_8.1: %tuple.type.9fb) { -// CHECK:STDOUT: %b.loc10_8.2: %tuple.type.9fb = bind_symbolic_name b, 0 [symbolic = %b.loc10_8.2 (constants.%b)] +// CHECK:STDOUT: generic fn @C.F(%b.loc10_8.2: %tuple.type.9fb) { +// CHECK:STDOUT: %b.loc10_8.1: %tuple.type.9fb = bind_symbolic_name b, 0 [symbolic = %b.loc10_8.1 (constants.%b)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %c.loc11_9.2: %tuple.type.bcd = bind_symbolic_name c, 1 [symbolic = %c.loc11_9.2 (constants.%c)] -// CHECK:STDOUT: %tuple.elem0.loc14_21.3: %empty_tuple.type = tuple_access %b.loc10_8.2, element0 [symbolic = %tuple.elem0.loc14_21.3 (constants.%tuple.elem0.af8)] +// CHECK:STDOUT: %tuple.elem0.loc14_21.3: %empty_tuple.type = tuple_access %b.loc10_8.1, element0 [symbolic = %tuple.elem0.loc14_21.3 (constants.%tuple.elem0.af8)] // CHECK:STDOUT: %tuple.elem0.loc15_24.3: %empty_tuple.type = tuple_access %c.loc11_9.2, element0 [symbolic = %tuple.elem0.loc15_24.3 (constants.%tuple.elem0.eaf)] // CHECK:STDOUT: %tuple.elem1.loc15_24.3: %empty_tuple.type = tuple_access %c.loc11_9.2, element1 [symbolic = %tuple.elem1.loc15_24.3 (constants.%tuple.elem1)] // CHECK:STDOUT: @@ -465,7 +465,7 @@ impl i32 as Empty { // CHECK:STDOUT: %b1.var_patt: %pattern_type.559 = var_pattern %b1.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %b1.var: ref %tuple.type.9fb = var %b1.var_patt -// CHECK:STDOUT: %b.ref: %tuple.type.9fb = name_ref b, %b.loc10_8.1 [symbolic = %b.loc10_8.2 (constants.%b)] +// CHECK:STDOUT: %b.ref: %tuple.type.9fb = name_ref b, %b.loc10_8.2 [symbolic = %b.loc10_8.1 (constants.%b)] // CHECK:STDOUT: %tuple.elem0.loc14_21.1: %empty_tuple.type = tuple_access %b.ref, element0 [symbolic = %tuple.elem0.loc14_21.3 (constants.%tuple.elem0.af8)] // CHECK:STDOUT: %tuple.elem0.loc14_21.2: ref %empty_tuple.type = tuple_access %b1.var, element0 // CHECK:STDOUT: %.loc14_21.1: init %empty_tuple.type = tuple_init () to %tuple.elem0.loc14_21.2 [concrete = constants.%empty_tuple] @@ -538,32 +538,32 @@ impl i32 as Empty { // CHECK:STDOUT: %.loc16_24.6: type = converted %.loc16_24.2, constants.%tuple.type.2d5 [concrete = constants.%tuple.type.2d5] // CHECK:STDOUT: } // CHECK:STDOUT: %d1: ref %tuple.type.2d5 = bind_name d1, %d1.var -// CHECK:STDOUT: %Op.bound.loc16: = bound_method %d1.var, constants.%Op.dce -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.dce, @Op.1(constants.%tuple.type.2d5) [concrete = constants.%Op.specific_fn.234] -// CHECK:STDOUT: %bound_method.loc16: = bound_method %d1.var, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc16: = bound_method %d1.var, constants.%T.as.Destroy.impl.Op.dce +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.dce, @T.as.Destroy.impl.Op(constants.%tuple.type.2d5) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.234] +// CHECK:STDOUT: %bound_method.loc16: = bound_method %d1.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc16: %ptr.7fe = addr_of %d1.var -// CHECK:STDOUT: %no_op.loc16: init %empty_tuple.type = call %bound_method.loc16(%addr.loc16) -// CHECK:STDOUT: %Op.bound.loc15: = bound_method %c1.var, constants.%Op.166 -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.166, @Op.1(constants.%tuple.type.bcd) [concrete = constants.%Op.specific_fn.48a] -// CHECK:STDOUT: %bound_method.loc15: = bound_method %c1.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc16: init %empty_tuple.type = call %bound_method.loc16(%addr.loc16) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc15: = bound_method %c1.var, constants.%T.as.Destroy.impl.Op.166 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.166, @T.as.Destroy.impl.Op(constants.%tuple.type.bcd) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.48a] +// CHECK:STDOUT: %bound_method.loc15: = bound_method %c1.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc15: %ptr.709 = addr_of %c1.var -// CHECK:STDOUT: %no_op.loc15: init %empty_tuple.type = call %bound_method.loc15(%addr.loc15) -// CHECK:STDOUT: %Op.bound.loc14: = bound_method %b1.var, constants.%Op.f19 -// CHECK:STDOUT: %Op.specific_fn.3: = specific_function constants.%Op.f19, @Op.1(constants.%tuple.type.9fb) [concrete = constants.%Op.specific_fn.d2b] -// CHECK:STDOUT: %bound_method.loc14: = bound_method %b1.var, %Op.specific_fn.3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc15: init %empty_tuple.type = call %bound_method.loc15(%addr.loc15) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc14: = bound_method %b1.var, constants.%T.as.Destroy.impl.Op.f19 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.3: = specific_function constants.%T.as.Destroy.impl.Op.f19, @T.as.Destroy.impl.Op(constants.%tuple.type.9fb) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.d2b] +// CHECK:STDOUT: %bound_method.loc14: = bound_method %b1.var, %T.as.Destroy.impl.Op.specific_fn.3 // CHECK:STDOUT: %addr.loc14: %ptr.652 = addr_of %b1.var -// CHECK:STDOUT: %no_op.loc14: init %empty_tuple.type = call %bound_method.loc14(%addr.loc14) -// CHECK:STDOUT: %Op.bound.loc13: = bound_method %a1.var, constants.%Op.ea3 -// CHECK:STDOUT: %Op.specific_fn.4: = specific_function constants.%Op.ea3, @Op.1(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn.393] -// CHECK:STDOUT: %bound_method.loc13: = bound_method %a1.var, %Op.specific_fn.4 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc14: init %empty_tuple.type = call %bound_method.loc14(%addr.loc14) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc13: = bound_method %a1.var, constants.%T.as.Destroy.impl.Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.4: = specific_function constants.%T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.393] +// CHECK:STDOUT: %bound_method.loc13: = bound_method %a1.var, %T.as.Destroy.impl.Op.specific_fn.4 // CHECK:STDOUT: %addr.loc13: %ptr.843 = addr_of %a1.var -// CHECK:STDOUT: %no_op.loc13: init %empty_tuple.type = call %bound_method.loc13(%addr.loc13) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc13: init %empty_tuple.type = call %bound_method.loc13(%addr.loc13) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%b) { -// CHECK:STDOUT: %b.loc10_8.2 => constants.%b +// CHECK:STDOUT: specific @C.F(constants.%b) { +// CHECK:STDOUT: %b.loc10_8.1 => constants.%b // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_invalid_let_after.carbon @@ -572,8 +572,8 @@ impl i32 as Empty { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %C.F.type: type = fn_type @C.F [concrete] +// CHECK:STDOUT: %C.F: %C.F.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: } @@ -595,7 +595,7 @@ impl i32 as Empty { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { +// CHECK:STDOUT: %C.F.decl: %C.F.type = fn_decl @C.F [concrete = constants.%C.F] { // CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -613,11 +613,11 @@ impl i32 as Empty { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %C.F.decl // CHECK:STDOUT: .x = .inst32.loc14_7 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F() -> %empty_tuple.type { +// CHECK:STDOUT: fn @C.F() -> %empty_tuple.type { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %x.ref: %empty_tuple.type = name_ref x, .inst32.loc14_7 // CHECK:STDOUT: return %x.ref @@ -638,18 +638,18 @@ impl i32 as Empty { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -662,8 +662,8 @@ impl i32 as Empty { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -693,12 +693,12 @@ impl i32 as Empty { // CHECK:STDOUT: %int_32.loc5: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc5: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc5_20.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc5_20.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc5_20.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc5_20.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc5_20.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc5_20.2(%int_0) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc5_20.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc5_20.2: %i32 = converted %int_0, %.loc5_20.1 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %Zero: %i32 = bind_symbolic_name Zero, 0, %.loc5_20.2 [symbolic = constants.%Zero] // CHECK:STDOUT: %Zero.ref: %i32 = name_ref Zero, %Zero [symbolic = constants.%Zero] @@ -721,22 +721,22 @@ impl i32 as Empty { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.d04: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.b6e: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.b6e: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -749,8 +749,8 @@ impl i32 as Empty { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -784,12 +784,12 @@ impl i32 as Empty { // CHECK:STDOUT: %int_32.loc6: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc6: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl.elem0.loc6: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc6_22.1: = bound_method %int_0, %impl.elem0.loc6 [concrete = constants.%Convert.bound.d04] -// CHECK:STDOUT: %specific_fn.loc6: = specific_function %impl.elem0.loc6, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc6: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc6_22.1: = bound_method %int_0, %impl.elem0.loc6 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04] +// CHECK:STDOUT: %specific_fn.loc6: = specific_function %impl.elem0.loc6, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc6_22.2: = bound_method %int_0, %specific_fn.loc6 [concrete = constants.%bound_method.b6e] -// CHECK:STDOUT: %int.convert_checked.loc6: init %i32 = call %bound_method.loc6_22.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc6_22.1: %i32 = value_of_initializer %int.convert_checked.loc6 [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6: init %i32 = call %bound_method.loc6_22.2(%int_0) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc6_22.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc6_22.2: %i32 = converted %int_0, %.loc6_22.1 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %Zero: %i32 = bind_symbolic_name Zero, 0, %.loc6_22.2 [symbolic = constants.%Zero] // CHECK:STDOUT: %Zero.ref: %i32 = name_ref Zero, %Zero [symbolic = constants.%Zero] @@ -797,12 +797,12 @@ impl i32 as Empty { // CHECK:STDOUT: // CHECK:STDOUT: !if.else: // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0.loc9: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc9_11.1: = bound_method %int_1, %impl.elem0.loc9 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc9: = specific_function %impl.elem0.loc9, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc9: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc9_11.1: = bound_method %int_1, %impl.elem0.loc9 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc9: = specific_function %impl.elem0.loc9, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc9_11.2: = bound_method %int_1, %specific_fn.loc9 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc9: init %i32 = call %bound_method.loc9_11.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc9_11.1: %i32 = value_of_initializer %int.convert_checked.loc9 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9: init %i32 = call %bound_method.loc9_11.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc9_11.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc9_11.2: %i32 = converted %int_1, %.loc9_11.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: return %.loc9_11.2 // CHECK:STDOUT: } @@ -823,9 +823,9 @@ impl i32 as Empty { // CHECK:STDOUT: %I.facet: %I.type = facet_value %Self.as_type, (%I.lookup_impl_witness) [symbolic] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic] // CHECK:STDOUT: %pattern_type.ca5: type = pattern_type %impl.elem0 [symbolic] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %assoc1: %I.assoc_type = assoc_entity element1, @I.%F.decl [concrete] +// CHECK:STDOUT: %I.F.type: type = fn_type @I.F [concrete] +// CHECK:STDOUT: %I.F: %I.F.type = struct_value () [concrete] +// CHECK:STDOUT: %assoc1: %I.assoc_type = assoc_entity element1, @I.%I.F.decl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -853,22 +853,22 @@ impl i32 as Empty { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { -// CHECK:STDOUT: %return.patt: @F.%pattern_type (%pattern_type.ca5) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @F.%pattern_type (%pattern_type.ca5) = out_param_pattern %return.patt, call_param0 [concrete] +// CHECK:STDOUT: %I.F.decl: %I.F.type = fn_decl @I.F [concrete = constants.%I.F] { +// CHECK:STDOUT: %return.patt: @I.F.%pattern_type (%pattern_type.ca5) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @I.F.%pattern_type (%pattern_type.ca5) = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %impl.elem0.loc6_13.1: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc6_13.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %T.ref: type = name_ref T, %impl.elem0.loc6_13.1 [symbolic = %impl.elem0.loc6_13.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %return.param: ref @F.%impl.elem0.loc6_13.2 (%impl.elem0) = out_param call_param0 -// CHECK:STDOUT: %return: ref @F.%impl.elem0.loc6_13.2 (%impl.elem0) = return_slot %return.param +// CHECK:STDOUT: %impl.elem0.loc6_13.2: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc6_13.1 (constants.%impl.elem0)] +// CHECK:STDOUT: %T.ref: type = name_ref T, %impl.elem0.loc6_13.2 [symbolic = %impl.elem0.loc6_13.1 (constants.%impl.elem0)] +// CHECK:STDOUT: %return.param: ref @I.F.%impl.elem0.loc6_13.1 (%impl.elem0) = out_param call_param0 +// CHECK:STDOUT: %return: ref @I.F.%impl.elem0.loc6_13.1 (%impl.elem0) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc1: %I.assoc_type = assoc_entity element1, %F.decl [concrete = constants.%assoc1] +// CHECK:STDOUT: %assoc1: %I.assoc_type = assoc_entity element1, %I.F.decl [concrete = constants.%assoc1] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self // CHECK:STDOUT: .T = @T.%assoc0 // CHECK:STDOUT: .F = %assoc1 -// CHECK:STDOUT: witness = (%T, %F.decl) +// CHECK:STDOUT: witness = (%T, %I.F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic assoc_const @T(@I.%Self: %I.type) { @@ -877,23 +877,23 @@ impl i32 as Empty { // CHECK:STDOUT: assoc_const T:! type = %i32; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(@I.%Self: %I.type) { +// CHECK:STDOUT: generic fn @I.F(@I.%Self: %I.type) { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %Self, @I [symbolic = %I.lookup_impl_witness (constants.%I.lookup_impl_witness)] -// CHECK:STDOUT: %impl.elem0.loc6_13.2: type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc6_13.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %impl.elem0.loc6_13.2 [symbolic = %pattern_type (constants.%pattern_type.ca5)] +// CHECK:STDOUT: %impl.elem0.loc6_13.1: type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc6_13.1 (constants.%impl.elem0)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %impl.elem0.loc6_13.1 [symbolic = %pattern_type (constants.%pattern_type.ca5)] // CHECK:STDOUT: -// CHECK:STDOUT: fn() -> @F.%impl.elem0.loc6_13.2 (%impl.elem0); +// CHECK:STDOUT: fn() -> @I.F.%impl.elem0.loc6_13.1 (%impl.elem0); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @T(constants.%Self) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @T(constants.%I.facet) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%Self) { +// CHECK:STDOUT: specific @I.F(constants.%Self) { // CHECK:STDOUT: %Self => constants.%Self // CHECK:STDOUT: %I.lookup_impl_witness => constants.%I.lookup_impl_witness -// CHECK:STDOUT: %impl.elem0.loc6_13.2 => constants.%impl.elem0 +// CHECK:STDOUT: %impl.elem0.loc6_13.1 => constants.%impl.elem0 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.ca5 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -906,8 +906,8 @@ impl i32 as Empty { // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %I.F.type: type = fn_type @I.F [concrete] +// CHECK:STDOUT: %I.F: %I.F.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: } @@ -937,7 +937,7 @@ impl i32 as Empty { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %T: type = bind_name T, %i32 -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { +// CHECK:STDOUT: %I.F.decl: %I.F.type = fn_decl @I.F [concrete = constants.%I.F] { // CHECK:STDOUT: %return.patt: = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -952,10 +952,10 @@ impl i32 as Empty { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%I // CHECK:STDOUT: .T = %T -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %I.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F() -> ; +// CHECK:STDOUT: fn @I.F() -> ; // CHECK:STDOUT: // CHECK:STDOUT: --- fail_return_in_package_scope.carbon // CHECK:STDOUT: @@ -1023,18 +1023,18 @@ impl i32 as Empty { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1047,8 +1047,8 @@ impl i32 as Empty { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1058,12 +1058,12 @@ impl i32 as Empty { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Empty.decl: type = interface_decl @Empty [concrete = constants.%Empty.type] {} {} -// CHECK:STDOUT: impl_decl @Empty.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @i32.as.Empty.impl [concrete] {} { // CHECK:STDOUT: %int_32.loc6: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc6: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %Empty.ref: type = name_ref Empty, file.%Empty.decl [concrete = constants.%Empty.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %Empty.impl_witness_table = impl_witness_table (), @Empty.impl [concrete] +// CHECK:STDOUT: %Empty.impl_witness_table = impl_witness_table (), @i32.as.Empty.impl [concrete] // CHECK:STDOUT: %Empty.impl_witness: = impl_witness %Empty.impl_witness_table [concrete = constants.%Empty.impl_witness] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1075,7 +1075,7 @@ impl i32 as Empty { // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Empty.impl: %i32.loc6 as %Empty.ref { +// CHECK:STDOUT: impl @i32.as.Empty.impl: %i32.loc6 as %Empty.ref { // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %Zero.patt: %pattern_type.7ce = binding_pattern Zero [concrete] // CHECK:STDOUT: } @@ -1084,12 +1084,12 @@ impl i32 as Empty { // CHECK:STDOUT: %int_32.loc11: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc11: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc11_20.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc11_20.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc11_20.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc11_20.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc11_20.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc11_20.2(%int_0) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc11_20.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc11_20.2: %i32 = converted %int_0, %.loc11_20.1 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %Zero: %i32 = bind_name Zero, %.loc11_20.2 // CHECK:STDOUT: diff --git a/toolchain/check/testdata/let/fail_duplicate_decl.carbon b/toolchain/check/testdata/let/fail_duplicate_decl.carbon index 4afca747b2bb..78278c77e613 100644 --- a/toolchain/check/testdata/let/fail_duplicate_decl.carbon +++ b/toolchain/check/testdata/let/fail_duplicate_decl.carbon @@ -38,22 +38,22 @@ fn F() { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -66,8 +66,8 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -89,12 +89,12 @@ fn F() { // CHECK:STDOUT: %int_32.loc16: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc16: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl.elem0.loc16: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc16_16.1: = bound_method %int_1, %impl.elem0.loc16 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc16: = specific_function %impl.elem0.loc16, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc16: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc16_16.1: = bound_method %int_1, %impl.elem0.loc16 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc16: = specific_function %impl.elem0.loc16, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc16_16.2: = bound_method %int_1, %specific_fn.loc16 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc16: init %i32 = call %bound_method.loc16_16.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc16_16.1: %i32 = value_of_initializer %int.convert_checked.loc16 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc16: init %i32 = call %bound_method.loc16_16.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc16_16.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc16 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc16_16.2: %i32 = converted %int_1, %.loc16_16.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %a.loc16: %i32 = bind_name a, %.loc16_16.2 // CHECK:STDOUT: name_binding_decl { @@ -105,12 +105,12 @@ fn F() { // CHECK:STDOUT: %int_32.loc24: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc24: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl.elem0.loc24: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc24_16.1: = bound_method %int_2, %impl.elem0.loc24 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc24: = specific_function %impl.elem0.loc24, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc24: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc24_16.1: = bound_method %int_2, %impl.elem0.loc24 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc24: = specific_function %impl.elem0.loc24, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc24_16.2: = bound_method %int_2, %specific_fn.loc24 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc24: init %i32 = call %bound_method.loc24_16.2(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc24_16.1: %i32 = value_of_initializer %int.convert_checked.loc24 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc24: init %i32 = call %bound_method.loc24_16.2(%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc24_16.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc24 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc24_16.2: %i32 = converted %int_2, %.loc24_16.1 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %a.loc24: %i32 = bind_name a, %.loc24_16.2 // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/let/fail_generic.carbon b/toolchain/check/testdata/let/fail_generic.carbon index 1da1f8212023..2a08ff8c67e5 100644 --- a/toolchain/check/testdata/let/fail_generic.carbon +++ b/toolchain/check/testdata/let/fail_generic.carbon @@ -50,8 +50,8 @@ fn F(a: i32) -> i32 { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %Dest: type = bind_symbolic_name Dest, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.2751f3.1: type = fn_type @Convert.1, @ImplicitAs(%Dest) [symbolic] -// CHECK:STDOUT: %Convert.42ebb8.1: %Convert.type.2751f3.1 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.Convert.type.2751f3.1: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%Dest) [symbolic] +// CHECK:STDOUT: %ImplicitAs.Convert.42ebb8.1: %ImplicitAs.Convert.type.2751f3.1 = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.assoc_type.ca0d85.1: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%Dest) [symbolic] // CHECK:STDOUT: %ImplicitAs.type.d628ce.2: type = facet_type <@ImplicitAs, @ImplicitAs(%T)> [symbolic] // CHECK:STDOUT: %ImplicitAs.assoc_type.ca0d85.2: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%T) [symbolic] @@ -69,7 +69,7 @@ fn F(a: i32) -> i32 { // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] // CHECK:STDOUT: %Core.import_ref.492: @ImplicitAs.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type.ca0d85.1) = import_ref Core//prelude/parts/as, loc12_35, loaded [symbolic = @ImplicitAs.%assoc0 (constants.%assoc0.dc0)] -// CHECK:STDOUT: %Core.import_ref.1c7: @ImplicitAs.%Convert.type (%Convert.type.2751f3.1) = import_ref Core//prelude/parts/as, loc12_35, loaded [symbolic = @ImplicitAs.%Convert (constants.%Convert.42ebb8.1)] +// CHECK:STDOUT: %Core.import_ref.1c7: @ImplicitAs.%ImplicitAs.Convert.type (%ImplicitAs.Convert.type.2751f3.1) = import_ref Core//prelude/parts/as, loc12_35, loaded [symbolic = @ImplicitAs.%ImplicitAs.Convert (constants.%ImplicitAs.Convert.42ebb8.1)] // CHECK:STDOUT: %Core.import_ref.207 = import_ref Core//prelude/parts/as, loc12_35, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/let/fail_modifiers.carbon b/toolchain/check/testdata/let/fail_modifiers.carbon index 8d2147e2df62..5d6f1fa4343e 100644 --- a/toolchain/check/testdata/let/fail_modifiers.carbon +++ b/toolchain/check/testdata/let/fail_modifiers.carbon @@ -100,18 +100,18 @@ protected protected let i: i32 = 1; // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -124,8 +124,8 @@ protected protected let i: i32 = 1; // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -148,12 +148,12 @@ protected protected let i: i32 = 1; // CHECK:STDOUT: %int_32.loc19: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc19: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl.elem0.loc19: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc19_24.1: = bound_method @__global_init.%int_1.loc19, %impl.elem0.loc19 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn.loc19: = specific_function %impl.elem0.loc19, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc19: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc19_24.1: = bound_method @__global_init.%int_1.loc19, %impl.elem0.loc19 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc19: = specific_function %impl.elem0.loc19, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc19_24.2: = bound_method @__global_init.%int_1.loc19, %specific_fn.loc19 [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked.loc19: init %i32 = call %bound_method.loc19_24.2(@__global_init.%int_1.loc19) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc19_24.1: %i32 = value_of_initializer %int.convert_checked.loc19 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19: init %i32 = call %bound_method.loc19_24.2(@__global_init.%int_1.loc19) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc19_24.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc19_24.2: %i32 = converted @__global_init.%int_1.loc19, %.loc19_24.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %b: %i32 = bind_name b, %.loc19_24.2 // CHECK:STDOUT: name_binding_decl { @@ -163,12 +163,12 @@ protected protected let i: i32 = 1; // CHECK:STDOUT: %int_32.loc25: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc25: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl.elem0.loc25: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc25_22.1: = bound_method @__global_init.%int_1.loc25, %impl.elem0.loc25 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn.loc25: = specific_function %impl.elem0.loc25, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc25: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc25_22.1: = bound_method @__global_init.%int_1.loc25, %impl.elem0.loc25 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc25: = specific_function %impl.elem0.loc25, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc25_22.2: = bound_method @__global_init.%int_1.loc25, %specific_fn.loc25 [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked.loc25: init %i32 = call %bound_method.loc25_22.2(@__global_init.%int_1.loc25) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc25_22.1: %i32 = value_of_initializer %int.convert_checked.loc25 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc25: init %i32 = call %bound_method.loc25_22.2(@__global_init.%int_1.loc25) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc25_22.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc25 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc25_22.2: %i32 = converted @__global_init.%int_1.loc25, %.loc25_22.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %c: %i32 = bind_name c, %.loc25_22.2 // CHECK:STDOUT: name_binding_decl { @@ -178,12 +178,12 @@ protected protected let i: i32 = 1; // CHECK:STDOUT: %int_32.loc31: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc31: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl.elem0.loc31: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc31_20.1: = bound_method @__global_init.%int_1.loc31, %impl.elem0.loc31 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn.loc31: = specific_function %impl.elem0.loc31, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc31: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc31_20.1: = bound_method @__global_init.%int_1.loc31, %impl.elem0.loc31 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc31: = specific_function %impl.elem0.loc31, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc31_20.2: = bound_method @__global_init.%int_1.loc31, %specific_fn.loc31 [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked.loc31: init %i32 = call %bound_method.loc31_20.2(@__global_init.%int_1.loc31) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc31_20.1: %i32 = value_of_initializer %int.convert_checked.loc31 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc31: init %i32 = call %bound_method.loc31_20.2(@__global_init.%int_1.loc31) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc31_20.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc31 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc31_20.2: %i32 = converted @__global_init.%int_1.loc31, %.loc31_20.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %d: %i32 = bind_name d, %.loc31_20.2 // CHECK:STDOUT: name_binding_decl { @@ -193,12 +193,12 @@ protected protected let i: i32 = 1; // CHECK:STDOUT: %int_32.loc37: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc37: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl.elem0.loc37: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc37_22.1: = bound_method @__global_init.%int_1.loc37, %impl.elem0.loc37 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn.loc37: = specific_function %impl.elem0.loc37, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc37: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc37_22.1: = bound_method @__global_init.%int_1.loc37, %impl.elem0.loc37 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc37: = specific_function %impl.elem0.loc37, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc37_22.2: = bound_method @__global_init.%int_1.loc37, %specific_fn.loc37 [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked.loc37: init %i32 = call %bound_method.loc37_22.2(@__global_init.%int_1.loc37) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc37_22.1: %i32 = value_of_initializer %int.convert_checked.loc37 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc37: init %i32 = call %bound_method.loc37_22.2(@__global_init.%int_1.loc37) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc37_22.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc37 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc37_22.2: %i32 = converted @__global_init.%int_1.loc37, %.loc37_22.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %e: %i32 = bind_name e, %.loc37_22.2 // CHECK:STDOUT: name_binding_decl { @@ -208,12 +208,12 @@ protected protected let i: i32 = 1; // CHECK:STDOUT: %int_32.loc50: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc50: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl.elem0.loc50: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc50_28.1: = bound_method @__global_init.%int_1.loc50, %impl.elem0.loc50 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn.loc50: = specific_function %impl.elem0.loc50, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc50: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc50_28.1: = bound_method @__global_init.%int_1.loc50, %impl.elem0.loc50 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc50: = specific_function %impl.elem0.loc50, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc50_28.2: = bound_method @__global_init.%int_1.loc50, %specific_fn.loc50 [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked.loc50: init %i32 = call %bound_method.loc50_28.2(@__global_init.%int_1.loc50) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc50_28.1: %i32 = value_of_initializer %int.convert_checked.loc50 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc50: init %i32 = call %bound_method.loc50_28.2(@__global_init.%int_1.loc50) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc50_28.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc50 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc50_28.2: %i32 = converted @__global_init.%int_1.loc50, %.loc50_28.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %f: %i32 = bind_name f, %.loc50_28.2 // CHECK:STDOUT: name_binding_decl { @@ -223,12 +223,12 @@ protected protected let i: i32 = 1; // CHECK:STDOUT: %int_32.loc63: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc63: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl.elem0.loc63: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc63_30.1: = bound_method @__global_init.%int_1.loc63, %impl.elem0.loc63 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn.loc63: = specific_function %impl.elem0.loc63, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc63: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc63_30.1: = bound_method @__global_init.%int_1.loc63, %impl.elem0.loc63 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc63: = specific_function %impl.elem0.loc63, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc63_30.2: = bound_method @__global_init.%int_1.loc63, %specific_fn.loc63 [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked.loc63: init %i32 = call %bound_method.loc63_30.2(@__global_init.%int_1.loc63) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc63_30.1: %i32 = value_of_initializer %int.convert_checked.loc63 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc63: init %i32 = call %bound_method.loc63_30.2(@__global_init.%int_1.loc63) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc63_30.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc63 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc63_30.2: %i32 = converted @__global_init.%int_1.loc63, %.loc63_30.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %g: %i32 = bind_name g, %.loc63_30.2 // CHECK:STDOUT: name_binding_decl { @@ -238,12 +238,12 @@ protected protected let i: i32 = 1; // CHECK:STDOUT: %int_32.loc76: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc76: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl.elem0.loc76: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc76_32.1: = bound_method @__global_init.%int_1.loc76, %impl.elem0.loc76 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn.loc76: = specific_function %impl.elem0.loc76, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc76: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc76_32.1: = bound_method @__global_init.%int_1.loc76, %impl.elem0.loc76 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc76: = specific_function %impl.elem0.loc76, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc76_32.2: = bound_method @__global_init.%int_1.loc76, %specific_fn.loc76 [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked.loc76: init %i32 = call %bound_method.loc76_32.2(@__global_init.%int_1.loc76) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc76_32.1: %i32 = value_of_initializer %int.convert_checked.loc76 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc76: init %i32 = call %bound_method.loc76_32.2(@__global_init.%int_1.loc76) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc76_32.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc76 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc76_32.2: %i32 = converted @__global_init.%int_1.loc76, %.loc76_32.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %h: %i32 = bind_name h, %.loc76_32.2 // CHECK:STDOUT: name_binding_decl { @@ -253,12 +253,12 @@ protected protected let i: i32 = 1; // CHECK:STDOUT: %int_32.loc89: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc89: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl.elem0.loc89: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc89_34.1: = bound_method @__global_init.%int_1.loc89, %impl.elem0.loc89 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn.loc89: = specific_function %impl.elem0.loc89, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc89: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc89_34.1: = bound_method @__global_init.%int_1.loc89, %impl.elem0.loc89 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc89: = specific_function %impl.elem0.loc89, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc89_34.2: = bound_method @__global_init.%int_1.loc89, %specific_fn.loc89 [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked.loc89: init %i32 = call %bound_method.loc89_34.2(@__global_init.%int_1.loc89) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc89_34.1: %i32 = value_of_initializer %int.convert_checked.loc89 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc89: init %i32 = call %bound_method.loc89_34.2(@__global_init.%int_1.loc89) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc89_34.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc89 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc89_34.2: %i32 = converted @__global_init.%int_1.loc89, %.loc89_34.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %i: %i32 = bind_name i, %.loc89_34.2 // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/let/generic.carbon b/toolchain/check/testdata/let/generic.carbon index 83c327d35ed1..9ee7b18447cf 100644 --- a/toolchain/check/testdata/let/generic.carbon +++ b/toolchain/check/testdata/let/generic.carbon @@ -34,18 +34,18 @@ fn F() { // CHECK:STDOUT: %pattern_type.afe: type = pattern_type %ptr.79f [symbolic] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %T [symbolic] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.bae: type = fn_type @Op.1 [concrete] +// CHECK:STDOUT: %Destroy.Op.type: type = fn_type @Destroy.Op [concrete] // CHECK:STDOUT: %Destroy.lookup_impl_witness.de0: = lookup_impl_witness %T, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.713: %Destroy.type = facet_value %T, (%Destroy.lookup_impl_witness.de0) [symbolic] -// CHECK:STDOUT: %.a63: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.713 [symbolic] +// CHECK:STDOUT: %.a63: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.713 [symbolic] // CHECK:STDOUT: %impl.elem0.538: %.a63 = impl_witness_access %Destroy.lookup_impl_witness.de0, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.1af: = specific_impl_function %impl.elem0.538, @Op.1(%Destroy.facet.713) [symbolic] +// CHECK:STDOUT: %specific_impl_fn.1af: = specific_impl_function %impl.elem0.538, @Destroy.Op(%Destroy.facet.713) [symbolic] // CHECK:STDOUT: %ptr.a13: type = ptr_type %ptr.79f [symbolic] // CHECK:STDOUT: %Destroy.lookup_impl_witness.3af: = lookup_impl_witness %ptr.79f, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.7d0: %Destroy.type = facet_value %ptr.79f, (%Destroy.lookup_impl_witness.3af) [symbolic] -// CHECK:STDOUT: %.ea9: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.7d0 [symbolic] +// CHECK:STDOUT: %.ea9: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.7d0 [symbolic] // CHECK:STDOUT: %impl.elem0.63c: %.ea9 = impl_witness_access %Destroy.lookup_impl_witness.3af, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.e4a: = specific_impl_function %impl.elem0.63c, @Op.1(%Destroy.facet.7d0) [symbolic] +// CHECK:STDOUT: %specific_impl_fn.e4a: = specific_impl_function %impl.elem0.63c, @Destroy.Op(%Destroy.facet.7d0) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -100,13 +100,13 @@ fn F() { // CHECK:STDOUT: %a: ref %T = bind_name a, %a.var // CHECK:STDOUT: %impl.elem0.loc18: %.a63 = impl_witness_access constants.%Destroy.lookup_impl_witness.de0, element0 [symbolic = constants.%impl.elem0.538] // CHECK:STDOUT: %bound_method.loc18_3.1: = bound_method %a.var, %impl.elem0.loc18 -// CHECK:STDOUT: %specific_impl_fn.loc18: = specific_impl_function %impl.elem0.loc18, @Op.1(constants.%Destroy.facet.713) [symbolic = constants.%specific_impl_fn.1af] +// CHECK:STDOUT: %specific_impl_fn.loc18: = specific_impl_function %impl.elem0.loc18, @Destroy.Op(constants.%Destroy.facet.713) [symbolic = constants.%specific_impl_fn.1af] // CHECK:STDOUT: %bound_method.loc18_3.2: = bound_method %a.var, %specific_impl_fn.loc18 // CHECK:STDOUT: %addr.loc18: %ptr.79f = addr_of %a.var // CHECK:STDOUT: %.loc18_3: init %empty_tuple.type = call %bound_method.loc18_3.2(%addr.loc18) // CHECK:STDOUT: %impl.elem0.loc17: %.ea9 = impl_witness_access constants.%Destroy.lookup_impl_witness.3af, element0 [symbolic = constants.%impl.elem0.63c] // CHECK:STDOUT: %bound_method.loc17_3.1: = bound_method %p.var, %impl.elem0.loc17 -// CHECK:STDOUT: %specific_impl_fn.loc17: = specific_impl_function %impl.elem0.loc17, @Op.1(constants.%Destroy.facet.7d0) [symbolic = constants.%specific_impl_fn.e4a] +// CHECK:STDOUT: %specific_impl_fn.loc17: = specific_impl_function %impl.elem0.loc17, @Destroy.Op(constants.%Destroy.facet.7d0) [symbolic = constants.%specific_impl_fn.e4a] // CHECK:STDOUT: %bound_method.loc17_3.2: = bound_method %p.var, %specific_impl_fn.loc17 // CHECK:STDOUT: %addr.loc17: %ptr.a13 = addr_of %p.var // CHECK:STDOUT: %.loc17_3: init %empty_tuple.type = call %bound_method.loc17_3.2(%addr.loc17) diff --git a/toolchain/check/testdata/let/global.carbon b/toolchain/check/testdata/let/global.carbon index 41eeb83cd052..9efc79d27e4f 100644 --- a/toolchain/check/testdata/let/global.carbon +++ b/toolchain/check/testdata/let/global.carbon @@ -28,18 +28,18 @@ fn F() -> i32 { return n; } // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -54,8 +54,8 @@ fn F() -> i32 { return n; } // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -72,12 +72,12 @@ fn F() -> i32 { return n; } // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc15_14.1: = bound_method @__global_init.%int_1, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc15_14.1: = bound_method @__global_init.%int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc15_14.2: = bound_method @__global_init.%int_1, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc15_14.2(@__global_init.%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc15_14.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc15_14.2(@__global_init.%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc15_14.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc15_14.2: %i32 = converted @__global_init.%int_1, %.loc15_14.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %n: %i32 = bind_name n, %.loc15_14.2 // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { diff --git a/toolchain/check/testdata/let/shadowed_decl.carbon b/toolchain/check/testdata/let/shadowed_decl.carbon index 739c8d403dc2..5bbd6697627b 100644 --- a/toolchain/check/testdata/let/shadowed_decl.carbon +++ b/toolchain/check/testdata/let/shadowed_decl.carbon @@ -32,18 +32,18 @@ fn F(a: i32) -> i32 { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -56,8 +56,8 @@ fn F(a: i32) -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -95,12 +95,12 @@ fn F(a: i32) -> i32 { // CHECK:STDOUT: %int_32.loc16: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc16: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc16_16.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc16_16.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc16_16.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc16_16.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc16_16.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc16_16.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc16_16.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc16_16.2: %i32 = converted %int_1, %.loc16_16.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %a.loc16: %i32 = bind_name a, %.loc16_16.2 // CHECK:STDOUT: %a.ref: %i32 = name_ref a, %a.loc16 diff --git a/toolchain/check/testdata/main_run/return_i32.carbon b/toolchain/check/testdata/main_run/return_i32.carbon index bb55d57c9bd5..c26be9107760 100644 --- a/toolchain/check/testdata/main_run/return_i32.carbon +++ b/toolchain/check/testdata/main_run/return_i32.carbon @@ -27,18 +27,18 @@ fn Run() -> i32 { return 0; } // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -51,8 +51,8 @@ fn Run() -> i32 { return 0; } // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -77,12 +77,12 @@ fn Run() -> i32 { return 0; } // CHECK:STDOUT: fn @Run() -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc14_27.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc14_27.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc14_27.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc14_27.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc14_27.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc14_27.2(%int_0) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc14_27.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc14_27.2: %i32 = converted %int_0, %.loc14_27.1 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: return %.loc14_27.2 // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/namespace/add_to_import.carbon b/toolchain/check/testdata/namespace/add_to_import.carbon index dc97da43f5f9..b70e110636d5 100644 --- a/toolchain/check/testdata/namespace/add_to_import.carbon +++ b/toolchain/check/testdata/namespace/add_to_import.carbon @@ -58,18 +58,18 @@ var a: i32 = NS.A(); // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -86,8 +86,8 @@ var a: i32 = NS.A(); // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -123,12 +123,12 @@ var a: i32 = NS.A(); // CHECK:STDOUT: fn @A() -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc4_28.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc4_28.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc4_28.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc4_28.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc4_28.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc4_28.2(%int_0) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc4_28.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc4_28.2: %i32 = converted %int_0, %.loc4_28.1 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: return %.loc4_28.2 // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/namespace/alias.carbon b/toolchain/check/testdata/namespace/alias.carbon index aaeb58cd480c..19386169acde 100644 --- a/toolchain/check/testdata/namespace/alias.carbon +++ b/toolchain/check/testdata/namespace/alias.carbon @@ -38,18 +38,18 @@ fn D() -> i32 { return C(); } // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: %B.type: type = fn_type @B [concrete] // CHECK:STDOUT: %B: %B.type = struct_value () [concrete] @@ -66,8 +66,8 @@ fn D() -> i32 { return C(); } // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -120,12 +120,12 @@ fn D() -> i32 { return C(); } // CHECK:STDOUT: fn @A() -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc19_28.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc19_28.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc19_28.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc19_28.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc19_28.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc19_28.2(%int_0) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc19_28.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc19_28.2: %i32 = converted %int_0, %.loc19_28.1 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: return %.loc19_28.2 // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/namespace/fail_decl_in_alias.carbon b/toolchain/check/testdata/namespace/fail_decl_in_alias.carbon index 11906f29a050..ed6ce8427c2c 100644 --- a/toolchain/check/testdata/namespace/fail_decl_in_alias.carbon +++ b/toolchain/check/testdata/namespace/fail_decl_in_alias.carbon @@ -40,18 +40,18 @@ fn ns.A() -> i32 { return 0; } // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -64,8 +64,8 @@ fn ns.A() -> i32 { return 0; } // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -92,12 +92,12 @@ fn ns.A() -> i32 { return 0; } // CHECK:STDOUT: fn @A() -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc27_28.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc27_28.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc27_28.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc27_28.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc27_28.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc27_28.2(%int_0) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc27_28.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc27_28.2: %i32 = converted %int_0, %.loc27_28.1 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: return %.loc27_28.2 // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/namespace/merging_with_indirections.carbon b/toolchain/check/testdata/namespace/merging_with_indirections.carbon index 617cf6bca152..9036deff7597 100644 --- a/toolchain/check/testdata/namespace/merging_with_indirections.carbon +++ b/toolchain/check/testdata/namespace/merging_with_indirections.carbon @@ -170,10 +170,10 @@ fn Run() { // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type.272: type = pattern_type %A [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.d74: type = fn_type @Op.1, @Destroy.impl(%A) [concrete] -// CHECK:STDOUT: %Op.478: %Op.type.d74 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.d74: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%A) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.478: %T.as.Destroy.impl.Op.type.d74 = struct_value () [concrete] // CHECK:STDOUT: %ptr.07e: type = ptr_type %A [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.478, @Op.1(%A) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.478, @T.as.Destroy.impl.Op(%A) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -243,21 +243,21 @@ fn Run() { // CHECK:STDOUT: %.loc13: ref %A = splice_block %a.ref {} // CHECK:STDOUT: %F.call.loc13: init %A = call %F.ref.loc13() to %.loc13 // CHECK:STDOUT: assign %a.ref, %F.call.loc13 -// CHECK:STDOUT: %Op.bound.loc13: = bound_method %.loc13, constants.%Op.478 -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.478, @Op.1(constants.%A) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc13: = bound_method %.loc13, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc13: = bound_method %.loc13, constants.%T.as.Destroy.impl.Op.478 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.478, @T.as.Destroy.impl.Op(constants.%A) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc13: = bound_method %.loc13, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc13: %ptr.07e = addr_of %.loc13 -// CHECK:STDOUT: %no_op.loc13: init %empty_tuple.type = call %bound_method.loc13(%addr.loc13) -// CHECK:STDOUT: %Op.bound.loc10: = bound_method %a.var, constants.%Op.478 -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.478, @Op.1(constants.%A) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc10: = bound_method %a.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc13: init %empty_tuple.type = call %bound_method.loc13(%addr.loc13) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10: = bound_method %a.var, constants.%T.as.Destroy.impl.Op.478 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.478, @T.as.Destroy.impl.Op(constants.%A) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc10: = bound_method %a.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc10: %ptr.07e = addr_of %a.var -// CHECK:STDOUT: %no_op.loc10: init %empty_tuple.type = call %bound_method.loc10(%addr.loc10) -// CHECK:STDOUT: %Op.bound.loc7: = bound_method %.loc7_11.1, constants.%Op.478 -// CHECK:STDOUT: %Op.specific_fn.3: = specific_function constants.%Op.478, @Op.1(constants.%A) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc7: = bound_method %.loc7_11.1, %Op.specific_fn.3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10: init %empty_tuple.type = call %bound_method.loc10(%addr.loc10) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc7: = bound_method %.loc7_11.1, constants.%T.as.Destroy.impl.Op.478 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.3: = specific_function constants.%T.as.Destroy.impl.Op.478, @T.as.Destroy.impl.Op(constants.%A) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc7: = bound_method %.loc7_11.1, %T.as.Destroy.impl.Op.specific_fn.3 // CHECK:STDOUT: %addr.loc7: %ptr.07e = addr_of %.loc7_11.1 -// CHECK:STDOUT: %no_op.loc7: init %empty_tuple.type = call %bound_method.loc7(%addr.loc7) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc7: init %empty_tuple.type = call %bound_method.loc7(%addr.loc7) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/namespace/shadow.carbon b/toolchain/check/testdata/namespace/shadow.carbon index 4efcf5fa8fe7..298113d6b683 100644 --- a/toolchain/check/testdata/namespace/shadow.carbon +++ b/toolchain/check/testdata/namespace/shadow.carbon @@ -51,24 +51,24 @@ fn N.M.B() -> i32 { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.1, @Destroy.impl(%i32) [concrete] -// CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a17: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.e6a: %T.as.Destroy.impl.Op.type.a17 = struct_value () [concrete] // CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.e6a, @Op.1(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(%i32) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -81,8 +81,8 @@ fn N.M.B() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -132,12 +132,12 @@ fn N.M.B() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %A.var: ref %i32 = var %A.var_patt // CHECK:STDOUT: %int_0.loc26: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %impl.elem0.loc26: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc26_5.1: = bound_method %int_0.loc26, %impl.elem0.loc26 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn.loc26: = specific_function %impl.elem0.loc26, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc26: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc26_5.1: = bound_method %int_0.loc26, %impl.elem0.loc26 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc26: = specific_function %impl.elem0.loc26, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc26_5.2: = bound_method %int_0.loc26, %specific_fn.loc26 [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked.loc26: init %i32 = call %bound_method.loc26_5.2(%int_0.loc26) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc26_5: init %i32 = converted %int_0.loc26, %int.convert_checked.loc26 [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc26: init %i32 = call %bound_method.loc26_5.2(%int_0.loc26) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc26_5: init %i32 = converted %int_0.loc26, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc26 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: assign %A.var, %.loc26_5 // CHECK:STDOUT: %.loc26_12: type = splice_block %i32.loc26 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc26: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -146,27 +146,27 @@ fn N.M.B() -> i32 { // CHECK:STDOUT: %A: ref %i32 = bind_name A, %A.var // CHECK:STDOUT: %A.ref.loc29: ref %i32 = name_ref A, %A // CHECK:STDOUT: %.loc29: %i32 = bind_value %A.ref.loc29 -// CHECK:STDOUT: %Op.bound.loc26_5.1: = bound_method %A.var, constants.%Op.e6a -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.e6a, @Op.1(constants.%i32) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc26_5.3: = bound_method %A.var, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc26_5.1: = bound_method %A.var, constants.%T.as.Destroy.impl.Op.e6a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc26_5.3: = bound_method %A.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc26_5.1: %ptr.235 = addr_of %A.var -// CHECK:STDOUT: %no_op.loc26_5.1: init %empty_tuple.type = call %bound_method.loc26_5.3(%addr.loc26_5.1) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc26_5.1: init %empty_tuple.type = call %bound_method.loc26_5.3(%addr.loc26_5.1) // CHECK:STDOUT: return %.loc29 // CHECK:STDOUT: // CHECK:STDOUT: !if.else: // CHECK:STDOUT: %int_0.loc31: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %impl.elem0.loc31: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc31_11.1: = bound_method %int_0.loc31, %impl.elem0.loc31 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn.loc31: = specific_function %impl.elem0.loc31, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc31: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc31_11.1: = bound_method %int_0.loc31, %impl.elem0.loc31 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc31: = specific_function %impl.elem0.loc31, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc31_11.2: = bound_method %int_0.loc31, %specific_fn.loc31 [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked.loc31: init %i32 = call %bound_method.loc31_11.2(%int_0.loc31) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc31_11.1: %i32 = value_of_initializer %int.convert_checked.loc31 [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc31: init %i32 = call %bound_method.loc31_11.2(%int_0.loc31) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc31_11.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc31 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc31_11.2: %i32 = converted %int_0.loc31, %.loc31_11.1 [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %Op.bound.loc26_5.2: = bound_method %A.var, constants.%Op.e6a -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.e6a, @Op.1(constants.%i32) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc26_5.4: = bound_method %A.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc26_5.2: = bound_method %A.var, constants.%T.as.Destroy.impl.Op.e6a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc26_5.4: = bound_method %A.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc26_5.2: %ptr.235 = addr_of %A.var -// CHECK:STDOUT: %no_op.loc26_5.2: init %empty_tuple.type = call %bound_method.loc26_5.4(%addr.loc26_5.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc26_5.2: init %empty_tuple.type = call %bound_method.loc26_5.4(%addr.loc26_5.2) // CHECK:STDOUT: return %.loc31_11.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/builtin/and.carbon b/toolchain/check/testdata/operators/builtin/and.carbon index 5bb43835e0d2..c6276e3308bd 100644 --- a/toolchain/check/testdata/operators/builtin/and.carbon +++ b/toolchain/check/testdata/operators/builtin/and.carbon @@ -50,14 +50,14 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.1, @Destroy.impl(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a63: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ea3: %T.as.Destroy.impl.Op.type.a63 = struct_value () [concrete] // CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] -// CHECK:STDOUT: %Op.specific_fn.393: = specific_function %Op.ea3, @Op.1(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %Op.type.655: type = fn_type @Op.1, @Destroy.impl(bool) [concrete] -// CHECK:STDOUT: %Op.8b7: %Op.type.655 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.393: = specific_function %T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.655: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(bool) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.8b7: %T.as.Destroy.impl.Op.type.655 = struct_value () [concrete] // CHECK:STDOUT: %ptr.bb2: type = ptr_type bool [concrete] -// CHECK:STDOUT: %Op.specific_fn.c3f: = specific_function %Op.8b7, @Op.1(bool) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.c3f: = specific_function %T.as.Destroy.impl.Op.8b7, @T.as.Destroy.impl.Op(bool) [concrete] // CHECK:STDOUT: %PartialConstant.type: type = fn_type @PartialConstant [concrete] // CHECK:STDOUT: %PartialConstant: %PartialConstant.type = struct_value () [concrete] // CHECK:STDOUT: } @@ -87,9 +87,9 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: %return.patt: %pattern_type.831 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.831 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc15_11.1: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc15_11.2: type = converted %bool.make_type, %.loc15_11.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc15_11.1: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc15_11.2: type = converted %Bool.call, %.loc15_11.1 [concrete = bool] // CHECK:STDOUT: %return.param: ref bool = out_param call_param0 // CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } @@ -97,9 +97,9 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: %return.patt: %pattern_type.831 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.831 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc16_11.1: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc16_11.2: type = converted %bool.make_type, %.loc16_11.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc16_11.1: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc16_11.2: type = converted %Bool.call, %.loc16_11.1 [concrete = bool] // CHECK:STDOUT: %return.param: ref bool = out_param call_param0 // CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } @@ -107,9 +107,9 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: %return.patt: %pattern_type.831 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.831 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc18_13.1: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc18_13.2: type = converted %bool.make_type, %.loc18_13.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc18_13.1: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc18_13.2: type = converted %Bool.call, %.loc18_13.1 [concrete = bool] // CHECK:STDOUT: %return.param: ref bool = out_param call_param0 // CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } @@ -120,9 +120,9 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: } { // CHECK:STDOUT: %x.param: bool = value_param call_param0 // CHECK:STDOUT: %.loc29_23.1: type = splice_block %.loc29_23.3 [concrete = bool] { -// CHECK:STDOUT: %bool.make_type.loc29: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc29_23.2: type = value_of_initializer %bool.make_type.loc29 [concrete = bool] -// CHECK:STDOUT: %.loc29_23.3: type = converted %bool.make_type.loc29, %.loc29_23.2 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc29: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc29_23.2: type = value_of_initializer %Bool.call.loc29 [concrete = bool] +// CHECK:STDOUT: %.loc29_23.3: type = converted %Bool.call.loc29, %.loc29_23.2 [concrete = bool] // CHECK:STDOUT: } // CHECK:STDOUT: %x: bool = bind_name x, %x.param // CHECK:STDOUT: } @@ -186,9 +186,9 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: if %.loc23_18 br !if.expr.then.loc23 else br !if.expr.else.loc23 // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.then.loc23: -// CHECK:STDOUT: %bool.make_type.loc23: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc23_32.1: type = value_of_initializer %bool.make_type.loc23 [concrete = bool] -// CHECK:STDOUT: %.loc23_32.2: type = converted %bool.make_type.loc23, %.loc23_32.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc23: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc23_32.1: type = value_of_initializer %Bool.call.loc23 [concrete = bool] +// CHECK:STDOUT: %.loc23_32.2: type = converted %Bool.call.loc23, %.loc23_32.1 [concrete = bool] // CHECK:STDOUT: br !if.expr.result.loc23(%.loc23_32.2) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.else.loc23: @@ -227,9 +227,9 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: if %.loc24_18 br !if.expr.then.loc24 else br !if.expr.else.loc24 // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.then.loc24: -// CHECK:STDOUT: %bool.make_type.loc24: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc24_33.1: type = value_of_initializer %bool.make_type.loc24 [concrete = bool] -// CHECK:STDOUT: %.loc24_33.2: type = converted %bool.make_type.loc24, %.loc24_33.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc24: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc24_33.1: type = value_of_initializer %Bool.call.loc24 [concrete = bool] +// CHECK:STDOUT: %.loc24_33.2: type = converted %Bool.call.loc24, %.loc24_33.1 [concrete = bool] // CHECK:STDOUT: br !if.expr.result.loc24(%.loc24_33.2) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.else.loc24: @@ -268,9 +268,9 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: if %.loc25_19 br !if.expr.then.loc25 else br !if.expr.else.loc25 // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.then.loc25: -// CHECK:STDOUT: %bool.make_type.loc25: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc25_33.1: type = value_of_initializer %bool.make_type.loc25 [concrete = bool] -// CHECK:STDOUT: %.loc25_33.2: type = converted %bool.make_type.loc25, %.loc25_33.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc25: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc25_33.1: type = value_of_initializer %Bool.call.loc25 [concrete = bool] +// CHECK:STDOUT: %.loc25_33.2: type = converted %Bool.call.loc25, %.loc25_33.1 [concrete = bool] // CHECK:STDOUT: br !if.expr.result.loc25(%.loc25_33.2) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.else.loc25: @@ -309,9 +309,9 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: if %.loc26_19 br !if.expr.then.loc26 else br !if.expr.else.loc26 // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.then.loc26: -// CHECK:STDOUT: %bool.make_type.loc26: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc26_34.1: type = value_of_initializer %bool.make_type.loc26 [concrete = bool] -// CHECK:STDOUT: %.loc26_34.2: type = converted %bool.make_type.loc26, %.loc26_34.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc26: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc26_34.1: type = value_of_initializer %Bool.call.loc26 [concrete = bool] +// CHECK:STDOUT: %.loc26_34.2: type = converted %Bool.call.loc26, %.loc26_34.1 [concrete = bool] // CHECK:STDOUT: br !if.expr.result.loc26(%.loc26_34.2) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.else.loc26: @@ -325,26 +325,26 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: // CHECK:STDOUT: !.loc26_7: // CHECK:STDOUT: %d: ref %empty_tuple.type = bind_name d, %d.var -// CHECK:STDOUT: %Op.bound.loc26: = bound_method %d.var, constants.%Op.ea3 -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.ea3, @Op.1(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn.393] -// CHECK:STDOUT: %bound_method.loc26: = bound_method %d.var, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc26: = bound_method %d.var, constants.%T.as.Destroy.impl.Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.393] +// CHECK:STDOUT: %bound_method.loc26: = bound_method %d.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc26: %ptr.843 = addr_of %d.var -// CHECK:STDOUT: %no_op.loc26: init %empty_tuple.type = call %bound_method.loc26(%addr.loc26) -// CHECK:STDOUT: %Op.bound.loc25: = bound_method %c.var, constants.%Op.ea3 -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.ea3, @Op.1(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn.393] -// CHECK:STDOUT: %bound_method.loc25: = bound_method %c.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc26: init %empty_tuple.type = call %bound_method.loc26(%addr.loc26) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc25: = bound_method %c.var, constants.%T.as.Destroy.impl.Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.393] +// CHECK:STDOUT: %bound_method.loc25: = bound_method %c.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc25: %ptr.843 = addr_of %c.var -// CHECK:STDOUT: %no_op.loc25: init %empty_tuple.type = call %bound_method.loc25(%addr.loc25) -// CHECK:STDOUT: %Op.bound.loc24: = bound_method %b.var, constants.%Op.ea3 -// CHECK:STDOUT: %Op.specific_fn.3: = specific_function constants.%Op.ea3, @Op.1(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn.393] -// CHECK:STDOUT: %bound_method.loc24: = bound_method %b.var, %Op.specific_fn.3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc25: init %empty_tuple.type = call %bound_method.loc25(%addr.loc25) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc24: = bound_method %b.var, constants.%T.as.Destroy.impl.Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.3: = specific_function constants.%T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.393] +// CHECK:STDOUT: %bound_method.loc24: = bound_method %b.var, %T.as.Destroy.impl.Op.specific_fn.3 // CHECK:STDOUT: %addr.loc24: %ptr.843 = addr_of %b.var -// CHECK:STDOUT: %no_op.loc24: init %empty_tuple.type = call %bound_method.loc24(%addr.loc24) -// CHECK:STDOUT: %Op.bound.loc23: = bound_method %a.var, constants.%Op.8b7 -// CHECK:STDOUT: %Op.specific_fn.4: = specific_function constants.%Op.8b7, @Op.1(bool) [concrete = constants.%Op.specific_fn.c3f] -// CHECK:STDOUT: %bound_method.loc23: = bound_method %a.var, %Op.specific_fn.4 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc24: init %empty_tuple.type = call %bound_method.loc24(%addr.loc24) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc23: = bound_method %a.var, constants.%T.as.Destroy.impl.Op.8b7 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.4: = specific_function constants.%T.as.Destroy.impl.Op.8b7, @T.as.Destroy.impl.Op(bool) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.c3f] +// CHECK:STDOUT: %bound_method.loc23: = bound_method %a.var, %T.as.Destroy.impl.Op.specific_fn.4 // CHECK:STDOUT: %addr.loc23: %ptr.bb2 = addr_of %a.var -// CHECK:STDOUT: %no_op.loc23: init %empty_tuple.type = call %bound_method.loc23(%addr.loc23) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc23: init %empty_tuple.type = call %bound_method.loc23(%addr.loc23) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -375,9 +375,9 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: if %.loc30_19 br !if.expr.then else br !if.expr.else // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.then: -// CHECK:STDOUT: %bool.make_type.loc30: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc30_30.1: type = value_of_initializer %bool.make_type.loc30 [concrete = bool] -// CHECK:STDOUT: %.loc30_30.2: type = converted %bool.make_type.loc30, %.loc30_30.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc30: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc30_30.1: type = value_of_initializer %Bool.call.loc30 [concrete = bool] +// CHECK:STDOUT: %.loc30_30.2: type = converted %Bool.call.loc30, %.loc30_30.1 [concrete = bool] // CHECK:STDOUT: br !if.expr.result(%.loc30_30.2) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.else: @@ -391,11 +391,11 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: // CHECK:STDOUT: !.loc30_7: // CHECK:STDOUT: %a: ref %empty_tuple.type = bind_name a, %a.var -// CHECK:STDOUT: %Op.bound: = bound_method %a.var, constants.%Op.ea3 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.ea3, @Op.1(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn.393] -// CHECK:STDOUT: %bound_method: = bound_method %a.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %a.var, constants.%T.as.Destroy.impl.Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.393] +// CHECK:STDOUT: %bound_method: = bound_method %a.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.843 = addr_of %a.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/builtin/assignment.carbon b/toolchain/check/testdata/operators/builtin/assignment.carbon index 6f8b973011fa..0aca5157e23b 100644 --- a/toolchain/check/testdata/operators/builtin/assignment.carbon +++ b/toolchain/check/testdata/operators/builtin/assignment.carbon @@ -45,22 +45,22 @@ fn Main() { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.221: = bound_method %int_12.6a3, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.dae: = bound_method %int_12.6a3, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.221: = bound_method %int_12.6a3, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.dae: = bound_method %int_12.6a3, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_12.1e1: %i32 = int_value 12 [concrete] // CHECK:STDOUT: %int_9.988: Core.IntLiteral = int_value 9 [concrete] -// CHECK:STDOUT: %Convert.bound.9e2: = bound_method %int_9.988, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.cd3: = bound_method %int_9.988, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.9e2: = bound_method %int_9.988, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.cd3: = bound_method %int_9.988, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_9.f88: %i32 = int_value 9 [concrete] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] // CHECK:STDOUT: %tuple.type.d07: type = tuple_type (%i32, %i32) [concrete] @@ -69,21 +69,21 @@ fn Main() { // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %tuple.type.f94: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %tuple: %tuple.type.d07 = tuple_value (%int_1.5d2, %int_2.ef8) [concrete] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [concrete] -// CHECK:STDOUT: %Convert.bound.b30: = bound_method %int_3.1ba, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.047: = bound_method %int_3.1ba, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.b30: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.047: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_3.822: %i32 = int_value 3 [concrete] // CHECK:STDOUT: %int_4.0c1: Core.IntLiteral = int_value 4 [concrete] -// CHECK:STDOUT: %Convert.bound.ac3: = bound_method %int_4.0c1, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.1da: = bound_method %int_4.0c1, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ac3: = bound_method %int_4.0c1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.1da: = bound_method %int_4.0c1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_4.940: %i32 = int_value 4 [concrete] // CHECK:STDOUT: %struct_type.a.b.501: type = struct_type {.a: %i32, .b: %i32} [concrete] // CHECK:STDOUT: %ptr.3ee: type = ptr_type %struct_type.a.b.501 [concrete] @@ -93,28 +93,28 @@ fn Main() { // CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] // CHECK:STDOUT: %pattern_type.fe8: type = pattern_type %ptr.235 [concrete] // CHECK:STDOUT: %int_5.64b: Core.IntLiteral = int_value 5 [concrete] -// CHECK:STDOUT: %Convert.bound.4e6: = bound_method %int_5.64b, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.a25: = bound_method %int_5.64b, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.4e6: = bound_method %int_5.64b, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.a25: = bound_method %int_5.64b, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_5.0f6: %i32 = int_value 5 [concrete] // CHECK:STDOUT: %true: bool = bool_literal true [concrete] // CHECK:STDOUT: %int_10.64f: Core.IntLiteral = int_value 10 [concrete] -// CHECK:STDOUT: %Convert.bound.491: = bound_method %int_10.64f, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.5ba: = bound_method %int_10.64f, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.491: = bound_method %int_10.64f, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.5ba: = bound_method %int_10.64f, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_10.265: %i32 = int_value 10 [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.ba2: type = fn_type @Op.1, @Destroy.impl(%ptr.235) [concrete] -// CHECK:STDOUT: %Op.649: %Op.type.ba2 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.ba2: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%ptr.235) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.649: %T.as.Destroy.impl.Op.type.ba2 = struct_value () [concrete] // CHECK:STDOUT: %ptr.5d5: type = ptr_type %ptr.235 [concrete] -// CHECK:STDOUT: %Op.specific_fn.829: = specific_function %Op.649, @Op.1(%ptr.235) [concrete] -// CHECK:STDOUT: %Op.type.da3: type = fn_type @Op.1, @Destroy.impl(%struct_type.a.b.501) [concrete] -// CHECK:STDOUT: %Op.9db: %Op.type.da3 = struct_value () [concrete] -// CHECK:STDOUT: %Op.specific_fn.1e0: = specific_function %Op.9db, @Op.1(%struct_type.a.b.501) [concrete] -// CHECK:STDOUT: %Op.type.a4a: type = fn_type @Op.1, @Destroy.impl(%tuple.type.d07) [concrete] -// CHECK:STDOUT: %Op.7c6: %Op.type.a4a = struct_value () [concrete] -// CHECK:STDOUT: %Op.specific_fn.bbb: = specific_function %Op.7c6, @Op.1(%tuple.type.d07) [concrete] -// CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.1, @Destroy.impl(%i32) [concrete] -// CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] -// CHECK:STDOUT: %Op.specific_fn.014: = specific_function %Op.e6a, @Op.1(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.829: = specific_function %T.as.Destroy.impl.Op.649, @T.as.Destroy.impl.Op(%ptr.235) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.da3: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%struct_type.a.b.501) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.9db: %T.as.Destroy.impl.Op.type.da3 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1e0: = specific_function %T.as.Destroy.impl.Op.9db, @T.as.Destroy.impl.Op(%struct_type.a.b.501) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a4a: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%tuple.type.d07) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.7c6: %T.as.Destroy.impl.Op.type.a4a = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.bbb: = specific_function %T.as.Destroy.impl.Op.7c6, @T.as.Destroy.impl.Op(%tuple.type.d07) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a17: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.e6a: %T.as.Destroy.impl.Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.014: = specific_function %T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(%i32) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -127,8 +127,8 @@ fn Main() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -149,12 +149,12 @@ fn Main() { // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref %i32 = var %a.var_patt // CHECK:STDOUT: %int_12: Core.IntLiteral = int_value 12 [concrete = constants.%int_12.6a3] -// CHECK:STDOUT: %impl.elem0.loc16: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc16_3.1: = bound_method %int_12, %impl.elem0.loc16 [concrete = constants.%Convert.bound.221] -// CHECK:STDOUT: %specific_fn.loc16: = specific_function %impl.elem0.loc16, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc16: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc16_3.1: = bound_method %int_12, %impl.elem0.loc16 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.221] +// CHECK:STDOUT: %specific_fn.loc16: = specific_function %impl.elem0.loc16, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc16_3.2: = bound_method %int_12, %specific_fn.loc16 [concrete = constants.%bound_method.dae] -// CHECK:STDOUT: %int.convert_checked.loc16: init %i32 = call %bound_method.loc16_3.2(%int_12) [concrete = constants.%int_12.1e1] -// CHECK:STDOUT: %.loc16_3: init %i32 = converted %int_12, %int.convert_checked.loc16 [concrete = constants.%int_12.1e1] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc16: init %i32 = call %bound_method.loc16_3.2(%int_12) [concrete = constants.%int_12.1e1] +// CHECK:STDOUT: %.loc16_3: init %i32 = converted %int_12, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc16 [concrete = constants.%int_12.1e1] // CHECK:STDOUT: assign %a.var, %.loc16_3 // CHECK:STDOUT: %.loc16_10: type = splice_block %i32.loc16 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc16: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -163,12 +163,12 @@ fn Main() { // CHECK:STDOUT: %a: ref %i32 = bind_name a, %a.var // CHECK:STDOUT: %a.ref.loc17: ref %i32 = name_ref a, %a // CHECK:STDOUT: %int_9: Core.IntLiteral = int_value 9 [concrete = constants.%int_9.988] -// CHECK:STDOUT: %impl.elem0.loc17: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc17_5.1: = bound_method %int_9, %impl.elem0.loc17 [concrete = constants.%Convert.bound.9e2] -// CHECK:STDOUT: %specific_fn.loc17: = specific_function %impl.elem0.loc17, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc17: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc17_5.1: = bound_method %int_9, %impl.elem0.loc17 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.9e2] +// CHECK:STDOUT: %specific_fn.loc17: = specific_function %impl.elem0.loc17, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc17_5.2: = bound_method %int_9, %specific_fn.loc17 [concrete = constants.%bound_method.cd3] -// CHECK:STDOUT: %int.convert_checked.loc17: init %i32 = call %bound_method.loc17_5.2(%int_9) [concrete = constants.%int_9.f88] -// CHECK:STDOUT: %.loc17: init %i32 = converted %int_9, %int.convert_checked.loc17 [concrete = constants.%int_9.f88] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc17: init %i32 = call %bound_method.loc17_5.2(%int_9) [concrete = constants.%int_9.f88] +// CHECK:STDOUT: %.loc17: init %i32 = converted %int_9, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc17 [concrete = constants.%int_9.f88] // CHECK:STDOUT: assign %a.ref.loc17, %.loc17 // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %b.patt: %pattern_type.511 = binding_pattern b [concrete] @@ -178,20 +178,20 @@ fn Main() { // CHECK:STDOUT: %int_1.loc19: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2.loc19: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %.loc19_28.1: %tuple.type.f94 = tuple_literal (%int_1.loc19, %int_2.loc19) -// CHECK:STDOUT: %impl.elem0.loc19_28.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc19_28.1: = bound_method %int_1.loc19, %impl.elem0.loc19_28.1 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc19_28.1: = specific_function %impl.elem0.loc19_28.1, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc19_28.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc19_28.1: = bound_method %int_1.loc19, %impl.elem0.loc19_28.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc19_28.1: = specific_function %impl.elem0.loc19_28.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc19_28.2: = bound_method %int_1.loc19, %specific_fn.loc19_28.1 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc19_28.1: init %i32 = call %bound_method.loc19_28.2(%int_1.loc19) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc19_28.2: init %i32 = converted %int_1.loc19, %int.convert_checked.loc19_28.1 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19_28.1: init %i32 = call %bound_method.loc19_28.2(%int_1.loc19) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc19_28.2: init %i32 = converted %int_1.loc19, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19_28.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %tuple.elem0.loc19: ref %i32 = tuple_access %b.var, element0 // CHECK:STDOUT: %.loc19_28.3: init %i32 = initialize_from %.loc19_28.2 to %tuple.elem0.loc19 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %impl.elem0.loc19_28.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc19_28.3: = bound_method %int_2.loc19, %impl.elem0.loc19_28.2 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc19_28.2: = specific_function %impl.elem0.loc19_28.2, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc19_28.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc19_28.3: = bound_method %int_2.loc19, %impl.elem0.loc19_28.2 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc19_28.2: = specific_function %impl.elem0.loc19_28.2, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc19_28.4: = bound_method %int_2.loc19, %specific_fn.loc19_28.2 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc19_28.2: init %i32 = call %bound_method.loc19_28.4(%int_2.loc19) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc19_28.4: init %i32 = converted %int_2.loc19, %int.convert_checked.loc19_28.2 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19_28.2: init %i32 = call %bound_method.loc19_28.4(%int_2.loc19) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc19_28.4: init %i32 = converted %int_2.loc19, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19_28.2 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %tuple.elem1.loc19: ref %i32 = tuple_access %b.var, element1 // CHECK:STDOUT: %.loc19_28.5: init %i32 = initialize_from %.loc19_28.4 to %tuple.elem1.loc19 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc19_28.6: init %tuple.type.d07 = tuple_init (%.loc19_28.3, %.loc19_28.5) to %b.var [concrete = constants.%tuple] @@ -210,23 +210,23 @@ fn Main() { // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] // CHECK:STDOUT: %tuple.elem0.loc20: ref %i32 = tuple_access %b.ref.loc20, element0 // CHECK:STDOUT: %int_3.loc20: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] -// CHECK:STDOUT: %impl.elem0.loc20: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc20_7.1: = bound_method %int_3.loc20, %impl.elem0.loc20 [concrete = constants.%Convert.bound.b30] -// CHECK:STDOUT: %specific_fn.loc20: = specific_function %impl.elem0.loc20, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc20: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc20_7.1: = bound_method %int_3.loc20, %impl.elem0.loc20 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.b30] +// CHECK:STDOUT: %specific_fn.loc20: = specific_function %impl.elem0.loc20, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc20_7.2: = bound_method %int_3.loc20, %specific_fn.loc20 [concrete = constants.%bound_method.047] -// CHECK:STDOUT: %int.convert_checked.loc20: init %i32 = call %bound_method.loc20_7.2(%int_3.loc20) [concrete = constants.%int_3.822] -// CHECK:STDOUT: %.loc20: init %i32 = converted %int_3.loc20, %int.convert_checked.loc20 [concrete = constants.%int_3.822] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc20: init %i32 = call %bound_method.loc20_7.2(%int_3.loc20) [concrete = constants.%int_3.822] +// CHECK:STDOUT: %.loc20: init %i32 = converted %int_3.loc20, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc20 [concrete = constants.%int_3.822] // CHECK:STDOUT: assign %tuple.elem0.loc20, %.loc20 // CHECK:STDOUT: %b.ref.loc21: ref %tuple.type.d07 = name_ref b, %b // CHECK:STDOUT: %int_1.loc21: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %tuple.elem1.loc21: ref %i32 = tuple_access %b.ref.loc21, element1 // CHECK:STDOUT: %int_4.loc21: Core.IntLiteral = int_value 4 [concrete = constants.%int_4.0c1] -// CHECK:STDOUT: %impl.elem0.loc21: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc21_7.1: = bound_method %int_4.loc21, %impl.elem0.loc21 [concrete = constants.%Convert.bound.ac3] -// CHECK:STDOUT: %specific_fn.loc21: = specific_function %impl.elem0.loc21, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc21: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc21_7.1: = bound_method %int_4.loc21, %impl.elem0.loc21 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ac3] +// CHECK:STDOUT: %specific_fn.loc21: = specific_function %impl.elem0.loc21, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc21_7.2: = bound_method %int_4.loc21, %specific_fn.loc21 [concrete = constants.%bound_method.1da] -// CHECK:STDOUT: %int.convert_checked.loc21: init %i32 = call %bound_method.loc21_7.2(%int_4.loc21) [concrete = constants.%int_4.940] -// CHECK:STDOUT: %.loc21: init %i32 = converted %int_4.loc21, %int.convert_checked.loc21 [concrete = constants.%int_4.940] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21: init %i32 = call %bound_method.loc21_7.2(%int_4.loc21) [concrete = constants.%int_4.940] +// CHECK:STDOUT: %.loc21: init %i32 = converted %int_4.loc21, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21 [concrete = constants.%int_4.940] // CHECK:STDOUT: assign %tuple.elem1.loc21, %.loc21 // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %c.patt: %pattern_type.851 = binding_pattern c [concrete] @@ -236,20 +236,20 @@ fn Main() { // CHECK:STDOUT: %int_1.loc23: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2.loc23: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %.loc23_46.1: %struct_type.a.b.cfd = struct_literal (%int_1.loc23, %int_2.loc23) -// CHECK:STDOUT: %impl.elem0.loc23_46.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc23_46.1: = bound_method %int_1.loc23, %impl.elem0.loc23_46.1 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc23_46.1: = specific_function %impl.elem0.loc23_46.1, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc23_46.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc23_46.1: = bound_method %int_1.loc23, %impl.elem0.loc23_46.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc23_46.1: = specific_function %impl.elem0.loc23_46.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc23_46.2: = bound_method %int_1.loc23, %specific_fn.loc23_46.1 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc23_46.1: init %i32 = call %bound_method.loc23_46.2(%int_1.loc23) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc23_46.2: init %i32 = converted %int_1.loc23, %int.convert_checked.loc23_46.1 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc23_46.1: init %i32 = call %bound_method.loc23_46.2(%int_1.loc23) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc23_46.2: init %i32 = converted %int_1.loc23, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc23_46.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc23_46.3: ref %i32 = struct_access %c.var, element0 // CHECK:STDOUT: %.loc23_46.4: init %i32 = initialize_from %.loc23_46.2 to %.loc23_46.3 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %impl.elem0.loc23_46.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc23_46.3: = bound_method %int_2.loc23, %impl.elem0.loc23_46.2 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc23_46.2: = specific_function %impl.elem0.loc23_46.2, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc23_46.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc23_46.3: = bound_method %int_2.loc23, %impl.elem0.loc23_46.2 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc23_46.2: = specific_function %impl.elem0.loc23_46.2, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc23_46.4: = bound_method %int_2.loc23, %specific_fn.loc23_46.2 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc23_46.2: init %i32 = call %bound_method.loc23_46.4(%int_2.loc23) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc23_46.5: init %i32 = converted %int_2.loc23, %int.convert_checked.loc23_46.2 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc23_46.2: init %i32 = call %bound_method.loc23_46.4(%int_2.loc23) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc23_46.5: init %i32 = converted %int_2.loc23, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc23_46.2 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc23_46.6: ref %i32 = struct_access %c.var, element1 // CHECK:STDOUT: %.loc23_46.7: init %i32 = initialize_from %.loc23_46.5 to %.loc23_46.6 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc23_46.8: init %struct_type.a.b.501 = struct_init (%.loc23_46.4, %.loc23_46.7) to %c.var [concrete = constants.%struct] @@ -266,22 +266,22 @@ fn Main() { // CHECK:STDOUT: %c.ref.loc24: ref %struct_type.a.b.501 = name_ref c, %c // CHECK:STDOUT: %.loc24_4: ref %i32 = struct_access %c.ref.loc24, element0 // CHECK:STDOUT: %int_3.loc24: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] -// CHECK:STDOUT: %impl.elem0.loc24: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc24_7.1: = bound_method %int_3.loc24, %impl.elem0.loc24 [concrete = constants.%Convert.bound.b30] -// CHECK:STDOUT: %specific_fn.loc24: = specific_function %impl.elem0.loc24, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc24: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc24_7.1: = bound_method %int_3.loc24, %impl.elem0.loc24 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.b30] +// CHECK:STDOUT: %specific_fn.loc24: = specific_function %impl.elem0.loc24, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc24_7.2: = bound_method %int_3.loc24, %specific_fn.loc24 [concrete = constants.%bound_method.047] -// CHECK:STDOUT: %int.convert_checked.loc24: init %i32 = call %bound_method.loc24_7.2(%int_3.loc24) [concrete = constants.%int_3.822] -// CHECK:STDOUT: %.loc24_7: init %i32 = converted %int_3.loc24, %int.convert_checked.loc24 [concrete = constants.%int_3.822] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc24: init %i32 = call %bound_method.loc24_7.2(%int_3.loc24) [concrete = constants.%int_3.822] +// CHECK:STDOUT: %.loc24_7: init %i32 = converted %int_3.loc24, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc24 [concrete = constants.%int_3.822] // CHECK:STDOUT: assign %.loc24_4, %.loc24_7 // CHECK:STDOUT: %c.ref.loc25: ref %struct_type.a.b.501 = name_ref c, %c // CHECK:STDOUT: %.loc25_4: ref %i32 = struct_access %c.ref.loc25, element1 // CHECK:STDOUT: %int_4.loc25: Core.IntLiteral = int_value 4 [concrete = constants.%int_4.0c1] -// CHECK:STDOUT: %impl.elem0.loc25: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc25_7.1: = bound_method %int_4.loc25, %impl.elem0.loc25 [concrete = constants.%Convert.bound.ac3] -// CHECK:STDOUT: %specific_fn.loc25: = specific_function %impl.elem0.loc25, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc25: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc25_7.1: = bound_method %int_4.loc25, %impl.elem0.loc25 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ac3] +// CHECK:STDOUT: %specific_fn.loc25: = specific_function %impl.elem0.loc25, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc25_7.2: = bound_method %int_4.loc25, %specific_fn.loc25 [concrete = constants.%bound_method.1da] -// CHECK:STDOUT: %int.convert_checked.loc25: init %i32 = call %bound_method.loc25_7.2(%int_4.loc25) [concrete = constants.%int_4.940] -// CHECK:STDOUT: %.loc25_7: init %i32 = converted %int_4.loc25, %int.convert_checked.loc25 [concrete = constants.%int_4.940] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc25: init %i32 = call %bound_method.loc25_7.2(%int_4.loc25) [concrete = constants.%int_4.940] +// CHECK:STDOUT: %.loc25_7: init %i32 = converted %int_4.loc25, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc25 [concrete = constants.%int_4.940] // CHECK:STDOUT: assign %.loc25_4, %.loc25_7 // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %p.patt: %pattern_type.fe8 = binding_pattern p [concrete] @@ -301,12 +301,12 @@ fn Main() { // CHECK:STDOUT: %.loc28_4: %ptr.235 = bind_value %p.ref.loc28 // CHECK:STDOUT: %.loc28_3: ref %i32 = deref %.loc28_4 // CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [concrete = constants.%int_5.64b] -// CHECK:STDOUT: %impl.elem0.loc28: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc28_6.1: = bound_method %int_5, %impl.elem0.loc28 [concrete = constants.%Convert.bound.4e6] -// CHECK:STDOUT: %specific_fn.loc28: = specific_function %impl.elem0.loc28, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc28: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc28_6.1: = bound_method %int_5, %impl.elem0.loc28 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.4e6] +// CHECK:STDOUT: %specific_fn.loc28: = specific_function %impl.elem0.loc28, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc28_6.2: = bound_method %int_5, %specific_fn.loc28 [concrete = constants.%bound_method.a25] -// CHECK:STDOUT: %int.convert_checked.loc28: init %i32 = call %bound_method.loc28_6.2(%int_5) [concrete = constants.%int_5.0f6] -// CHECK:STDOUT: %.loc28_6: init %i32 = converted %int_5, %int.convert_checked.loc28 [concrete = constants.%int_5.0f6] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc28: init %i32 = call %bound_method.loc28_6.2(%int_5) [concrete = constants.%int_5.0f6] +// CHECK:STDOUT: %.loc28_6: init %i32 = converted %int_5, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc28 [concrete = constants.%int_5.0f6] // CHECK:STDOUT: assign %.loc28_3, %.loc28_6 // CHECK:STDOUT: %true: bool = bool_literal true [concrete = constants.%true] // CHECK:STDOUT: if %true br !if.expr.then else br !if.expr.else @@ -325,33 +325,33 @@ fn Main() { // CHECK:STDOUT: %.loc30_5: %ptr.235 = block_arg !if.expr.result // CHECK:STDOUT: %.loc30_3: ref %i32 = deref %.loc30_5 // CHECK:STDOUT: %int_10: Core.IntLiteral = int_value 10 [concrete = constants.%int_10.64f] -// CHECK:STDOUT: %impl.elem0.loc30: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc30_29.1: = bound_method %int_10, %impl.elem0.loc30 [concrete = constants.%Convert.bound.491] -// CHECK:STDOUT: %specific_fn.loc30: = specific_function %impl.elem0.loc30, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc30: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc30_29.1: = bound_method %int_10, %impl.elem0.loc30 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.491] +// CHECK:STDOUT: %specific_fn.loc30: = specific_function %impl.elem0.loc30, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc30_29.2: = bound_method %int_10, %specific_fn.loc30 [concrete = constants.%bound_method.5ba] -// CHECK:STDOUT: %int.convert_checked.loc30: init %i32 = call %bound_method.loc30_29.2(%int_10) [concrete = constants.%int_10.265] -// CHECK:STDOUT: %.loc30_29: init %i32 = converted %int_10, %int.convert_checked.loc30 [concrete = constants.%int_10.265] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc30: init %i32 = call %bound_method.loc30_29.2(%int_10) [concrete = constants.%int_10.265] +// CHECK:STDOUT: %.loc30_29: init %i32 = converted %int_10, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc30 [concrete = constants.%int_10.265] // CHECK:STDOUT: assign %.loc30_3, %.loc30_29 -// CHECK:STDOUT: %Op.bound.loc27: = bound_method %p.var, constants.%Op.649 -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.649, @Op.1(constants.%ptr.235) [concrete = constants.%Op.specific_fn.829] -// CHECK:STDOUT: %bound_method.loc27: = bound_method %p.var, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc27: = bound_method %p.var, constants.%T.as.Destroy.impl.Op.649 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.649, @T.as.Destroy.impl.Op(constants.%ptr.235) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.829] +// CHECK:STDOUT: %bound_method.loc27: = bound_method %p.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc27_3: %ptr.5d5 = addr_of %p.var -// CHECK:STDOUT: %no_op.loc27: init %empty_tuple.type = call %bound_method.loc27(%addr.loc27_3) -// CHECK:STDOUT: %Op.bound.loc23: = bound_method %c.var, constants.%Op.9db -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.9db, @Op.1(constants.%struct_type.a.b.501) [concrete = constants.%Op.specific_fn.1e0] -// CHECK:STDOUT: %bound_method.loc23_3: = bound_method %c.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc27: init %empty_tuple.type = call %bound_method.loc27(%addr.loc27_3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc23: = bound_method %c.var, constants.%T.as.Destroy.impl.Op.9db +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.9db, @T.as.Destroy.impl.Op(constants.%struct_type.a.b.501) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.1e0] +// CHECK:STDOUT: %bound_method.loc23_3: = bound_method %c.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc23: %ptr.3ee = addr_of %c.var -// CHECK:STDOUT: %no_op.loc23: init %empty_tuple.type = call %bound_method.loc23_3(%addr.loc23) -// CHECK:STDOUT: %Op.bound.loc19: = bound_method %b.var, constants.%Op.7c6 -// CHECK:STDOUT: %Op.specific_fn.3: = specific_function constants.%Op.7c6, @Op.1(constants.%tuple.type.d07) [concrete = constants.%Op.specific_fn.bbb] -// CHECK:STDOUT: %bound_method.loc19_3: = bound_method %b.var, %Op.specific_fn.3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc23: init %empty_tuple.type = call %bound_method.loc23_3(%addr.loc23) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc19: = bound_method %b.var, constants.%T.as.Destroy.impl.Op.7c6 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.3: = specific_function constants.%T.as.Destroy.impl.Op.7c6, @T.as.Destroy.impl.Op(constants.%tuple.type.d07) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bbb] +// CHECK:STDOUT: %bound_method.loc19_3: = bound_method %b.var, %T.as.Destroy.impl.Op.specific_fn.3 // CHECK:STDOUT: %addr.loc19: %ptr.261 = addr_of %b.var -// CHECK:STDOUT: %no_op.loc19: init %empty_tuple.type = call %bound_method.loc19_3(%addr.loc19) -// CHECK:STDOUT: %Op.bound.loc16: = bound_method %a.var, constants.%Op.e6a -// CHECK:STDOUT: %Op.specific_fn.4: = specific_function constants.%Op.e6a, @Op.1(constants.%i32) [concrete = constants.%Op.specific_fn.014] -// CHECK:STDOUT: %bound_method.loc16_3.3: = bound_method %a.var, %Op.specific_fn.4 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc19: init %empty_tuple.type = call %bound_method.loc19_3(%addr.loc19) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc16: = bound_method %a.var, constants.%T.as.Destroy.impl.Op.e6a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.4: = specific_function constants.%T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.014] +// CHECK:STDOUT: %bound_method.loc16_3.3: = bound_method %a.var, %T.as.Destroy.impl.Op.specific_fn.4 // CHECK:STDOUT: %addr.loc16: %ptr.235 = addr_of %a.var -// CHECK:STDOUT: %no_op.loc16: init %empty_tuple.type = call %bound_method.loc16_3.3(%addr.loc16) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc16: init %empty_tuple.type = call %bound_method.loc16_3.3(%addr.loc16) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/builtin/fail_and_or_not_in_function.carbon b/toolchain/check/testdata/operators/builtin/fail_and_or_not_in_function.carbon index 114fbd0b550f..6e51a89ebd40 100644 --- a/toolchain/check/testdata/operators/builtin/fail_and_or_not_in_function.carbon +++ b/toolchain/check/testdata/operators/builtin/fail_and_or_not_in_function.carbon @@ -109,9 +109,9 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.else: // CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [concrete = constants.%int_64] -// CHECK:STDOUT: %float.make_type: init type = call constants.%Float(%int_64) [concrete = f64] -// CHECK:STDOUT: %.loc6_24.1: type = value_of_initializer %float.make_type [concrete = f64] -// CHECK:STDOUT: %.loc6_24.2: type = converted %float.make_type, %.loc6_24.1 [concrete = f64] +// CHECK:STDOUT: %Float.call: init type = call constants.%Float(%int_64) [concrete = f64] +// CHECK:STDOUT: %.loc6_24.1: type = value_of_initializer %Float.call [concrete = f64] +// CHECK:STDOUT: %.loc6_24.2: type = converted %Float.call, %.loc6_24.1 [concrete = f64] // CHECK:STDOUT: br !if.expr.result(%.loc6_24.2) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.result: @@ -146,9 +146,9 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.else: // CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [concrete = constants.%int_64] -// CHECK:STDOUT: %float.make_type: init type = call constants.%Float(%int_64) [concrete = f64] -// CHECK:STDOUT: %.loc6_24.1: type = value_of_initializer %float.make_type [concrete = f64] -// CHECK:STDOUT: %.loc6_24.2: type = converted %float.make_type, %.loc6_24.1 [concrete = f64] +// CHECK:STDOUT: %Float.call: init type = call constants.%Float(%int_64) [concrete = f64] +// CHECK:STDOUT: %.loc6_24.1: type = value_of_initializer %Float.call [concrete = f64] +// CHECK:STDOUT: %.loc6_24.2: type = converted %Float.call, %.loc6_24.1 [concrete = f64] // CHECK:STDOUT: br !if.expr.result(%.loc6_24.2) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.result: diff --git a/toolchain/check/testdata/operators/builtin/fail_and_or_partial_constant.carbon b/toolchain/check/testdata/operators/builtin/fail_and_or_partial_constant.carbon index 1c29343bd7e1..737eb02b990c 100644 --- a/toolchain/check/testdata/operators/builtin/fail_and_or_partial_constant.carbon +++ b/toolchain/check/testdata/operators/builtin/fail_and_or_partial_constant.carbon @@ -85,9 +85,9 @@ fn KnownValueButNonConstantCondition(x: bool) { // CHECK:STDOUT: } { // CHECK:STDOUT: %x.param: bool = value_param call_param0 // CHECK:STDOUT: %.loc4_23.1: type = splice_block %.loc4_23.3 [concrete = bool] { -// CHECK:STDOUT: %bool.make_type.loc4: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc4_23.2: type = value_of_initializer %bool.make_type.loc4 [concrete = bool] -// CHECK:STDOUT: %.loc4_23.3: type = converted %bool.make_type.loc4, %.loc4_23.2 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc4: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc4_23.2: type = value_of_initializer %Bool.call.loc4 [concrete = bool] +// CHECK:STDOUT: %.loc4_23.3: type = converted %Bool.call.loc4, %.loc4_23.2 [concrete = bool] // CHECK:STDOUT: } // CHECK:STDOUT: %x: bool = bind_name x, %x.param // CHECK:STDOUT: } @@ -116,9 +116,9 @@ fn KnownValueButNonConstantCondition(x: bool) { // CHECK:STDOUT: if %.loc9_18 br !if.expr.then.loc9 else br !if.expr.else.loc9 // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.then.loc9: -// CHECK:STDOUT: %bool.make_type.loc9: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc9_29.1: type = value_of_initializer %bool.make_type.loc9 [concrete = bool] -// CHECK:STDOUT: %.loc9_29.2: type = converted %bool.make_type.loc9, %.loc9_29.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc9: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc9_29.1: type = value_of_initializer %Bool.call.loc9 [concrete = bool] +// CHECK:STDOUT: %.loc9_29.2: type = converted %Bool.call.loc9, %.loc9_29.1 [concrete = bool] // CHECK:STDOUT: br !if.expr.result.loc9(%.loc9_29.2) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.else.loc9: @@ -154,9 +154,9 @@ fn KnownValueButNonConstantCondition(x: bool) { // CHECK:STDOUT: if %.loc14_19.2 br !if.expr.then.loc14 else br !if.expr.else.loc14 // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.then.loc14: -// CHECK:STDOUT: %bool.make_type.loc14: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc14_29.1: type = value_of_initializer %bool.make_type.loc14 [concrete = bool] -// CHECK:STDOUT: %.loc14_29.2: type = converted %bool.make_type.loc14, %.loc14_29.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc14: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc14_29.1: type = value_of_initializer %Bool.call.loc14 [concrete = bool] +// CHECK:STDOUT: %.loc14_29.2: type = converted %Bool.call.loc14, %.loc14_29.1 [concrete = bool] // CHECK:STDOUT: br !if.expr.result.loc14(%.loc14_29.2) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.else.loc14: @@ -210,9 +210,9 @@ fn KnownValueButNonConstantCondition(x: bool) { // CHECK:STDOUT: } { // CHECK:STDOUT: %x.param: bool = value_param call_param0 // CHECK:STDOUT: %.loc4_41.1: type = splice_block %.loc4_41.3 [concrete = bool] { -// CHECK:STDOUT: %bool.make_type.loc4: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc4_41.2: type = value_of_initializer %bool.make_type.loc4 [concrete = bool] -// CHECK:STDOUT: %.loc4_41.3: type = converted %bool.make_type.loc4, %.loc4_41.2 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc4: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc4_41.2: type = value_of_initializer %Bool.call.loc4 [concrete = bool] +// CHECK:STDOUT: %.loc4_41.3: type = converted %Bool.call.loc4, %.loc4_41.2 [concrete = bool] // CHECK:STDOUT: } // CHECK:STDOUT: %x: bool = bind_name x, %x.param // CHECK:STDOUT: } @@ -241,9 +241,9 @@ fn KnownValueButNonConstantCondition(x: bool) { // CHECK:STDOUT: if %.loc11_15 br !if.expr.then.loc11 else br !if.expr.else.loc11 // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.then.loc11: -// CHECK:STDOUT: %bool.make_type.loc11: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc11_30.1: type = value_of_initializer %bool.make_type.loc11 [concrete = bool] -// CHECK:STDOUT: %.loc11_30.2: type = converted %bool.make_type.loc11, %.loc11_30.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc11: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc11_30.1: type = value_of_initializer %Bool.call.loc11 [concrete = bool] +// CHECK:STDOUT: %.loc11_30.2: type = converted %Bool.call.loc11, %.loc11_30.1 [concrete = bool] // CHECK:STDOUT: br !if.expr.result.loc11(%.loc11_30.2) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.else.loc11: @@ -279,9 +279,9 @@ fn KnownValueButNonConstantCondition(x: bool) { // CHECK:STDOUT: if %.loc16_15.2 br !if.expr.then.loc16 else br !if.expr.else.loc16 // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.then.loc16: -// CHECK:STDOUT: %bool.make_type.loc16: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc16_28.1: type = value_of_initializer %bool.make_type.loc16 [concrete = bool] -// CHECK:STDOUT: %.loc16_28.2: type = converted %bool.make_type.loc16, %.loc16_28.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc16: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc16_28.1: type = value_of_initializer %Bool.call.loc16 [concrete = bool] +// CHECK:STDOUT: %.loc16_28.2: type = converted %Bool.call.loc16, %.loc16_28.1 [concrete = bool] // CHECK:STDOUT: br !if.expr.result.loc16(%.loc16_28.2) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.else.loc16: diff --git a/toolchain/check/testdata/operators/builtin/fail_assignment_to_non_assignable.carbon b/toolchain/check/testdata/operators/builtin/fail_assignment_to_non_assignable.carbon index 353aade726bb..447f4f7d4e0e 100644 --- a/toolchain/check/testdata/operators/builtin/fail_assignment_to_non_assignable.carbon +++ b/toolchain/check/testdata/operators/builtin/fail_assignment_to_non_assignable.carbon @@ -79,18 +79,18 @@ fn Main() { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %tuple.type.f94: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [concrete] // CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [concrete] @@ -98,12 +98,12 @@ fn Main() { // CHECK:STDOUT: %tuple.302: %tuple.type.f94 = tuple_value (%int_3.1ba, %int_4) [concrete] // CHECK:STDOUT: %tuple.ad8: %tuple.type.f94 = tuple_value (%int_1.5b8, %int_2.ecc) [concrete] // CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [concrete] -// CHECK:STDOUT: %Convert.bound.d04: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b6e: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b6e: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: %tuple.type.d07: type = tuple_type (%i32, %i32) [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %tuple.21c: %tuple.type.d07 = tuple_value (%int_1.5d2, %int_2.ef8) [concrete] // CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] @@ -111,17 +111,17 @@ fn Main() { // CHECK:STDOUT: %struct.a0d: %struct_type.x.y = struct_value (%int_3.1ba, %int_4) [concrete] // CHECK:STDOUT: %struct.004: %struct_type.x.y = struct_value (%int_1.5b8, %int_2.ecc) [concrete] // CHECK:STDOUT: %true: bool = bool_literal true [concrete] -// CHECK:STDOUT: %Convert.bound.b30: = bound_method %int_3.1ba, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.047: = bound_method %int_3.1ba, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.b30: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.047: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_3.822: %i32 = int_value 3 [concrete] // CHECK:STDOUT: %int_10.64f: Core.IntLiteral = int_value 10 [concrete] -// CHECK:STDOUT: %Convert.bound.491: = bound_method %int_10.64f, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.5ba: = bound_method %int_10.64f, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.491: = bound_method %int_10.64f, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.5ba: = bound_method %int_10.64f, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_10.265: %i32 = int_value 10 [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.1, @Destroy.impl(%i32) [concrete] -// CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.e6a, @Op.1(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a17: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.e6a: %T.as.Destroy.impl.Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(%i32) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -134,8 +134,8 @@ fn Main() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -168,12 +168,12 @@ fn Main() { // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [concrete = constants.%F] // CHECK:STDOUT: %F.call: init %i32 = call %F.ref() // CHECK:STDOUT: %int_1.loc27: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0.loc27: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc27_7.1: = bound_method %int_1.loc27, %impl.elem0.loc27 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc27: = specific_function %impl.elem0.loc27, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc27: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc27_7.1: = bound_method %int_1.loc27, %impl.elem0.loc27 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc27: = specific_function %impl.elem0.loc27, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc27_7.2: = bound_method %int_1.loc27, %specific_fn.loc27 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc27: init %i32 = call %bound_method.loc27_7.2(%int_1.loc27) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc27: init %i32 = converted %int_1.loc27, %int.convert_checked.loc27 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc27: init %i32 = call %bound_method.loc27_7.2(%int_1.loc27) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc27: init %i32 = converted %int_1.loc27, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc27 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: assign %F.call, %.loc27 // CHECK:STDOUT: %int_1.loc32: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2.loc32: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] @@ -196,12 +196,12 @@ fn Main() { // CHECK:STDOUT: } // CHECK:STDOUT: %n.var: ref %i32 = var %n.var_patt // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %impl.elem0.loc33: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc33_3.1: = bound_method %int_0, %impl.elem0.loc33 [concrete = constants.%Convert.bound.d04] -// CHECK:STDOUT: %specific_fn.loc33: = specific_function %impl.elem0.loc33, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc33: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc33_3.1: = bound_method %int_0, %impl.elem0.loc33 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04] +// CHECK:STDOUT: %specific_fn.loc33: = specific_function %impl.elem0.loc33, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc33_3.2: = bound_method %int_0, %specific_fn.loc33 [concrete = constants.%bound_method.b6e] -// CHECK:STDOUT: %int.convert_checked.loc33: init %i32 = call %bound_method.loc33_3.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc33_3: init %i32 = converted %int_0, %int.convert_checked.loc33 [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc33: init %i32 = call %bound_method.loc33_3.2(%int_0) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc33_3: init %i32 = converted %int_0, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc33 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: assign %n.var, %.loc33_3 // CHECK:STDOUT: %.loc33_10: type = splice_block %i32.loc33 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc33: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -214,20 +214,20 @@ fn Main() { // CHECK:STDOUT: %int_1.loc38: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2.loc38: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %.loc38_17.1: %tuple.type.f94 = tuple_literal (%int_1.loc38, %int_2.loc38) -// CHECK:STDOUT: %impl.elem0.loc38_17.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc38_17.1: = bound_method %int_1.loc38, %impl.elem0.loc38_17.1 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc38_17.1: = specific_function %impl.elem0.loc38_17.1, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc38_17.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc38_17.1: = bound_method %int_1.loc38, %impl.elem0.loc38_17.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc38_17.1: = specific_function %impl.elem0.loc38_17.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc38_17.2: = bound_method %int_1.loc38, %specific_fn.loc38_17.1 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc38_17.1: init %i32 = call %bound_method.loc38_17.2(%int_1.loc38) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc38_17.2: init %i32 = converted %int_1.loc38, %int.convert_checked.loc38_17.1 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc38_17.1: init %i32 = call %bound_method.loc38_17.2(%int_1.loc38) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc38_17.2: init %i32 = converted %int_1.loc38, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc38_17.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %tuple.elem0.loc38: %i32 = tuple_access %.loc38_8.1, element0 // CHECK:STDOUT: %.loc38_17.3: init %i32 = initialize_from %.loc38_17.2 to %tuple.elem0.loc38 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %impl.elem0.loc38_17.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc38_17.3: = bound_method %int_2.loc38, %impl.elem0.loc38_17.2 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc38_17.2: = specific_function %impl.elem0.loc38_17.2, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc38_17.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc38_17.3: = bound_method %int_2.loc38, %impl.elem0.loc38_17.2 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc38_17.2: = specific_function %impl.elem0.loc38_17.2, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc38_17.4: = bound_method %int_2.loc38, %specific_fn.loc38_17.2 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc38_17.2: init %i32 = call %bound_method.loc38_17.4(%int_2.loc38) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc38_17.4: init %i32 = converted %int_2.loc38, %int.convert_checked.loc38_17.2 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc38_17.2: init %i32 = call %bound_method.loc38_17.4(%int_2.loc38) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc38_17.4: init %i32 = converted %int_2.loc38, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc38_17.2 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %tuple.elem1.loc38: %i32 = tuple_access %.loc38_8.1, element1 // CHECK:STDOUT: %.loc38_17.5: init %i32 = initialize_from %.loc38_17.4 to %tuple.elem1.loc38 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc38_17.6: init %tuple.type.d07 = tuple_init (%.loc38_17.3, %.loc38_17.5) to %.loc38_8.1 [concrete = constants.%tuple.21c] @@ -265,35 +265,35 @@ fn Main() { // CHECK:STDOUT: %int_1.loc53: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_32.loc53: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc53: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc53_12: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc53_12.1: = bound_method %int_1.loc53, %impl.elem0.loc53_12 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc53_12: = specific_function %impl.elem0.loc53_12, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc53_12: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc53_12.1: = bound_method %int_1.loc53, %impl.elem0.loc53_12 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc53_12: = specific_function %impl.elem0.loc53_12, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc53_12.2: = bound_method %int_1.loc53, %specific_fn.loc53_12 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc53_12: init %i32 = call %bound_method.loc53_12.2(%int_1.loc53) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc53_12.1: %i32 = value_of_initializer %int.convert_checked.loc53_12 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc53_12: init %i32 = call %bound_method.loc53_12.2(%int_1.loc53) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc53_12.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc53_12 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc53_12.2: %i32 = converted %int_1.loc53, %.loc53_12.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: br !if.expr.result.loc53(%.loc53_12.2) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.else.loc53: // CHECK:STDOUT: %int_2.loc53: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %impl.elem0.loc53_19: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc53_19.1: = bound_method %int_2.loc53, %impl.elem0.loc53_19 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc53_19: = specific_function %impl.elem0.loc53_19, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc53_19: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc53_19.1: = bound_method %int_2.loc53, %impl.elem0.loc53_19 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc53_19: = specific_function %impl.elem0.loc53_19, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc53_19.2: = bound_method %int_2.loc53, %specific_fn.loc53_19 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc53_19: init %i32 = call %bound_method.loc53_19.2(%int_2.loc53) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc53_19.1: %i32 = value_of_initializer %int.convert_checked.loc53_19 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc53_19: init %i32 = call %bound_method.loc53_19.2(%int_2.loc53) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc53_19.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc53_19 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc53_19.2: %i32 = converted %int_2.loc53, %.loc53_19.1 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: br !if.expr.result.loc53(%.loc53_19.2) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.result.loc53: // CHECK:STDOUT: %.loc53_4: %i32 = block_arg !if.expr.result.loc53 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %int_3.loc53: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] -// CHECK:STDOUT: %impl.elem0.loc53_27: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc53_27.1: = bound_method %int_3.loc53, %impl.elem0.loc53_27 [concrete = constants.%Convert.bound.b30] -// CHECK:STDOUT: %specific_fn.loc53_27: = specific_function %impl.elem0.loc53_27, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc53_27: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc53_27.1: = bound_method %int_3.loc53, %impl.elem0.loc53_27 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.b30] +// CHECK:STDOUT: %specific_fn.loc53_27: = specific_function %impl.elem0.loc53_27, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc53_27.2: = bound_method %int_3.loc53, %specific_fn.loc53_27 [concrete = constants.%bound_method.047] -// CHECK:STDOUT: %int.convert_checked.loc53_27: init %i32 = call %bound_method.loc53_27.2(%int_3.loc53) [concrete = constants.%int_3.822] -// CHECK:STDOUT: %.loc53_27: init %i32 = converted %int_3.loc53, %int.convert_checked.loc53_27 [concrete = constants.%int_3.822] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc53_27: init %i32 = call %bound_method.loc53_27.2(%int_3.loc53) [concrete = constants.%int_3.822] +// CHECK:STDOUT: %.loc53_27: init %i32 = converted %int_3.loc53, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc53_27 [concrete = constants.%int_3.822] // CHECK:STDOUT: assign %.loc53_4, %.loc53_27 // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %a.patt: %pattern_type.7ce = binding_pattern a [concrete] @@ -321,23 +321,23 @@ fn Main() { // CHECK:STDOUT: !if.expr.result.loc61: // CHECK:STDOUT: %.loc61_4: %i32 = block_arg !if.expr.result.loc61 // CHECK:STDOUT: %int_10: Core.IntLiteral = int_value 10 [concrete = constants.%int_10.64f] -// CHECK:STDOUT: %impl.elem0.loc61: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc61_27.1: = bound_method %int_10, %impl.elem0.loc61 [concrete = constants.%Convert.bound.491] -// CHECK:STDOUT: %specific_fn.loc61: = specific_function %impl.elem0.loc61, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc61: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc61_27.1: = bound_method %int_10, %impl.elem0.loc61 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.491] +// CHECK:STDOUT: %specific_fn.loc61: = specific_function %impl.elem0.loc61, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc61_27.2: = bound_method %int_10, %specific_fn.loc61 [concrete = constants.%bound_method.5ba] -// CHECK:STDOUT: %int.convert_checked.loc61: init %i32 = call %bound_method.loc61_27.2(%int_10) [concrete = constants.%int_10.265] -// CHECK:STDOUT: %.loc61_27: init %i32 = converted %int_10, %int.convert_checked.loc61 [concrete = constants.%int_10.265] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc61: init %i32 = call %bound_method.loc61_27.2(%int_10) [concrete = constants.%int_10.265] +// CHECK:STDOUT: %.loc61_27: init %i32 = converted %int_10, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc61 [concrete = constants.%int_10.265] // CHECK:STDOUT: assign %.loc61_4, %.loc61_27 -// CHECK:STDOUT: %Op.bound.loc56: = bound_method %a.var, constants.%Op.e6a -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.e6a, @Op.1(constants.%i32) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc56: = bound_method %a.var, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc56: = bound_method %a.var, constants.%T.as.Destroy.impl.Op.e6a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc56: = bound_method %a.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc56: %ptr.235 = addr_of %a.var -// CHECK:STDOUT: %no_op.loc56: init %empty_tuple.type = call %bound_method.loc56(%addr.loc56) -// CHECK:STDOUT: %Op.bound.loc33: = bound_method %n.var, constants.%Op.e6a -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.e6a, @Op.1(constants.%i32) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc33_3.3: = bound_method %n.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc56: init %empty_tuple.type = call %bound_method.loc56(%addr.loc56) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc33: = bound_method %n.var, constants.%T.as.Destroy.impl.Op.e6a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc33_3.3: = bound_method %n.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc33: %ptr.235 = addr_of %n.var -// CHECK:STDOUT: %no_op.loc33: init %empty_tuple.type = call %bound_method.loc33_3.3(%addr.loc33) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc33: init %empty_tuple.type = call %bound_method.loc33_3.3(%addr.loc33) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/builtin/fail_redundant_compound_access.carbon b/toolchain/check/testdata/operators/builtin/fail_redundant_compound_access.carbon index 0648b66bf5e0..e15f748dedbc 100644 --- a/toolchain/check/testdata/operators/builtin/fail_redundant_compound_access.carbon +++ b/toolchain/check/testdata/operators/builtin/fail_redundant_compound_access.carbon @@ -43,30 +43,30 @@ fn Main() { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.d04: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.b6e: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.b6e: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete] // CHECK:STDOUT: %Main: %Main.type = struct_value () [concrete] // CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [concrete] -// CHECK:STDOUT: %Convert.bound.b30: = bound_method %int_3.1ba, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.047: = bound_method %int_3.1ba, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.b30: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.047: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_3.822: %i32 = int_value 3 [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.2, @Destroy.impl(%i32) [concrete] -// CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a17: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.e6a: %T.as.Destroy.impl.Op.type.a17 = struct_value () [concrete] // CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.e6a, @Op.2(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(%i32) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -79,8 +79,8 @@ fn Main() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -106,12 +106,12 @@ fn Main() { // CHECK:STDOUT: fn @F() -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc15_25.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Convert.bound.d04] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc15_25.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc15_25.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method.b6e] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc15_25.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc15_25.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc15_25.2(%int_0) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc15_25.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc15_25.2: %i32 = converted %int_0, %.loc15_25.1 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: return %.loc15_25.2 // CHECK:STDOUT: } @@ -124,12 +124,12 @@ fn Main() { // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref %i32 = var %a.var_patt // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc18_3.1: = bound_method %int_3, %impl.elem0 [concrete = constants.%Convert.bound.b30] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc18_3.1: = bound_method %int_3, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.b30] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc18_3.2: = bound_method %int_3, %specific_fn [concrete = constants.%bound_method.047] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc18_3.2(%int_3) [concrete = constants.%int_3.822] -// CHECK:STDOUT: %.loc18_3: init %i32 = converted %int_3, %int.convert_checked [concrete = constants.%int_3.822] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc18_3.2(%int_3) [concrete = constants.%int_3.822] +// CHECK:STDOUT: %.loc18_3: init %i32 = converted %int_3, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_3.822] // CHECK:STDOUT: assign %a.var, %.loc18_3 // CHECK:STDOUT: %.loc18_10: type = splice_block %i32 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -146,11 +146,11 @@ fn Main() { // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [concrete = constants.%F] // CHECK:STDOUT: %F.call: init %i32 = call %F.ref() // CHECK:STDOUT: assign %a.ref.loc28_3, %F.call -// CHECK:STDOUT: %Op.bound: = bound_method %a.var, constants.%Op.e6a -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.e6a, @Op.2(constants.%i32) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc18_3.3: = bound_method %a.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %a.var, constants.%T.as.Destroy.impl.Op.e6a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc18_3.3: = bound_method %a.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.235 = addr_of %a.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc18_3.3(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc18_3.3(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/builtin/fail_type_mismatch.carbon b/toolchain/check/testdata/operators/builtin/fail_type_mismatch.carbon index f8ef3595143e..284826978895 100644 --- a/toolchain/check/testdata/operators/builtin/fail_type_mismatch.carbon +++ b/toolchain/check/testdata/operators/builtin/fail_type_mismatch.carbon @@ -36,10 +36,10 @@ fn Main() { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.655: type = fn_type @Op.1, @Destroy.impl(bool) [concrete] -// CHECK:STDOUT: %Op.8b7: %Op.type.655 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.655: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(bool) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.8b7: %T.as.Destroy.impl.Op.type.655 = struct_value () [concrete] // CHECK:STDOUT: %ptr.bb2: type = ptr_type bool [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.8b7, @Op.1(bool) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.8b7, @T.as.Destroy.impl.Op(bool) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -76,16 +76,16 @@ fn Main() { // CHECK:STDOUT: %.loc23_17.2: = not [concrete = ] // CHECK:STDOUT: assign %x.var, // CHECK:STDOUT: %.loc23_10.1: type = splice_block %.loc23_10.3 [concrete = bool] { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc23_10.2: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc23_10.3: type = converted %bool.make_type, %.loc23_10.2 [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc23_10.2: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc23_10.3: type = converted %Bool.call, %.loc23_10.2 [concrete = bool] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref bool = bind_name x, %x.var -// CHECK:STDOUT: %Op.bound: = bound_method %x.var, constants.%Op.8b7 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.8b7, @Op.1(bool) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %x.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %x.var, constants.%T.as.Destroy.impl.Op.8b7 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.8b7, @T.as.Destroy.impl.Op(bool) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %x.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.bb2 = addr_of %x.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/builtin/fail_type_mismatch_assignment.carbon b/toolchain/check/testdata/operators/builtin/fail_type_mismatch_assignment.carbon index 47bd4593c0c4..b2aefa0ba6f1 100644 --- a/toolchain/check/testdata/operators/builtin/fail_type_mismatch_assignment.carbon +++ b/toolchain/check/testdata/operators/builtin/fail_type_mismatch_assignment.carbon @@ -39,25 +39,25 @@ fn Main() { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_3.1ba, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_3.1ba, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_3.822: %i32 = int_value 3 [concrete] // CHECK:STDOUT: %float: f64 = float_literal 5.6000000000000005 [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.1, @Destroy.impl(%i32) [concrete] -// CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a17: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.e6a: %T.as.Destroy.impl.Op.type.a17 = struct_value () [concrete] // CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.e6a, @Op.1(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(%i32) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -70,8 +70,8 @@ fn Main() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -92,12 +92,12 @@ fn Main() { // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref %i32 = var %a.var_patt // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc16_3.1: = bound_method %int_3, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc16_3.1: = bound_method %int_3, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc16_3.2: = bound_method %int_3, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc16_3.2(%int_3) [concrete = constants.%int_3.822] -// CHECK:STDOUT: %.loc16_3: init %i32 = converted %int_3, %int.convert_checked [concrete = constants.%int_3.822] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc16_3.2(%int_3) [concrete = constants.%int_3.822] +// CHECK:STDOUT: %.loc16_3: init %i32 = converted %int_3, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_3.822] // CHECK:STDOUT: assign %a.var, %.loc16_3 // CHECK:STDOUT: %.loc16_10: type = splice_block %i32 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -108,11 +108,11 @@ fn Main() { // CHECK:STDOUT: %float: f64 = float_literal 5.6000000000000005 [concrete = constants.%float] // CHECK:STDOUT: %.loc24: %i32 = converted %float, [concrete = ] // CHECK:STDOUT: assign %a.ref, -// CHECK:STDOUT: %Op.bound: = bound_method %a.var, constants.%Op.e6a -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.e6a, @Op.1(constants.%i32) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc16_3.3: = bound_method %a.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %a.var, constants.%T.as.Destroy.impl.Op.e6a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc16_3.3: = bound_method %a.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.235 = addr_of %a.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc16_3.3(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc16_3.3(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/builtin/or.carbon b/toolchain/check/testdata/operators/builtin/or.carbon index d1b4970c5cd5..6c34bb7d9577 100644 --- a/toolchain/check/testdata/operators/builtin/or.carbon +++ b/toolchain/check/testdata/operators/builtin/or.carbon @@ -50,14 +50,14 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.1, @Destroy.impl(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a63: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ea3: %T.as.Destroy.impl.Op.type.a63 = struct_value () [concrete] // CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] -// CHECK:STDOUT: %Op.specific_fn.393: = specific_function %Op.ea3, @Op.1(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %Op.type.655: type = fn_type @Op.1, @Destroy.impl(bool) [concrete] -// CHECK:STDOUT: %Op.8b7: %Op.type.655 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.393: = specific_function %T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.655: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(bool) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.8b7: %T.as.Destroy.impl.Op.type.655 = struct_value () [concrete] // CHECK:STDOUT: %ptr.bb2: type = ptr_type bool [concrete] -// CHECK:STDOUT: %Op.specific_fn.c3f: = specific_function %Op.8b7, @Op.1(bool) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.c3f: = specific_function %T.as.Destroy.impl.Op.8b7, @T.as.Destroy.impl.Op(bool) [concrete] // CHECK:STDOUT: %PartialConstant.type: type = fn_type @PartialConstant [concrete] // CHECK:STDOUT: %PartialConstant: %PartialConstant.type = struct_value () [concrete] // CHECK:STDOUT: } @@ -87,9 +87,9 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: %return.patt: %pattern_type.831 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.831 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc15_11.1: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc15_11.2: type = converted %bool.make_type, %.loc15_11.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc15_11.1: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc15_11.2: type = converted %Bool.call, %.loc15_11.1 [concrete = bool] // CHECK:STDOUT: %return.param: ref bool = out_param call_param0 // CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } @@ -97,9 +97,9 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: %return.patt: %pattern_type.831 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.831 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc16_11.1: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc16_11.2: type = converted %bool.make_type, %.loc16_11.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc16_11.1: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc16_11.2: type = converted %Bool.call, %.loc16_11.1 [concrete = bool] // CHECK:STDOUT: %return.param: ref bool = out_param call_param0 // CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } @@ -107,9 +107,9 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: %return.patt: %pattern_type.831 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.831 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc18_12.1: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc18_12.2: type = converted %bool.make_type, %.loc18_12.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc18_12.1: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc18_12.2: type = converted %Bool.call, %.loc18_12.1 [concrete = bool] // CHECK:STDOUT: %return.param: ref bool = out_param call_param0 // CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } @@ -120,9 +120,9 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: } { // CHECK:STDOUT: %x.param: bool = value_param call_param0 // CHECK:STDOUT: %.loc29_23.1: type = splice_block %.loc29_23.3 [concrete = bool] { -// CHECK:STDOUT: %bool.make_type.loc29: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc29_23.2: type = value_of_initializer %bool.make_type.loc29 [concrete = bool] -// CHECK:STDOUT: %.loc29_23.3: type = converted %bool.make_type.loc29, %.loc29_23.2 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc29: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc29_23.2: type = value_of_initializer %Bool.call.loc29 [concrete = bool] +// CHECK:STDOUT: %.loc29_23.3: type = converted %Bool.call.loc29, %.loc29_23.2 [concrete = bool] // CHECK:STDOUT: } // CHECK:STDOUT: %x: bool = bind_name x, %x.param // CHECK:STDOUT: } @@ -188,9 +188,9 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: if %.loc23_18.2 br !if.expr.then.loc23 else br !if.expr.else.loc23 // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.then.loc23: -// CHECK:STDOUT: %bool.make_type.loc23: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc23_31.1: type = value_of_initializer %bool.make_type.loc23 [concrete = bool] -// CHECK:STDOUT: %.loc23_31.2: type = converted %bool.make_type.loc23, %.loc23_31.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc23: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc23_31.1: type = value_of_initializer %Bool.call.loc23 [concrete = bool] +// CHECK:STDOUT: %.loc23_31.2: type = converted %Bool.call.loc23, %.loc23_31.1 [concrete = bool] // CHECK:STDOUT: br !if.expr.result.loc23(%.loc23_31.2) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.else.loc23: @@ -228,9 +228,9 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: if %.loc24_18.2 br !if.expr.then.loc24 else br !if.expr.else.loc24 // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.then.loc24: -// CHECK:STDOUT: %bool.make_type.loc24: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc24_32.1: type = value_of_initializer %bool.make_type.loc24 [concrete = bool] -// CHECK:STDOUT: %.loc24_32.2: type = converted %bool.make_type.loc24, %.loc24_32.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc24: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc24_32.1: type = value_of_initializer %Bool.call.loc24 [concrete = bool] +// CHECK:STDOUT: %.loc24_32.2: type = converted %Bool.call.loc24, %.loc24_32.1 [concrete = bool] // CHECK:STDOUT: br !if.expr.result.loc24(%.loc24_32.2) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.else.loc24: @@ -268,9 +268,9 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: if %.loc25_19.2 br !if.expr.then.loc25 else br !if.expr.else.loc25 // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.then.loc25: -// CHECK:STDOUT: %bool.make_type.loc25: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc25_32.1: type = value_of_initializer %bool.make_type.loc25 [concrete = bool] -// CHECK:STDOUT: %.loc25_32.2: type = converted %bool.make_type.loc25, %.loc25_32.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc25: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc25_32.1: type = value_of_initializer %Bool.call.loc25 [concrete = bool] +// CHECK:STDOUT: %.loc25_32.2: type = converted %Bool.call.loc25, %.loc25_32.1 [concrete = bool] // CHECK:STDOUT: br !if.expr.result.loc25(%.loc25_32.2) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.else.loc25: @@ -310,9 +310,9 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: if %.loc26_19.2 br !if.expr.then.loc26 else br !if.expr.else.loc26 // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.then.loc26: -// CHECK:STDOUT: %bool.make_type.loc26: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc26_33.1: type = value_of_initializer %bool.make_type.loc26 [concrete = bool] -// CHECK:STDOUT: %.loc26_33.2: type = converted %bool.make_type.loc26, %.loc26_33.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc26: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc26_33.1: type = value_of_initializer %Bool.call.loc26 [concrete = bool] +// CHECK:STDOUT: %.loc26_33.2: type = converted %Bool.call.loc26, %.loc26_33.1 [concrete = bool] // CHECK:STDOUT: br !if.expr.result.loc26(%.loc26_33.2) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.else.loc26: @@ -326,26 +326,26 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: // CHECK:STDOUT: !.loc26_7: // CHECK:STDOUT: %d: ref %empty_tuple.type = bind_name d, %d.var -// CHECK:STDOUT: %Op.bound.loc26: = bound_method %d.var, constants.%Op.ea3 -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.ea3, @Op.1(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn.393] -// CHECK:STDOUT: %bound_method.loc26: = bound_method %d.var, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc26: = bound_method %d.var, constants.%T.as.Destroy.impl.Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.393] +// CHECK:STDOUT: %bound_method.loc26: = bound_method %d.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc26: %ptr.843 = addr_of %d.var -// CHECK:STDOUT: %no_op.loc26: init %empty_tuple.type = call %bound_method.loc26(%addr.loc26) -// CHECK:STDOUT: %Op.bound.loc25: = bound_method %c.var, constants.%Op.8b7 -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.8b7, @Op.1(bool) [concrete = constants.%Op.specific_fn.c3f] -// CHECK:STDOUT: %bound_method.loc25: = bound_method %c.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc26: init %empty_tuple.type = call %bound_method.loc26(%addr.loc26) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc25: = bound_method %c.var, constants.%T.as.Destroy.impl.Op.8b7 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.8b7, @T.as.Destroy.impl.Op(bool) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.c3f] +// CHECK:STDOUT: %bound_method.loc25: = bound_method %c.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc25: %ptr.bb2 = addr_of %c.var -// CHECK:STDOUT: %no_op.loc25: init %empty_tuple.type = call %bound_method.loc25(%addr.loc25) -// CHECK:STDOUT: %Op.bound.loc24: = bound_method %b.var, constants.%Op.8b7 -// CHECK:STDOUT: %Op.specific_fn.3: = specific_function constants.%Op.8b7, @Op.1(bool) [concrete = constants.%Op.specific_fn.c3f] -// CHECK:STDOUT: %bound_method.loc24: = bound_method %b.var, %Op.specific_fn.3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc25: init %empty_tuple.type = call %bound_method.loc25(%addr.loc25) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc24: = bound_method %b.var, constants.%T.as.Destroy.impl.Op.8b7 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.3: = specific_function constants.%T.as.Destroy.impl.Op.8b7, @T.as.Destroy.impl.Op(bool) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.c3f] +// CHECK:STDOUT: %bound_method.loc24: = bound_method %b.var, %T.as.Destroy.impl.Op.specific_fn.3 // CHECK:STDOUT: %addr.loc24: %ptr.bb2 = addr_of %b.var -// CHECK:STDOUT: %no_op.loc24: init %empty_tuple.type = call %bound_method.loc24(%addr.loc24) -// CHECK:STDOUT: %Op.bound.loc23: = bound_method %a.var, constants.%Op.8b7 -// CHECK:STDOUT: %Op.specific_fn.4: = specific_function constants.%Op.8b7, @Op.1(bool) [concrete = constants.%Op.specific_fn.c3f] -// CHECK:STDOUT: %bound_method.loc23: = bound_method %a.var, %Op.specific_fn.4 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc24: init %empty_tuple.type = call %bound_method.loc24(%addr.loc24) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc23: = bound_method %a.var, constants.%T.as.Destroy.impl.Op.8b7 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.4: = specific_function constants.%T.as.Destroy.impl.Op.8b7, @T.as.Destroy.impl.Op(bool) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.c3f] +// CHECK:STDOUT: %bound_method.loc23: = bound_method %a.var, %T.as.Destroy.impl.Op.specific_fn.4 // CHECK:STDOUT: %addr.loc23: %ptr.bb2 = addr_of %a.var -// CHECK:STDOUT: %no_op.loc23: init %empty_tuple.type = call %bound_method.loc23(%addr.loc23) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc23: init %empty_tuple.type = call %bound_method.loc23(%addr.loc23) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -375,9 +375,9 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: if %.loc30_18.2 br !if.expr.then else br !if.expr.else // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.then: -// CHECK:STDOUT: %bool.make_type.loc30: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc30_28.1: type = value_of_initializer %bool.make_type.loc30 [concrete = bool] -// CHECK:STDOUT: %.loc30_28.2: type = converted %bool.make_type.loc30, %.loc30_28.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc30: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc30_28.1: type = value_of_initializer %Bool.call.loc30 [concrete = bool] +// CHECK:STDOUT: %.loc30_28.2: type = converted %Bool.call.loc30, %.loc30_28.1 [concrete = bool] // CHECK:STDOUT: br !if.expr.result(%.loc30_28.2) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.else: @@ -391,11 +391,11 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: // CHECK:STDOUT: !.loc30_7: // CHECK:STDOUT: %a: ref bool = bind_name a, %a.var -// CHECK:STDOUT: %Op.bound: = bound_method %a.var, constants.%Op.8b7 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.8b7, @Op.1(bool) [concrete = constants.%Op.specific_fn.c3f] -// CHECK:STDOUT: %bound_method: = bound_method %a.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %a.var, constants.%T.as.Destroy.impl.Op.8b7 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.8b7, @T.as.Destroy.impl.Op(bool) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.c3f] +// CHECK:STDOUT: %bound_method: = bound_method %a.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.bb2 = addr_of %a.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/builtin/unary_op.carbon b/toolchain/check/testdata/operators/builtin/unary_op.carbon index 4b874f18c753..4fc5854a3f8b 100644 --- a/toolchain/check/testdata/operators/builtin/unary_op.carbon +++ b/toolchain/check/testdata/operators/builtin/unary_op.carbon @@ -40,14 +40,14 @@ fn Constant() { // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.655: type = fn_type @Op.1, @Destroy.impl(bool) [concrete] -// CHECK:STDOUT: %Op.8b7: %Op.type.655 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.655: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(bool) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.8b7: %T.as.Destroy.impl.Op.type.655 = struct_value () [concrete] // CHECK:STDOUT: %ptr.bb2: type = ptr_type bool [concrete] -// CHECK:STDOUT: %Op.specific_fn.c3f: = specific_function %Op.8b7, @Op.1(bool) [concrete] -// CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.1, @Destroy.impl(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.c3f: = specific_function %T.as.Destroy.impl.Op.8b7, @T.as.Destroy.impl.Op(bool) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a63: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ea3: %T.as.Destroy.impl.Op.type.a63 = struct_value () [concrete] // CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] -// CHECK:STDOUT: %Op.specific_fn.393: = specific_function %Op.ea3, @Op.1(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.393: = specific_function %T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(%empty_tuple.type) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -76,14 +76,14 @@ fn Constant() { // CHECK:STDOUT: %return.patt: %pattern_type.831 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.831 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %bool.make_type.loc15_20: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc15_20.1: type = value_of_initializer %bool.make_type.loc15_20 [concrete = bool] -// CHECK:STDOUT: %.loc15_20.2: type = converted %bool.make_type.loc15_20, %.loc15_20.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc15_20: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc15_20.1: type = value_of_initializer %Bool.call.loc15_20 [concrete = bool] +// CHECK:STDOUT: %.loc15_20.2: type = converted %Bool.call.loc15_20, %.loc15_20.1 [concrete = bool] // CHECK:STDOUT: %b.param: bool = value_param call_param0 // CHECK:STDOUT: %.loc15_11.1: type = splice_block %.loc15_11.3 [concrete = bool] { -// CHECK:STDOUT: %bool.make_type.loc15_11: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc15_11.2: type = value_of_initializer %bool.make_type.loc15_11 [concrete = bool] -// CHECK:STDOUT: %.loc15_11.3: type = converted %bool.make_type.loc15_11, %.loc15_11.2 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc15_11: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc15_11.2: type = value_of_initializer %Bool.call.loc15_11 [concrete = bool] +// CHECK:STDOUT: %.loc15_11.3: type = converted %Bool.call.loc15_11, %.loc15_11.2 [concrete = bool] // CHECK:STDOUT: } // CHECK:STDOUT: %b: bool = bind_name b, %b.param // CHECK:STDOUT: %return.param: ref bool = out_param call_param1 @@ -93,18 +93,18 @@ fn Constant() { // CHECK:STDOUT: %not_true.patt: %pattern_type.831 = binding_pattern not_true [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc19_15.1: type = splice_block %.loc19_15.3 [concrete = bool] { -// CHECK:STDOUT: %bool.make_type.loc19: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc19_15.2: type = value_of_initializer %bool.make_type.loc19 [concrete = bool] -// CHECK:STDOUT: %.loc19_15.3: type = converted %bool.make_type.loc19, %.loc19_15.2 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc19: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc19_15.2: type = value_of_initializer %Bool.call.loc19 [concrete = bool] +// CHECK:STDOUT: %.loc19_15.3: type = converted %Bool.call.loc19, %.loc19_15.2 [concrete = bool] // CHECK:STDOUT: } // CHECK:STDOUT: %not_true: bool = bind_name not_true, @__global_init.%.loc19 // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %not_false.patt: %pattern_type.831 = binding_pattern not_false [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc20_16.1: type = splice_block %.loc20_16.3 [concrete = bool] { -// CHECK:STDOUT: %bool.make_type.loc20: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc20_16.2: type = value_of_initializer %bool.make_type.loc20 [concrete = bool] -// CHECK:STDOUT: %.loc20_16.3: type = converted %bool.make_type.loc20, %.loc20_16.2 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc20: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc20_16.2: type = value_of_initializer %Bool.call.loc20 [concrete = bool] +// CHECK:STDOUT: %.loc20_16.3: type = converted %Bool.call.loc20, %.loc20_16.2 [concrete = bool] // CHECK:STDOUT: } // CHECK:STDOUT: %not_false: bool = bind_name not_false, @__global_init.%.loc20 // CHECK:STDOUT: %Constant.decl: %Constant.type = fn_decl @Constant [concrete = constants.%Constant] {} {} @@ -136,9 +136,9 @@ fn Constant() { // CHECK:STDOUT: if %.loc23_13 br !if.expr.then.loc23 else br !if.expr.else.loc23 // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.then.loc23: -// CHECK:STDOUT: %bool.make_type.loc23: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc23_27.1: type = value_of_initializer %bool.make_type.loc23 [concrete = bool] -// CHECK:STDOUT: %.loc23_27.2: type = converted %bool.make_type.loc23, %.loc23_27.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc23: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc23_27.1: type = value_of_initializer %Bool.call.loc23 [concrete = bool] +// CHECK:STDOUT: %.loc23_27.2: type = converted %Bool.call.loc23, %.loc23_27.1 [concrete = bool] // CHECK:STDOUT: br !if.expr.result.loc23(%.loc23_27.2) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.else.loc23: @@ -167,9 +167,9 @@ fn Constant() { // CHECK:STDOUT: if %.loc24_13 br !if.expr.then.loc24 else br !if.expr.else.loc24 // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.then.loc24: -// CHECK:STDOUT: %bool.make_type.loc24: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc24_28.1: type = value_of_initializer %bool.make_type.loc24 [concrete = bool] -// CHECK:STDOUT: %.loc24_28.2: type = converted %bool.make_type.loc24, %.loc24_28.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call.loc24: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc24_28.1: type = value_of_initializer %Bool.call.loc24 [concrete = bool] +// CHECK:STDOUT: %.loc24_28.2: type = converted %Bool.call.loc24, %.loc24_28.1 [concrete = bool] // CHECK:STDOUT: br !if.expr.result.loc24(%.loc24_28.2) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.else.loc24: @@ -183,16 +183,16 @@ fn Constant() { // CHECK:STDOUT: // CHECK:STDOUT: !.loc24_7: // CHECK:STDOUT: %b: ref bool = bind_name b, %b.var -// CHECK:STDOUT: %Op.bound.loc24: = bound_method %b.var, constants.%Op.8b7 -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.8b7, @Op.1(bool) [concrete = constants.%Op.specific_fn.c3f] -// CHECK:STDOUT: %bound_method.loc24: = bound_method %b.var, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc24: = bound_method %b.var, constants.%T.as.Destroy.impl.Op.8b7 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.8b7, @T.as.Destroy.impl.Op(bool) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.c3f] +// CHECK:STDOUT: %bound_method.loc24: = bound_method %b.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc24: %ptr.bb2 = addr_of %b.var -// CHECK:STDOUT: %no_op.loc24: init %empty_tuple.type = call %bound_method.loc24(%addr.loc24) -// CHECK:STDOUT: %Op.bound.loc23: = bound_method %a.var, constants.%Op.ea3 -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.ea3, @Op.1(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn.393] -// CHECK:STDOUT: %bound_method.loc23: = bound_method %a.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc24: init %empty_tuple.type = call %bound_method.loc24(%addr.loc24) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc23: = bound_method %a.var, constants.%T.as.Destroy.impl.Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.393] +// CHECK:STDOUT: %bound_method.loc23: = bound_method %a.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc23: %ptr.843 = addr_of %a.var -// CHECK:STDOUT: %no_op.loc23: init %empty_tuple.type = call %bound_method.loc23(%addr.loc23) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc23: init %empty_tuple.type = call %bound_method.loc23(%addr.loc23) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/add.carbon b/toolchain/check/testdata/operators/overloaded/add.carbon index c6434cadb867..565a7ee1f0dc 100644 --- a/toolchain/check/testdata/operators/overloaded/add.carbon +++ b/toolchain/check/testdata/operators/overloaded/add.carbon @@ -45,20 +45,20 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %AddWith.type.ffb: type = facet_type <@AddWith, @AddWith(%C)> [concrete] -// CHECK:STDOUT: %Op.type.45e: type = fn_type @Op.1, @AddWith(%C) [concrete] +// CHECK:STDOUT: %AddWith.Op.type.45e: type = fn_type @AddWith.Op, @AddWith(%C) [concrete] // CHECK:STDOUT: %AddWith.impl_witness: = impl_witness file.%AddWith.impl_witness_table [concrete] -// CHECK:STDOUT: %Op.type.638: type = fn_type @Op.loc22 [concrete] -// CHECK:STDOUT: %Op.276: %Op.type.638 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.AddWith.impl.Op.type: type = fn_type @C.as.AddWith.impl.Op [concrete] +// CHECK:STDOUT: %C.as.AddWith.impl.Op: %C.as.AddWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %AddWith.facet.3ef: %AddWith.type.ffb = facet_value %C, (%AddWith.impl_witness) [concrete] // CHECK:STDOUT: %AddAssignWith.type.393: type = facet_type <@AddAssignWith, @AddAssignWith(%C)> [concrete] -// CHECK:STDOUT: %Op.type.5af: type = fn_type @Op.6, @AddAssignWith(%C) [concrete] +// CHECK:STDOUT: %AddAssignWith.Op.type.5af: type = fn_type @AddAssignWith.Op, @AddAssignWith(%C) [concrete] // CHECK:STDOUT: %AddAssignWith.impl_witness: = impl_witness file.%AddAssignWith.impl_witness_table [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] -// CHECK:STDOUT: %Op.type.0d7: type = fn_type @Op.loc27 [concrete] -// CHECK:STDOUT: %Op.572: %Op.type.0d7 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.AddAssignWith.impl.Op.type: type = fn_type @C.as.AddAssignWith.impl.Op [concrete] +// CHECK:STDOUT: %C.as.AddAssignWith.impl.Op: %C.as.AddAssignWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %AddAssignWith.facet: %AddAssignWith.type.393 = facet_value %C, (%AddAssignWith.impl_witness) [concrete] -// CHECK:STDOUT: %.268: type = fn_type_with_self_type %Op.type.45e, %AddWith.facet.3ef [concrete] -// CHECK:STDOUT: %.e2d: type = fn_type_with_self_type %Op.type.5af, %AddAssignWith.facet [concrete] +// CHECK:STDOUT: %.268: type = fn_type_with_self_type %AddWith.Op.type.45e, %AddWith.facet.3ef [concrete] +// CHECK:STDOUT: %.e2d: type = fn_type_with_self_type %AddAssignWith.Op.type.5af, %AddAssignWith.facet [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -68,12 +68,12 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem1: %.268 = impl_witness_access constants.%AddWith.impl_witness, element1 [concrete = constants.%Op.276] +// CHECK:STDOUT: %impl.elem1: %.268 = impl_witness_access constants.%AddWith.impl_witness, element1 [concrete = constants.%C.as.AddWith.impl.Op] // CHECK:STDOUT: %bound_method.loc32: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: -// CHECK:STDOUT: %Op.call: init %C = call %bound_method.loc32(%a.ref, %b.ref) to %.loc30 +// CHECK:STDOUT: %C.as.AddWith.impl.Op.call: init %C = call %bound_method.loc32(%a.ref, %b.ref) to %.loc30 // CHECK:STDOUT: -// CHECK:STDOUT: return %Op.call to %return +// CHECK:STDOUT: return %C.as.AddWith.impl.Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @TestAssign(%a.param: %ptr.019, %b.param: %C) { @@ -81,10 +81,10 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %a.ref: %ptr.019 = name_ref a, %a // CHECK:STDOUT: %.loc38: ref %C = deref %a.ref // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem0: %.e2d = impl_witness_access constants.%AddAssignWith.impl_witness, element0 [concrete = constants.%Op.572] +// CHECK:STDOUT: %impl.elem0: %.e2d = impl_witness_access constants.%AddAssignWith.impl_witness, element0 [concrete = constants.%C.as.AddAssignWith.impl.Op] // CHECK:STDOUT: %bound_method: = bound_method %.loc38, %impl.elem0 // CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc38 -// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %bound_method(%addr, %b.ref) +// CHECK:STDOUT: %C.as.AddAssignWith.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr, %b.ref) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/bit_and.carbon b/toolchain/check/testdata/operators/overloaded/bit_and.carbon index c697bd13f95a..d9fd2adfd4bd 100644 --- a/toolchain/check/testdata/operators/overloaded/bit_and.carbon +++ b/toolchain/check/testdata/operators/overloaded/bit_and.carbon @@ -45,20 +45,20 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %BitAndWith.type.e40: type = facet_type <@BitAndWith, @BitAndWith(%C)> [concrete] -// CHECK:STDOUT: %Op.type.914: type = fn_type @Op.1, @BitAndWith(%C) [concrete] +// CHECK:STDOUT: %BitAndWith.Op.type.914: type = fn_type @BitAndWith.Op, @BitAndWith(%C) [concrete] // CHECK:STDOUT: %BitAndWith.impl_witness: = impl_witness file.%BitAndWith.impl_witness_table [concrete] -// CHECK:STDOUT: %Op.type.bcc: type = fn_type @Op.loc22 [concrete] -// CHECK:STDOUT: %Op.c46: %Op.type.bcc = struct_value () [concrete] +// CHECK:STDOUT: %C.as.BitAndWith.impl.Op.type: type = fn_type @C.as.BitAndWith.impl.Op [concrete] +// CHECK:STDOUT: %C.as.BitAndWith.impl.Op: %C.as.BitAndWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %BitAndWith.facet.783: %BitAndWith.type.e40 = facet_value %C, (%BitAndWith.impl_witness) [concrete] // CHECK:STDOUT: %BitAndAssignWith.type.e85: type = facet_type <@BitAndAssignWith, @BitAndAssignWith(%C)> [concrete] -// CHECK:STDOUT: %Op.type.73d: type = fn_type @Op.6, @BitAndAssignWith(%C) [concrete] +// CHECK:STDOUT: %BitAndAssignWith.Op.type.73d: type = fn_type @BitAndAssignWith.Op, @BitAndAssignWith(%C) [concrete] // CHECK:STDOUT: %BitAndAssignWith.impl_witness: = impl_witness file.%BitAndAssignWith.impl_witness_table [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] -// CHECK:STDOUT: %Op.type.115: type = fn_type @Op.loc27 [concrete] -// CHECK:STDOUT: %Op.270: %Op.type.115 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.BitAndAssignWith.impl.Op.type: type = fn_type @C.as.BitAndAssignWith.impl.Op [concrete] +// CHECK:STDOUT: %C.as.BitAndAssignWith.impl.Op: %C.as.BitAndAssignWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %BitAndAssignWith.facet: %BitAndAssignWith.type.e85 = facet_value %C, (%BitAndAssignWith.impl_witness) [concrete] -// CHECK:STDOUT: %.04a: type = fn_type_with_self_type %Op.type.914, %BitAndWith.facet.783 [concrete] -// CHECK:STDOUT: %.554: type = fn_type_with_self_type %Op.type.73d, %BitAndAssignWith.facet [concrete] +// CHECK:STDOUT: %.04a: type = fn_type_with_self_type %BitAndWith.Op.type.914, %BitAndWith.facet.783 [concrete] +// CHECK:STDOUT: %.554: type = fn_type_with_self_type %BitAndAssignWith.Op.type.73d, %BitAndAssignWith.facet [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -68,12 +68,12 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem1: %.04a = impl_witness_access constants.%BitAndWith.impl_witness, element1 [concrete = constants.%Op.c46] +// CHECK:STDOUT: %impl.elem1: %.04a = impl_witness_access constants.%BitAndWith.impl_witness, element1 [concrete = constants.%C.as.BitAndWith.impl.Op] // CHECK:STDOUT: %bound_method.loc32: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: -// CHECK:STDOUT: %Op.call: init %C = call %bound_method.loc32(%a.ref, %b.ref) to %.loc30 +// CHECK:STDOUT: %C.as.BitAndWith.impl.Op.call: init %C = call %bound_method.loc32(%a.ref, %b.ref) to %.loc30 // CHECK:STDOUT: -// CHECK:STDOUT: return %Op.call to %return +// CHECK:STDOUT: return %C.as.BitAndWith.impl.Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @TestAssign(%a.param: %ptr.019, %b.param: %C) { @@ -81,10 +81,10 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %a.ref: %ptr.019 = name_ref a, %a // CHECK:STDOUT: %.loc38: ref %C = deref %a.ref // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem0: %.554 = impl_witness_access constants.%BitAndAssignWith.impl_witness, element0 [concrete = constants.%Op.270] +// CHECK:STDOUT: %impl.elem0: %.554 = impl_witness_access constants.%BitAndAssignWith.impl_witness, element0 [concrete = constants.%C.as.BitAndAssignWith.impl.Op] // CHECK:STDOUT: %bound_method: = bound_method %.loc38, %impl.elem0 // CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc38 -// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %bound_method(%addr, %b.ref) +// CHECK:STDOUT: %C.as.BitAndAssignWith.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr, %b.ref) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/bit_complement.carbon b/toolchain/check/testdata/operators/overloaded/bit_complement.carbon index 4e6cf705c627..fe122c636beb 100644 --- a/toolchain/check/testdata/operators/overloaded/bit_complement.carbon +++ b/toolchain/check/testdata/operators/overloaded/bit_complement.carbon @@ -35,12 +35,12 @@ fn TestOp(a: C) -> C { // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %BitComplement.type: type = facet_type <@BitComplement> [concrete] -// CHECK:STDOUT: %Op.type.f25: type = fn_type @Op.6 [concrete] +// CHECK:STDOUT: %BitComplement.Op.type: type = fn_type @BitComplement.Op [concrete] // CHECK:STDOUT: %BitComplement.impl_witness: = impl_witness file.%BitComplement.impl_witness_table [concrete] -// CHECK:STDOUT: %Op.type.e57: type = fn_type @Op.loc22 [concrete] -// CHECK:STDOUT: %Op.d4b: %Op.type.e57 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.BitComplement.impl.Op.type: type = fn_type @C.as.BitComplement.impl.Op [concrete] +// CHECK:STDOUT: %C.as.BitComplement.impl.Op: %C.as.BitComplement.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %BitComplement.facet.c4c: %BitComplement.type = facet_value %C, (%BitComplement.impl_witness) [concrete] -// CHECK:STDOUT: %.18b: type = fn_type_with_self_type %Op.type.f25, %BitComplement.facet.c4c [concrete] +// CHECK:STDOUT: %.18b: type = fn_type_with_self_type %BitComplement.Op.type, %BitComplement.facet.c4c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -49,11 +49,11 @@ fn TestOp(a: C) -> C { // CHECK:STDOUT: fn @TestOp(%a.param: %C) -> %return.param: %C { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a -// CHECK:STDOUT: %impl.elem1: %.18b = impl_witness_access constants.%BitComplement.impl_witness, element1 [concrete = constants.%Op.d4b] +// CHECK:STDOUT: %impl.elem1: %.18b = impl_witness_access constants.%BitComplement.impl_witness, element1 [concrete = constants.%C.as.BitComplement.impl.Op] // CHECK:STDOUT: %bound_method.loc29: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: -// CHECK:STDOUT: %Op.call: init %C = call %bound_method.loc29(%a.ref) to %.loc27 +// CHECK:STDOUT: %C.as.BitComplement.impl.Op.call: init %C = call %bound_method.loc29(%a.ref) to %.loc27 // CHECK:STDOUT: -// CHECK:STDOUT: return %Op.call to %return +// CHECK:STDOUT: return %C.as.BitComplement.impl.Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/bit_or.carbon b/toolchain/check/testdata/operators/overloaded/bit_or.carbon index df7c54d531ef..964c7585e481 100644 --- a/toolchain/check/testdata/operators/overloaded/bit_or.carbon +++ b/toolchain/check/testdata/operators/overloaded/bit_or.carbon @@ -45,20 +45,20 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %BitOrWith.type.502: type = facet_type <@BitOrWith, @BitOrWith(%C)> [concrete] -// CHECK:STDOUT: %Op.type.501: type = fn_type @Op.1, @BitOrWith(%C) [concrete] +// CHECK:STDOUT: %BitOrWith.Op.type.501: type = fn_type @BitOrWith.Op, @BitOrWith(%C) [concrete] // CHECK:STDOUT: %BitOrWith.impl_witness: = impl_witness file.%BitOrWith.impl_witness_table [concrete] -// CHECK:STDOUT: %Op.type.cc7: type = fn_type @Op.loc22 [concrete] -// CHECK:STDOUT: %Op.3e9: %Op.type.cc7 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.BitOrWith.impl.Op.type: type = fn_type @C.as.BitOrWith.impl.Op [concrete] +// CHECK:STDOUT: %C.as.BitOrWith.impl.Op: %C.as.BitOrWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %BitOrWith.facet.f19: %BitOrWith.type.502 = facet_value %C, (%BitOrWith.impl_witness) [concrete] // CHECK:STDOUT: %BitOrAssignWith.type.3e6: type = facet_type <@BitOrAssignWith, @BitOrAssignWith(%C)> [concrete] -// CHECK:STDOUT: %Op.type.efc: type = fn_type @Op.6, @BitOrAssignWith(%C) [concrete] +// CHECK:STDOUT: %BitOrAssignWith.Op.type.efc: type = fn_type @BitOrAssignWith.Op, @BitOrAssignWith(%C) [concrete] // CHECK:STDOUT: %BitOrAssignWith.impl_witness: = impl_witness file.%BitOrAssignWith.impl_witness_table [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] -// CHECK:STDOUT: %Op.type.4ee: type = fn_type @Op.loc27 [concrete] -// CHECK:STDOUT: %Op.afa: %Op.type.4ee = struct_value () [concrete] +// CHECK:STDOUT: %C.as.BitOrAssignWith.impl.Op.type: type = fn_type @C.as.BitOrAssignWith.impl.Op [concrete] +// CHECK:STDOUT: %C.as.BitOrAssignWith.impl.Op: %C.as.BitOrAssignWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %BitOrAssignWith.facet: %BitOrAssignWith.type.3e6 = facet_value %C, (%BitOrAssignWith.impl_witness) [concrete] -// CHECK:STDOUT: %.b8d: type = fn_type_with_self_type %Op.type.501, %BitOrWith.facet.f19 [concrete] -// CHECK:STDOUT: %.c8a: type = fn_type_with_self_type %Op.type.efc, %BitOrAssignWith.facet [concrete] +// CHECK:STDOUT: %.b8d: type = fn_type_with_self_type %BitOrWith.Op.type.501, %BitOrWith.facet.f19 [concrete] +// CHECK:STDOUT: %.c8a: type = fn_type_with_self_type %BitOrAssignWith.Op.type.efc, %BitOrAssignWith.facet [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -68,12 +68,12 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem1: %.b8d = impl_witness_access constants.%BitOrWith.impl_witness, element1 [concrete = constants.%Op.3e9] +// CHECK:STDOUT: %impl.elem1: %.b8d = impl_witness_access constants.%BitOrWith.impl_witness, element1 [concrete = constants.%C.as.BitOrWith.impl.Op] // CHECK:STDOUT: %bound_method.loc32: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: -// CHECK:STDOUT: %Op.call: init %C = call %bound_method.loc32(%a.ref, %b.ref) to %.loc30 +// CHECK:STDOUT: %C.as.BitOrWith.impl.Op.call: init %C = call %bound_method.loc32(%a.ref, %b.ref) to %.loc30 // CHECK:STDOUT: -// CHECK:STDOUT: return %Op.call to %return +// CHECK:STDOUT: return %C.as.BitOrWith.impl.Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @TestAssign(%a.param: %ptr.019, %b.param: %C) { @@ -81,10 +81,10 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %a.ref: %ptr.019 = name_ref a, %a // CHECK:STDOUT: %.loc38: ref %C = deref %a.ref // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem0: %.c8a = impl_witness_access constants.%BitOrAssignWith.impl_witness, element0 [concrete = constants.%Op.afa] +// CHECK:STDOUT: %impl.elem0: %.c8a = impl_witness_access constants.%BitOrAssignWith.impl_witness, element0 [concrete = constants.%C.as.BitOrAssignWith.impl.Op] // CHECK:STDOUT: %bound_method: = bound_method %.loc38, %impl.elem0 // CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc38 -// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %bound_method(%addr, %b.ref) +// CHECK:STDOUT: %C.as.BitOrAssignWith.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr, %b.ref) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/bit_xor.carbon b/toolchain/check/testdata/operators/overloaded/bit_xor.carbon index 59e1cb42e12e..0e657ec540c1 100644 --- a/toolchain/check/testdata/operators/overloaded/bit_xor.carbon +++ b/toolchain/check/testdata/operators/overloaded/bit_xor.carbon @@ -45,20 +45,20 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %BitXorWith.type.f9b: type = facet_type <@BitXorWith, @BitXorWith(%C)> [concrete] -// CHECK:STDOUT: %Op.type.502: type = fn_type @Op.1, @BitXorWith(%C) [concrete] +// CHECK:STDOUT: %BitXorWith.Op.type.502: type = fn_type @BitXorWith.Op, @BitXorWith(%C) [concrete] // CHECK:STDOUT: %BitXorWith.impl_witness: = impl_witness file.%BitXorWith.impl_witness_table [concrete] -// CHECK:STDOUT: %Op.type.5e4: type = fn_type @Op.loc22 [concrete] -// CHECK:STDOUT: %Op.ef1: %Op.type.5e4 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.BitXorWith.impl.Op.type: type = fn_type @C.as.BitXorWith.impl.Op [concrete] +// CHECK:STDOUT: %C.as.BitXorWith.impl.Op: %C.as.BitXorWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %BitXorWith.facet.d57: %BitXorWith.type.f9b = facet_value %C, (%BitXorWith.impl_witness) [concrete] // CHECK:STDOUT: %BitXorAssignWith.type.57a: type = facet_type <@BitXorAssignWith, @BitXorAssignWith(%C)> [concrete] -// CHECK:STDOUT: %Op.type.ad0: type = fn_type @Op.6, @BitXorAssignWith(%C) [concrete] +// CHECK:STDOUT: %BitXorAssignWith.Op.type.ad0: type = fn_type @BitXorAssignWith.Op, @BitXorAssignWith(%C) [concrete] // CHECK:STDOUT: %BitXorAssignWith.impl_witness: = impl_witness file.%BitXorAssignWith.impl_witness_table [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] -// CHECK:STDOUT: %Op.type.d64: type = fn_type @Op.loc27 [concrete] -// CHECK:STDOUT: %Op.5e5: %Op.type.d64 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.BitXorAssignWith.impl.Op.type: type = fn_type @C.as.BitXorAssignWith.impl.Op [concrete] +// CHECK:STDOUT: %C.as.BitXorAssignWith.impl.Op: %C.as.BitXorAssignWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %BitXorAssignWith.facet: %BitXorAssignWith.type.57a = facet_value %C, (%BitXorAssignWith.impl_witness) [concrete] -// CHECK:STDOUT: %.c60: type = fn_type_with_self_type %Op.type.502, %BitXorWith.facet.d57 [concrete] -// CHECK:STDOUT: %.d8a: type = fn_type_with_self_type %Op.type.ad0, %BitXorAssignWith.facet [concrete] +// CHECK:STDOUT: %.c60: type = fn_type_with_self_type %BitXorWith.Op.type.502, %BitXorWith.facet.d57 [concrete] +// CHECK:STDOUT: %.d8a: type = fn_type_with_self_type %BitXorAssignWith.Op.type.ad0, %BitXorAssignWith.facet [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -68,12 +68,12 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem1: %.c60 = impl_witness_access constants.%BitXorWith.impl_witness, element1 [concrete = constants.%Op.ef1] +// CHECK:STDOUT: %impl.elem1: %.c60 = impl_witness_access constants.%BitXorWith.impl_witness, element1 [concrete = constants.%C.as.BitXorWith.impl.Op] // CHECK:STDOUT: %bound_method.loc32: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: -// CHECK:STDOUT: %Op.call: init %C = call %bound_method.loc32(%a.ref, %b.ref) to %.loc30 +// CHECK:STDOUT: %C.as.BitXorWith.impl.Op.call: init %C = call %bound_method.loc32(%a.ref, %b.ref) to %.loc30 // CHECK:STDOUT: -// CHECK:STDOUT: return %Op.call to %return +// CHECK:STDOUT: return %C.as.BitXorWith.impl.Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @TestAssign(%a.param: %ptr.019, %b.param: %C) { @@ -81,10 +81,10 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %a.ref: %ptr.019 = name_ref a, %a // CHECK:STDOUT: %.loc38: ref %C = deref %a.ref // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem0: %.d8a = impl_witness_access constants.%BitXorAssignWith.impl_witness, element0 [concrete = constants.%Op.5e5] +// CHECK:STDOUT: %impl.elem0: %.d8a = impl_witness_access constants.%BitXorAssignWith.impl_witness, element0 [concrete = constants.%C.as.BitXorAssignWith.impl.Op] // CHECK:STDOUT: %bound_method: = bound_method %.loc38, %impl.elem0 // CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc38 -// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %bound_method(%addr, %b.ref) +// CHECK:STDOUT: %C.as.BitXorAssignWith.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr, %b.ref) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/dec.carbon b/toolchain/check/testdata/operators/overloaded/dec.carbon index 241b30dd96ee..c632fb7fda4f 100644 --- a/toolchain/check/testdata/operators/overloaded/dec.carbon +++ b/toolchain/check/testdata/operators/overloaded/dec.carbon @@ -34,14 +34,14 @@ fn TestOp() { // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %Dec.type: type = facet_type <@Dec> [concrete] -// CHECK:STDOUT: %Op.type.633: type = fn_type @Op.1 [concrete] +// CHECK:STDOUT: %Dec.Op.type: type = fn_type @Dec.Op [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Dec.impl_witness: = impl_witness file.%Dec.impl_witness_table [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] -// CHECK:STDOUT: %Op.type.9e0: type = fn_type @Op.loc22 [concrete] -// CHECK:STDOUT: %Op.cf9: %Op.type.9e0 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.Dec.impl.Op.type: type = fn_type @C.as.Dec.impl.Op [concrete] +// CHECK:STDOUT: %C.as.Dec.impl.Op: %C.as.Dec.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %Dec.facet: %Dec.type = facet_value %C, (%Dec.impl_witness) [concrete] -// CHECK:STDOUT: %.859: type = fn_type_with_self_type %Op.type.633, %Dec.facet [concrete] +// CHECK:STDOUT: %.859: type = fn_type_with_self_type %Dec.Op.type, %Dec.facet [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -51,10 +51,10 @@ fn TestOp() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: // CHECK:STDOUT: %c.ref: ref %C = name_ref c, %c -// CHECK:STDOUT: %impl.elem0: %.859 = impl_witness_access constants.%Dec.impl_witness, element0 [concrete = constants.%Op.cf9] +// CHECK:STDOUT: %impl.elem0: %.859 = impl_witness_access constants.%Dec.impl_witness, element0 [concrete = constants.%C.as.Dec.impl.Op] // CHECK:STDOUT: %bound_method.loc28: = bound_method %c.ref, %impl.elem0 // CHECK:STDOUT: %addr.loc28: %ptr.019 = addr_of %c.ref -// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %bound_method.loc28(%addr.loc28) +// CHECK:STDOUT: %C.as.Dec.impl.Op.call: init %empty_tuple.type = call %bound_method.loc28(%addr.loc28) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/div.carbon b/toolchain/check/testdata/operators/overloaded/div.carbon index 7945592cd47d..9239b6ef1680 100644 --- a/toolchain/check/testdata/operators/overloaded/div.carbon +++ b/toolchain/check/testdata/operators/overloaded/div.carbon @@ -45,20 +45,20 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %DivWith.type.ead: type = facet_type <@DivWith, @DivWith(%C)> [concrete] -// CHECK:STDOUT: %Op.type.c4b: type = fn_type @Op.1, @DivWith(%C) [concrete] +// CHECK:STDOUT: %DivWith.Op.type.c4b: type = fn_type @DivWith.Op, @DivWith(%C) [concrete] // CHECK:STDOUT: %DivWith.impl_witness: = impl_witness file.%DivWith.impl_witness_table [concrete] -// CHECK:STDOUT: %Op.type.a37: type = fn_type @Op.loc22 [concrete] -// CHECK:STDOUT: %Op.5b4: %Op.type.a37 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.DivWith.impl.Op.type: type = fn_type @C.as.DivWith.impl.Op [concrete] +// CHECK:STDOUT: %C.as.DivWith.impl.Op: %C.as.DivWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %DivWith.facet.f3b: %DivWith.type.ead = facet_value %C, (%DivWith.impl_witness) [concrete] // CHECK:STDOUT: %DivAssignWith.type.08b: type = facet_type <@DivAssignWith, @DivAssignWith(%C)> [concrete] -// CHECK:STDOUT: %Op.type.629: type = fn_type @Op.6, @DivAssignWith(%C) [concrete] +// CHECK:STDOUT: %DivAssignWith.Op.type.629: type = fn_type @DivAssignWith.Op, @DivAssignWith(%C) [concrete] // CHECK:STDOUT: %DivAssignWith.impl_witness: = impl_witness file.%DivAssignWith.impl_witness_table [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] -// CHECK:STDOUT: %Op.type.1b1: type = fn_type @Op.loc27 [concrete] -// CHECK:STDOUT: %Op.27f: %Op.type.1b1 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.DivAssignWith.impl.Op.type: type = fn_type @C.as.DivAssignWith.impl.Op [concrete] +// CHECK:STDOUT: %C.as.DivAssignWith.impl.Op: %C.as.DivAssignWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %DivAssignWith.facet: %DivAssignWith.type.08b = facet_value %C, (%DivAssignWith.impl_witness) [concrete] -// CHECK:STDOUT: %.bb6: type = fn_type_with_self_type %Op.type.c4b, %DivWith.facet.f3b [concrete] -// CHECK:STDOUT: %.f19: type = fn_type_with_self_type %Op.type.629, %DivAssignWith.facet [concrete] +// CHECK:STDOUT: %.bb6: type = fn_type_with_self_type %DivWith.Op.type.c4b, %DivWith.facet.f3b [concrete] +// CHECK:STDOUT: %.f19: type = fn_type_with_self_type %DivAssignWith.Op.type.629, %DivAssignWith.facet [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -68,12 +68,12 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem1: %.bb6 = impl_witness_access constants.%DivWith.impl_witness, element1 [concrete = constants.%Op.5b4] +// CHECK:STDOUT: %impl.elem1: %.bb6 = impl_witness_access constants.%DivWith.impl_witness, element1 [concrete = constants.%C.as.DivWith.impl.Op] // CHECK:STDOUT: %bound_method.loc32: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: -// CHECK:STDOUT: %Op.call: init %C = call %bound_method.loc32(%a.ref, %b.ref) to %.loc30 +// CHECK:STDOUT: %C.as.DivWith.impl.Op.call: init %C = call %bound_method.loc32(%a.ref, %b.ref) to %.loc30 // CHECK:STDOUT: -// CHECK:STDOUT: return %Op.call to %return +// CHECK:STDOUT: return %C.as.DivWith.impl.Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @TestAssign(%a.param: %ptr.019, %b.param: %C) { @@ -81,10 +81,10 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %a.ref: %ptr.019 = name_ref a, %a // CHECK:STDOUT: %.loc38: ref %C = deref %a.ref // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem0: %.f19 = impl_witness_access constants.%DivAssignWith.impl_witness, element0 [concrete = constants.%Op.27f] +// CHECK:STDOUT: %impl.elem0: %.f19 = impl_witness_access constants.%DivAssignWith.impl_witness, element0 [concrete = constants.%C.as.DivAssignWith.impl.Op] // CHECK:STDOUT: %bound_method: = bound_method %.loc38, %impl.elem0 // CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc38 -// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %bound_method(%addr, %b.ref) +// CHECK:STDOUT: %C.as.DivAssignWith.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr, %b.ref) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/eq.carbon b/toolchain/check/testdata/operators/overloaded/eq.carbon index c5504688aa98..eb63988cad87 100644 --- a/toolchain/check/testdata/operators/overloaded/eq.carbon +++ b/toolchain/check/testdata/operators/overloaded/eq.carbon @@ -91,23 +91,23 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: %EqWith.generic: %EqWith.type.c2e = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.831: type = pattern_type bool [concrete] // CHECK:STDOUT: %EqWith.type.04e: type = facet_type <@EqWith, @EqWith(%C)> [concrete] -// CHECK:STDOUT: %Equal.type.170: type = fn_type @Equal.1, @EqWith(%C) [concrete] -// CHECK:STDOUT: %NotEqual.type.694: type = fn_type @NotEqual.1, @EqWith(%C) [concrete] +// CHECK:STDOUT: %EqWith.Equal.type.170: type = fn_type @EqWith.Equal, @EqWith(%C) [concrete] +// CHECK:STDOUT: %EqWith.NotEqual.type.694: type = fn_type @EqWith.NotEqual, @EqWith(%C) [concrete] // CHECK:STDOUT: %EqWith.impl_witness: = impl_witness file.%EqWith.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] // CHECK:STDOUT: %Bool.type: type = fn_type @Bool [concrete] // CHECK:STDOUT: %Bool: %Bool.type = struct_value () [concrete] -// CHECK:STDOUT: %Equal.type.86d: type = fn_type @Equal.loc7 [concrete] -// CHECK:STDOUT: %Equal.fdb: %Equal.type.86d = struct_value () [concrete] -// CHECK:STDOUT: %NotEqual.type.0f4: type = fn_type @NotEqual.loc8 [concrete] -// CHECK:STDOUT: %NotEqual.133: %NotEqual.type.0f4 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.EqWith.impl.Equal.type: type = fn_type @C.as.EqWith.impl.Equal [concrete] +// CHECK:STDOUT: %C.as.EqWith.impl.Equal: %C.as.EqWith.impl.Equal.type = struct_value () [concrete] +// CHECK:STDOUT: %C.as.EqWith.impl.NotEqual.type: type = fn_type @C.as.EqWith.impl.NotEqual [concrete] +// CHECK:STDOUT: %C.as.EqWith.impl.NotEqual: %C.as.EqWith.impl.NotEqual.type = struct_value () [concrete] // CHECK:STDOUT: %EqWith.facet: %EqWith.type.04e = facet_value %C, (%EqWith.impl_witness) [concrete] // CHECK:STDOUT: %TestEqual.type: type = fn_type @TestEqual [concrete] // CHECK:STDOUT: %TestEqual: %TestEqual.type = struct_value () [concrete] -// CHECK:STDOUT: %.6b4: type = fn_type_with_self_type %Equal.type.170, %EqWith.facet [concrete] +// CHECK:STDOUT: %.6b4: type = fn_type_with_self_type %EqWith.Equal.type.170, %EqWith.facet [concrete] // CHECK:STDOUT: %TestNotEqual.type: type = fn_type @TestNotEqual [concrete] // CHECK:STDOUT: %TestNotEqual: %TestNotEqual.type = struct_value () [concrete] -// CHECK:STDOUT: %.3b7: type = fn_type_with_self_type %NotEqual.type.694, %EqWith.facet [concrete] +// CHECK:STDOUT: %.3b7: type = fn_type_with_self_type %EqWith.NotEqual.type.694, %EqWith.facet [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -130,14 +130,14 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} -// CHECK:STDOUT: impl_decl @EqWith.impl.cac [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.EqWith.impl [concrete] {} { // CHECK:STDOUT: %C.ref.loc6_6: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %EqWith.ref: %EqWith.type.c2e = name_ref EqWith, imports.%Core.EqWith [concrete = constants.%EqWith.generic] // CHECK:STDOUT: %C.ref.loc6_23: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %EqWith.type: type = facet_type <@EqWith, @EqWith(constants.%C)> [concrete = constants.%EqWith.type.04e] // CHECK:STDOUT: } -// CHECK:STDOUT: %EqWith.impl_witness_table = impl_witness_table (@EqWith.impl.cac.%Equal.decl, @EqWith.impl.cac.%NotEqual.decl), @EqWith.impl.cac [concrete] +// CHECK:STDOUT: %EqWith.impl_witness_table = impl_witness_table (@C.as.EqWith.impl.%C.as.EqWith.impl.Equal.decl, @C.as.EqWith.impl.%C.as.EqWith.impl.NotEqual.decl), @C.as.EqWith.impl [concrete] // CHECK:STDOUT: %EqWith.impl_witness: = impl_witness %EqWith.impl_witness_table [concrete = constants.%EqWith.impl_witness] // CHECK:STDOUT: %TestEqual.decl: %TestEqual.type = fn_decl @TestEqual [concrete = constants.%TestEqual] { // CHECK:STDOUT: %a.patt: %pattern_type.c48 = binding_pattern a [concrete] @@ -147,9 +147,9 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: %return.patt: %pattern_type.831 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.831 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc11_29.1: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc11_29.2: type = converted %bool.make_type, %.loc11_29.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc11_29.1: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc11_29.2: type = converted %Bool.call, %.loc11_29.1 [concrete = bool] // CHECK:STDOUT: %a.param: %C = value_param call_param0 // CHECK:STDOUT: %C.ref.loc11_17: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %a: %C = bind_name a, %a.param @@ -167,9 +167,9 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: %return.patt: %pattern_type.831 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.831 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc15_32.1: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc15_32.2: type = converted %bool.make_type, %.loc15_32.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc15_32.1: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc15_32.2: type = converted %Bool.call, %.loc15_32.1 [concrete = bool] // CHECK:STDOUT: %a.param: %C = value_param call_param0 // CHECK:STDOUT: %C.ref.loc15_20: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %a: %C = bind_name a, %a.param @@ -181,8 +181,8 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @EqWith.impl.cac: %C.ref.loc6_6 as %EqWith.type { -// CHECK:STDOUT: %Equal.decl: %Equal.type.86d = fn_decl @Equal.loc7 [concrete = constants.%Equal.fdb] { +// CHECK:STDOUT: impl @C.as.EqWith.impl: %C.ref.loc6_6 as %EqWith.type { +// CHECK:STDOUT: %C.as.EqWith.impl.Equal.decl: %C.as.EqWith.impl.Equal.type = fn_decl @C.as.EqWith.impl.Equal [concrete = constants.%C.as.EqWith.impl.Equal] { // CHECK:STDOUT: %self.patt: %pattern_type.c48 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.c48 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %other.patt: %pattern_type.c48 = binding_pattern other [concrete] @@ -190,9 +190,9 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: %return.patt: %pattern_type.831 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.831 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc7_34.1: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc7_34.2: type = converted %bool.make_type, %.loc7_34.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc7_34.1: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc7_34.2: type = converted %Bool.call, %.loc7_34.1 [concrete = bool] // CHECK:STDOUT: %self.param: %C = value_param call_param0 // CHECK:STDOUT: %C.ref.loc7_18: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %self: %C = bind_name self, %self.param @@ -202,7 +202,7 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: %return.param: ref bool = out_param call_param2 // CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %NotEqual.decl: %NotEqual.type.0f4 = fn_decl @NotEqual.loc8 [concrete = constants.%NotEqual.133] { +// CHECK:STDOUT: %C.as.EqWith.impl.NotEqual.decl: %C.as.EqWith.impl.NotEqual.type = fn_decl @C.as.EqWith.impl.NotEqual [concrete = constants.%C.as.EqWith.impl.NotEqual] { // CHECK:STDOUT: %self.patt: %pattern_type.c48 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.c48 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %other.patt: %pattern_type.c48 = binding_pattern other [concrete] @@ -210,9 +210,9 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: %return.patt: %pattern_type.831 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.831 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc8_37.1: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc8_37.2: type = converted %bool.make_type, %.loc8_37.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc8_37.1: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc8_37.2: type = converted %Bool.call, %.loc8_37.1 [concrete = bool] // CHECK:STDOUT: %self.param: %C = value_param call_param0 // CHECK:STDOUT: %C.ref.loc8_21: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %self: %C = bind_name self, %self.param @@ -225,8 +225,8 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .C = -// CHECK:STDOUT: .Equal = %Equal.decl -// CHECK:STDOUT: .NotEqual = %NotEqual.decl +// CHECK:STDOUT: .Equal = %C.as.EqWith.impl.Equal.decl +// CHECK:STDOUT: .NotEqual = %C.as.EqWith.impl.NotEqual.decl // CHECK:STDOUT: witness = file.%EqWith.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: @@ -239,19 +239,19 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Equal.loc7(%self.param: %C, %other.param: %C) -> bool; +// CHECK:STDOUT: fn @C.as.EqWith.impl.Equal(%self.param: %C, %other.param: %C) -> bool; // CHECK:STDOUT: -// CHECK:STDOUT: fn @NotEqual.loc8(%self.param: %C, %other.param: %C) -> bool; +// CHECK:STDOUT: fn @C.as.EqWith.impl.NotEqual(%self.param: %C, %other.param: %C) -> bool; // CHECK:STDOUT: // CHECK:STDOUT: fn @TestEqual(%a.param: %C, %b.param: %C) -> bool { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem0: %.6b4 = impl_witness_access constants.%EqWith.impl_witness, element0 [concrete = constants.%Equal.fdb] +// CHECK:STDOUT: %impl.elem0: %.6b4 = impl_witness_access constants.%EqWith.impl_witness, element0 [concrete = constants.%C.as.EqWith.impl.Equal] // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem0 -// CHECK:STDOUT: %Equal.call: init bool = call %bound_method(%a.ref, %b.ref) -// CHECK:STDOUT: %.loc12_16.1: bool = value_of_initializer %Equal.call -// CHECK:STDOUT: %.loc12_16.2: bool = converted %Equal.call, %.loc12_16.1 +// CHECK:STDOUT: %C.as.EqWith.impl.Equal.call: init bool = call %bound_method(%a.ref, %b.ref) +// CHECK:STDOUT: %.loc12_16.1: bool = value_of_initializer %C.as.EqWith.impl.Equal.call +// CHECK:STDOUT: %.loc12_16.2: bool = converted %C.as.EqWith.impl.Equal.call, %.loc12_16.1 // CHECK:STDOUT: return %.loc12_16.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -259,11 +259,11 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem1: %.3b7 = impl_witness_access constants.%EqWith.impl_witness, element1 [concrete = constants.%NotEqual.133] +// CHECK:STDOUT: %impl.elem1: %.3b7 = impl_witness_access constants.%EqWith.impl_witness, element1 [concrete = constants.%C.as.EqWith.impl.NotEqual] // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem1 -// CHECK:STDOUT: %NotEqual.call: init bool = call %bound_method(%a.ref, %b.ref) -// CHECK:STDOUT: %.loc16_16.1: bool = value_of_initializer %NotEqual.call -// CHECK:STDOUT: %.loc16_16.2: bool = converted %NotEqual.call, %.loc16_16.1 +// CHECK:STDOUT: %C.as.EqWith.impl.NotEqual.call: init bool = call %bound_method(%a.ref, %b.ref) +// CHECK:STDOUT: %.loc16_16.1: bool = value_of_initializer %C.as.EqWith.impl.NotEqual.call +// CHECK:STDOUT: %.loc16_16.2: bool = converted %C.as.EqWith.impl.NotEqual.call, %.loc16_16.1 // CHECK:STDOUT: return %.loc16_16.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -313,9 +313,9 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: %return.patt: %pattern_type.831 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.831 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc6_29.1: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc6_29.2: type = converted %bool.make_type, %.loc6_29.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc6_29.1: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc6_29.2: type = converted %Bool.call, %.loc6_29.1 [concrete = bool] // CHECK:STDOUT: %a.param: %D = value_param call_param0 // CHECK:STDOUT: %D.ref.loc6_17: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %a: %D = bind_name a, %a.param @@ -333,9 +333,9 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: %return.patt: %pattern_type.831 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.831 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc14_32.1: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc14_32.2: type = converted %bool.make_type, %.loc14_32.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc14_32.1: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc14_32.2: type = converted %Bool.call, %.loc14_32.1 [concrete = bool] // CHECK:STDOUT: %a.param: %D = value_param call_param0 // CHECK:STDOUT: %D.ref.loc14_20: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %a: %D = bind_name a, %a.param @@ -385,10 +385,10 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] // CHECK:STDOUT: %Bool.type: type = fn_type @Bool [concrete] // CHECK:STDOUT: %Bool: %Bool.type = struct_value () [concrete] -// CHECK:STDOUT: %Equal.type.86d: type = fn_type @Equal.loc8 [concrete] -// CHECK:STDOUT: %Equal.fdb: %Equal.type.86d = struct_value () [concrete] -// CHECK:STDOUT: %NotEqual.type.0f4: type = fn_type @NotEqual.loc9 [concrete] -// CHECK:STDOUT: %NotEqual.133: %NotEqual.type.0f4 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.EqWith.impl.Equal.type: type = fn_type @C.as.EqWith.impl.Equal [concrete] +// CHECK:STDOUT: %C.as.EqWith.impl.Equal: %C.as.EqWith.impl.Equal.type = struct_value () [concrete] +// CHECK:STDOUT: %C.as.EqWith.impl.NotEqual.type: type = fn_type @C.as.EqWith.impl.NotEqual [concrete] +// CHECK:STDOUT: %C.as.EqWith.impl.NotEqual: %C.as.EqWith.impl.NotEqual.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.510: type = pattern_type %D [concrete] // CHECK:STDOUT: %TestRhsBad.type: type = fn_type @TestRhsBad [concrete] // CHECK:STDOUT: %TestRhsBad: %TestRhsBad.type = struct_value () [concrete] @@ -418,14 +418,14 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} // CHECK:STDOUT: %D.decl: type = class_decl @D [concrete = constants.%D] {} {} -// CHECK:STDOUT: impl_decl @EqWith.impl.cac [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.EqWith.impl [concrete] {} { // CHECK:STDOUT: %C.ref.loc7_6: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %EqWith.ref: %EqWith.type.c2e = name_ref EqWith, imports.%Core.EqWith [concrete = constants.%EqWith.generic] // CHECK:STDOUT: %C.ref.loc7_23: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %EqWith.type: type = facet_type <@EqWith, @EqWith(constants.%C)> [concrete = constants.%EqWith.type.04e] // CHECK:STDOUT: } -// CHECK:STDOUT: %EqWith.impl_witness_table = impl_witness_table (@EqWith.impl.cac.%Equal.decl, @EqWith.impl.cac.%NotEqual.decl), @EqWith.impl.cac [concrete] +// CHECK:STDOUT: %EqWith.impl_witness_table = impl_witness_table (@C.as.EqWith.impl.%C.as.EqWith.impl.Equal.decl, @C.as.EqWith.impl.%C.as.EqWith.impl.NotEqual.decl), @C.as.EqWith.impl [concrete] // CHECK:STDOUT: %EqWith.impl_witness: = impl_witness %EqWith.impl_witness_table [concrete = constants.%EqWith.impl_witness] // CHECK:STDOUT: %TestRhsBad.decl: %TestRhsBad.type = fn_decl @TestRhsBad [concrete = constants.%TestRhsBad] { // CHECK:STDOUT: %a.patt: %pattern_type.c48 = binding_pattern a [concrete] @@ -435,9 +435,9 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: %return.patt: %pattern_type.831 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.831 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc12_30.1: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc12_30.2: type = converted %bool.make_type, %.loc12_30.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc12_30.1: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc12_30.2: type = converted %Bool.call, %.loc12_30.1 [concrete = bool] // CHECK:STDOUT: %a.param: %C = value_param call_param0 // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %a: %C = bind_name a, %a.param @@ -455,9 +455,9 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: %return.patt: %pattern_type.831 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.831 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc20_30.1: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc20_30.2: type = converted %bool.make_type, %.loc20_30.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc20_30.1: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc20_30.2: type = converted %Bool.call, %.loc20_30.1 [concrete = bool] // CHECK:STDOUT: %a.param: %D = value_param call_param0 // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %a: %D = bind_name a, %a.param @@ -469,8 +469,8 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @EqWith.impl.cac: %C.ref.loc7_6 as %EqWith.type { -// CHECK:STDOUT: %Equal.decl: %Equal.type.86d = fn_decl @Equal.loc8 [concrete = constants.%Equal.fdb] { +// CHECK:STDOUT: impl @C.as.EqWith.impl: %C.ref.loc7_6 as %EqWith.type { +// CHECK:STDOUT: %C.as.EqWith.impl.Equal.decl: %C.as.EqWith.impl.Equal.type = fn_decl @C.as.EqWith.impl.Equal [concrete = constants.%C.as.EqWith.impl.Equal] { // CHECK:STDOUT: %self.patt: %pattern_type.c48 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.c48 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %other.patt: %pattern_type.c48 = binding_pattern other [concrete] @@ -478,9 +478,9 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: %return.patt: %pattern_type.831 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.831 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc8_34.1: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc8_34.2: type = converted %bool.make_type, %.loc8_34.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc8_34.1: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc8_34.2: type = converted %Bool.call, %.loc8_34.1 [concrete = bool] // CHECK:STDOUT: %self.param: %C = value_param call_param0 // CHECK:STDOUT: %C.ref.loc8_18: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %self: %C = bind_name self, %self.param @@ -490,7 +490,7 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: %return.param: ref bool = out_param call_param2 // CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %NotEqual.decl: %NotEqual.type.0f4 = fn_decl @NotEqual.loc9 [concrete = constants.%NotEqual.133] { +// CHECK:STDOUT: %C.as.EqWith.impl.NotEqual.decl: %C.as.EqWith.impl.NotEqual.type = fn_decl @C.as.EqWith.impl.NotEqual [concrete = constants.%C.as.EqWith.impl.NotEqual] { // CHECK:STDOUT: %self.patt: %pattern_type.c48 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.c48 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %other.patt: %pattern_type.c48 = binding_pattern other [concrete] @@ -498,9 +498,9 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: %return.patt: %pattern_type.831 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.831 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc9_37.1: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc9_37.2: type = converted %bool.make_type, %.loc9_37.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc9_37.1: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc9_37.2: type = converted %Bool.call, %.loc9_37.1 [concrete = bool] // CHECK:STDOUT: %self.param: %C = value_param call_param0 // CHECK:STDOUT: %C.ref.loc9_21: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %self: %C = bind_name self, %self.param @@ -513,8 +513,8 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .C = -// CHECK:STDOUT: .Equal = %Equal.decl -// CHECK:STDOUT: .NotEqual = %NotEqual.decl +// CHECK:STDOUT: .Equal = %C.as.EqWith.impl.Equal.decl +// CHECK:STDOUT: .NotEqual = %C.as.EqWith.impl.NotEqual.decl // CHECK:STDOUT: witness = file.%EqWith.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: @@ -536,9 +536,9 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: .Self = constants.%D // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Equal.loc8(%self.param: %C, %other.param: %C) -> bool; +// CHECK:STDOUT: fn @C.as.EqWith.impl.Equal(%self.param: %C, %other.param: %C) -> bool; // CHECK:STDOUT: -// CHECK:STDOUT: fn @NotEqual.loc9(%self.param: %C, %other.param: %C) -> bool; +// CHECK:STDOUT: fn @C.as.EqWith.impl.NotEqual(%self.param: %C, %other.param: %C) -> bool; // CHECK:STDOUT: // CHECK:STDOUT: fn @TestRhsBad(%a.param: %C, %b.param: %D) -> bool { // CHECK:STDOUT: !entry: diff --git a/toolchain/check/testdata/operators/overloaded/fail_assign_non_ref.carbon b/toolchain/check/testdata/operators/overloaded/fail_assign_non_ref.carbon index d2dd8b51c3b3..23bde34cf5cc 100644 --- a/toolchain/check/testdata/operators/overloaded/fail_assign_non_ref.carbon +++ b/toolchain/check/testdata/operators/overloaded/fail_assign_non_ref.carbon @@ -52,34 +52,34 @@ fn TestAddAssignNonRef(a: C, b: C) { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %Inc.type: type = facet_type <@Inc> [concrete] -// CHECK:STDOUT: %Op.type.e3a: type = fn_type @Op.1 [concrete] +// CHECK:STDOUT: %Inc.Op.type: type = fn_type @Inc.Op [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %pattern_type.f6d: type = pattern_type auto [concrete] // CHECK:STDOUT: %Inc.impl_witness: = impl_witness file.%Inc.impl_witness_table [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] // CHECK:STDOUT: %pattern_type.44a: type = pattern_type %ptr.019 [concrete] -// CHECK:STDOUT: %Op.type.73a: type = fn_type @Op.loc20 [concrete] -// CHECK:STDOUT: %Op.0c9: %Op.type.73a = struct_value () [concrete] +// CHECK:STDOUT: %C.as.Inc.impl.Op.type: type = fn_type @C.as.Inc.impl.Op [concrete] +// CHECK:STDOUT: %C.as.Inc.impl.Op: %C.as.Inc.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %Inc.facet: %Inc.type = facet_value %C, (%Inc.impl_witness) [concrete] // CHECK:STDOUT: %AddAssignWith.type.fc6: type = generic_interface_type @AddAssignWith [concrete] // CHECK:STDOUT: %AddAssignWith.generic: %AddAssignWith.type.fc6 = struct_value () [concrete] // CHECK:STDOUT: %AddAssignWith.type.393: type = facet_type <@AddAssignWith, @AddAssignWith(%C)> [concrete] -// CHECK:STDOUT: %Op.type.5af: type = fn_type @Op.2, @AddAssignWith(%C) [concrete] +// CHECK:STDOUT: %AddAssignWith.Op.type.5af: type = fn_type @AddAssignWith.Op, @AddAssignWith(%C) [concrete] // CHECK:STDOUT: %AddAssignWith.impl_witness: = impl_witness file.%AddAssignWith.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] -// CHECK:STDOUT: %Op.type.0d7: type = fn_type @Op.loc23 [concrete] -// CHECK:STDOUT: %Op.572: %Op.type.0d7 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.AddAssignWith.impl.Op.type: type = fn_type @C.as.AddAssignWith.impl.Op [concrete] +// CHECK:STDOUT: %C.as.AddAssignWith.impl.Op: %C.as.AddAssignWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %AddAssignWith.facet: %AddAssignWith.type.393 = facet_value %C, (%AddAssignWith.impl_witness) [concrete] // CHECK:STDOUT: %TestIncNonRef.type: type = fn_type @TestIncNonRef [concrete] // CHECK:STDOUT: %TestIncNonRef: %TestIncNonRef.type = struct_value () [concrete] -// CHECK:STDOUT: %.bc7: type = fn_type_with_self_type %Op.type.e3a, %Inc.facet [concrete] +// CHECK:STDOUT: %.bc7: type = fn_type_with_self_type %Inc.Op.type, %Inc.facet [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.153: type = fn_type @Op.3, @Destroy.impl(%C) [concrete] -// CHECK:STDOUT: %Op.5d7: %Op.type.153 = struct_value () [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.5d7, @Op.3(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.153: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.5d7: %T.as.Destroy.impl.Op.type.153 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(%C) [concrete] // CHECK:STDOUT: %TestAddAssignNonRef.type: type = fn_type @TestAddAssignNonRef [concrete] // CHECK:STDOUT: %TestAddAssignNonRef: %TestAddAssignNonRef.type = struct_value () [concrete] -// CHECK:STDOUT: %.e2d: type = fn_type_with_self_type %Op.type.5af, %AddAssignWith.facet [concrete] +// CHECK:STDOUT: %.e2d: type = fn_type_with_self_type %AddAssignWith.Op.type.5af, %AddAssignWith.facet [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -104,21 +104,21 @@ fn TestAddAssignNonRef(a: C, b: C) { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} -// CHECK:STDOUT: impl_decl @Inc.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.Inc.impl [concrete] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %Inc.ref: type = name_ref Inc, imports.%Core.Inc [concrete = constants.%Inc.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %Inc.impl_witness_table = impl_witness_table (@Inc.impl.%Op.decl), @Inc.impl [concrete] +// CHECK:STDOUT: %Inc.impl_witness_table = impl_witness_table (@C.as.Inc.impl.%C.as.Inc.impl.Op.decl), @C.as.Inc.impl [concrete] // CHECK:STDOUT: %Inc.impl_witness: = impl_witness %Inc.impl_witness_table [concrete = constants.%Inc.impl_witness] -// CHECK:STDOUT: impl_decl @AddAssignWith.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.AddAssignWith.impl [concrete] {} { // CHECK:STDOUT: %C.ref.loc22_6: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %AddAssignWith.ref: %AddAssignWith.type.fc6 = name_ref AddAssignWith, imports.%Core.AddAssignWith [concrete = constants.%AddAssignWith.generic] // CHECK:STDOUT: %C.ref.loc22_30: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %AddAssignWith.type: type = facet_type <@AddAssignWith, @AddAssignWith(constants.%C)> [concrete = constants.%AddAssignWith.type.393] // CHECK:STDOUT: } -// CHECK:STDOUT: %AddAssignWith.impl_witness_table = impl_witness_table (@AddAssignWith.impl.%Op.decl), @AddAssignWith.impl [concrete] +// CHECK:STDOUT: %AddAssignWith.impl_witness_table = impl_witness_table (@C.as.AddAssignWith.impl.%C.as.AddAssignWith.impl.Op.decl), @C.as.AddAssignWith.impl [concrete] // CHECK:STDOUT: %AddAssignWith.impl_witness: = impl_witness %AddAssignWith.impl_witness_table [concrete = constants.%AddAssignWith.impl_witness] // CHECK:STDOUT: %TestIncNonRef.decl: %TestIncNonRef.type = fn_decl @TestIncNonRef [concrete = constants.%TestIncNonRef] { // CHECK:STDOUT: %a.patt: %pattern_type.c48 = binding_pattern a [concrete] @@ -143,8 +143,8 @@ fn TestAddAssignNonRef(a: C, b: C) { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @Inc.impl: %C.ref as %Inc.ref { -// CHECK:STDOUT: %Op.decl: %Op.type.73a = fn_decl @Op.loc20 [concrete = constants.%Op.0c9] { +// CHECK:STDOUT: impl @C.as.Inc.impl: %C.ref as %Inc.ref { +// CHECK:STDOUT: %C.as.Inc.impl.Op.decl: %C.as.Inc.impl.Op.type = fn_decl @C.as.Inc.impl.Op [concrete = constants.%C.as.Inc.impl.Op] { // CHECK:STDOUT: %self.patt: %pattern_type.44a = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.44a = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %.loc20_9: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] @@ -159,12 +159,12 @@ fn TestAddAssignNonRef(a: C, b: C) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .C = -// CHECK:STDOUT: .Op = %Op.decl +// CHECK:STDOUT: .Op = %C.as.Inc.impl.Op.decl // CHECK:STDOUT: witness = file.%Inc.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @AddAssignWith.impl: %C.ref.loc22_6 as %AddAssignWith.type { -// CHECK:STDOUT: %Op.decl: %Op.type.0d7 = fn_decl @Op.loc23 [concrete = constants.%Op.572] { +// CHECK:STDOUT: impl @C.as.AddAssignWith.impl: %C.ref.loc22_6 as %AddAssignWith.type { +// CHECK:STDOUT: %C.as.AddAssignWith.impl.Op.decl: %C.as.AddAssignWith.impl.Op.type = fn_decl @C.as.AddAssignWith.impl.Op [concrete = constants.%C.as.AddAssignWith.impl.Op] { // CHECK:STDOUT: %self.patt: %pattern_type.44a = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.44a = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %.loc23_9: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] @@ -184,7 +184,7 @@ fn TestAddAssignNonRef(a: C, b: C) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .C = -// CHECK:STDOUT: .Op = %Op.decl +// CHECK:STDOUT: .Op = %C.as.AddAssignWith.impl.Op.decl // CHECK:STDOUT: witness = file.%AddAssignWith.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: @@ -197,23 +197,23 @@ fn TestAddAssignNonRef(a: C, b: C) { // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Op.loc20(%self.param: %ptr.019); +// CHECK:STDOUT: fn @C.as.Inc.impl.Op(%self.param: %ptr.019); // CHECK:STDOUT: -// CHECK:STDOUT: fn @Op.loc23(%self.param: %ptr.019, %other.param: %C); +// CHECK:STDOUT: fn @C.as.AddAssignWith.impl.Op(%self.param: %ptr.019, %other.param: %C); // CHECK:STDOUT: // CHECK:STDOUT: fn @TestIncNonRef(%a.param: %C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a -// CHECK:STDOUT: %impl.elem0: %.bc7 = impl_witness_access constants.%Inc.impl_witness, element0 [concrete = constants.%Op.0c9] +// CHECK:STDOUT: %impl.elem0: %.bc7 = impl_witness_access constants.%Inc.impl_witness, element0 [concrete = constants.%C.as.Inc.impl.Op] // CHECK:STDOUT: %bound_method.loc34_3: = bound_method %a.ref, %impl.elem0 // CHECK:STDOUT: %.loc34: ref %C = temporary_storage // CHECK:STDOUT: %addr.loc34_5.1: %ptr.019 = addr_of %.loc34 -// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %bound_method.loc34_3(%addr.loc34_5.1) -// CHECK:STDOUT: %Op.bound: = bound_method %.loc34, constants.%Op.5d7 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.5d7, @Op.3(constants.%C) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc34_5: = bound_method %.loc34, %Op.specific_fn +// CHECK:STDOUT: %C.as.Inc.impl.Op.call: init %empty_tuple.type = call %bound_method.loc34_3(%addr.loc34_5.1) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc34, constants.%T.as.Destroy.impl.Op.5d7 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(constants.%C) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc34_5: = bound_method %.loc34, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr.loc34_5.2: %ptr.019 = addr_of %.loc34 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc34_5(%addr.loc34_5.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc34_5(%addr.loc34_5.2) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -221,16 +221,16 @@ fn TestAddAssignNonRef(a: C, b: C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem0: %.e2d = impl_witness_access constants.%AddAssignWith.impl_witness, element0 [concrete = constants.%Op.572] +// CHECK:STDOUT: %impl.elem0: %.e2d = impl_witness_access constants.%AddAssignWith.impl_witness, element0 [concrete = constants.%C.as.AddAssignWith.impl.Op] // CHECK:STDOUT: %bound_method.loc45_5: = bound_method %a.ref, %impl.elem0 // CHECK:STDOUT: %.loc45: ref %C = temporary_storage // CHECK:STDOUT: %addr.loc45_3.1: %ptr.019 = addr_of %.loc45 -// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %bound_method.loc45_5(%addr.loc45_3.1, %b.ref) -// CHECK:STDOUT: %Op.bound: = bound_method %.loc45, constants.%Op.5d7 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.5d7, @Op.3(constants.%C) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc45_3: = bound_method %.loc45, %Op.specific_fn +// CHECK:STDOUT: %C.as.AddAssignWith.impl.Op.call: init %empty_tuple.type = call %bound_method.loc45_5(%addr.loc45_3.1, %b.ref) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc45, constants.%T.as.Destroy.impl.Op.5d7 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(constants.%C) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc45_3: = bound_method %.loc45, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr.loc45_3.2: %ptr.019 = addr_of %.loc45 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc45_3(%addr.loc45_3.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc45_3(%addr.loc45_3.2) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/fail_no_impl.carbon b/toolchain/check/testdata/operators/overloaded/fail_no_impl.carbon index d99e55df8082..4c465f21b589 100644 --- a/toolchain/check/testdata/operators/overloaded/fail_no_impl.carbon +++ b/toolchain/check/testdata/operators/overloaded/fail_no_impl.carbon @@ -68,10 +68,10 @@ fn TestRef(b: C) { // CHECK:STDOUT: %AddAssignWith.generic: %AddAssignWith.type.fc6 = struct_value () [concrete] // CHECK:STDOUT: %Inc.type: type = facet_type <@Inc> [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.153: type = fn_type @Op.7, @Destroy.impl(%C) [concrete] -// CHECK:STDOUT: %Op.5d7: %Op.type.153 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.153: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.5d7: %T.as.Destroy.impl.Op.type.153 = struct_value () [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.5d7, @Op.7(%C) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(%C) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -180,11 +180,11 @@ fn TestRef(b: C) { // CHECK:STDOUT: %a.ref.loc41: ref %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b // CHECK:STDOUT: %a.ref.loc46: ref %C = name_ref a, %a -// CHECK:STDOUT: %Op.bound: = bound_method %a.var, constants.%Op.5d7 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.5d7, @Op.7(constants.%C) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %a.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %a.var, constants.%T.as.Destroy.impl.Op.5d7 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.5d7, @T.as.Destroy.impl.Op(constants.%C) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %a.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.019 = addr_of %a.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/implicit_as.carbon b/toolchain/check/testdata/operators/overloaded/implicit_as.carbon index 5a591640c7e9..31c5b5e3e849 100644 --- a/toolchain/check/testdata/operators/overloaded/implicit_as.carbon +++ b/toolchain/check/testdata/operators/overloaded/implicit_as.carbon @@ -53,18 +53,18 @@ fn Test() { // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %ImplicitAs.type.ac8: type = facet_type <@ImplicitAs, @ImplicitAs(%X)> [concrete] -// CHECK:STDOUT: %Convert.type.665: type = fn_type @Convert.1, @ImplicitAs(%X) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.665: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%X) [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.aa3: = impl_witness file.%ImplicitAs.impl_witness_table.loc19 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %pattern_type.019: type = pattern_type %X [concrete] -// CHECK:STDOUT: %Convert.type.853: type = fn_type @Convert.loc20 [concrete] -// CHECK:STDOUT: %Convert.08a: %Convert.type.853 = struct_value () [concrete] +// CHECK:STDOUT: %i32.as.ImplicitAs.impl.Convert.type: type = fn_type @i32.as.ImplicitAs.impl.Convert [concrete] +// CHECK:STDOUT: %i32.as.ImplicitAs.impl.Convert: %i32.as.ImplicitAs.impl.Convert.type = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet.d80: %ImplicitAs.type.ac8 = facet_value %i32, (%ImplicitAs.impl_witness.aa3) [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.b30: = impl_witness file.%ImplicitAs.impl_witness_table.loc23 [concrete] -// CHECK:STDOUT: %Convert.type.8a1: type = fn_type @Convert.loc24 [concrete] -// CHECK:STDOUT: %Convert.c7a: %Convert.type.8a1 = struct_value () [concrete] +// CHECK:STDOUT: %X.as.ImplicitAs.impl.Convert.type: type = fn_type @X.as.ImplicitAs.impl.Convert [concrete] +// CHECK:STDOUT: %X.as.ImplicitAs.impl.Convert: %X.as.ImplicitAs.impl.Convert.type = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet.bf9: %ImplicitAs.type.205 = facet_value %X, (%ImplicitAs.impl_witness.b30) [concrete] // CHECK:STDOUT: %Sink_i32.type: type = fn_type @Sink_i32 [concrete] // CHECK:STDOUT: %Sink_i32: %Sink_i32.type = struct_value () [concrete] @@ -79,14 +79,14 @@ fn Test() { // CHECK:STDOUT: %Test.type: type = fn_type @Test [concrete] // CHECK:STDOUT: %Test: %Test.type = struct_value () [concrete] // CHECK:STDOUT: %Source.specific_fn.363: = specific_function %Source, @Source(%X) [concrete] -// CHECK:STDOUT: %.2ea: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet.bf9 [concrete] +// CHECK:STDOUT: %.2ea: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet.bf9 [concrete] // CHECK:STDOUT: %Source.specific_fn.cc7: = specific_function %Source, @Source(%i32) [concrete] -// CHECK:STDOUT: %.9b4: type = fn_type_with_self_type %Convert.type.665, %ImplicitAs.facet.d80 [concrete] +// CHECK:STDOUT: %.9b4: type = fn_type_with_self_type %ImplicitAs.Convert.type.665, %ImplicitAs.facet.d80 [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.9e1: type = fn_type @Op.1, @Destroy.impl(%X) [concrete] -// CHECK:STDOUT: %Op.33a: %Op.type.9e1 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.9e1: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%X) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.33a: %T.as.Destroy.impl.Op.type.9e1 = struct_value () [concrete] // CHECK:STDOUT: %ptr.d17: type = ptr_type %X [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.33a, @Op.1(%X) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.33a, @T.as.Destroy.impl.Op(%X) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -113,7 +113,7 @@ fn Test() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %X.decl: type = class_decl @X [concrete = constants.%X] {} {} -// CHECK:STDOUT: impl_decl @ImplicitAs.impl.8f9 [concrete] {} { +// CHECK:STDOUT: impl_decl @i32.as.ImplicitAs.impl [concrete] {} { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] @@ -121,9 +121,9 @@ fn Test() { // CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [concrete = constants.%X] // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%X)> [concrete = constants.%ImplicitAs.type.ac8] // CHECK:STDOUT: } -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.loc19 = impl_witness_table (@ImplicitAs.impl.8f9.%Convert.decl), @ImplicitAs.impl.8f9 [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.loc19 = impl_witness_table (@i32.as.ImplicitAs.impl.%i32.as.ImplicitAs.impl.Convert.decl), @i32.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.loc19: = impl_witness %ImplicitAs.impl_witness_table.loc19 [concrete = constants.%ImplicitAs.impl_witness.aa3] -// CHECK:STDOUT: impl_decl @ImplicitAs.impl.c94 [concrete] {} { +// CHECK:STDOUT: impl_decl @X.as.ImplicitAs.impl [concrete] {} { // CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [concrete = constants.%X] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %ImplicitAs.ref: %ImplicitAs.type.cc7 = name_ref ImplicitAs, imports.%Core.ImplicitAs [concrete = constants.%ImplicitAs.generic] @@ -131,7 +131,7 @@ fn Test() { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%i32)> [concrete = constants.%ImplicitAs.type.205] // CHECK:STDOUT: } -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.loc23 = impl_witness_table (@ImplicitAs.impl.c94.%Convert.decl), @ImplicitAs.impl.c94 [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.loc23 = impl_witness_table (@X.as.ImplicitAs.impl.%X.as.ImplicitAs.impl.Convert.decl), @X.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.loc23: = impl_witness %ImplicitAs.impl_witness_table.loc23 [concrete = constants.%ImplicitAs.impl_witness.b30] // CHECK:STDOUT: %Sink_i32.decl: %Sink_i32.type = fn_decl @Sink_i32 [concrete = constants.%Sink_i32] { // CHECK:STDOUT: %n.patt: %pattern_type.7ce = binding_pattern n [concrete] @@ -165,8 +165,8 @@ fn Test() { // CHECK:STDOUT: %Test.decl: %Test.type = fn_decl @Test [concrete = constants.%Test] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @ImplicitAs.impl.8f9: %i32 as %ImplicitAs.type { -// CHECK:STDOUT: %Convert.decl: %Convert.type.853 = fn_decl @Convert.loc20 [concrete = constants.%Convert.08a] { +// CHECK:STDOUT: impl @i32.as.ImplicitAs.impl: %i32 as %ImplicitAs.type { +// CHECK:STDOUT: %i32.as.ImplicitAs.impl.Convert.decl: %i32.as.ImplicitAs.impl.Convert.type = fn_decl @i32.as.ImplicitAs.impl.Convert [concrete = constants.%i32.as.ImplicitAs.impl.Convert] { // CHECK:STDOUT: %self.patt: %pattern_type.7ce = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.7ce = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.019 = return_slot_pattern [concrete] @@ -185,12 +185,12 @@ fn Test() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .X = -// CHECK:STDOUT: .Convert = %Convert.decl +// CHECK:STDOUT: .Convert = %i32.as.ImplicitAs.impl.Convert.decl // CHECK:STDOUT: witness = file.%ImplicitAs.impl_witness.loc19 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @ImplicitAs.impl.c94: %X.ref as %ImplicitAs.type { -// CHECK:STDOUT: %Convert.decl: %Convert.type.8a1 = fn_decl @Convert.loc24 [concrete = constants.%Convert.c7a] { +// CHECK:STDOUT: impl @X.as.ImplicitAs.impl: %X.ref as %ImplicitAs.type { +// CHECK:STDOUT: %X.as.ImplicitAs.impl.Convert.decl: %X.as.ImplicitAs.impl.Convert.type = fn_decl @X.as.ImplicitAs.impl.Convert [concrete = constants.%X.as.ImplicitAs.impl.Convert] { // CHECK:STDOUT: %self.patt: %pattern_type.019 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.019 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] @@ -207,7 +207,7 @@ fn Test() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .X = -// CHECK:STDOUT: .Convert = %Convert.decl +// CHECK:STDOUT: .Convert = %X.as.ImplicitAs.impl.Convert.decl // CHECK:STDOUT: witness = file.%ImplicitAs.impl_witness.loc23 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -224,7 +224,7 @@ fn Test() { // CHECK:STDOUT: .n = %.loc16 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert.loc20(%self.param: %i32) -> %return.param: %X { +// CHECK:STDOUT: fn @i32.as.ImplicitAs.impl.Convert(%self.param: %i32) -> %return.param: %X { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: %i32 = name_ref self, %self // CHECK:STDOUT: %.loc20_51.1: %struct_type.n = struct_literal (%self.ref) @@ -235,7 +235,7 @@ fn Test() { // CHECK:STDOUT: return %.loc20_52 to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert.loc24(%self.param: %X) -> %i32 { +// CHECK:STDOUT: fn @X.as.ImplicitAs.impl.Convert(%self.param: %X) -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: %X = name_ref self, %self // CHECK:STDOUT: %n.ref: %X.elem = name_ref n, @X.%.loc16 [concrete = @X.%.loc16] @@ -276,12 +276,12 @@ fn Test() { // CHECK:STDOUT: %Source.specific_fn.loc34: = specific_function %Source.ref.loc34, @Source(constants.%X) [concrete = constants.%Source.specific_fn.363] // CHECK:STDOUT: %.loc34_20.1: ref %X = temporary_storage // CHECK:STDOUT: %Source.call.loc34: init %X = call %Source.specific_fn.loc34() to %.loc34_20.1 -// CHECK:STDOUT: %impl.elem0.loc34: %.2ea = impl_witness_access constants.%ImplicitAs.impl_witness.b30, element0 [concrete = constants.%Convert.c7a] +// CHECK:STDOUT: %impl.elem0.loc34: %.2ea = impl_witness_access constants.%ImplicitAs.impl_witness.b30, element0 [concrete = constants.%X.as.ImplicitAs.impl.Convert] // CHECK:STDOUT: %bound_method.loc34_20.1: = bound_method %Source.call.loc34, %impl.elem0.loc34 // CHECK:STDOUT: %.loc34_20.2: ref %X = temporary %.loc34_20.1, %Source.call.loc34 // CHECK:STDOUT: %.loc34_20.3: %X = bind_value %.loc34_20.2 -// CHECK:STDOUT: %Convert.call.loc34: init %i32 = call %bound_method.loc34_20.1(%.loc34_20.3) -// CHECK:STDOUT: %.loc34_20.4: %i32 = value_of_initializer %Convert.call.loc34 +// CHECK:STDOUT: %X.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc34_20.1(%.loc34_20.3) +// CHECK:STDOUT: %.loc34_20.4: %i32 = value_of_initializer %X.as.ImplicitAs.impl.Convert.call // CHECK:STDOUT: %.loc34_20.5: %i32 = converted %Source.call.loc34, %.loc34_20.4 // CHECK:STDOUT: %Sink_i32.call: init %empty_tuple.type = call %Sink_i32.ref(%.loc34_20.5) // CHECK:STDOUT: %Sink_X.ref: %Sink_X.type = name_ref Sink_X, file.%Sink_X.decl [concrete = constants.%Sink_X] @@ -290,26 +290,26 @@ fn Test() { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %Source.specific_fn.loc35: = specific_function %Source.ref.loc35, @Source(constants.%i32) [concrete = constants.%Source.specific_fn.cc7] // CHECK:STDOUT: %Source.call.loc35: init %i32 = call %Source.specific_fn.loc35() -// CHECK:STDOUT: %impl.elem0.loc35: %.9b4 = impl_witness_access constants.%ImplicitAs.impl_witness.aa3, element0 [concrete = constants.%Convert.08a] +// CHECK:STDOUT: %impl.elem0.loc35: %.9b4 = impl_witness_access constants.%ImplicitAs.impl_witness.aa3, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert] // CHECK:STDOUT: %bound_method.loc35_20.1: = bound_method %Source.call.loc35, %impl.elem0.loc35 // CHECK:STDOUT: %.loc35_20.1: ref %X = temporary_storage // CHECK:STDOUT: %.loc35_20.2: %i32 = value_of_initializer %Source.call.loc35 // CHECK:STDOUT: %.loc35_20.3: %i32 = converted %Source.call.loc35, %.loc35_20.2 -// CHECK:STDOUT: %Convert.call.loc35: init %X = call %bound_method.loc35_20.1(%.loc35_20.3) to %.loc35_20.1 -// CHECK:STDOUT: %.loc35_20.4: init %X = converted %Source.call.loc35, %Convert.call.loc35 +// CHECK:STDOUT: %i32.as.ImplicitAs.impl.Convert.call: init %X = call %bound_method.loc35_20.1(%.loc35_20.3) to %.loc35_20.1 +// CHECK:STDOUT: %.loc35_20.4: init %X = converted %Source.call.loc35, %i32.as.ImplicitAs.impl.Convert.call // CHECK:STDOUT: %.loc35_20.5: ref %X = temporary %.loc35_20.1, %.loc35_20.4 // CHECK:STDOUT: %.loc35_20.6: %X = bind_value %.loc35_20.5 // CHECK:STDOUT: %Sink_X.call: init %empty_tuple.type = call %Sink_X.ref(%.loc35_20.6) -// CHECK:STDOUT: %Op.bound.loc35: = bound_method %.loc35_20.1, constants.%Op.33a -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.33a, @Op.1(constants.%X) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc35_20.2: = bound_method %.loc35_20.1, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc35: = bound_method %.loc35_20.1, constants.%T.as.Destroy.impl.Op.33a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.33a, @T.as.Destroy.impl.Op(constants.%X) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc35_20.2: = bound_method %.loc35_20.1, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc35: %ptr.d17 = addr_of %.loc35_20.1 -// CHECK:STDOUT: %no_op.loc35: init %empty_tuple.type = call %bound_method.loc35_20.2(%addr.loc35) -// CHECK:STDOUT: %Op.bound.loc34: = bound_method %.loc34_20.1, constants.%Op.33a -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.33a, @Op.1(constants.%X) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc34_20.2: = bound_method %.loc34_20.1, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc35: init %empty_tuple.type = call %bound_method.loc35_20.2(%addr.loc35) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc34: = bound_method %.loc34_20.1, constants.%T.as.Destroy.impl.Op.33a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.33a, @T.as.Destroy.impl.Op(constants.%X) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc34_20.2: = bound_method %.loc34_20.1, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc34: %ptr.d17 = addr_of %.loc34_20.1 -// CHECK:STDOUT: %no_op.loc34: init %empty_tuple.type = call %bound_method.loc34_20.2(%addr.loc34) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc34: init %empty_tuple.type = call %bound_method.loc34_20.2(%addr.loc34) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/inc.carbon b/toolchain/check/testdata/operators/overloaded/inc.carbon index 6f3ca19ce9a9..5f8e82f129b0 100644 --- a/toolchain/check/testdata/operators/overloaded/inc.carbon +++ b/toolchain/check/testdata/operators/overloaded/inc.carbon @@ -34,14 +34,14 @@ fn TestOp() { // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %Inc.type: type = facet_type <@Inc> [concrete] -// CHECK:STDOUT: %Op.type.e3a: type = fn_type @Op.1 [concrete] +// CHECK:STDOUT: %Inc.Op.type: type = fn_type @Inc.Op [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Inc.impl_witness: = impl_witness file.%Inc.impl_witness_table [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] -// CHECK:STDOUT: %Op.type.73a: type = fn_type @Op.loc22 [concrete] -// CHECK:STDOUT: %Op.0c9: %Op.type.73a = struct_value () [concrete] +// CHECK:STDOUT: %C.as.Inc.impl.Op.type: type = fn_type @C.as.Inc.impl.Op [concrete] +// CHECK:STDOUT: %C.as.Inc.impl.Op: %C.as.Inc.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %Inc.facet: %Inc.type = facet_value %C, (%Inc.impl_witness) [concrete] -// CHECK:STDOUT: %.bc7: type = fn_type_with_self_type %Op.type.e3a, %Inc.facet [concrete] +// CHECK:STDOUT: %.bc7: type = fn_type_with_self_type %Inc.Op.type, %Inc.facet [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -51,10 +51,10 @@ fn TestOp() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: // CHECK:STDOUT: %c.ref: ref %C = name_ref c, %c -// CHECK:STDOUT: %impl.elem0: %.bc7 = impl_witness_access constants.%Inc.impl_witness, element0 [concrete = constants.%Op.0c9] +// CHECK:STDOUT: %impl.elem0: %.bc7 = impl_witness_access constants.%Inc.impl_witness, element0 [concrete = constants.%C.as.Inc.impl.Op] // CHECK:STDOUT: %bound_method.loc28: = bound_method %c.ref, %impl.elem0 // CHECK:STDOUT: %addr.loc28: %ptr.019 = addr_of %c.ref -// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %bound_method.loc28(%addr.loc28) +// CHECK:STDOUT: %C.as.Inc.impl.Op.call: init %empty_tuple.type = call %bound_method.loc28(%addr.loc28) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/index.carbon b/toolchain/check/testdata/operators/overloaded/index.carbon index a8dd02e17287..8b91a250f99a 100644 --- a/toolchain/check/testdata/operators/overloaded/index.carbon +++ b/toolchain/check/testdata/operators/overloaded/index.carbon @@ -172,10 +172,10 @@ fn F() { ()[()]; } // CHECK:STDOUT: %pattern_type.2ad: type = pattern_type %Self.as_type [symbolic] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %SubscriptType [symbolic] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] -// CHECK:STDOUT: %At.type: type = fn_type @At, @IndexWith(%SubscriptType) [symbolic] -// CHECK:STDOUT: %At: %At.type = struct_value () [symbolic] +// CHECK:STDOUT: %IndexWith.At.type: type = fn_type @IndexWith.At, @IndexWith(%SubscriptType) [symbolic] +// CHECK:STDOUT: %IndexWith.At: %IndexWith.At.type = struct_value () [symbolic] // CHECK:STDOUT: %IndexWith.assoc_type: type = assoc_entity_type @IndexWith, @IndexWith(%SubscriptType) [symbolic] -// CHECK:STDOUT: %assoc0: %IndexWith.assoc_type = assoc_entity element0, @IndexWith.%At.decl [symbolic] +// CHECK:STDOUT: %assoc0: %IndexWith.assoc_type = assoc_entity element0, @IndexWith.%IndexWith.At.decl [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -195,67 +195,67 @@ fn F() { ()[()]; } // CHECK:STDOUT: !definition: // CHECK:STDOUT: %IndexWith.type: type = facet_type <@IndexWith, @IndexWith(%SubscriptType.loc4_21.1)> [symbolic = %IndexWith.type (constants.%IndexWith.type.b94)] // CHECK:STDOUT: %Self.2: @IndexWith.%IndexWith.type (%IndexWith.type.b94) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] -// CHECK:STDOUT: %At.type: type = fn_type @At, @IndexWith(%SubscriptType.loc4_21.1) [symbolic = %At.type (constants.%At.type)] -// CHECK:STDOUT: %At: @IndexWith.%At.type (%At.type) = struct_value () [symbolic = %At (constants.%At)] +// CHECK:STDOUT: %IndexWith.At.type: type = fn_type @IndexWith.At, @IndexWith(%SubscriptType.loc4_21.1) [symbolic = %IndexWith.At.type (constants.%IndexWith.At.type)] +// CHECK:STDOUT: %IndexWith.At: @IndexWith.%IndexWith.At.type (%IndexWith.At.type) = struct_value () [symbolic = %IndexWith.At (constants.%IndexWith.At)] // CHECK:STDOUT: %IndexWith.assoc_type: type = assoc_entity_type @IndexWith, @IndexWith(%SubscriptType.loc4_21.1) [symbolic = %IndexWith.assoc_type (constants.%IndexWith.assoc_type)] -// CHECK:STDOUT: %assoc0.loc5_52.2: @IndexWith.%IndexWith.assoc_type (%IndexWith.assoc_type) = assoc_entity element0, %At.decl [symbolic = %assoc0.loc5_52.2 (constants.%assoc0)] +// CHECK:STDOUT: %assoc0.loc5_52.2: @IndexWith.%IndexWith.assoc_type (%IndexWith.assoc_type) = assoc_entity element0, %IndexWith.At.decl [symbolic = %assoc0.loc5_52.2 (constants.%assoc0)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: %Self.1: @IndexWith.%IndexWith.type (%IndexWith.type.b94) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] -// CHECK:STDOUT: %At.decl: @IndexWith.%At.type (%At.type) = fn_decl @At [symbolic = @IndexWith.%At (constants.%At)] { -// CHECK:STDOUT: %self.patt: @At.%pattern_type.loc5_9 (%pattern_type.2ad) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @At.%pattern_type.loc5_9 (%pattern_type.2ad) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %subscript.patt: @At.%pattern_type.loc5_21 (%pattern_type.7dc) = binding_pattern subscript [concrete] -// CHECK:STDOUT: %subscript.param_patt: @At.%pattern_type.loc5_21 (%pattern_type.7dc) = value_param_pattern %subscript.patt, call_param1 [concrete] +// CHECK:STDOUT: %IndexWith.At.decl: @IndexWith.%IndexWith.At.type (%IndexWith.At.type) = fn_decl @IndexWith.At [symbolic = @IndexWith.%IndexWith.At (constants.%IndexWith.At)] { +// CHECK:STDOUT: %self.patt: @IndexWith.At.%pattern_type.loc5_9 (%pattern_type.2ad) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @IndexWith.At.%pattern_type.loc5_9 (%pattern_type.2ad) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %subscript.patt: @IndexWith.At.%pattern_type.loc5_21 (%pattern_type.7dc) = binding_pattern subscript [concrete] +// CHECK:STDOUT: %subscript.param_patt: @IndexWith.At.%pattern_type.loc5_21 (%pattern_type.7dc) = value_param_pattern %subscript.patt, call_param1 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.cb1 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.cb1 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc5_51.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc5_51.2: type = converted %.loc5_51.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %self.param: @At.%Self.as_type.loc5_15.2 (%Self.as_type) = value_param call_param0 -// CHECK:STDOUT: %.loc5_15.1: type = splice_block %.loc5_15.3 [symbolic = %Self.as_type.loc5_15.2 (constants.%Self.as_type)] { -// CHECK:STDOUT: %.loc5_15.2: @At.%IndexWith.type (%IndexWith.type.b94) = specific_constant @IndexWith.%Self.1, @IndexWith(constants.%SubscriptType) [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.ref: @At.%IndexWith.type (%IndexWith.type.b94) = name_ref Self, %.loc5_15.2 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc5_15.1: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc5_15.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc5_15.3: type = converted %Self.ref, %Self.as_type.loc5_15.1 [symbolic = %Self.as_type.loc5_15.2 (constants.%Self.as_type)] +// CHECK:STDOUT: %self.param: @IndexWith.At.%Self.as_type.loc5_15.1 (%Self.as_type) = value_param call_param0 +// CHECK:STDOUT: %.loc5_15.1: type = splice_block %.loc5_15.3 [symbolic = %Self.as_type.loc5_15.1 (constants.%Self.as_type)] { +// CHECK:STDOUT: %.loc5_15.2: @IndexWith.At.%IndexWith.type (%IndexWith.type.b94) = specific_constant @IndexWith.%Self.1, @IndexWith(constants.%SubscriptType) [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %Self.ref: @IndexWith.At.%IndexWith.type (%IndexWith.type.b94) = name_ref Self, %.loc5_15.2 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %Self.as_type.loc5_15.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc5_15.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc5_15.3: type = converted %Self.ref, %Self.as_type.loc5_15.2 [symbolic = %Self.as_type.loc5_15.1 (constants.%Self.as_type)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @At.%Self.as_type.loc5_15.2 (%Self.as_type) = bind_name self, %self.param -// CHECK:STDOUT: %subscript.param: @At.%SubscriptType (%SubscriptType) = value_param call_param1 +// CHECK:STDOUT: %self: @IndexWith.At.%Self.as_type.loc5_15.1 (%Self.as_type) = bind_name self, %self.param +// CHECK:STDOUT: %subscript.param: @IndexWith.At.%SubscriptType (%SubscriptType) = value_param call_param1 // CHECK:STDOUT: %SubscriptType.ref: type = name_ref SubscriptType, @IndexWith.%SubscriptType.loc4_21.2 [symbolic = %SubscriptType (constants.%SubscriptType)] -// CHECK:STDOUT: %subscript: @At.%SubscriptType (%SubscriptType) = bind_name subscript, %subscript.param +// CHECK:STDOUT: %subscript: @IndexWith.At.%SubscriptType (%SubscriptType) = bind_name subscript, %subscript.param // CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param call_param2 // CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0.loc5_52.1: @IndexWith.%IndexWith.assoc_type (%IndexWith.assoc_type) = assoc_entity element0, %At.decl [symbolic = %assoc0.loc5_52.2 (constants.%assoc0)] +// CHECK:STDOUT: %assoc0.loc5_52.1: @IndexWith.%IndexWith.assoc_type (%IndexWith.assoc_type) = assoc_entity element0, %IndexWith.At.decl [symbolic = %assoc0.loc5_52.2 (constants.%assoc0)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 // CHECK:STDOUT: .SubscriptType = // CHECK:STDOUT: .At = %assoc0.loc5_52.1 -// CHECK:STDOUT: witness = (%At.decl) +// CHECK:STDOUT: witness = (%IndexWith.At.decl) // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @At(@IndexWith.%SubscriptType.loc4_21.2: type, @IndexWith.%Self.1: @IndexWith.%IndexWith.type (%IndexWith.type.b94)) { +// CHECK:STDOUT: generic fn @IndexWith.At(@IndexWith.%SubscriptType.loc4_21.2: type, @IndexWith.%Self.1: @IndexWith.%IndexWith.type (%IndexWith.type.b94)) { // CHECK:STDOUT: %SubscriptType: type = bind_symbolic_name SubscriptType, 0 [symbolic = %SubscriptType (constants.%SubscriptType)] // CHECK:STDOUT: %IndexWith.type: type = facet_type <@IndexWith, @IndexWith(%SubscriptType)> [symbolic = %IndexWith.type (constants.%IndexWith.type.b94)] -// CHECK:STDOUT: %Self: @At.%IndexWith.type (%IndexWith.type.b94) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc5_15.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc5_15.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %pattern_type.loc5_9: type = pattern_type %Self.as_type.loc5_15.2 [symbolic = %pattern_type.loc5_9 (constants.%pattern_type.2ad)] +// CHECK:STDOUT: %Self: @IndexWith.At.%IndexWith.type (%IndexWith.type.b94) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %Self.as_type.loc5_15.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc5_15.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %pattern_type.loc5_9: type = pattern_type %Self.as_type.loc5_15.1 [symbolic = %pattern_type.loc5_9 (constants.%pattern_type.2ad)] // CHECK:STDOUT: %pattern_type.loc5_21: type = pattern_type %SubscriptType [symbolic = %pattern_type.loc5_21 (constants.%pattern_type.7dc)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @At.%Self.as_type.loc5_15.2 (%Self.as_type), %subscript.param: @At.%SubscriptType (%SubscriptType)) -> %empty_tuple.type; +// CHECK:STDOUT: fn(%self.param: @IndexWith.At.%Self.as_type.loc5_15.1 (%Self.as_type), %subscript.param: @IndexWith.At.%SubscriptType (%SubscriptType)) -> %empty_tuple.type; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @IndexWith(constants.%SubscriptType) { // CHECK:STDOUT: %SubscriptType.loc4_21.1 => constants.%SubscriptType // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @At(constants.%SubscriptType, constants.%Self) { +// CHECK:STDOUT: specific @IndexWith.At(constants.%SubscriptType, constants.%Self) { // CHECK:STDOUT: %SubscriptType => constants.%SubscriptType // CHECK:STDOUT: %IndexWith.type => constants.%IndexWith.type.b94 // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %Self.as_type.loc5_15.2 => constants.%Self.as_type +// CHECK:STDOUT: %Self.as_type.loc5_15.1 => constants.%Self.as_type // CHECK:STDOUT: %pattern_type.loc5_9 => constants.%pattern_type.2ad // CHECK:STDOUT: %pattern_type.loc5_21 => constants.%pattern_type.7dc // CHECK:STDOUT: } @@ -269,8 +269,8 @@ fn F() { ()[()]; } // CHECK:STDOUT: %SubscriptType: type = bind_symbolic_name SubscriptType, 0 [symbolic] // CHECK:STDOUT: %IndexWith.type.bd2: type = facet_type <@IndexWith, @IndexWith(%SubscriptType)> [symbolic] // CHECK:STDOUT: %Self.30a: %IndexWith.type.bd2 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %At.type.cf4: type = fn_type @At.1, @IndexWith(%SubscriptType) [symbolic] -// CHECK:STDOUT: %At.281: %At.type.cf4 = struct_value () [symbolic] +// CHECK:STDOUT: %IndexWith.At.type.cf4: type = fn_type @IndexWith.At, @IndexWith(%SubscriptType) [symbolic] +// CHECK:STDOUT: %IndexWith.At.281: %IndexWith.At.type.cf4 = struct_value () [symbolic] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self.30a [symbolic] // CHECK:STDOUT: %pattern_type.e1a: type = pattern_type %Self.as_type [symbolic] @@ -279,20 +279,20 @@ fn F() { ()[()]; } // CHECK:STDOUT: %assoc0.af8: %IndexWith.assoc_type.290 = assoc_entity element0, imports.%Core.import_ref.e99 [symbolic] // CHECK:STDOUT: %IndexWith.type.a51: type = facet_type <@IndexWith, @IndexWith(%empty_tuple.type)> [concrete] // CHECK:STDOUT: %Self.8f0: %IndexWith.type.a51 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %At.type.969: type = fn_type @At.1, @IndexWith(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %At.9b9: %At.type.969 = struct_value () [concrete] +// CHECK:STDOUT: %IndexWith.At.type.969: type = fn_type @IndexWith.At, @IndexWith(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %IndexWith.At.9b9: %IndexWith.At.type.969 = struct_value () [concrete] // CHECK:STDOUT: %IndexWith.assoc_type.3d4: type = assoc_entity_type @IndexWith, @IndexWith(%empty_tuple.type) [concrete] // CHECK:STDOUT: %assoc0.21b: %IndexWith.assoc_type.3d4 = assoc_entity element0, imports.%Core.import_ref.e99 [concrete] // CHECK:STDOUT: %IndexWith.impl_witness: = impl_witness file.%IndexWith.impl_witness_table [concrete] -// CHECK:STDOUT: %At.type.486: type = fn_type @At.loc7 [concrete] -// CHECK:STDOUT: %At.7c4: %At.type.486 = struct_value () [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.IndexWith.impl.At.type: type = fn_type @empty_tuple.type.as.IndexWith.impl.At [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.IndexWith.impl.At: %empty_tuple.type.as.IndexWith.impl.At.type = struct_value () [concrete] // CHECK:STDOUT: %IndexWith.facet: %IndexWith.type.a51 = facet_value %empty_tuple.type, (%IndexWith.impl_witness) [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %assoc0.e1e: %IndexWith.assoc_type.290 = assoc_entity element0, imports.%Core.import_ref.981 [symbolic] -// CHECK:STDOUT: %.ffc: type = fn_type_with_self_type %At.type.969, %IndexWith.facet [concrete] -// CHECK:STDOUT: %At.bound: = bound_method %empty_tuple, %At.7c4 [concrete] +// CHECK:STDOUT: %.ffc: type = fn_type_with_self_type %IndexWith.At.type.969, %IndexWith.facet [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.IndexWith.impl.At.bound: = bound_method %empty_tuple, %empty_tuple.type.as.IndexWith.impl.At [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -304,10 +304,10 @@ fn F() { ()[()]; } // CHECK:STDOUT: %Core.import_ref.5ab3ec.1: type = import_ref Core//core_wrong_arg_count, loc4_21, loaded [symbolic = @IndexWith.%SubscriptType (constants.%SubscriptType)] // CHECK:STDOUT: %Core.import_ref.68a = import_ref Core//core_wrong_arg_count, inst25 [no loc], unloaded // CHECK:STDOUT: %Core.import_ref.613: @IndexWith.%IndexWith.assoc_type (%IndexWith.assoc_type.290) = import_ref Core//core_wrong_arg_count, loc5_52, loaded [symbolic = @IndexWith.%assoc0 (constants.%assoc0.e1e)] -// CHECK:STDOUT: %Core.At: @IndexWith.%At.type (%At.type.cf4) = import_ref Core//core_wrong_arg_count, At, loaded [symbolic = @IndexWith.%At (constants.%At.281)] +// CHECK:STDOUT: %Core.At: @IndexWith.%IndexWith.At.type (%IndexWith.At.type.cf4) = import_ref Core//core_wrong_arg_count, At, loaded [symbolic = @IndexWith.%IndexWith.At (constants.%IndexWith.At.281)] // CHECK:STDOUT: %Core.import_ref.5ab3ec.2: type = import_ref Core//core_wrong_arg_count, loc4_21, loaded [symbolic = @IndexWith.%SubscriptType (constants.%SubscriptType)] // CHECK:STDOUT: %Core.import_ref.fb5: @IndexWith.%IndexWith.type (%IndexWith.type.bd2) = import_ref Core//core_wrong_arg_count, inst25 [no loc], loaded [symbolic = @IndexWith.%Self (constants.%Self.30a)] -// CHECK:STDOUT: %Core.import_ref.e99: @IndexWith.%At.type (%At.type.cf4) = import_ref Core//core_wrong_arg_count, loc5_52, loaded [symbolic = @IndexWith.%At (constants.%At.281)] +// CHECK:STDOUT: %Core.import_ref.e99: @IndexWith.%IndexWith.At.type (%IndexWith.At.type.cf4) = import_ref Core//core_wrong_arg_count, loc5_52, loaded [symbolic = @IndexWith.%IndexWith.At (constants.%IndexWith.At.281)] // CHECK:STDOUT: %Core.import_ref.981 = import_ref Core//core_wrong_arg_count, loc5_52, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: @@ -317,7 +317,7 @@ fn F() { ()[()]; } // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: impl_decl @IndexWith.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @empty_tuple.type.as.IndexWith.impl [concrete] {} { // CHECK:STDOUT: %.loc6_7.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc6_7.2: type = converted %.loc6_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] @@ -326,7 +326,7 @@ fn F() { ()[()]; } // CHECK:STDOUT: %.loc6_29: type = converted %.loc6_28, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %IndexWith.type: type = facet_type <@IndexWith, @IndexWith(constants.%empty_tuple.type)> [concrete = constants.%IndexWith.type.a51] // CHECK:STDOUT: } -// CHECK:STDOUT: %IndexWith.impl_witness_table = impl_witness_table (@IndexWith.impl.%At.decl), @IndexWith.impl [concrete] +// CHECK:STDOUT: %IndexWith.impl_witness_table = impl_witness_table (@empty_tuple.type.as.IndexWith.impl.%empty_tuple.type.as.IndexWith.impl.At.decl), @empty_tuple.type.as.IndexWith.impl [concrete] // CHECK:STDOUT: %IndexWith.impl_witness: = impl_witness %IndexWith.impl_witness_table [concrete = constants.%IndexWith.impl_witness] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} // CHECK:STDOUT: } @@ -337,8 +337,8 @@ fn F() { ()[()]; } // CHECK:STDOUT: !definition: // CHECK:STDOUT: %IndexWith.type: type = facet_type <@IndexWith, @IndexWith(%SubscriptType)> [symbolic = %IndexWith.type (constants.%IndexWith.type.bd2)] // CHECK:STDOUT: %Self: @IndexWith.%IndexWith.type (%IndexWith.type.bd2) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.30a)] -// CHECK:STDOUT: %At.type: type = fn_type @At.1, @IndexWith(%SubscriptType) [symbolic = %At.type (constants.%At.type.cf4)] -// CHECK:STDOUT: %At: @IndexWith.%At.type (%At.type.cf4) = struct_value () [symbolic = %At (constants.%At.281)] +// CHECK:STDOUT: %IndexWith.At.type: type = fn_type @IndexWith.At, @IndexWith(%SubscriptType) [symbolic = %IndexWith.At.type (constants.%IndexWith.At.type.cf4)] +// CHECK:STDOUT: %IndexWith.At: @IndexWith.%IndexWith.At.type (%IndexWith.At.type.cf4) = struct_value () [symbolic = %IndexWith.At (constants.%IndexWith.At.281)] // CHECK:STDOUT: %IndexWith.assoc_type: type = assoc_entity_type @IndexWith, @IndexWith(%SubscriptType) [symbolic = %IndexWith.assoc_type (constants.%IndexWith.assoc_type.290)] // CHECK:STDOUT: %assoc0: @IndexWith.%IndexWith.assoc_type (%IndexWith.assoc_type.290) = assoc_entity element0, imports.%Core.import_ref.e99 [symbolic = %assoc0 (constants.%assoc0.af8)] // CHECK:STDOUT: @@ -350,8 +350,8 @@ fn F() { ()[()]; } // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @IndexWith.impl: %.loc6_7.2 as %IndexWith.type { -// CHECK:STDOUT: %At.decl: %At.type.486 = fn_decl @At.loc7 [concrete = constants.%At.7c4] { +// CHECK:STDOUT: impl @empty_tuple.type.as.IndexWith.impl: %.loc6_7.2 as %IndexWith.type { +// CHECK:STDOUT: %empty_tuple.type.as.IndexWith.impl.At.decl: %empty_tuple.type.as.IndexWith.impl.At.type = fn_decl @empty_tuple.type.as.IndexWith.impl.At [concrete = constants.%empty_tuple.type.as.IndexWith.impl.At] { // CHECK:STDOUT: %self.patt: %pattern_type.cb1 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.cb1 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %subscript.patt: %pattern_type.cb1 = binding_pattern subscript [concrete] @@ -362,7 +362,7 @@ fn F() { ()[()]; } // CHECK:STDOUT: %.loc7_40.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc7_40.2: type = converted %.loc7_40.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %self.param: %empty_tuple.type = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @IndexWith.impl.%.loc6_7.2 [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @empty_tuple.type.as.IndexWith.impl.%.loc6_7.2 [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %self: %empty_tuple.type = bind_name self, %self.param // CHECK:STDOUT: %subscript.param: %empty_tuple.type = value_param call_param1 // CHECK:STDOUT: %.loc7_33.1: type = splice_block %.loc7_33.3 [concrete = constants.%empty_tuple.type] { @@ -375,14 +375,14 @@ fn F() { ()[()]; } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .At = %At.decl +// CHECK:STDOUT: .At = %empty_tuple.type.as.IndexWith.impl.At.decl // CHECK:STDOUT: witness = file.%IndexWith.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @At.1(imports.%Core.import_ref.5ab3ec.2: type, imports.%Core.import_ref.fb5: @IndexWith.%IndexWith.type (%IndexWith.type.bd2)) [from "core_wrong_arg_count.carbon"] { +// CHECK:STDOUT: generic fn @IndexWith.At(imports.%Core.import_ref.5ab3ec.2: type, imports.%Core.import_ref.fb5: @IndexWith.%IndexWith.type (%IndexWith.type.bd2)) [from "core_wrong_arg_count.carbon"] { // CHECK:STDOUT: %SubscriptType: type = bind_symbolic_name SubscriptType, 0 [symbolic = %SubscriptType (constants.%SubscriptType)] // CHECK:STDOUT: %IndexWith.type: type = facet_type <@IndexWith, @IndexWith(%SubscriptType)> [symbolic = %IndexWith.type (constants.%IndexWith.type.bd2)] -// CHECK:STDOUT: %Self: @At.1.%IndexWith.type (%IndexWith.type.bd2) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.30a)] +// CHECK:STDOUT: %Self: @IndexWith.At.%IndexWith.type (%IndexWith.type.bd2) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.30a)] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic = %Self.as_type (constants.%Self.as_type)] // CHECK:STDOUT: %pattern_type.1: type = pattern_type %Self.as_type [symbolic = %pattern_type.1 (constants.%pattern_type.e1a)] // CHECK:STDOUT: %pattern_type.2: type = pattern_type %SubscriptType [symbolic = %pattern_type.2 (constants.%pattern_type.7dc)] @@ -390,7 +390,7 @@ fn F() { ()[()]; } // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @At.loc7(%self.param: %empty_tuple.type, %subscript.param: %empty_tuple.type) -> %empty_tuple.type { +// CHECK:STDOUT: fn @empty_tuple.type.as.IndexWith.impl.At(%self.param: %empty_tuple.type, %subscript.param: %empty_tuple.type) -> %empty_tuple.type { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %.loc8_13: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] @@ -406,9 +406,9 @@ fn F() { ()[()]; } // CHECK:STDOUT: %.loc12_11.2: %empty_tuple.type = converted %.loc12_11.1, %empty_tuple.loc12_11 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %empty_tuple.loc12_14: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc12_15: %empty_tuple.type = converted %.loc12_14, %empty_tuple.loc12_14 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %impl.elem0: %.ffc = impl_witness_access constants.%IndexWith.impl_witness, element0 [concrete = constants.%At.7c4] -// CHECK:STDOUT: %bound_method: = bound_method %.loc12_11.2, %impl.elem0 [concrete = constants.%At.bound] -// CHECK:STDOUT: %At.call: init %empty_tuple.type = call %bound_method(%.loc12_11.2, %.loc12_15) +// CHECK:STDOUT: %impl.elem0: %.ffc = impl_witness_access constants.%IndexWith.impl_witness, element0 [concrete = constants.%empty_tuple.type.as.IndexWith.impl.At] +// CHECK:STDOUT: %bound_method: = bound_method %.loc12_11.2, %impl.elem0 [concrete = constants.%empty_tuple.type.as.IndexWith.impl.At.bound] +// CHECK:STDOUT: %empty_tuple.type.as.IndexWith.impl.At.call: init %empty_tuple.type = call %bound_method(%.loc12_11.2, %.loc12_15) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -416,7 +416,7 @@ fn F() { ()[()]; } // CHECK:STDOUT: %SubscriptType => constants.%SubscriptType // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @At.1(constants.%SubscriptType, constants.%Self.30a) { +// CHECK:STDOUT: specific @IndexWith.At(constants.%SubscriptType, constants.%Self.30a) { // CHECK:STDOUT: %SubscriptType => constants.%SubscriptType // CHECK:STDOUT: %IndexWith.type => constants.%IndexWith.type.bd2 // CHECK:STDOUT: %Self => constants.%Self.30a @@ -431,13 +431,13 @@ fn F() { ()[()]; } // CHECK:STDOUT: !definition: // CHECK:STDOUT: %IndexWith.type => constants.%IndexWith.type.a51 // CHECK:STDOUT: %Self => constants.%Self.8f0 -// CHECK:STDOUT: %At.type => constants.%At.type.969 -// CHECK:STDOUT: %At => constants.%At.9b9 +// CHECK:STDOUT: %IndexWith.At.type => constants.%IndexWith.At.type.969 +// CHECK:STDOUT: %IndexWith.At => constants.%IndexWith.At.9b9 // CHECK:STDOUT: %IndexWith.assoc_type => constants.%IndexWith.assoc_type.3d4 // CHECK:STDOUT: %assoc0 => constants.%assoc0.21b // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @At.1(constants.%empty_tuple.type, constants.%IndexWith.facet) { +// CHECK:STDOUT: specific @IndexWith.At(constants.%empty_tuple.type, constants.%IndexWith.facet) { // CHECK:STDOUT: %SubscriptType => constants.%empty_tuple.type // CHECK:STDOUT: %IndexWith.type => constants.%IndexWith.type.a51 // CHECK:STDOUT: %Self => constants.%IndexWith.facet diff --git a/toolchain/check/testdata/operators/overloaded/index_with_prelude.carbon b/toolchain/check/testdata/operators/overloaded/index_with_prelude.carbon index eb3bce339e7e..e2983382c4fe 100644 --- a/toolchain/check/testdata/operators/overloaded/index_with_prelude.carbon +++ b/toolchain/check/testdata/operators/overloaded/index_with_prelude.carbon @@ -92,18 +92,18 @@ let x: i32 = c[0]; // CHECK:STDOUT: %IndexWith.type.504: type = generic_interface_type @IndexWith [concrete] // CHECK:STDOUT: %IndexWith.generic: %IndexWith.type.504 = struct_value () [concrete] // CHECK:STDOUT: %IndexWith.type.e80: type = facet_type <@IndexWith, @IndexWith(%SubscriptType.8ee, %ElementType.e6b)> [concrete] -// CHECK:STDOUT: %At.type.b3f: type = fn_type @At.1, @IndexWith(%SubscriptType.8ee, %ElementType.e6b) [concrete] +// CHECK:STDOUT: %IndexWith.At.type.b3f: type = fn_type @IndexWith.At, @IndexWith(%SubscriptType.8ee, %ElementType.e6b) [concrete] // CHECK:STDOUT: %IndexWith.impl_witness: = impl_witness file.%IndexWith.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] // CHECK:STDOUT: %pattern_type.df7: type = pattern_type %SubscriptType.8ee [concrete] // CHECK:STDOUT: %pattern_type.c39: type = pattern_type %ElementType.e6b [concrete] -// CHECK:STDOUT: %At.type.178: type = fn_type @At.loc9 [concrete] -// CHECK:STDOUT: %At.d43: %At.type.178 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.IndexWith.impl.At.type: type = fn_type @C.as.IndexWith.impl.At [concrete] +// CHECK:STDOUT: %C.as.IndexWith.impl.At: %C.as.IndexWith.impl.At.type = struct_value () [concrete] // CHECK:STDOUT: %IndexWith.facet: %IndexWith.type.e80 = facet_value %C, (%IndexWith.impl_witness) [concrete] // CHECK:STDOUT: %ElementType.val: %ElementType.e6b = struct_value () [concrete] // CHECK:STDOUT: %SubscriptType.val: %SubscriptType.8ee = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] -// CHECK:STDOUT: %.d94: type = fn_type_with_self_type %At.type.b3f, %IndexWith.facet [concrete] +// CHECK:STDOUT: %.d94: type = fn_type_with_self_type %IndexWith.At.type.b3f, %IndexWith.facet [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -129,7 +129,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} // CHECK:STDOUT: %ElementType.decl: type = class_decl @ElementType [concrete = constants.%ElementType.e6b] {} {} // CHECK:STDOUT: %SubscriptType.decl: type = class_decl @SubscriptType [concrete = constants.%SubscriptType.8ee] {} {} -// CHECK:STDOUT: impl_decl @IndexWith.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.IndexWith.impl [concrete] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %IndexWith.ref: %IndexWith.type.504 = name_ref IndexWith, imports.%Core.IndexWith [concrete = constants.%IndexWith.generic] @@ -137,7 +137,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: %ElementType.ref: type = name_ref ElementType, file.%ElementType.decl [concrete = constants.%ElementType.e6b] // CHECK:STDOUT: %IndexWith.type: type = facet_type <@IndexWith, @IndexWith(constants.%SubscriptType.8ee, constants.%ElementType.e6b)> [concrete = constants.%IndexWith.type.e80] // CHECK:STDOUT: } -// CHECK:STDOUT: %IndexWith.impl_witness_table = impl_witness_table (@IndexWith.impl.%At.decl), @IndexWith.impl [concrete] +// CHECK:STDOUT: %IndexWith.impl_witness_table = impl_witness_table (@C.as.IndexWith.impl.%C.as.IndexWith.impl.At.decl), @C.as.IndexWith.impl [concrete] // CHECK:STDOUT: %IndexWith.impl_witness: = impl_witness %IndexWith.impl_witness_table [concrete = constants.%IndexWith.impl_witness] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %s.patt: %pattern_type.df7 = binding_pattern s [concrete] @@ -163,13 +163,13 @@ let x: i32 = c[0]; // CHECK:STDOUT: %x.patt: %pattern_type.c39 = binding_pattern x [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %ElementType.ref: type = name_ref ElementType, %ElementType.decl [concrete = constants.%ElementType.e6b] -// CHECK:STDOUT: %.loc16_25.1: ref %ElementType.e6b = temporary @__global_init.%.loc16, @__global_init.%At.call +// CHECK:STDOUT: %.loc16_25.1: ref %ElementType.e6b = temporary @__global_init.%.loc16, @__global_init.%C.as.IndexWith.impl.At.call // CHECK:STDOUT: %.loc16_25.2: %ElementType.e6b = bind_value %.loc16_25.1 // CHECK:STDOUT: %x: %ElementType.e6b = bind_name x, %.loc16_25.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @IndexWith.impl: %C.ref as %IndexWith.type { -// CHECK:STDOUT: %At.decl: %At.type.178 = fn_decl @At.loc9 [concrete = constants.%At.d43] { +// CHECK:STDOUT: impl @C.as.IndexWith.impl: %C.ref as %IndexWith.type { +// CHECK:STDOUT: %C.as.IndexWith.impl.At.decl: %C.as.IndexWith.impl.At.type = fn_decl @C.as.IndexWith.impl.At [concrete = constants.%C.as.IndexWith.impl.At] { // CHECK:STDOUT: %self.patt: %pattern_type.c48 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.c48 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %subscript.patt: %pattern_type.df7 = binding_pattern subscript [concrete] @@ -179,7 +179,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: } { // CHECK:STDOUT: %ElementType.ref: type = name_ref ElementType, file.%ElementType.decl [concrete = constants.%ElementType.e6b] // CHECK:STDOUT: %self.param: %C = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @IndexWith.impl.%C.ref [concrete = constants.%C] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @C.as.IndexWith.impl.%C.ref [concrete = constants.%C] // CHECK:STDOUT: %self: %C = bind_name self, %self.param // CHECK:STDOUT: %subscript.param: %SubscriptType.8ee = value_param call_param1 // CHECK:STDOUT: %SubscriptType.ref: type = name_ref SubscriptType, file.%SubscriptType.decl [concrete = constants.%SubscriptType.8ee] @@ -191,7 +191,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: !members: // CHECK:STDOUT: .SubscriptType = // CHECK:STDOUT: .ElementType = -// CHECK:STDOUT: .At = %At.decl +// CHECK:STDOUT: .At = %C.as.IndexWith.impl.At.decl // CHECK:STDOUT: witness = file.%IndexWith.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: @@ -222,7 +222,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: .Self = constants.%SubscriptType.8ee // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @At.loc9(%self.param: %C, %subscript.param: %SubscriptType.8ee) -> %return.param: %ElementType.e6b { +// CHECK:STDOUT: fn @C.as.IndexWith.impl.At(%self.param: %C, %subscript.param: %SubscriptType.8ee) -> %return.param: %ElementType.e6b { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %.loc10_13.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc10_13.2: init %ElementType.e6b = class_init (), %return [concrete = constants.%ElementType.val] @@ -236,10 +236,10 @@ let x: i32 = c[0]; // CHECK:STDOUT: %.loc15: %empty_struct_type = struct_literal () // CHECK:STDOUT: %c.ref: %C = name_ref c, file.%c // CHECK:STDOUT: %s.ref: %SubscriptType.8ee = name_ref s, file.%s -// CHECK:STDOUT: %impl.elem0: %.d94 = impl_witness_access constants.%IndexWith.impl_witness, element0 [concrete = constants.%At.d43] +// CHECK:STDOUT: %impl.elem0: %.d94 = impl_witness_access constants.%IndexWith.impl_witness, element0 [concrete = constants.%C.as.IndexWith.impl.At] // CHECK:STDOUT: %bound_method: = bound_method %c.ref, %impl.elem0 // CHECK:STDOUT: %.loc16: ref %ElementType.e6b = temporary_storage -// CHECK:STDOUT: %At.call: init %ElementType.e6b = call %bound_method(%c.ref, %s.ref) to %.loc16 +// CHECK:STDOUT: %C.as.IndexWith.impl.At.call: init %ElementType.e6b = call %bound_method(%c.ref, %s.ref) to %.loc16 // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -255,12 +255,12 @@ let x: i32 = c[0]; // CHECK:STDOUT: %IndexWith.type.504: type = generic_interface_type @IndexWith [concrete] // CHECK:STDOUT: %IndexWith.generic: %IndexWith.type.504 = struct_value () [concrete] // CHECK:STDOUT: %IndexWith.type.917: type = facet_type <@IndexWith, @IndexWith(%i32, %i32)> [concrete] -// CHECK:STDOUT: %At.type.d77: type = fn_type @At.1, @IndexWith(%i32, %i32) [concrete] +// CHECK:STDOUT: %IndexWith.At.type.d77: type = fn_type @IndexWith.At, @IndexWith(%i32, %i32) [concrete] // CHECK:STDOUT: %IndexWith.impl_witness: = impl_witness file.%IndexWith.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.511: type = pattern_type %tuple.type.d07 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %At.type.9ac: type = fn_type @At.loc5 [concrete] -// CHECK:STDOUT: %At.642: %At.type.9ac = struct_value () [concrete] +// CHECK:STDOUT: %tuple.type.as.IndexWith.impl.At.type: type = fn_type @tuple.type.as.IndexWith.impl.At [concrete] +// CHECK:STDOUT: %tuple.type.as.IndexWith.impl.At: %tuple.type.as.IndexWith.impl.At.type = struct_value () [concrete] // CHECK:STDOUT: %IndexWith.facet: %IndexWith.type.917 = facet_value %tuple.type.d07, (%IndexWith.impl_witness) [concrete] // CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] @@ -269,27 +269,27 @@ let x: i32 = c[0]; // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To.c80: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.3, @ImplicitAs.impl.4f9(%To.c80) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.3, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To.c80) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet.921: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet.921 [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.3(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet.921 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] -// CHECK:STDOUT: %Convert.bound.4e6: = bound_method %int_5.64b, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.a25: = bound_method %int_5.64b, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.4e6: = bound_method %int_5.64b, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.a25: = bound_method %int_5.64b, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_5.0f6: %i32 = int_value 5 [concrete] // CHECK:STDOUT: %tuple: %tuple.type.d07 = tuple_value (%int_1.5d2, %int_5.0f6) [concrete] -// CHECK:STDOUT: %Convert.bound.d04: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b6e: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b6e: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] -// CHECK:STDOUT: %.2dc: type = fn_type_with_self_type %At.type.d77, %IndexWith.facet [concrete] +// CHECK:STDOUT: %.2dc: type = fn_type_with_self_type %IndexWith.At.type.d77, %IndexWith.facet [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -303,8 +303,8 @@ let x: i32 = c[0]; // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.IndexWith: %IndexWith.type.504 = import_ref Core//prelude/operators/index, IndexWith, loaded [concrete = constants.%IndexWith.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -314,7 +314,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: .e = %e // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: impl_decl @IndexWith.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @tuple.type.as.IndexWith.impl [concrete] {} { // CHECK:STDOUT: %int_32.loc4_7: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc4_7: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_32.loc4_12: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -329,7 +329,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: %i32.loc4_40: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %IndexWith.type: type = facet_type <@IndexWith, @IndexWith(constants.%i32, constants.%i32)> [concrete = constants.%IndexWith.type.917] // CHECK:STDOUT: } -// CHECK:STDOUT: %IndexWith.impl_witness_table = impl_witness_table (@IndexWith.impl.%At.decl), @IndexWith.impl [concrete] +// CHECK:STDOUT: %IndexWith.impl_witness_table = impl_witness_table (@tuple.type.as.IndexWith.impl.%tuple.type.as.IndexWith.impl.At.decl), @tuple.type.as.IndexWith.impl [concrete] // CHECK:STDOUT: %IndexWith.impl_witness: = impl_witness %IndexWith.impl_witness_table [concrete = constants.%IndexWith.impl_witness] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %s.patt: %pattern_type.511 = binding_pattern s [concrete] @@ -342,19 +342,19 @@ let x: i32 = c[0]; // CHECK:STDOUT: %.loc10_17.2: %tuple.type.24b = tuple_literal (%i32.loc10_9, %i32.loc10_14) // CHECK:STDOUT: %.loc10_17.3: type = converted %.loc10_17.2, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl.elem0.loc10_26.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc10_26.1: = bound_method @__global_init.%int_1, %impl.elem0.loc10_26.1 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc10_26.1: = specific_function %impl.elem0.loc10_26.1, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc10_26.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc10_26.1: = bound_method @__global_init.%int_1, %impl.elem0.loc10_26.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc10_26.1: = specific_function %impl.elem0.loc10_26.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc10_26.2: = bound_method @__global_init.%int_1, %specific_fn.loc10_26.1 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc10_26.1: init %i32 = call %bound_method.loc10_26.2(@__global_init.%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc10_26.1: %i32 = value_of_initializer %int.convert_checked.loc10_26.1 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10_26.1: init %i32 = call %bound_method.loc10_26.2(@__global_init.%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc10_26.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10_26.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc10_26.2: %i32 = converted @__global_init.%int_1, %.loc10_26.1 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %impl.elem0.loc10_26.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc10_26.3: = bound_method @__global_init.%int_5, %impl.elem0.loc10_26.2 [concrete = constants.%Convert.bound.4e6] -// CHECK:STDOUT: %specific_fn.loc10_26.2: = specific_function %impl.elem0.loc10_26.2, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc10_26.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc10_26.3: = bound_method @__global_init.%int_5, %impl.elem0.loc10_26.2 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.4e6] +// CHECK:STDOUT: %specific_fn.loc10_26.2: = specific_function %impl.elem0.loc10_26.2, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc10_26.4: = bound_method @__global_init.%int_5, %specific_fn.loc10_26.2 [concrete = constants.%bound_method.a25] -// CHECK:STDOUT: %int.convert_checked.loc10_26.2: init %i32 = call %bound_method.loc10_26.4(@__global_init.%int_5) [concrete = constants.%int_5.0f6] -// CHECK:STDOUT: %.loc10_26.3: %i32 = value_of_initializer %int.convert_checked.loc10_26.2 [concrete = constants.%int_5.0f6] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10_26.2: init %i32 = call %bound_method.loc10_26.4(@__global_init.%int_5) [concrete = constants.%int_5.0f6] +// CHECK:STDOUT: %.loc10_26.3: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10_26.2 [concrete = constants.%int_5.0f6] // CHECK:STDOUT: %.loc10_26.4: %i32 = converted @__global_init.%int_5, %.loc10_26.3 [concrete = constants.%int_5.0f6] // CHECK:STDOUT: %tuple: %tuple.type.d07 = tuple_value (%.loc10_26.2, %.loc10_26.4) [concrete = constants.%tuple] // CHECK:STDOUT: %.loc10_26.5: %tuple.type.d07 = converted @__global_init.%.loc10, %tuple [concrete = constants.%tuple] @@ -366,13 +366,13 @@ let x: i32 = c[0]; // CHECK:STDOUT: %int_32.loc11: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc11: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc11_17.1: %i32 = value_of_initializer @__global_init.%At.call -// CHECK:STDOUT: %.loc11_17.2: %i32 = converted @__global_init.%At.call, %.loc11_17.1 +// CHECK:STDOUT: %.loc11_17.1: %i32 = value_of_initializer @__global_init.%tuple.type.as.IndexWith.impl.At.call +// CHECK:STDOUT: %.loc11_17.2: %i32 = converted @__global_init.%tuple.type.as.IndexWith.impl.At.call, %.loc11_17.1 // CHECK:STDOUT: %e: %i32 = bind_name e, %.loc11_17.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @IndexWith.impl: %.loc4_15.2 as %IndexWith.type { -// CHECK:STDOUT: %At.decl: %At.type.9ac = fn_decl @At.loc5 [concrete = constants.%At.642] { +// CHECK:STDOUT: impl @tuple.type.as.IndexWith.impl: %.loc4_15.2 as %IndexWith.type { +// CHECK:STDOUT: %tuple.type.as.IndexWith.impl.At.decl: %tuple.type.as.IndexWith.impl.At.type = fn_decl @tuple.type.as.IndexWith.impl.At [concrete = constants.%tuple.type.as.IndexWith.impl.At] { // CHECK:STDOUT: %self.patt: %pattern_type.511 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.511 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %subscript.patt: %pattern_type.7ce = binding_pattern subscript [concrete] @@ -383,7 +383,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: %int_32.loc5_40: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc5_40: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %self.param: %tuple.type.d07 = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @IndexWith.impl.%.loc4_15.2 [concrete = constants.%tuple.type.d07] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @tuple.type.as.IndexWith.impl.%.loc4_15.2 [concrete = constants.%tuple.type.d07] // CHECK:STDOUT: %self: %tuple.type.d07 = bind_name self, %self.param // CHECK:STDOUT: %subscript.param: %i32 = value_param call_param1 // CHECK:STDOUT: %.loc5: type = splice_block %i32.loc5_32 [concrete = constants.%i32] { @@ -396,11 +396,11 @@ let x: i32 = c[0]; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .At = %At.decl +// CHECK:STDOUT: .At = %tuple.type.as.IndexWith.impl.At.decl // CHECK:STDOUT: witness = file.%IndexWith.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @At.loc5(%self.param: %tuple.type.d07, %subscript.param: %i32) -> %i32 { +// CHECK:STDOUT: fn @tuple.type.as.IndexWith.impl.At(%self.param: %tuple.type.d07, %subscript.param: %i32) -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: %tuple.type.d07 = name_ref self, %self // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] @@ -415,16 +415,16 @@ let x: i32 = c[0]; // CHECK:STDOUT: %.loc10: %tuple.type.f94 = tuple_literal (%int_1, %int_5) // CHECK:STDOUT: %s.ref: %tuple.type.d07 = name_ref s, file.%s // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %impl.elem0.loc11_17.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc11_17.1: = bound_method %int_0, %impl.elem0.loc11_17.1 [concrete = constants.%Convert.bound.d04] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0.loc11_17.1, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc11_17.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc11_17.1: = bound_method %int_0, %impl.elem0.loc11_17.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0.loc11_17.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc11_17.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method.b6e] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc11_17.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc11_17.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc11_17.2(%int_0) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc11_17.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc11_17.2: %i32 = converted %int_0, %.loc11_17.1 [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %impl.elem0.loc11_17.2: %.2dc = impl_witness_access constants.%IndexWith.impl_witness, element0 [concrete = constants.%At.642] +// CHECK:STDOUT: %impl.elem0.loc11_17.2: %.2dc = impl_witness_access constants.%IndexWith.impl_witness, element0 [concrete = constants.%tuple.type.as.IndexWith.impl.At] // CHECK:STDOUT: %bound_method.loc11_17.3: = bound_method %s.ref, %impl.elem0.loc11_17.2 -// CHECK:STDOUT: %At.call: init %i32 = call %bound_method.loc11_17.3(%s.ref, %.loc11_17.2) +// CHECK:STDOUT: %tuple.type.as.IndexWith.impl.At.call: init %i32 = call %bound_method.loc11_17.3(%s.ref, %.loc11_17.2) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -439,20 +439,20 @@ let x: i32 = c[0]; // CHECK:STDOUT: %IndexWith.type.504: type = generic_interface_type @IndexWith [concrete] // CHECK:STDOUT: %IndexWith.generic: %IndexWith.type.504 = struct_value () [concrete] // CHECK:STDOUT: %IndexWith.type.e80: type = facet_type <@IndexWith, @IndexWith(%SubscriptType.8ee, %ElementType.e6b)> [concrete] -// CHECK:STDOUT: %At.type.b3f: type = fn_type @At.1, @IndexWith(%SubscriptType.8ee, %ElementType.e6b) [concrete] +// CHECK:STDOUT: %IndexWith.At.type.b3f: type = fn_type @IndexWith.At, @IndexWith(%SubscriptType.8ee, %ElementType.e6b) [concrete] // CHECK:STDOUT: %IndexWith.impl_witness: = impl_witness file.%IndexWith.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] // CHECK:STDOUT: %pattern_type.df7: type = pattern_type %SubscriptType.8ee [concrete] // CHECK:STDOUT: %pattern_type.c39: type = pattern_type %ElementType.e6b [concrete] -// CHECK:STDOUT: %At.type.178: type = fn_type @At.loc9 [concrete] -// CHECK:STDOUT: %At.d43: %At.type.178 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.IndexWith.impl.At.type: type = fn_type @C.as.IndexWith.impl.At [concrete] +// CHECK:STDOUT: %C.as.IndexWith.impl.At: %C.as.IndexWith.impl.At.type = struct_value () [concrete] // CHECK:STDOUT: %IndexWith.facet: %IndexWith.type.e80 = facet_value %C, (%IndexWith.impl_witness) [concrete] // CHECK:STDOUT: %ElementType.val: %ElementType.e6b = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] -// CHECK:STDOUT: %.d94: type = fn_type_with_self_type %At.type.b3f, %IndexWith.facet [concrete] +// CHECK:STDOUT: %.d94: type = fn_type_with_self_type %IndexWith.At.type.b3f, %IndexWith.facet [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -479,7 +479,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} // CHECK:STDOUT: %ElementType.decl: type = class_decl @ElementType [concrete = constants.%ElementType.e6b] {} {} // CHECK:STDOUT: %SubscriptType.decl: type = class_decl @SubscriptType [concrete = constants.%SubscriptType.8ee] {} {} -// CHECK:STDOUT: impl_decl @IndexWith.impl [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.IndexWith.impl [concrete] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %IndexWith.ref: %IndexWith.type.504 = name_ref IndexWith, imports.%Core.IndexWith [concrete = constants.%IndexWith.generic] @@ -487,7 +487,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: %ElementType.ref: type = name_ref ElementType, file.%ElementType.decl [concrete = constants.%ElementType.e6b] // CHECK:STDOUT: %IndexWith.type: type = facet_type <@IndexWith, @IndexWith(constants.%SubscriptType.8ee, constants.%ElementType.e6b)> [concrete = constants.%IndexWith.type.e80] // CHECK:STDOUT: } -// CHECK:STDOUT: %IndexWith.impl_witness_table = impl_witness_table (@IndexWith.impl.%At.decl), @IndexWith.impl [concrete] +// CHECK:STDOUT: %IndexWith.impl_witness_table = impl_witness_table (@C.as.IndexWith.impl.%C.as.IndexWith.impl.At.decl), @C.as.IndexWith.impl [concrete] // CHECK:STDOUT: %IndexWith.impl_witness: = impl_witness %IndexWith.impl_witness_table [concrete = constants.%IndexWith.impl_witness] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %c.patt: %pattern_type.c48 = binding_pattern c [concrete] @@ -503,13 +503,13 @@ let x: i32 = c[0]; // CHECK:STDOUT: %x.patt: %pattern_type.c39 = binding_pattern x [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %ElementType.ref: type = name_ref ElementType, %ElementType.decl [concrete = constants.%ElementType.e6b] -// CHECK:STDOUT: %.loc22_25.1: ref %ElementType.e6b = temporary @__global_init.%.loc22_25.2, @__global_init.%At.call +// CHECK:STDOUT: %.loc22_25.1: ref %ElementType.e6b = temporary @__global_init.%.loc22_25.2, @__global_init.%C.as.IndexWith.impl.At.call // CHECK:STDOUT: %.loc22_25.2: %ElementType.e6b = bind_value %.loc22_25.1 // CHECK:STDOUT: %x: %ElementType.e6b = bind_name x, %.loc22_25.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @IndexWith.impl: %C.ref as %IndexWith.type { -// CHECK:STDOUT: %At.decl: %At.type.178 = fn_decl @At.loc9 [concrete = constants.%At.d43] { +// CHECK:STDOUT: impl @C.as.IndexWith.impl: %C.ref as %IndexWith.type { +// CHECK:STDOUT: %C.as.IndexWith.impl.At.decl: %C.as.IndexWith.impl.At.type = fn_decl @C.as.IndexWith.impl.At [concrete = constants.%C.as.IndexWith.impl.At] { // CHECK:STDOUT: %self.patt: %pattern_type.c48 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.c48 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %subscript.patt: %pattern_type.df7 = binding_pattern subscript [concrete] @@ -519,7 +519,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: } { // CHECK:STDOUT: %ElementType.ref: type = name_ref ElementType, file.%ElementType.decl [concrete = constants.%ElementType.e6b] // CHECK:STDOUT: %self.param: %C = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @IndexWith.impl.%C.ref [concrete = constants.%C] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @C.as.IndexWith.impl.%C.ref [concrete = constants.%C] // CHECK:STDOUT: %self: %C = bind_name self, %self.param // CHECK:STDOUT: %subscript.param: %SubscriptType.8ee = value_param call_param1 // CHECK:STDOUT: %SubscriptType.ref: type = name_ref SubscriptType, file.%SubscriptType.decl [concrete = constants.%SubscriptType.8ee] @@ -531,7 +531,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: !members: // CHECK:STDOUT: .SubscriptType = // CHECK:STDOUT: .ElementType = -// CHECK:STDOUT: .At = %At.decl +// CHECK:STDOUT: .At = %C.as.IndexWith.impl.At.decl // CHECK:STDOUT: witness = file.%IndexWith.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: @@ -562,7 +562,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: .Self = constants.%SubscriptType.8ee // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @At.loc9(%self.param: %C, %subscript.param: %SubscriptType.8ee) -> %return.param: %ElementType.e6b { +// CHECK:STDOUT: fn @C.as.IndexWith.impl.At(%self.param: %C, %subscript.param: %SubscriptType.8ee) -> %return.param: %ElementType.e6b { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %.loc10_13.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc10_13.2: init %ElementType.e6b = class_init (), %return [concrete = constants.%ElementType.val] @@ -576,10 +576,10 @@ let x: i32 = c[0]; // CHECK:STDOUT: %c.ref: %C = name_ref c, file.%c // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] // CHECK:STDOUT: %.loc22_25.1: %SubscriptType.8ee = converted %int_0, [concrete = ] -// CHECK:STDOUT: %impl.elem0: %.d94 = impl_witness_access constants.%IndexWith.impl_witness, element0 [concrete = constants.%At.d43] +// CHECK:STDOUT: %impl.elem0: %.d94 = impl_witness_access constants.%IndexWith.impl_witness, element0 [concrete = constants.%C.as.IndexWith.impl.At] // CHECK:STDOUT: %bound_method: = bound_method %c.ref, %impl.elem0 // CHECK:STDOUT: %.loc22_25.2: ref %ElementType.e6b = temporary_storage -// CHECK:STDOUT: %At.call: init %ElementType.e6b = call %bound_method(%c.ref, ) to %.loc22_25.2 +// CHECK:STDOUT: %C.as.IndexWith.impl.At.call: init %ElementType.e6b = call %bound_method(%c.ref, ) to %.loc22_25.2 // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/left_shift.carbon b/toolchain/check/testdata/operators/overloaded/left_shift.carbon index bf482877f99a..b8a72447e05e 100644 --- a/toolchain/check/testdata/operators/overloaded/left_shift.carbon +++ b/toolchain/check/testdata/operators/overloaded/left_shift.carbon @@ -45,20 +45,20 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %LeftShiftWith.type.f92: type = facet_type <@LeftShiftWith, @LeftShiftWith(%C)> [concrete] -// CHECK:STDOUT: %Op.type.097: type = fn_type @Op.1, @LeftShiftWith(%C) [concrete] +// CHECK:STDOUT: %LeftShiftWith.Op.type.097: type = fn_type @LeftShiftWith.Op, @LeftShiftWith(%C) [concrete] // CHECK:STDOUT: %LeftShiftWith.impl_witness: = impl_witness file.%LeftShiftWith.impl_witness_table [concrete] -// CHECK:STDOUT: %Op.type.be6: type = fn_type @Op.loc22 [concrete] -// CHECK:STDOUT: %Op.4d9: %Op.type.be6 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.LeftShiftWith.impl.Op.type: type = fn_type @C.as.LeftShiftWith.impl.Op [concrete] +// CHECK:STDOUT: %C.as.LeftShiftWith.impl.Op: %C.as.LeftShiftWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %LeftShiftWith.facet.662: %LeftShiftWith.type.f92 = facet_value %C, (%LeftShiftWith.impl_witness) [concrete] // CHECK:STDOUT: %LeftShiftAssignWith.type.56d: type = facet_type <@LeftShiftAssignWith, @LeftShiftAssignWith(%C)> [concrete] -// CHECK:STDOUT: %Op.type.30f: type = fn_type @Op.6, @LeftShiftAssignWith(%C) [concrete] +// CHECK:STDOUT: %LeftShiftAssignWith.Op.type.30f: type = fn_type @LeftShiftAssignWith.Op, @LeftShiftAssignWith(%C) [concrete] // CHECK:STDOUT: %LeftShiftAssignWith.impl_witness: = impl_witness file.%LeftShiftAssignWith.impl_witness_table [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] -// CHECK:STDOUT: %Op.type.b1b6: type = fn_type @Op.loc27 [concrete] -// CHECK:STDOUT: %Op.07c: %Op.type.b1b6 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.LeftShiftAssignWith.impl.Op.type: type = fn_type @C.as.LeftShiftAssignWith.impl.Op [concrete] +// CHECK:STDOUT: %C.as.LeftShiftAssignWith.impl.Op: %C.as.LeftShiftAssignWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %LeftShiftAssignWith.facet: %LeftShiftAssignWith.type.56d = facet_value %C, (%LeftShiftAssignWith.impl_witness) [concrete] -// CHECK:STDOUT: %.cd9: type = fn_type_with_self_type %Op.type.097, %LeftShiftWith.facet.662 [concrete] -// CHECK:STDOUT: %.97b: type = fn_type_with_self_type %Op.type.30f, %LeftShiftAssignWith.facet [concrete] +// CHECK:STDOUT: %.cd9: type = fn_type_with_self_type %LeftShiftWith.Op.type.097, %LeftShiftWith.facet.662 [concrete] +// CHECK:STDOUT: %.97b: type = fn_type_with_self_type %LeftShiftAssignWith.Op.type.30f, %LeftShiftAssignWith.facet [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -68,12 +68,12 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem1: %.cd9 = impl_witness_access constants.%LeftShiftWith.impl_witness, element1 [concrete = constants.%Op.4d9] +// CHECK:STDOUT: %impl.elem1: %.cd9 = impl_witness_access constants.%LeftShiftWith.impl_witness, element1 [concrete = constants.%C.as.LeftShiftWith.impl.Op] // CHECK:STDOUT: %bound_method.loc32: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: -// CHECK:STDOUT: %Op.call: init %C = call %bound_method.loc32(%a.ref, %b.ref) to %.loc30 +// CHECK:STDOUT: %C.as.LeftShiftWith.impl.Op.call: init %C = call %bound_method.loc32(%a.ref, %b.ref) to %.loc30 // CHECK:STDOUT: -// CHECK:STDOUT: return %Op.call to %return +// CHECK:STDOUT: return %C.as.LeftShiftWith.impl.Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @TestAssign(%a.param: %ptr.019, %b.param: %C) { @@ -81,10 +81,10 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %a.ref: %ptr.019 = name_ref a, %a // CHECK:STDOUT: %.loc38: ref %C = deref %a.ref // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem0: %.97b = impl_witness_access constants.%LeftShiftAssignWith.impl_witness, element0 [concrete = constants.%Op.07c] +// CHECK:STDOUT: %impl.elem0: %.97b = impl_witness_access constants.%LeftShiftAssignWith.impl_witness, element0 [concrete = constants.%C.as.LeftShiftAssignWith.impl.Op] // CHECK:STDOUT: %bound_method: = bound_method %.loc38, %impl.elem0 // CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc38 -// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %bound_method(%addr, %b.ref) +// CHECK:STDOUT: %C.as.LeftShiftAssignWith.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr, %b.ref) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/mod.carbon b/toolchain/check/testdata/operators/overloaded/mod.carbon index beee743dd6e1..aa4c44117338 100644 --- a/toolchain/check/testdata/operators/overloaded/mod.carbon +++ b/toolchain/check/testdata/operators/overloaded/mod.carbon @@ -45,20 +45,20 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %ModWith.type.4d0: type = facet_type <@ModWith, @ModWith(%C)> [concrete] -// CHECK:STDOUT: %Op.type.140: type = fn_type @Op.1, @ModWith(%C) [concrete] +// CHECK:STDOUT: %ModWith.Op.type.140: type = fn_type @ModWith.Op, @ModWith(%C) [concrete] // CHECK:STDOUT: %ModWith.impl_witness: = impl_witness file.%ModWith.impl_witness_table [concrete] -// CHECK:STDOUT: %Op.type.0ad: type = fn_type @Op.loc22 [concrete] -// CHECK:STDOUT: %Op.d57: %Op.type.0ad = struct_value () [concrete] +// CHECK:STDOUT: %C.as.ModWith.impl.Op.type: type = fn_type @C.as.ModWith.impl.Op [concrete] +// CHECK:STDOUT: %C.as.ModWith.impl.Op: %C.as.ModWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %ModWith.facet.517: %ModWith.type.4d0 = facet_value %C, (%ModWith.impl_witness) [concrete] // CHECK:STDOUT: %ModAssignWith.type.8eb: type = facet_type <@ModAssignWith, @ModAssignWith(%C)> [concrete] -// CHECK:STDOUT: %Op.type.dd0: type = fn_type @Op.6, @ModAssignWith(%C) [concrete] +// CHECK:STDOUT: %ModAssignWith.Op.type.dd0: type = fn_type @ModAssignWith.Op, @ModAssignWith(%C) [concrete] // CHECK:STDOUT: %ModAssignWith.impl_witness: = impl_witness file.%ModAssignWith.impl_witness_table [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] -// CHECK:STDOUT: %Op.type.4dd: type = fn_type @Op.loc27 [concrete] -// CHECK:STDOUT: %Op.4f0: %Op.type.4dd = struct_value () [concrete] +// CHECK:STDOUT: %C.as.ModAssignWith.impl.Op.type: type = fn_type @C.as.ModAssignWith.impl.Op [concrete] +// CHECK:STDOUT: %C.as.ModAssignWith.impl.Op: %C.as.ModAssignWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %ModAssignWith.facet: %ModAssignWith.type.8eb = facet_value %C, (%ModAssignWith.impl_witness) [concrete] -// CHECK:STDOUT: %.f08: type = fn_type_with_self_type %Op.type.140, %ModWith.facet.517 [concrete] -// CHECK:STDOUT: %.f3c: type = fn_type_with_self_type %Op.type.dd0, %ModAssignWith.facet [concrete] +// CHECK:STDOUT: %.f08: type = fn_type_with_self_type %ModWith.Op.type.140, %ModWith.facet.517 [concrete] +// CHECK:STDOUT: %.f3c: type = fn_type_with_self_type %ModAssignWith.Op.type.dd0, %ModAssignWith.facet [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -68,12 +68,12 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem1: %.f08 = impl_witness_access constants.%ModWith.impl_witness, element1 [concrete = constants.%Op.d57] +// CHECK:STDOUT: %impl.elem1: %.f08 = impl_witness_access constants.%ModWith.impl_witness, element1 [concrete = constants.%C.as.ModWith.impl.Op] // CHECK:STDOUT: %bound_method.loc32: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: -// CHECK:STDOUT: %Op.call: init %C = call %bound_method.loc32(%a.ref, %b.ref) to %.loc30 +// CHECK:STDOUT: %C.as.ModWith.impl.Op.call: init %C = call %bound_method.loc32(%a.ref, %b.ref) to %.loc30 // CHECK:STDOUT: -// CHECK:STDOUT: return %Op.call to %return +// CHECK:STDOUT: return %C.as.ModWith.impl.Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @TestAssign(%a.param: %ptr.019, %b.param: %C) { @@ -81,10 +81,10 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %a.ref: %ptr.019 = name_ref a, %a // CHECK:STDOUT: %.loc38: ref %C = deref %a.ref // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem0: %.f3c = impl_witness_access constants.%ModAssignWith.impl_witness, element0 [concrete = constants.%Op.4f0] +// CHECK:STDOUT: %impl.elem0: %.f3c = impl_witness_access constants.%ModAssignWith.impl_witness, element0 [concrete = constants.%C.as.ModAssignWith.impl.Op] // CHECK:STDOUT: %bound_method: = bound_method %.loc38, %impl.elem0 // CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc38 -// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %bound_method(%addr, %b.ref) +// CHECK:STDOUT: %C.as.ModAssignWith.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr, %b.ref) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/mul.carbon b/toolchain/check/testdata/operators/overloaded/mul.carbon index 836f85fb9a5a..310afcdc8a36 100644 --- a/toolchain/check/testdata/operators/overloaded/mul.carbon +++ b/toolchain/check/testdata/operators/overloaded/mul.carbon @@ -45,20 +45,20 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %MulWith.type.3ed: type = facet_type <@MulWith, @MulWith(%C)> [concrete] -// CHECK:STDOUT: %Op.type.2c9: type = fn_type @Op.1, @MulWith(%C) [concrete] +// CHECK:STDOUT: %MulWith.Op.type.2c9: type = fn_type @MulWith.Op, @MulWith(%C) [concrete] // CHECK:STDOUT: %MulWith.impl_witness: = impl_witness file.%MulWith.impl_witness_table [concrete] -// CHECK:STDOUT: %Op.type.304: type = fn_type @Op.loc22 [concrete] -// CHECK:STDOUT: %Op.7af: %Op.type.304 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.MulWith.impl.Op.type: type = fn_type @C.as.MulWith.impl.Op [concrete] +// CHECK:STDOUT: %C.as.MulWith.impl.Op: %C.as.MulWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %MulWith.facet.6c2: %MulWith.type.3ed = facet_value %C, (%MulWith.impl_witness) [concrete] // CHECK:STDOUT: %MulAssignWith.type.a15: type = facet_type <@MulAssignWith, @MulAssignWith(%C)> [concrete] -// CHECK:STDOUT: %Op.type.5c8: type = fn_type @Op.6, @MulAssignWith(%C) [concrete] +// CHECK:STDOUT: %MulAssignWith.Op.type.5c8: type = fn_type @MulAssignWith.Op, @MulAssignWith(%C) [concrete] // CHECK:STDOUT: %MulAssignWith.impl_witness: = impl_witness file.%MulAssignWith.impl_witness_table [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] -// CHECK:STDOUT: %Op.type.e9a: type = fn_type @Op.loc27 [concrete] -// CHECK:STDOUT: %Op.d43: %Op.type.e9a = struct_value () [concrete] +// CHECK:STDOUT: %C.as.MulAssignWith.impl.Op.type: type = fn_type @C.as.MulAssignWith.impl.Op [concrete] +// CHECK:STDOUT: %C.as.MulAssignWith.impl.Op: %C.as.MulAssignWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %MulAssignWith.facet: %MulAssignWith.type.a15 = facet_value %C, (%MulAssignWith.impl_witness) [concrete] -// CHECK:STDOUT: %.6ce: type = fn_type_with_self_type %Op.type.2c9, %MulWith.facet.6c2 [concrete] -// CHECK:STDOUT: %.5e8: type = fn_type_with_self_type %Op.type.5c8, %MulAssignWith.facet [concrete] +// CHECK:STDOUT: %.6ce: type = fn_type_with_self_type %MulWith.Op.type.2c9, %MulWith.facet.6c2 [concrete] +// CHECK:STDOUT: %.5e8: type = fn_type_with_self_type %MulAssignWith.Op.type.5c8, %MulAssignWith.facet [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -68,12 +68,12 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem1: %.6ce = impl_witness_access constants.%MulWith.impl_witness, element1 [concrete = constants.%Op.7af] +// CHECK:STDOUT: %impl.elem1: %.6ce = impl_witness_access constants.%MulWith.impl_witness, element1 [concrete = constants.%C.as.MulWith.impl.Op] // CHECK:STDOUT: %bound_method.loc32: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: -// CHECK:STDOUT: %Op.call: init %C = call %bound_method.loc32(%a.ref, %b.ref) to %.loc30 +// CHECK:STDOUT: %C.as.MulWith.impl.Op.call: init %C = call %bound_method.loc32(%a.ref, %b.ref) to %.loc30 // CHECK:STDOUT: -// CHECK:STDOUT: return %Op.call to %return +// CHECK:STDOUT: return %C.as.MulWith.impl.Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @TestAssign(%a.param: %ptr.019, %b.param: %C) { @@ -81,10 +81,10 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %a.ref: %ptr.019 = name_ref a, %a // CHECK:STDOUT: %.loc38: ref %C = deref %a.ref // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem0: %.5e8 = impl_witness_access constants.%MulAssignWith.impl_witness, element0 [concrete = constants.%Op.d43] +// CHECK:STDOUT: %impl.elem0: %.5e8 = impl_witness_access constants.%MulAssignWith.impl_witness, element0 [concrete = constants.%C.as.MulAssignWith.impl.Op] // CHECK:STDOUT: %bound_method: = bound_method %.loc38, %impl.elem0 // CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc38 -// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %bound_method(%addr, %b.ref) +// CHECK:STDOUT: %C.as.MulAssignWith.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr, %b.ref) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/negate.carbon b/toolchain/check/testdata/operators/overloaded/negate.carbon index 4669d3d6da74..6aa1c99605e9 100644 --- a/toolchain/check/testdata/operators/overloaded/negate.carbon +++ b/toolchain/check/testdata/operators/overloaded/negate.carbon @@ -35,12 +35,12 @@ fn TestOp(a: C) -> C { // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %Negate.type: type = facet_type <@Negate> [concrete] -// CHECK:STDOUT: %Op.type.e42: type = fn_type @Op.1 [concrete] +// CHECK:STDOUT: %Negate.Op.type: type = fn_type @Negate.Op [concrete] // CHECK:STDOUT: %Negate.impl_witness: = impl_witness file.%Negate.impl_witness_table [concrete] -// CHECK:STDOUT: %Op.type.def: type = fn_type @Op.loc22 [concrete] -// CHECK:STDOUT: %Op.045: %Op.type.def = struct_value () [concrete] +// CHECK:STDOUT: %C.as.Negate.impl.Op.type: type = fn_type @C.as.Negate.impl.Op [concrete] +// CHECK:STDOUT: %C.as.Negate.impl.Op: %C.as.Negate.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %Negate.facet.b50: %Negate.type = facet_value %C, (%Negate.impl_witness) [concrete] -// CHECK:STDOUT: %.26d: type = fn_type_with_self_type %Op.type.e42, %Negate.facet.b50 [concrete] +// CHECK:STDOUT: %.26d: type = fn_type_with_self_type %Negate.Op.type, %Negate.facet.b50 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -49,11 +49,11 @@ fn TestOp(a: C) -> C { // CHECK:STDOUT: fn @TestOp(%a.param: %C) -> %return.param: %C { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a -// CHECK:STDOUT: %impl.elem1: %.26d = impl_witness_access constants.%Negate.impl_witness, element1 [concrete = constants.%Op.045] +// CHECK:STDOUT: %impl.elem1: %.26d = impl_witness_access constants.%Negate.impl_witness, element1 [concrete = constants.%C.as.Negate.impl.Op] // CHECK:STDOUT: %bound_method.loc29: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: -// CHECK:STDOUT: %Op.call: init %C = call %bound_method.loc29(%a.ref) to %.loc27 +// CHECK:STDOUT: %C.as.Negate.impl.Op.call: init %C = call %bound_method.loc29(%a.ref) to %.loc27 // CHECK:STDOUT: -// CHECK:STDOUT: return %Op.call to %return +// CHECK:STDOUT: return %C.as.Negate.impl.Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/ordered.carbon b/toolchain/check/testdata/operators/overloaded/ordered.carbon index 296e7717e9a6..87ccea8099ec 100644 --- a/toolchain/check/testdata/operators/overloaded/ordered.carbon +++ b/toolchain/check/testdata/operators/overloaded/ordered.carbon @@ -89,35 +89,35 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: %OrderedWith.generic: %OrderedWith.type.270 = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.831: type = pattern_type bool [concrete] // CHECK:STDOUT: %OrderedWith.type.914: type = facet_type <@OrderedWith, @OrderedWith(%C)> [concrete] -// CHECK:STDOUT: %Less.type.ef8: type = fn_type @Less.1, @OrderedWith(%C) [concrete] -// CHECK:STDOUT: %LessOrEquivalent.type.718: type = fn_type @LessOrEquivalent.1, @OrderedWith(%C) [concrete] -// CHECK:STDOUT: %Greater.type.394: type = fn_type @Greater.1, @OrderedWith(%C) [concrete] -// CHECK:STDOUT: %GreaterOrEquivalent.type.f2b: type = fn_type @GreaterOrEquivalent.1, @OrderedWith(%C) [concrete] +// CHECK:STDOUT: %OrderedWith.Less.type.ef8: type = fn_type @OrderedWith.Less, @OrderedWith(%C) [concrete] +// CHECK:STDOUT: %OrderedWith.LessOrEquivalent.type.718: type = fn_type @OrderedWith.LessOrEquivalent, @OrderedWith(%C) [concrete] +// CHECK:STDOUT: %OrderedWith.Greater.type.394: type = fn_type @OrderedWith.Greater, @OrderedWith(%C) [concrete] +// CHECK:STDOUT: %OrderedWith.GreaterOrEquivalent.type.f2b: type = fn_type @OrderedWith.GreaterOrEquivalent, @OrderedWith(%C) [concrete] // CHECK:STDOUT: %OrderedWith.impl_witness: = impl_witness file.%OrderedWith.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] // CHECK:STDOUT: %Bool.type: type = fn_type @Bool [concrete] // CHECK:STDOUT: %Bool: %Bool.type = struct_value () [concrete] -// CHECK:STDOUT: %Less.type.e31: type = fn_type @Less.loc7 [concrete] -// CHECK:STDOUT: %Less.076: %Less.type.e31 = struct_value () [concrete] -// CHECK:STDOUT: %LessOrEquivalent.type.873: type = fn_type @LessOrEquivalent.loc8 [concrete] -// CHECK:STDOUT: %LessOrEquivalent.4d6: %LessOrEquivalent.type.873 = struct_value () [concrete] -// CHECK:STDOUT: %Greater.type.54b: type = fn_type @Greater.loc9 [concrete] -// CHECK:STDOUT: %Greater.548: %Greater.type.54b = struct_value () [concrete] -// CHECK:STDOUT: %GreaterOrEquivalent.type.311: type = fn_type @GreaterOrEquivalent.loc10 [concrete] -// CHECK:STDOUT: %GreaterOrEquivalent.1b2: %GreaterOrEquivalent.type.311 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.OrderedWith.impl.Less.type: type = fn_type @C.as.OrderedWith.impl.Less [concrete] +// CHECK:STDOUT: %C.as.OrderedWith.impl.Less: %C.as.OrderedWith.impl.Less.type = struct_value () [concrete] +// CHECK:STDOUT: %C.as.OrderedWith.impl.LessOrEquivalent.type: type = fn_type @C.as.OrderedWith.impl.LessOrEquivalent [concrete] +// CHECK:STDOUT: %C.as.OrderedWith.impl.LessOrEquivalent: %C.as.OrderedWith.impl.LessOrEquivalent.type = struct_value () [concrete] +// CHECK:STDOUT: %C.as.OrderedWith.impl.Greater.type: type = fn_type @C.as.OrderedWith.impl.Greater [concrete] +// CHECK:STDOUT: %C.as.OrderedWith.impl.Greater: %C.as.OrderedWith.impl.Greater.type = struct_value () [concrete] +// CHECK:STDOUT: %C.as.OrderedWith.impl.GreaterOrEquivalent.type: type = fn_type @C.as.OrderedWith.impl.GreaterOrEquivalent [concrete] +// CHECK:STDOUT: %C.as.OrderedWith.impl.GreaterOrEquivalent: %C.as.OrderedWith.impl.GreaterOrEquivalent.type = struct_value () [concrete] // CHECK:STDOUT: %OrderedWith.facet: %OrderedWith.type.914 = facet_value %C, (%OrderedWith.impl_witness) [concrete] // CHECK:STDOUT: %TestLess.type: type = fn_type @TestLess [concrete] // CHECK:STDOUT: %TestLess: %TestLess.type = struct_value () [concrete] -// CHECK:STDOUT: %.dc0: type = fn_type_with_self_type %Less.type.ef8, %OrderedWith.facet [concrete] +// CHECK:STDOUT: %.dc0: type = fn_type_with_self_type %OrderedWith.Less.type.ef8, %OrderedWith.facet [concrete] // CHECK:STDOUT: %TestLessEqual.type: type = fn_type @TestLessEqual [concrete] // CHECK:STDOUT: %TestLessEqual: %TestLessEqual.type = struct_value () [concrete] -// CHECK:STDOUT: %.d74: type = fn_type_with_self_type %LessOrEquivalent.type.718, %OrderedWith.facet [concrete] +// CHECK:STDOUT: %.d74: type = fn_type_with_self_type %OrderedWith.LessOrEquivalent.type.718, %OrderedWith.facet [concrete] // CHECK:STDOUT: %TestGreater.type: type = fn_type @TestGreater [concrete] // CHECK:STDOUT: %TestGreater: %TestGreater.type = struct_value () [concrete] -// CHECK:STDOUT: %.aa9: type = fn_type_with_self_type %Greater.type.394, %OrderedWith.facet [concrete] +// CHECK:STDOUT: %.aa9: type = fn_type_with_self_type %OrderedWith.Greater.type.394, %OrderedWith.facet [concrete] // CHECK:STDOUT: %TestGreaterEqual.type: type = fn_type @TestGreaterEqual [concrete] // CHECK:STDOUT: %TestGreaterEqual: %TestGreaterEqual.type = struct_value () [concrete] -// CHECK:STDOUT: %.af7: type = fn_type_with_self_type %GreaterOrEquivalent.type.f2b, %OrderedWith.facet [concrete] +// CHECK:STDOUT: %.af7: type = fn_type_with_self_type %OrderedWith.GreaterOrEquivalent.type.f2b, %OrderedWith.facet [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -142,14 +142,14 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} -// CHECK:STDOUT: impl_decl @OrderedWith.impl.ecd [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.OrderedWith.impl [concrete] {} { // CHECK:STDOUT: %C.ref.loc6_6: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %OrderedWith.ref: %OrderedWith.type.270 = name_ref OrderedWith, imports.%Core.OrderedWith [concrete = constants.%OrderedWith.generic] // CHECK:STDOUT: %C.ref.loc6_28: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %OrderedWith.type: type = facet_type <@OrderedWith, @OrderedWith(constants.%C)> [concrete = constants.%OrderedWith.type.914] // CHECK:STDOUT: } -// CHECK:STDOUT: %OrderedWith.impl_witness_table = impl_witness_table (@OrderedWith.impl.ecd.%Less.decl, @OrderedWith.impl.ecd.%LessOrEquivalent.decl, @OrderedWith.impl.ecd.%Greater.decl, @OrderedWith.impl.ecd.%GreaterOrEquivalent.decl), @OrderedWith.impl.ecd [concrete] +// CHECK:STDOUT: %OrderedWith.impl_witness_table = impl_witness_table (@C.as.OrderedWith.impl.%C.as.OrderedWith.impl.Less.decl, @C.as.OrderedWith.impl.%C.as.OrderedWith.impl.LessOrEquivalent.decl, @C.as.OrderedWith.impl.%C.as.OrderedWith.impl.Greater.decl, @C.as.OrderedWith.impl.%C.as.OrderedWith.impl.GreaterOrEquivalent.decl), @C.as.OrderedWith.impl [concrete] // CHECK:STDOUT: %OrderedWith.impl_witness: = impl_witness %OrderedWith.impl_witness_table [concrete = constants.%OrderedWith.impl_witness] // CHECK:STDOUT: %TestLess.decl: %TestLess.type = fn_decl @TestLess [concrete = constants.%TestLess] { // CHECK:STDOUT: %a.patt: %pattern_type.c48 = binding_pattern a [concrete] @@ -159,9 +159,9 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: %return.patt: %pattern_type.831 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.831 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc13_28.1: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc13_28.2: type = converted %bool.make_type, %.loc13_28.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc13_28.1: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc13_28.2: type = converted %Bool.call, %.loc13_28.1 [concrete = bool] // CHECK:STDOUT: %a.param: %C = value_param call_param0 // CHECK:STDOUT: %C.ref.loc13_16: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %a: %C = bind_name a, %a.param @@ -179,9 +179,9 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: %return.patt: %pattern_type.831 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.831 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc17_33.1: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc17_33.2: type = converted %bool.make_type, %.loc17_33.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc17_33.1: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc17_33.2: type = converted %Bool.call, %.loc17_33.1 [concrete = bool] // CHECK:STDOUT: %a.param: %C = value_param call_param0 // CHECK:STDOUT: %C.ref.loc17_21: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %a: %C = bind_name a, %a.param @@ -199,9 +199,9 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: %return.patt: %pattern_type.831 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.831 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc21_31.1: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc21_31.2: type = converted %bool.make_type, %.loc21_31.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc21_31.1: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc21_31.2: type = converted %Bool.call, %.loc21_31.1 [concrete = bool] // CHECK:STDOUT: %a.param: %C = value_param call_param0 // CHECK:STDOUT: %C.ref.loc21_19: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %a: %C = bind_name a, %a.param @@ -219,9 +219,9 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: %return.patt: %pattern_type.831 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.831 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc25_36.1: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc25_36.2: type = converted %bool.make_type, %.loc25_36.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc25_36.1: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc25_36.2: type = converted %Bool.call, %.loc25_36.1 [concrete = bool] // CHECK:STDOUT: %a.param: %C = value_param call_param0 // CHECK:STDOUT: %C.ref.loc25_24: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %a: %C = bind_name a, %a.param @@ -233,8 +233,8 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @OrderedWith.impl.ecd: %C.ref.loc6_6 as %OrderedWith.type { -// CHECK:STDOUT: %Less.decl: %Less.type.e31 = fn_decl @Less.loc7 [concrete = constants.%Less.076] { +// CHECK:STDOUT: impl @C.as.OrderedWith.impl: %C.ref.loc6_6 as %OrderedWith.type { +// CHECK:STDOUT: %C.as.OrderedWith.impl.Less.decl: %C.as.OrderedWith.impl.Less.type = fn_decl @C.as.OrderedWith.impl.Less [concrete = constants.%C.as.OrderedWith.impl.Less] { // CHECK:STDOUT: %self.patt: %pattern_type.c48 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.c48 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %other.patt: %pattern_type.c48 = binding_pattern other [concrete] @@ -242,9 +242,9 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: %return.patt: %pattern_type.831 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.831 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc7_33.1: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc7_33.2: type = converted %bool.make_type, %.loc7_33.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc7_33.1: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc7_33.2: type = converted %Bool.call, %.loc7_33.1 [concrete = bool] // CHECK:STDOUT: %self.param: %C = value_param call_param0 // CHECK:STDOUT: %C.ref.loc7_17: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %self: %C = bind_name self, %self.param @@ -254,7 +254,7 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: %return.param: ref bool = out_param call_param2 // CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %LessOrEquivalent.decl: %LessOrEquivalent.type.873 = fn_decl @LessOrEquivalent.loc8 [concrete = constants.%LessOrEquivalent.4d6] { +// CHECK:STDOUT: %C.as.OrderedWith.impl.LessOrEquivalent.decl: %C.as.OrderedWith.impl.LessOrEquivalent.type = fn_decl @C.as.OrderedWith.impl.LessOrEquivalent [concrete = constants.%C.as.OrderedWith.impl.LessOrEquivalent] { // CHECK:STDOUT: %self.patt: %pattern_type.c48 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.c48 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %other.patt: %pattern_type.c48 = binding_pattern other [concrete] @@ -262,9 +262,9 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: %return.patt: %pattern_type.831 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.831 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc8_45.1: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc8_45.2: type = converted %bool.make_type, %.loc8_45.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc8_45.1: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc8_45.2: type = converted %Bool.call, %.loc8_45.1 [concrete = bool] // CHECK:STDOUT: %self.param: %C = value_param call_param0 // CHECK:STDOUT: %C.ref.loc8_29: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %self: %C = bind_name self, %self.param @@ -274,7 +274,7 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: %return.param: ref bool = out_param call_param2 // CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %Greater.decl: %Greater.type.54b = fn_decl @Greater.loc9 [concrete = constants.%Greater.548] { +// CHECK:STDOUT: %C.as.OrderedWith.impl.Greater.decl: %C.as.OrderedWith.impl.Greater.type = fn_decl @C.as.OrderedWith.impl.Greater [concrete = constants.%C.as.OrderedWith.impl.Greater] { // CHECK:STDOUT: %self.patt: %pattern_type.c48 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.c48 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %other.patt: %pattern_type.c48 = binding_pattern other [concrete] @@ -282,9 +282,9 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: %return.patt: %pattern_type.831 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.831 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc9_36.1: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc9_36.2: type = converted %bool.make_type, %.loc9_36.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc9_36.1: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc9_36.2: type = converted %Bool.call, %.loc9_36.1 [concrete = bool] // CHECK:STDOUT: %self.param: %C = value_param call_param0 // CHECK:STDOUT: %C.ref.loc9_20: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %self: %C = bind_name self, %self.param @@ -294,7 +294,7 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: %return.param: ref bool = out_param call_param2 // CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %GreaterOrEquivalent.decl: %GreaterOrEquivalent.type.311 = fn_decl @GreaterOrEquivalent.loc10 [concrete = constants.%GreaterOrEquivalent.1b2] { +// CHECK:STDOUT: %C.as.OrderedWith.impl.GreaterOrEquivalent.decl: %C.as.OrderedWith.impl.GreaterOrEquivalent.type = fn_decl @C.as.OrderedWith.impl.GreaterOrEquivalent [concrete = constants.%C.as.OrderedWith.impl.GreaterOrEquivalent] { // CHECK:STDOUT: %self.patt: %pattern_type.c48 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.c48 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %other.patt: %pattern_type.c48 = binding_pattern other [concrete] @@ -302,9 +302,9 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: %return.patt: %pattern_type.831 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.831 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc10_48.1: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc10_48.2: type = converted %bool.make_type, %.loc10_48.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc10_48.1: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc10_48.2: type = converted %Bool.call, %.loc10_48.1 [concrete = bool] // CHECK:STDOUT: %self.param: %C = value_param call_param0 // CHECK:STDOUT: %C.ref.loc10_32: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %self: %C = bind_name self, %self.param @@ -317,10 +317,10 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .C = -// CHECK:STDOUT: .Less = %Less.decl -// CHECK:STDOUT: .LessOrEquivalent = %LessOrEquivalent.decl -// CHECK:STDOUT: .Greater = %Greater.decl -// CHECK:STDOUT: .GreaterOrEquivalent = %GreaterOrEquivalent.decl +// CHECK:STDOUT: .Less = %C.as.OrderedWith.impl.Less.decl +// CHECK:STDOUT: .LessOrEquivalent = %C.as.OrderedWith.impl.LessOrEquivalent.decl +// CHECK:STDOUT: .Greater = %C.as.OrderedWith.impl.Greater.decl +// CHECK:STDOUT: .GreaterOrEquivalent = %C.as.OrderedWith.impl.GreaterOrEquivalent.decl // CHECK:STDOUT: witness = file.%OrderedWith.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: @@ -333,23 +333,23 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Less.loc7(%self.param: %C, %other.param: %C) -> bool; +// CHECK:STDOUT: fn @C.as.OrderedWith.impl.Less(%self.param: %C, %other.param: %C) -> bool; // CHECK:STDOUT: -// CHECK:STDOUT: fn @LessOrEquivalent.loc8(%self.param: %C, %other.param: %C) -> bool; +// CHECK:STDOUT: fn @C.as.OrderedWith.impl.LessOrEquivalent(%self.param: %C, %other.param: %C) -> bool; // CHECK:STDOUT: -// CHECK:STDOUT: fn @Greater.loc9(%self.param: %C, %other.param: %C) -> bool; +// CHECK:STDOUT: fn @C.as.OrderedWith.impl.Greater(%self.param: %C, %other.param: %C) -> bool; // CHECK:STDOUT: -// CHECK:STDOUT: fn @GreaterOrEquivalent.loc10(%self.param: %C, %other.param: %C) -> bool; +// CHECK:STDOUT: fn @C.as.OrderedWith.impl.GreaterOrEquivalent(%self.param: %C, %other.param: %C) -> bool; // CHECK:STDOUT: // CHECK:STDOUT: fn @TestLess(%a.param: %C, %b.param: %C) -> bool { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem0: %.dc0 = impl_witness_access constants.%OrderedWith.impl_witness, element0 [concrete = constants.%Less.076] +// CHECK:STDOUT: %impl.elem0: %.dc0 = impl_witness_access constants.%OrderedWith.impl_witness, element0 [concrete = constants.%C.as.OrderedWith.impl.Less] // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem0 -// CHECK:STDOUT: %Less.call: init bool = call %bound_method(%a.ref, %b.ref) -// CHECK:STDOUT: %.loc14_15.1: bool = value_of_initializer %Less.call -// CHECK:STDOUT: %.loc14_15.2: bool = converted %Less.call, %.loc14_15.1 +// CHECK:STDOUT: %C.as.OrderedWith.impl.Less.call: init bool = call %bound_method(%a.ref, %b.ref) +// CHECK:STDOUT: %.loc14_15.1: bool = value_of_initializer %C.as.OrderedWith.impl.Less.call +// CHECK:STDOUT: %.loc14_15.2: bool = converted %C.as.OrderedWith.impl.Less.call, %.loc14_15.1 // CHECK:STDOUT: return %.loc14_15.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -357,11 +357,11 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem1: %.d74 = impl_witness_access constants.%OrderedWith.impl_witness, element1 [concrete = constants.%LessOrEquivalent.4d6] +// CHECK:STDOUT: %impl.elem1: %.d74 = impl_witness_access constants.%OrderedWith.impl_witness, element1 [concrete = constants.%C.as.OrderedWith.impl.LessOrEquivalent] // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem1 -// CHECK:STDOUT: %LessOrEquivalent.call: init bool = call %bound_method(%a.ref, %b.ref) -// CHECK:STDOUT: %.loc18_16.1: bool = value_of_initializer %LessOrEquivalent.call -// CHECK:STDOUT: %.loc18_16.2: bool = converted %LessOrEquivalent.call, %.loc18_16.1 +// CHECK:STDOUT: %C.as.OrderedWith.impl.LessOrEquivalent.call: init bool = call %bound_method(%a.ref, %b.ref) +// CHECK:STDOUT: %.loc18_16.1: bool = value_of_initializer %C.as.OrderedWith.impl.LessOrEquivalent.call +// CHECK:STDOUT: %.loc18_16.2: bool = converted %C.as.OrderedWith.impl.LessOrEquivalent.call, %.loc18_16.1 // CHECK:STDOUT: return %.loc18_16.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -369,11 +369,11 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem2: %.aa9 = impl_witness_access constants.%OrderedWith.impl_witness, element2 [concrete = constants.%Greater.548] +// CHECK:STDOUT: %impl.elem2: %.aa9 = impl_witness_access constants.%OrderedWith.impl_witness, element2 [concrete = constants.%C.as.OrderedWith.impl.Greater] // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem2 -// CHECK:STDOUT: %Greater.call: init bool = call %bound_method(%a.ref, %b.ref) -// CHECK:STDOUT: %.loc22_15.1: bool = value_of_initializer %Greater.call -// CHECK:STDOUT: %.loc22_15.2: bool = converted %Greater.call, %.loc22_15.1 +// CHECK:STDOUT: %C.as.OrderedWith.impl.Greater.call: init bool = call %bound_method(%a.ref, %b.ref) +// CHECK:STDOUT: %.loc22_15.1: bool = value_of_initializer %C.as.OrderedWith.impl.Greater.call +// CHECK:STDOUT: %.loc22_15.2: bool = converted %C.as.OrderedWith.impl.Greater.call, %.loc22_15.1 // CHECK:STDOUT: return %.loc22_15.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -381,11 +381,11 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem3: %.af7 = impl_witness_access constants.%OrderedWith.impl_witness, element3 [concrete = constants.%GreaterOrEquivalent.1b2] +// CHECK:STDOUT: %impl.elem3: %.af7 = impl_witness_access constants.%OrderedWith.impl_witness, element3 [concrete = constants.%C.as.OrderedWith.impl.GreaterOrEquivalent] // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem3 -// CHECK:STDOUT: %GreaterOrEquivalent.call: init bool = call %bound_method(%a.ref, %b.ref) -// CHECK:STDOUT: %.loc26_16.1: bool = value_of_initializer %GreaterOrEquivalent.call -// CHECK:STDOUT: %.loc26_16.2: bool = converted %GreaterOrEquivalent.call, %.loc26_16.1 +// CHECK:STDOUT: %C.as.OrderedWith.impl.GreaterOrEquivalent.call: init bool = call %bound_method(%a.ref, %b.ref) +// CHECK:STDOUT: %.loc26_16.1: bool = value_of_initializer %C.as.OrderedWith.impl.GreaterOrEquivalent.call +// CHECK:STDOUT: %.loc26_16.2: bool = converted %C.as.OrderedWith.impl.GreaterOrEquivalent.call, %.loc26_16.1 // CHECK:STDOUT: return %.loc26_16.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -441,9 +441,9 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: %return.patt: %pattern_type.831 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.831 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc6_28.1: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc6_28.2: type = converted %bool.make_type, %.loc6_28.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc6_28.1: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc6_28.2: type = converted %Bool.call, %.loc6_28.1 [concrete = bool] // CHECK:STDOUT: %a.param: %D = value_param call_param0 // CHECK:STDOUT: %D.ref.loc6_16: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %a: %D = bind_name a, %a.param @@ -461,9 +461,9 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: %return.patt: %pattern_type.831 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.831 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc14_33.1: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc14_33.2: type = converted %bool.make_type, %.loc14_33.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc14_33.1: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc14_33.2: type = converted %Bool.call, %.loc14_33.1 [concrete = bool] // CHECK:STDOUT: %a.param: %D = value_param call_param0 // CHECK:STDOUT: %D.ref.loc14_21: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %a: %D = bind_name a, %a.param @@ -481,9 +481,9 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: %return.patt: %pattern_type.831 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.831 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc22_31.1: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc22_31.2: type = converted %bool.make_type, %.loc22_31.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc22_31.1: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc22_31.2: type = converted %Bool.call, %.loc22_31.1 [concrete = bool] // CHECK:STDOUT: %a.param: %D = value_param call_param0 // CHECK:STDOUT: %D.ref.loc22_19: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %a: %D = bind_name a, %a.param @@ -501,9 +501,9 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: %return.patt: %pattern_type.831 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.831 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc30_36.1: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc30_36.2: type = converted %bool.make_type, %.loc30_36.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc30_36.1: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc30_36.2: type = converted %Bool.call, %.loc30_36.1 [concrete = bool] // CHECK:STDOUT: %a.param: %D = value_param call_param0 // CHECK:STDOUT: %D.ref.loc30_24: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %a: %D = bind_name a, %a.param diff --git a/toolchain/check/testdata/operators/overloaded/right_shift.carbon b/toolchain/check/testdata/operators/overloaded/right_shift.carbon index 21236dc0a917..421c677328eb 100644 --- a/toolchain/check/testdata/operators/overloaded/right_shift.carbon +++ b/toolchain/check/testdata/operators/overloaded/right_shift.carbon @@ -45,20 +45,20 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %RightShiftWith.type.bd6: type = facet_type <@RightShiftWith, @RightShiftWith(%C)> [concrete] -// CHECK:STDOUT: %Op.type.19b: type = fn_type @Op.1, @RightShiftWith(%C) [concrete] +// CHECK:STDOUT: %RightShiftWith.Op.type.19b: type = fn_type @RightShiftWith.Op, @RightShiftWith(%C) [concrete] // CHECK:STDOUT: %RightShiftWith.impl_witness: = impl_witness file.%RightShiftWith.impl_witness_table [concrete] -// CHECK:STDOUT: %Op.type.873: type = fn_type @Op.loc22 [concrete] -// CHECK:STDOUT: %Op.909: %Op.type.873 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.RightShiftWith.impl.Op.type: type = fn_type @C.as.RightShiftWith.impl.Op [concrete] +// CHECK:STDOUT: %C.as.RightShiftWith.impl.Op: %C.as.RightShiftWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %RightShiftWith.facet.fb0: %RightShiftWith.type.bd6 = facet_value %C, (%RightShiftWith.impl_witness) [concrete] // CHECK:STDOUT: %RightShiftAssignWith.type.cd0: type = facet_type <@RightShiftAssignWith, @RightShiftAssignWith(%C)> [concrete] -// CHECK:STDOUT: %Op.type.ae9: type = fn_type @Op.6, @RightShiftAssignWith(%C) [concrete] +// CHECK:STDOUT: %RightShiftAssignWith.Op.type.ae9: type = fn_type @RightShiftAssignWith.Op, @RightShiftAssignWith(%C) [concrete] // CHECK:STDOUT: %RightShiftAssignWith.impl_witness: = impl_witness file.%RightShiftAssignWith.impl_witness_table [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] -// CHECK:STDOUT: %Op.type.e0c: type = fn_type @Op.loc27 [concrete] -// CHECK:STDOUT: %Op.6a2: %Op.type.e0c = struct_value () [concrete] +// CHECK:STDOUT: %C.as.RightShiftAssignWith.impl.Op.type: type = fn_type @C.as.RightShiftAssignWith.impl.Op [concrete] +// CHECK:STDOUT: %C.as.RightShiftAssignWith.impl.Op: %C.as.RightShiftAssignWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %RightShiftAssignWith.facet: %RightShiftAssignWith.type.cd0 = facet_value %C, (%RightShiftAssignWith.impl_witness) [concrete] -// CHECK:STDOUT: %.982: type = fn_type_with_self_type %Op.type.19b, %RightShiftWith.facet.fb0 [concrete] -// CHECK:STDOUT: %.d41: type = fn_type_with_self_type %Op.type.ae9, %RightShiftAssignWith.facet [concrete] +// CHECK:STDOUT: %.982: type = fn_type_with_self_type %RightShiftWith.Op.type.19b, %RightShiftWith.facet.fb0 [concrete] +// CHECK:STDOUT: %.d41: type = fn_type_with_self_type %RightShiftAssignWith.Op.type.ae9, %RightShiftAssignWith.facet [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -68,12 +68,12 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem1: %.982 = impl_witness_access constants.%RightShiftWith.impl_witness, element1 [concrete = constants.%Op.909] +// CHECK:STDOUT: %impl.elem1: %.982 = impl_witness_access constants.%RightShiftWith.impl_witness, element1 [concrete = constants.%C.as.RightShiftWith.impl.Op] // CHECK:STDOUT: %bound_method.loc32: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: -// CHECK:STDOUT: %Op.call: init %C = call %bound_method.loc32(%a.ref, %b.ref) to %.loc30 +// CHECK:STDOUT: %C.as.RightShiftWith.impl.Op.call: init %C = call %bound_method.loc32(%a.ref, %b.ref) to %.loc30 // CHECK:STDOUT: -// CHECK:STDOUT: return %Op.call to %return +// CHECK:STDOUT: return %C.as.RightShiftWith.impl.Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @TestAssign(%a.param: %ptr.019, %b.param: %C) { @@ -81,10 +81,10 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %a.ref: %ptr.019 = name_ref a, %a // CHECK:STDOUT: %.loc38: ref %C = deref %a.ref // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem0: %.d41 = impl_witness_access constants.%RightShiftAssignWith.impl_witness, element0 [concrete = constants.%Op.6a2] +// CHECK:STDOUT: %impl.elem0: %.d41 = impl_witness_access constants.%RightShiftAssignWith.impl_witness, element0 [concrete = constants.%C.as.RightShiftAssignWith.impl.Op] // CHECK:STDOUT: %bound_method: = bound_method %.loc38, %impl.elem0 // CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc38 -// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %bound_method(%addr, %b.ref) +// CHECK:STDOUT: %C.as.RightShiftAssignWith.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr, %b.ref) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/sub.carbon b/toolchain/check/testdata/operators/overloaded/sub.carbon index beda48948d63..6120f324e20e 100644 --- a/toolchain/check/testdata/operators/overloaded/sub.carbon +++ b/toolchain/check/testdata/operators/overloaded/sub.carbon @@ -45,20 +45,20 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %SubWith.type.d29: type = facet_type <@SubWith, @SubWith(%C)> [concrete] -// CHECK:STDOUT: %Op.type.fc0: type = fn_type @Op.1, @SubWith(%C) [concrete] +// CHECK:STDOUT: %SubWith.Op.type.fc0: type = fn_type @SubWith.Op, @SubWith(%C) [concrete] // CHECK:STDOUT: %SubWith.impl_witness: = impl_witness file.%SubWith.impl_witness_table [concrete] -// CHECK:STDOUT: %Op.type.3fa: type = fn_type @Op.loc22 [concrete] -// CHECK:STDOUT: %Op.5e4: %Op.type.3fa = struct_value () [concrete] +// CHECK:STDOUT: %C.as.SubWith.impl.Op.type: type = fn_type @C.as.SubWith.impl.Op [concrete] +// CHECK:STDOUT: %C.as.SubWith.impl.Op: %C.as.SubWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %SubWith.facet.0b6: %SubWith.type.d29 = facet_value %C, (%SubWith.impl_witness) [concrete] // CHECK:STDOUT: %SubAssignWith.type.df6: type = facet_type <@SubAssignWith, @SubAssignWith(%C)> [concrete] -// CHECK:STDOUT: %Op.type.ffe: type = fn_type @Op.6, @SubAssignWith(%C) [concrete] +// CHECK:STDOUT: %SubAssignWith.Op.type.ffe: type = fn_type @SubAssignWith.Op, @SubAssignWith(%C) [concrete] // CHECK:STDOUT: %SubAssignWith.impl_witness: = impl_witness file.%SubAssignWith.impl_witness_table [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] -// CHECK:STDOUT: %Op.type.26d: type = fn_type @Op.loc27 [concrete] -// CHECK:STDOUT: %Op.f7d: %Op.type.26d = struct_value () [concrete] +// CHECK:STDOUT: %C.as.SubAssignWith.impl.Op.type: type = fn_type @C.as.SubAssignWith.impl.Op [concrete] +// CHECK:STDOUT: %C.as.SubAssignWith.impl.Op: %C.as.SubAssignWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %SubAssignWith.facet: %SubAssignWith.type.df6 = facet_value %C, (%SubAssignWith.impl_witness) [concrete] -// CHECK:STDOUT: %.71c: type = fn_type_with_self_type %Op.type.fc0, %SubWith.facet.0b6 [concrete] -// CHECK:STDOUT: %.647: type = fn_type_with_self_type %Op.type.ffe, %SubAssignWith.facet [concrete] +// CHECK:STDOUT: %.71c: type = fn_type_with_self_type %SubWith.Op.type.fc0, %SubWith.facet.0b6 [concrete] +// CHECK:STDOUT: %.647: type = fn_type_with_self_type %SubAssignWith.Op.type.ffe, %SubAssignWith.facet [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -68,12 +68,12 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem1: %.71c = impl_witness_access constants.%SubWith.impl_witness, element1 [concrete = constants.%Op.5e4] +// CHECK:STDOUT: %impl.elem1: %.71c = impl_witness_access constants.%SubWith.impl_witness, element1 [concrete = constants.%C.as.SubWith.impl.Op] // CHECK:STDOUT: %bound_method.loc32: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: -// CHECK:STDOUT: %Op.call: init %C = call %bound_method.loc32(%a.ref, %b.ref) to %.loc30 +// CHECK:STDOUT: %C.as.SubWith.impl.Op.call: init %C = call %bound_method.loc32(%a.ref, %b.ref) to %.loc30 // CHECK:STDOUT: -// CHECK:STDOUT: return %Op.call to %return +// CHECK:STDOUT: return %C.as.SubWith.impl.Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @TestAssign(%a.param: %ptr.019, %b.param: %C) { @@ -81,10 +81,10 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %a.ref: %ptr.019 = name_ref a, %a // CHECK:STDOUT: %.loc38: ref %C = deref %a.ref // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem0: %.647 = impl_witness_access constants.%SubAssignWith.impl_witness, element0 [concrete = constants.%Op.f7d] +// CHECK:STDOUT: %impl.elem0: %.647 = impl_witness_access constants.%SubAssignWith.impl_witness, element0 [concrete = constants.%C.as.SubAssignWith.impl.Op] // CHECK:STDOUT: %bound_method: = bound_method %.loc38, %impl.elem0 // CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc38 -// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %bound_method(%addr, %b.ref) +// CHECK:STDOUT: %C.as.SubAssignWith.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr, %b.ref) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/package_expr/fail_not_found.carbon b/toolchain/check/testdata/package_expr/fail_not_found.carbon index 5db0abf1542d..37001ac88c5c 100644 --- a/toolchain/check/testdata/package_expr/fail_not_found.carbon +++ b/toolchain/check/testdata/package_expr/fail_not_found.carbon @@ -32,10 +32,10 @@ fn Main() { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.1, @Destroy.impl(%i32) [concrete] -// CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a17: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.e6a: %T.as.Destroy.impl.Op.type.a17 = struct_value () [concrete] // CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.e6a, @Op.1(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(%i32) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -74,11 +74,11 @@ fn Main() { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %y: ref %i32 = bind_name y, %y.var -// CHECK:STDOUT: %Op.bound: = bound_method %y.var, constants.%Op.e6a -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.e6a, @Op.1(constants.%i32) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %y.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %y.var, constants.%T.as.Destroy.impl.Op.e6a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %y.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.235 = addr_of %y.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/package_expr/syntax.carbon b/toolchain/check/testdata/package_expr/syntax.carbon index 46612373dca1..9c09cb040de3 100644 --- a/toolchain/check/testdata/package_expr/syntax.carbon +++ b/toolchain/check/testdata/package_expr/syntax.carbon @@ -57,18 +57,18 @@ fn Main() { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -81,8 +81,8 @@ fn Main() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -117,12 +117,12 @@ fn Main() { // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc4_1.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc4_1.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc4_1.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc4_1.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc4: init %i32 = converted %int_0, %int.convert_checked [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc4_1.2(%int_0) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc4: init %i32 = converted %int_0, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] // CHECK:STDOUT: assign file.%x.var, %.loc4 // CHECK:STDOUT: %package.ref: = name_ref package, package [concrete = package] // CHECK:STDOUT: %x.ref: ref %i32 = name_ref x, file.%x [concrete = file.%x.var] @@ -144,30 +144,30 @@ fn Main() { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.d04: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.b6e: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.b6e: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete] // CHECK:STDOUT: %Main: %Main.type = struct_value () [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.2, @Destroy.impl(%i32) [concrete] -// CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a17: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.e6a: %T.as.Destroy.impl.Op.type.a17 = struct_value () [concrete] // CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.e6a, @Op.2(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(%i32) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -180,8 +180,8 @@ fn Main() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -213,12 +213,12 @@ fn Main() { // CHECK:STDOUT: } // CHECK:STDOUT: %x.var: ref %i32 = var %x.var_patt // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc7_3.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc7_3.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc7_3.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc7_3.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc7_3: init %i32 = converted %int_1, %int.convert_checked [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc7_3.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc7_3: init %i32 = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_1.5d2] // CHECK:STDOUT: assign %x.var, %.loc7_3 // CHECK:STDOUT: %.loc7_10: type = splice_block %i32.loc7 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc7: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -239,28 +239,28 @@ fn Main() { // CHECK:STDOUT: %i32.loc9: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %y: ref %i32 = bind_name y, %y.var -// CHECK:STDOUT: %Op.bound.loc9: = bound_method %y.var, constants.%Op.e6a -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.e6a, @Op.2(constants.%i32) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc9: = bound_method %y.var, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc9: = bound_method %y.var, constants.%T.as.Destroy.impl.Op.e6a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc9: = bound_method %y.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc9: %ptr.235 = addr_of %y.var -// CHECK:STDOUT: %no_op.loc9: init %empty_tuple.type = call %bound_method.loc9(%addr.loc9) -// CHECK:STDOUT: %Op.bound.loc7: = bound_method %x.var, constants.%Op.e6a -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.e6a, @Op.2(constants.%i32) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc7_3.3: = bound_method %x.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc9: init %empty_tuple.type = call %bound_method.loc9(%addr.loc9) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc7: = bound_method %x.var, constants.%T.as.Destroy.impl.Op.e6a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc7_3.3: = bound_method %x.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc7: %ptr.235 = addr_of %x.var -// CHECK:STDOUT: %no_op.loc7: init %empty_tuple.type = call %bound_method.loc7_3.3(%addr.loc7) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc7: init %empty_tuple.type = call %bound_method.loc7_3.3(%addr.loc7) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc4_1.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Convert.bound.d04] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc4_1.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc4_1.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method.b6e] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc4_1.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc4: init %i32 = converted %int_0, %int.convert_checked [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc4_1.2(%int_0) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc4: init %i32 = converted %int_0, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] // CHECK:STDOUT: assign file.%x.var, %.loc4 // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -269,9 +269,9 @@ fn Main() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [concrete] -// CHECK:STDOUT: %Foo.type: type = fn_type @Foo [concrete] +// CHECK:STDOUT: %C.Foo.type: type = fn_type @C.Foo [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %Foo: %Foo.type = struct_value () [concrete] +// CHECK:STDOUT: %C.Foo: %C.Foo.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete] @@ -300,17 +300,17 @@ fn Main() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %Foo.decl: %Foo.type = fn_decl @Foo [concrete = constants.%Foo] {} {} +// CHECK:STDOUT: %C.Foo.decl: %C.Foo.type = fn_decl @C.Foo [concrete = constants.%C.Foo] {} {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C -// CHECK:STDOUT: .Foo = %Foo.decl +// CHECK:STDOUT: .Foo = %C.Foo.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Foo() { +// CHECK:STDOUT: fn @C.Foo() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -320,8 +320,8 @@ fn Main() { // CHECK:STDOUT: %package.ref: = name_ref package, package [concrete = package] // CHECK:STDOUT: %NS.ref: = name_ref NS, file.%NS [concrete = file.%NS] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] -// CHECK:STDOUT: %Foo.ref: %Foo.type = name_ref Foo, @C.%Foo.decl [concrete = constants.%Foo] -// CHECK:STDOUT: %Foo.call: init %empty_tuple.type = call %Foo.ref() +// CHECK:STDOUT: %Foo.ref: %C.Foo.type = name_ref Foo, @C.%C.Foo.decl [concrete = constants.%C.Foo] +// CHECK:STDOUT: %C.Foo.call: init %empty_tuple.type = call %Foo.ref() // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/packages/implicit_imports_prelude.carbon b/toolchain/check/testdata/packages/implicit_imports_prelude.carbon index 1a4ac6eca530..64657ac96dea 100644 --- a/toolchain/check/testdata/packages/implicit_imports_prelude.carbon +++ b/toolchain/check/testdata/packages/implicit_imports_prelude.carbon @@ -38,18 +38,18 @@ var b: i32 = a; // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -62,8 +62,8 @@ var b: i32 = a; // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -87,12 +87,12 @@ var b: i32 = a; // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc4_1.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc4_1.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc4_1.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc4_1.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc4: init %i32 = converted %int_0, %int.convert_checked [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc4_1.2(%int_0) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc4: init %i32 = converted %int_0, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] // CHECK:STDOUT: assign file.%a.var, %.loc4 // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/packages/raw_core.carbon b/toolchain/check/testdata/packages/raw_core.carbon index 421e681ff760..c6ecb3b61261 100644 --- a/toolchain/check/testdata/packages/raw_core.carbon +++ b/toolchain/check/testdata/packages/raw_core.carbon @@ -207,18 +207,18 @@ var c: r#Core = {.n = 0 as Core.Int(32)}; // CHECK:STDOUT: %As.type.90f: type = generic_interface_type @As [concrete] // CHECK:STDOUT: %As.generic: %As.type.90f = struct_value () [concrete] // CHECK:STDOUT: %As.type.fd4: type = facet_type <@As, @As(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.99b: type = fn_type @Convert.1, @As(%i32) [concrete] +// CHECK:STDOUT: %As.Convert.type.99b: type = fn_type @As.Convert, @As(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.062: type = fn_type @Convert.5, @As.impl.686(%To) [symbolic] -// CHECK:STDOUT: %Convert.527: %Convert.type.062 = struct_value () [symbolic] -// CHECK:STDOUT: %As.impl_witness.6b4: = impl_witness imports.%As.impl_witness_table.eb4, @As.impl.686(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.4fd: type = fn_type @Convert.5, @As.impl.686(%int_32) [concrete] -// CHECK:STDOUT: %Convert.197: %Convert.type.4fd = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.062: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.527: %Core.IntLiteral.as.As.impl.Convert.type.062 = struct_value () [symbolic] +// CHECK:STDOUT: %As.impl_witness.6b4: = impl_witness imports.%As.impl_witness_table.eb4, @Core.IntLiteral.as.As.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.4fd: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.197: %Core.IntLiteral.as.As.impl.Convert.type.4fd = struct_value () [concrete] // CHECK:STDOUT: %As.facet: %As.type.fd4 = facet_value Core.IntLiteral, (%As.impl_witness.6b4) [concrete] -// CHECK:STDOUT: %.982: type = fn_type_with_self_type %Convert.type.99b, %As.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.197 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.197, @Convert.5(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.982: type = fn_type_with_self_type %As.Convert.type.99b, %As.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.bound: = bound_method %int_0.5c6, %Core.IntLiteral.as.As.impl.Convert.197 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.As.impl.Convert.197, @Core.IntLiteral.as.As.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Core.IntLiteral.as.As.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: %.96d: ref %i32 = class_element_access file.%c.var, element0 [concrete] // CHECK:STDOUT: %Core.val: %Core = struct_value (%int_0.6a9) [concrete] @@ -233,8 +233,8 @@ var c: r#Core = {.n = 0 as Core.Int(32)}; // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.As: %As.type.90f = import_ref Core//prelude/parts/as, As, loaded [concrete = constants.%As.generic] -// CHECK:STDOUT: %Core.import_ref.78a: @As.impl.686.%Convert.type (%Convert.type.062) = import_ref Core//prelude/parts/int, loc25_39, loaded [symbolic = @As.impl.686.%Convert (constants.%Convert.527)] -// CHECK:STDOUT: %As.impl_witness_table.eb4 = impl_witness_table (%Core.import_ref.78a), @As.impl.686 [concrete] +// CHECK:STDOUT: %Core.import_ref.78a: @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert.type (%Core.IntLiteral.as.As.impl.Convert.type.062) = import_ref Core//prelude/parts/int, loc25_39, loaded [symbolic = @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert (constants.%Core.IntLiteral.as.As.impl.Convert.527)] +// CHECK:STDOUT: %As.impl_witness_table.eb4 = impl_witness_table (%Core.import_ref.78a), @Core.IntLiteral.as.As.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -276,12 +276,12 @@ var c: r#Core = {.n = 0 as Core.Int(32)}; // CHECK:STDOUT: %Int.ref: %Int.type = name_ref Int, imports.%Core.Int [concrete = constants.%Int.generic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %impl.elem0: %.982 = impl_witness_access constants.%As.impl_witness.6b4, element0 [concrete = constants.%Convert.197] -// CHECK:STDOUT: %bound_method.loc6_25.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.5(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.982 = impl_witness_access constants.%As.impl_witness.6b4, element0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.197] +// CHECK:STDOUT: %bound_method.loc6_25.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.As.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc6_25.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc6_25.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc6_25.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.call: init %i32 = call %bound_method.loc6_25.2(%int_0) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc6_25.1: %i32 = value_of_initializer %Core.IntLiteral.as.As.impl.Convert.call [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc6_25.2: %i32 = converted %int_0, %.loc6_25.1 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc6_40.1: %struct_type.n = struct_literal (%.loc6_25.2) // CHECK:STDOUT: %.loc6_40.2: ref %i32 = class_element_access file.%c.var, element0 [concrete = constants.%.96d] diff --git a/toolchain/check/testdata/patterns/underscore.carbon b/toolchain/check/testdata/patterns/underscore.carbon index d7b233cca827..fad00af3c833 100644 --- a/toolchain/check/testdata/patterns/underscore.carbon +++ b/toolchain/check/testdata/patterns/underscore.carbon @@ -131,10 +131,10 @@ fn F() -> {} { // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.069: type = fn_type @Op.1, @Destroy.impl(%empty_struct_type) [concrete] -// CHECK:STDOUT: %Op.d5a: %Op.type.069 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.069: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%empty_struct_type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.d5a: %T.as.Destroy.impl.Op.type.069 = struct_value () [concrete] // CHECK:STDOUT: %ptr.c28: type = ptr_type %empty_struct_type [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.d5a, @Op.1(%empty_struct_type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.d5a, @T.as.Destroy.impl.Op(%empty_struct_type) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -202,11 +202,11 @@ fn F() -> {} { // CHECK:STDOUT: %.loc9_11.3: type = converted %.loc9_11.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %_.loc9: ref %empty_struct_type = bind_name _, %_.var -// CHECK:STDOUT: %Op.bound: = bound_method %_.var, constants.%Op.d5a -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.d5a, @Op.1(constants.%empty_struct_type) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %_.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %_.var, constants.%T.as.Destroy.impl.Op.d5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.d5a, @T.as.Destroy.impl.Op(constants.%empty_struct_type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %_.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.c28 = addr_of %_.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/pointer/address_of_deref.carbon b/toolchain/check/testdata/pointer/address_of_deref.carbon index 544611d36478..e48531e484a3 100644 --- a/toolchain/check/testdata/pointer/address_of_deref.carbon +++ b/toolchain/check/testdata/pointer/address_of_deref.carbon @@ -32,24 +32,24 @@ fn F() -> i32 { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.1, @Destroy.impl(%i32) [concrete] -// CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.e6a, @Op.1(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a17: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.e6a: %T.as.Destroy.impl.Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(%i32) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -62,8 +62,8 @@ fn F() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -92,12 +92,12 @@ fn F() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %n.var: ref %i32 = var %n.var_patt // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc16_3.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc16_3.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc16_3.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc16_3.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc16_3: init %i32 = converted %int_0, %int.convert_checked [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc16_3.2(%int_0) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc16_3: init %i32 = converted %int_0, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] // CHECK:STDOUT: assign %n.var, %.loc16_3 // CHECK:STDOUT: %.loc16_10: type = splice_block %i32.loc16 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc16: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -110,11 +110,11 @@ fn F() -> i32 { // CHECK:STDOUT: %addr.loc17_11: %ptr.235 = addr_of %.loc17_12 // CHECK:STDOUT: %.loc17_10.1: ref %i32 = deref %addr.loc17_11 // CHECK:STDOUT: %.loc17_10.2: %i32 = bind_value %.loc17_10.1 -// CHECK:STDOUT: %Op.bound: = bound_method %n.var, constants.%Op.e6a -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.e6a, @Op.1(constants.%i32) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc16_3.3: = bound_method %n.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %n.var, constants.%T.as.Destroy.impl.Op.e6a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc16_3.3: = bound_method %n.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr.loc16: %ptr.235 = addr_of %n.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc16_3.3(%addr.loc16) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc16_3.3(%addr.loc16) // CHECK:STDOUT: return %.loc17_10.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/pointer/address_of_lvalue.carbon b/toolchain/check/testdata/pointer/address_of_lvalue.carbon index b026b4c8e346..9df60117b2ad 100644 --- a/toolchain/check/testdata/pointer/address_of_lvalue.carbon +++ b/toolchain/check/testdata/pointer/address_of_lvalue.carbon @@ -43,21 +43,21 @@ fn F() { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %struct: %struct_type.a.b.501 = struct_value (%int_1.5d2, %int_2.ef8) [concrete] // CHECK:STDOUT: %pattern_type.8dd: type = pattern_type %ptr.3ee [concrete] @@ -71,20 +71,20 @@ fn F() { // CHECK:STDOUT: %tuple: %tuple.type.d07 = tuple_value (%int_1.5d2, %int_2.ef8) [concrete] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.ba2: type = fn_type @Op.1, @Destroy.impl(%ptr.235) [concrete] -// CHECK:STDOUT: %Op.649: %Op.type.ba2 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.ba2: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%ptr.235) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.649: %T.as.Destroy.impl.Op.type.ba2 = struct_value () [concrete] // CHECK:STDOUT: %ptr.5d5: type = ptr_type %ptr.235 [concrete] -// CHECK:STDOUT: %Op.specific_fn.829: = specific_function %Op.649, @Op.1(%ptr.235) [concrete] -// CHECK:STDOUT: %Op.type.a4a: type = fn_type @Op.1, @Destroy.impl(%tuple.type.d07) [concrete] -// CHECK:STDOUT: %Op.7c6: %Op.type.a4a = struct_value () [concrete] -// CHECK:STDOUT: %Op.specific_fn.bbb: = specific_function %Op.7c6, @Op.1(%tuple.type.d07) [concrete] -// CHECK:STDOUT: %Op.type.757: type = fn_type @Op.1, @Destroy.impl(%ptr.3ee) [concrete] -// CHECK:STDOUT: %Op.e22: %Op.type.757 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.829: = specific_function %T.as.Destroy.impl.Op.649, @T.as.Destroy.impl.Op(%ptr.235) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a4a: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%tuple.type.d07) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.7c6: %T.as.Destroy.impl.Op.type.a4a = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.bbb: = specific_function %T.as.Destroy.impl.Op.7c6, @T.as.Destroy.impl.Op(%tuple.type.d07) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.757: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%ptr.3ee) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.e22: %T.as.Destroy.impl.Op.type.757 = struct_value () [concrete] // CHECK:STDOUT: %ptr.40c: type = ptr_type %ptr.3ee [concrete] -// CHECK:STDOUT: %Op.specific_fn.ce1: = specific_function %Op.e22, @Op.1(%ptr.3ee) [concrete] -// CHECK:STDOUT: %Op.type.da3: type = fn_type @Op.1, @Destroy.impl(%struct_type.a.b.501) [concrete] -// CHECK:STDOUT: %Op.9db: %Op.type.da3 = struct_value () [concrete] -// CHECK:STDOUT: %Op.specific_fn.1e0: = specific_function %Op.9db, @Op.1(%struct_type.a.b.501) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.ce1: = specific_function %T.as.Destroy.impl.Op.e22, @T.as.Destroy.impl.Op(%ptr.3ee) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.da3: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%struct_type.a.b.501) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.9db: %T.as.Destroy.impl.Op.type.da3 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1e0: = specific_function %T.as.Destroy.impl.Op.9db, @T.as.Destroy.impl.Op(%struct_type.a.b.501) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -97,8 +97,8 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -121,20 +121,20 @@ fn F() { // CHECK:STDOUT: %int_1.loc16: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2.loc16: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %.loc16_46.1: %struct_type.a.b.cfd = struct_literal (%int_1.loc16, %int_2.loc16) -// CHECK:STDOUT: %impl.elem0.loc16_46.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc16_46.1: = bound_method %int_1.loc16, %impl.elem0.loc16_46.1 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc16_46.1: = specific_function %impl.elem0.loc16_46.1, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc16_46.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc16_46.1: = bound_method %int_1.loc16, %impl.elem0.loc16_46.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc16_46.1: = specific_function %impl.elem0.loc16_46.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc16_46.2: = bound_method %int_1.loc16, %specific_fn.loc16_46.1 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc16_46.1: init %i32 = call %bound_method.loc16_46.2(%int_1.loc16) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc16_46.2: init %i32 = converted %int_1.loc16, %int.convert_checked.loc16_46.1 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc16_46.1: init %i32 = call %bound_method.loc16_46.2(%int_1.loc16) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc16_46.2: init %i32 = converted %int_1.loc16, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc16_46.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc16_46.3: ref %i32 = struct_access %s.var, element0 // CHECK:STDOUT: %.loc16_46.4: init %i32 = initialize_from %.loc16_46.2 to %.loc16_46.3 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %impl.elem0.loc16_46.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc16_46.3: = bound_method %int_2.loc16, %impl.elem0.loc16_46.2 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc16_46.2: = specific_function %impl.elem0.loc16_46.2, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc16_46.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc16_46.3: = bound_method %int_2.loc16, %impl.elem0.loc16_46.2 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc16_46.2: = specific_function %impl.elem0.loc16_46.2, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc16_46.4: = bound_method %int_2.loc16, %specific_fn.loc16_46.2 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc16_46.2: init %i32 = call %bound_method.loc16_46.4(%int_2.loc16) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc16_46.5: init %i32 = converted %int_2.loc16, %int.convert_checked.loc16_46.2 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc16_46.2: init %i32 = call %bound_method.loc16_46.4(%int_2.loc16) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc16_46.5: init %i32 = converted %int_2.loc16, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc16_46.2 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc16_46.6: ref %i32 = struct_access %s.var, element1 // CHECK:STDOUT: %.loc16_46.7: init %i32 = initialize_from %.loc16_46.5 to %.loc16_46.6 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc16_46.8: init %struct_type.a.b.501 = struct_init (%.loc16_46.4, %.loc16_46.7) to %s.var [concrete = constants.%struct] @@ -203,20 +203,20 @@ fn F() { // CHECK:STDOUT: %int_1.loc22: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2.loc22: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %.loc22_28.1: %tuple.type.f94 = tuple_literal (%int_1.loc22, %int_2.loc22) -// CHECK:STDOUT: %impl.elem0.loc22_28.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc22_28.1: = bound_method %int_1.loc22, %impl.elem0.loc22_28.1 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc22_28.1: = specific_function %impl.elem0.loc22_28.1, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc22_28.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc22_28.1: = bound_method %int_1.loc22, %impl.elem0.loc22_28.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc22_28.1: = specific_function %impl.elem0.loc22_28.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc22_28.2: = bound_method %int_1.loc22, %specific_fn.loc22_28.1 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc22_28.1: init %i32 = call %bound_method.loc22_28.2(%int_1.loc22) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc22_28.2: init %i32 = converted %int_1.loc22, %int.convert_checked.loc22_28.1 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22_28.1: init %i32 = call %bound_method.loc22_28.2(%int_1.loc22) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc22_28.2: init %i32 = converted %int_1.loc22, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22_28.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %tuple.elem0.loc22: ref %i32 = tuple_access %t.var, element0 // CHECK:STDOUT: %.loc22_28.3: init %i32 = initialize_from %.loc22_28.2 to %tuple.elem0.loc22 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %impl.elem0.loc22_28.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc22_28.3: = bound_method %int_2.loc22, %impl.elem0.loc22_28.2 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc22_28.2: = specific_function %impl.elem0.loc22_28.2, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc22_28.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc22_28.3: = bound_method %int_2.loc22, %impl.elem0.loc22_28.2 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc22_28.2: = specific_function %impl.elem0.loc22_28.2, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc22_28.4: = bound_method %int_2.loc22, %specific_fn.loc22_28.2 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc22_28.2: init %i32 = call %bound_method.loc22_28.4(%int_2.loc22) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc22_28.4: init %i32 = converted %int_2.loc22, %int.convert_checked.loc22_28.2 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22_28.2: init %i32 = call %bound_method.loc22_28.4(%int_2.loc22) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc22_28.4: init %i32 = converted %int_2.loc22, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22_28.2 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %tuple.elem1.loc22: ref %i32 = tuple_access %t.var, element1 // CHECK:STDOUT: %.loc22_28.5: init %i32 = initialize_from %.loc22_28.4 to %tuple.elem1.loc22 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc22_28.6: init %tuple.type.d07 = tuple_init (%.loc22_28.3, %.loc22_28.5) to %t.var [concrete = constants.%tuple] @@ -263,41 +263,41 @@ fn F() { // CHECK:STDOUT: %ptr.loc24: type = ptr_type %i32.loc24 [concrete = constants.%ptr.235] // CHECK:STDOUT: } // CHECK:STDOUT: %t1: ref %ptr.235 = bind_name t1, %t1.var -// CHECK:STDOUT: %Op.bound.loc24: = bound_method %t1.var, constants.%Op.649 -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.649, @Op.1(constants.%ptr.235) [concrete = constants.%Op.specific_fn.829] -// CHECK:STDOUT: %bound_method.loc24: = bound_method %t1.var, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc24: = bound_method %t1.var, constants.%T.as.Destroy.impl.Op.649 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.649, @T.as.Destroy.impl.Op(constants.%ptr.235) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.829] +// CHECK:STDOUT: %bound_method.loc24: = bound_method %t1.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc24_3: %ptr.5d5 = addr_of %t1.var -// CHECK:STDOUT: %no_op.loc24: init %empty_tuple.type = call %bound_method.loc24(%addr.loc24_3) -// CHECK:STDOUT: %Op.bound.loc23: = bound_method %t0.var, constants.%Op.649 -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.649, @Op.1(constants.%ptr.235) [concrete = constants.%Op.specific_fn.829] -// CHECK:STDOUT: %bound_method.loc23: = bound_method %t0.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc24: init %empty_tuple.type = call %bound_method.loc24(%addr.loc24_3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc23: = bound_method %t0.var, constants.%T.as.Destroy.impl.Op.649 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.649, @T.as.Destroy.impl.Op(constants.%ptr.235) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.829] +// CHECK:STDOUT: %bound_method.loc23: = bound_method %t0.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc23_3: %ptr.5d5 = addr_of %t0.var -// CHECK:STDOUT: %no_op.loc23: init %empty_tuple.type = call %bound_method.loc23(%addr.loc23_3) -// CHECK:STDOUT: %Op.bound.loc22: = bound_method %t.var, constants.%Op.7c6 -// CHECK:STDOUT: %Op.specific_fn.3: = specific_function constants.%Op.7c6, @Op.1(constants.%tuple.type.d07) [concrete = constants.%Op.specific_fn.bbb] -// CHECK:STDOUT: %bound_method.loc22_3: = bound_method %t.var, %Op.specific_fn.3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc23: init %empty_tuple.type = call %bound_method.loc23(%addr.loc23_3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc22: = bound_method %t.var, constants.%T.as.Destroy.impl.Op.7c6 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.3: = specific_function constants.%T.as.Destroy.impl.Op.7c6, @T.as.Destroy.impl.Op(constants.%tuple.type.d07) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bbb] +// CHECK:STDOUT: %bound_method.loc22_3: = bound_method %t.var, %T.as.Destroy.impl.Op.specific_fn.3 // CHECK:STDOUT: %addr.loc22: %ptr.261 = addr_of %t.var -// CHECK:STDOUT: %no_op.loc22: init %empty_tuple.type = call %bound_method.loc22_3(%addr.loc22) -// CHECK:STDOUT: %Op.bound.loc20: = bound_method %r.var, constants.%Op.649 -// CHECK:STDOUT: %Op.specific_fn.4: = specific_function constants.%Op.649, @Op.1(constants.%ptr.235) [concrete = constants.%Op.specific_fn.829] -// CHECK:STDOUT: %bound_method.loc20: = bound_method %r.var, %Op.specific_fn.4 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc22: init %empty_tuple.type = call %bound_method.loc22_3(%addr.loc22) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc20: = bound_method %r.var, constants.%T.as.Destroy.impl.Op.649 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.4: = specific_function constants.%T.as.Destroy.impl.Op.649, @T.as.Destroy.impl.Op(constants.%ptr.235) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.829] +// CHECK:STDOUT: %bound_method.loc20: = bound_method %r.var, %T.as.Destroy.impl.Op.specific_fn.4 // CHECK:STDOUT: %addr.loc20_3: %ptr.5d5 = addr_of %r.var -// CHECK:STDOUT: %no_op.loc20: init %empty_tuple.type = call %bound_method.loc20(%addr.loc20_3) -// CHECK:STDOUT: %Op.bound.loc19: = bound_method %q.var, constants.%Op.649 -// CHECK:STDOUT: %Op.specific_fn.5: = specific_function constants.%Op.649, @Op.1(constants.%ptr.235) [concrete = constants.%Op.specific_fn.829] -// CHECK:STDOUT: %bound_method.loc19: = bound_method %q.var, %Op.specific_fn.5 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc20: init %empty_tuple.type = call %bound_method.loc20(%addr.loc20_3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc19: = bound_method %q.var, constants.%T.as.Destroy.impl.Op.649 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.5: = specific_function constants.%T.as.Destroy.impl.Op.649, @T.as.Destroy.impl.Op(constants.%ptr.235) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.829] +// CHECK:STDOUT: %bound_method.loc19: = bound_method %q.var, %T.as.Destroy.impl.Op.specific_fn.5 // CHECK:STDOUT: %addr.loc19_3: %ptr.5d5 = addr_of %q.var -// CHECK:STDOUT: %no_op.loc19: init %empty_tuple.type = call %bound_method.loc19(%addr.loc19_3) -// CHECK:STDOUT: %Op.bound.loc18: = bound_method %p.var, constants.%Op.e22 -// CHECK:STDOUT: %Op.specific_fn.6: = specific_function constants.%Op.e22, @Op.1(constants.%ptr.3ee) [concrete = constants.%Op.specific_fn.ce1] -// CHECK:STDOUT: %bound_method.loc18: = bound_method %p.var, %Op.specific_fn.6 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc19: init %empty_tuple.type = call %bound_method.loc19(%addr.loc19_3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc18: = bound_method %p.var, constants.%T.as.Destroy.impl.Op.e22 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.6: = specific_function constants.%T.as.Destroy.impl.Op.e22, @T.as.Destroy.impl.Op(constants.%ptr.3ee) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.ce1] +// CHECK:STDOUT: %bound_method.loc18: = bound_method %p.var, %T.as.Destroy.impl.Op.specific_fn.6 // CHECK:STDOUT: %addr.loc18_3: %ptr.40c = addr_of %p.var -// CHECK:STDOUT: %no_op.loc18: init %empty_tuple.type = call %bound_method.loc18(%addr.loc18_3) -// CHECK:STDOUT: %Op.bound.loc16: = bound_method %s.var, constants.%Op.9db -// CHECK:STDOUT: %Op.specific_fn.7: = specific_function constants.%Op.9db, @Op.1(constants.%struct_type.a.b.501) [concrete = constants.%Op.specific_fn.1e0] -// CHECK:STDOUT: %bound_method.loc16_3: = bound_method %s.var, %Op.specific_fn.7 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc18: init %empty_tuple.type = call %bound_method.loc18(%addr.loc18_3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc16: = bound_method %s.var, constants.%T.as.Destroy.impl.Op.9db +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.7: = specific_function constants.%T.as.Destroy.impl.Op.9db, @T.as.Destroy.impl.Op(constants.%struct_type.a.b.501) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.1e0] +// CHECK:STDOUT: %bound_method.loc16_3: = bound_method %s.var, %T.as.Destroy.impl.Op.specific_fn.7 // CHECK:STDOUT: %addr.loc16: %ptr.3ee = addr_of %s.var -// CHECK:STDOUT: %no_op.loc16: init %empty_tuple.type = call %bound_method.loc16_3(%addr.loc16) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc16: init %empty_tuple.type = call %bound_method.loc16_3(%addr.loc16) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/pointer/arrow.carbon b/toolchain/check/testdata/pointer/arrow.carbon index 2d320f7a24f4..45e7eedfc493 100644 --- a/toolchain/check/testdata/pointer/arrow.carbon +++ b/toolchain/check/testdata/pointer/arrow.carbon @@ -32,9 +32,9 @@ fn Foo(ptr: C*) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] -// CHECK:STDOUT: %Member.type: type = fn_type @Member [concrete] +// CHECK:STDOUT: %C.Member.type: type = fn_type @C.Member [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %Member: %Member.type = struct_value () [concrete] +// CHECK:STDOUT: %C.Member: %C.Member.type = struct_value () [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %ptr.019 [concrete] // CHECK:STDOUT: %struct_type.field: type = struct_type {.field: %ptr.019} [concrete] @@ -73,7 +73,7 @@ fn Foo(ptr: C*) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %Member.decl: %Member.type = fn_decl @Member [concrete = constants.%Member] { +// CHECK:STDOUT: %C.Member.decl: %C.Member.type = fn_decl @C.Member [concrete = constants.%C.Member] { // CHECK:STDOUT: %self.patt: %pattern_type.c48 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.c48 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: } { @@ -90,27 +90,27 @@ fn Foo(ptr: C*) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C -// CHECK:STDOUT: .Member = %Member.decl +// CHECK:STDOUT: .Member = %C.Member.decl // CHECK:STDOUT: .C = // CHECK:STDOUT: .field = %.loc17 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Member(%self.param: %C); +// CHECK:STDOUT: fn @C.Member(%self.param: %C); // CHECK:STDOUT: // CHECK:STDOUT: fn @Foo(%ptr.param: %ptr.019) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %ptr.ref.loc21: %ptr.019 = name_ref ptr, %ptr.loc20_8 // CHECK:STDOUT: %.loc21_4.1: ref %C = deref %ptr.ref.loc21 -// CHECK:STDOUT: %Member.ref.loc21: %Member.type = name_ref Member, @C.%Member.decl [concrete = constants.%Member] -// CHECK:STDOUT: %Member.bound.loc21: = bound_method %.loc21_4.1, %Member.ref.loc21 +// CHECK:STDOUT: %Member.ref.loc21: %C.Member.type = name_ref Member, @C.%C.Member.decl [concrete = constants.%C.Member] +// CHECK:STDOUT: %C.Member.bound.loc21: = bound_method %.loc21_4.1, %Member.ref.loc21 // CHECK:STDOUT: %.loc21_4.2: %C = bind_value %.loc21_4.1 -// CHECK:STDOUT: %Member.call.loc21: init %empty_tuple.type = call %Member.bound.loc21(%.loc21_4.2) +// CHECK:STDOUT: %C.Member.call.loc21: init %empty_tuple.type = call %C.Member.bound.loc21(%.loc21_4.2) // CHECK:STDOUT: %ptr.ref.loc22: %ptr.019 = name_ref ptr, %ptr.loc20_8 // CHECK:STDOUT: %.loc22_6.1: ref %C = deref %ptr.ref.loc22 -// CHECK:STDOUT: %Member.ref.loc22: %Member.type = name_ref Member, @C.%Member.decl [concrete = constants.%Member] -// CHECK:STDOUT: %Member.bound.loc22: = bound_method %.loc22_6.1, %Member.ref.loc22 +// CHECK:STDOUT: %Member.ref.loc22: %C.Member.type = name_ref Member, @C.%C.Member.decl [concrete = constants.%C.Member] +// CHECK:STDOUT: %C.Member.bound.loc22: = bound_method %.loc22_6.1, %Member.ref.loc22 // CHECK:STDOUT: %.loc22_6.2: %C = bind_value %.loc22_6.1 -// CHECK:STDOUT: %Member.call.loc22: init %empty_tuple.type = call %Member.bound.loc22(%.loc22_6.2) +// CHECK:STDOUT: %C.Member.call.loc22: init %empty_tuple.type = call %C.Member.bound.loc22(%.loc22_6.2) // CHECK:STDOUT: %ptr.ref.loc24: %ptr.019 = name_ref ptr, %ptr.loc20_8 // CHECK:STDOUT: %.loc24_4: ref %C = deref %ptr.ref.loc24 // CHECK:STDOUT: %field.ref.loc24: %C.elem = name_ref field, @C.%.loc17 [concrete = @C.%.loc17] diff --git a/toolchain/check/testdata/pointer/basic.carbon b/toolchain/check/testdata/pointer/basic.carbon index 0b6c529b9f07..358a34d4f63d 100644 --- a/toolchain/check/testdata/pointer/basic.carbon +++ b/toolchain/check/testdata/pointer/basic.carbon @@ -34,29 +34,29 @@ fn F() -> i32 { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] // CHECK:STDOUT: %pattern_type.fe8: type = pattern_type %ptr.235 [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.ba2: type = fn_type @Op.1, @Destroy.impl(%ptr.235) [concrete] -// CHECK:STDOUT: %Op.649: %Op.type.ba2 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.ba2: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%ptr.235) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.649: %T.as.Destroy.impl.Op.type.ba2 = struct_value () [concrete] // CHECK:STDOUT: %ptr.5d5: type = ptr_type %ptr.235 [concrete] -// CHECK:STDOUT: %Op.specific_fn.829: = specific_function %Op.649, @Op.1(%ptr.235) [concrete] -// CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.1, @Destroy.impl(%i32) [concrete] -// CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] -// CHECK:STDOUT: %Op.specific_fn.014: = specific_function %Op.e6a, @Op.1(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.829: = specific_function %T.as.Destroy.impl.Op.649, @T.as.Destroy.impl.Op(%ptr.235) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a17: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.e6a: %T.as.Destroy.impl.Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.014: = specific_function %T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(%i32) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -69,8 +69,8 @@ fn F() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -99,12 +99,12 @@ fn F() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %n.var: ref %i32 = var %n.var_patt // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc16_3.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc16_3.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc16_3.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc16_3.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc16_3: init %i32 = converted %int_0, %int.convert_checked [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc16_3.2(%int_0) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc16_3: init %i32 = converted %int_0, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] // CHECK:STDOUT: assign %n.var, %.loc16_3 // CHECK:STDOUT: %.loc16_10: type = splice_block %i32.loc16 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc16: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -129,16 +129,16 @@ fn F() -> i32 { // CHECK:STDOUT: %.loc19_11: %ptr.235 = bind_value %p.ref // CHECK:STDOUT: %.loc19_10.1: ref %i32 = deref %.loc19_11 // CHECK:STDOUT: %.loc19_10.2: %i32 = bind_value %.loc19_10.1 -// CHECK:STDOUT: %Op.bound.loc17: = bound_method %p.var, constants.%Op.649 -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.649, @Op.1(constants.%ptr.235) [concrete = constants.%Op.specific_fn.829] -// CHECK:STDOUT: %bound_method.loc17: = bound_method %p.var, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc17: = bound_method %p.var, constants.%T.as.Destroy.impl.Op.649 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.649, @T.as.Destroy.impl.Op(constants.%ptr.235) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.829] +// CHECK:STDOUT: %bound_method.loc17: = bound_method %p.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc17_3: %ptr.5d5 = addr_of %p.var -// CHECK:STDOUT: %no_op.loc17: init %empty_tuple.type = call %bound_method.loc17(%addr.loc17_3) -// CHECK:STDOUT: %Op.bound.loc16: = bound_method %n.var, constants.%Op.e6a -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.e6a, @Op.1(constants.%i32) [concrete = constants.%Op.specific_fn.014] -// CHECK:STDOUT: %bound_method.loc16_3.3: = bound_method %n.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc17: init %empty_tuple.type = call %bound_method.loc17(%addr.loc17_3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc16: = bound_method %n.var, constants.%T.as.Destroy.impl.Op.e6a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.014] +// CHECK:STDOUT: %bound_method.loc16_3.3: = bound_method %n.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc16: %ptr.235 = addr_of %n.var -// CHECK:STDOUT: %no_op.loc16: init %empty_tuple.type = call %bound_method.loc16_3.3(%addr.loc16) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc16: init %empty_tuple.type = call %bound_method.loc16_3.3(%addr.loc16) // CHECK:STDOUT: return %.loc19_10.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/pointer/fail_address_of_value.carbon b/toolchain/check/testdata/pointer/fail_address_of_value.carbon index 23a4dc683650..c42a578ae788 100644 --- a/toolchain/check/testdata/pointer/fail_address_of_value.carbon +++ b/toolchain/check/testdata/pointer/fail_address_of_value.carbon @@ -141,10 +141,10 @@ fn AddressOfParam(param: i32) { // CHECK:STDOUT: %false: bool = bool_literal false [concrete] // CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.c80: type = fn_type @Op.1, @Destroy.impl(%struct_type.a.ba9) [concrete] -// CHECK:STDOUT: %Op.691: %Op.type.c80 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.c80: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%struct_type.a.ba9) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.691: %T.as.Destroy.impl.Op.type.c80 = struct_value () [concrete] // CHECK:STDOUT: %ptr.1bb: type = ptr_type %struct_type.a.ba9 [concrete] -// CHECK:STDOUT: %Op.specific_fn.51b: = specific_function %Op.691, @Op.1(%struct_type.a.ba9) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.51b: = specific_function %T.as.Destroy.impl.Op.691, @T.as.Destroy.impl.Op(%struct_type.a.ba9) [concrete] // CHECK:STDOUT: %AddressOfCall.type: type = fn_type @AddressOfCall [concrete] // CHECK:STDOUT: %AddressOfCall: %AddressOfCall.type = struct_value () [concrete] // CHECK:STDOUT: %AddressOfType.type: type = fn_type @AddressOfType [concrete] @@ -158,10 +158,10 @@ fn AddressOfParam(param: i32) { // CHECK:STDOUT: %AddressOfParam.type: type = fn_type @AddressOfParam [concrete] // CHECK:STDOUT: %AddressOfParam: %AddressOfParam.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.fe8: type = pattern_type %ptr.235 [concrete] -// CHECK:STDOUT: %Op.type.ba2: type = fn_type @Op.1, @Destroy.impl(%ptr.235) [concrete] -// CHECK:STDOUT: %Op.649: %Op.type.ba2 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.ba2: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%ptr.235) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.649: %T.as.Destroy.impl.Op.type.ba2 = struct_value () [concrete] // CHECK:STDOUT: %ptr.5d5: type = ptr_type %ptr.235 [concrete] -// CHECK:STDOUT: %Op.specific_fn.829: = specific_function %Op.649, @Op.1(%ptr.235) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.829: = specific_function %T.as.Destroy.impl.Op.649, @T.as.Destroy.impl.Op(%ptr.235) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -271,11 +271,11 @@ fn AddressOfParam(param: i32) { // CHECK:STDOUT: %true.loc67: bool = bool_literal true [concrete = constants.%true] // CHECK:STDOUT: %.loc67: bool = not %true.loc67 [concrete = constants.%false] // CHECK:STDOUT: %addr.loc67: %ptr.bb2 = addr_of [concrete = ] -// CHECK:STDOUT: %Op.bound: = bound_method %.loc62_6.1, constants.%Op.691 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.691, @Op.1(constants.%struct_type.a.ba9) [concrete = constants.%Op.specific_fn.51b] -// CHECK:STDOUT: %bound_method: = bound_method %.loc62_6.1, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc62_6.1, constants.%T.as.Destroy.impl.Op.691 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.691, @T.as.Destroy.impl.Op(constants.%struct_type.a.ba9) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.51b] +// CHECK:STDOUT: %bound_method: = bound_method %.loc62_6.1, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr.loc62_6: %ptr.1bb = addr_of %.loc62_6.1 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr.loc62_6) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc62_6) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -329,11 +329,11 @@ fn AddressOfParam(param: i32) { // CHECK:STDOUT: %ptr: type = ptr_type %i32.loc104 [concrete = constants.%ptr.235] // CHECK:STDOUT: } // CHECK:STDOUT: %param_addr: ref %ptr.235 = bind_name param_addr, %param_addr.var -// CHECK:STDOUT: %Op.bound: = bound_method %param_addr.var, constants.%Op.649 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.649, @Op.1(constants.%ptr.235) [concrete = constants.%Op.specific_fn.829] -// CHECK:STDOUT: %bound_method: = bound_method %param_addr.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %param_addr.var, constants.%T.as.Destroy.impl.Op.649 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.649, @T.as.Destroy.impl.Op(constants.%ptr.235) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.829] +// CHECK:STDOUT: %bound_method: = bound_method %param_addr.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr.loc104_3: %ptr.5d5 = addr_of %param_addr.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr.loc104_3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc104_3) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/pointer/import.carbon b/toolchain/check/testdata/pointer/import.carbon index f586f50f0dce..a45f7c52044b 100644 --- a/toolchain/check/testdata/pointer/import.carbon +++ b/toolchain/check/testdata/pointer/import.carbon @@ -37,18 +37,18 @@ var a: i32* = a_ref; // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: %ptr: type = ptr_type %i32 [concrete] // CHECK:STDOUT: %pattern_type.fe8: type = pattern_type %ptr [concrete] @@ -64,8 +64,8 @@ var a: i32* = a_ref; // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -101,12 +101,12 @@ var a: i32* = a_ref; // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc4_1.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc4_1.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc4_1.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc4_1.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc4: init %i32 = converted %int_0, %int.convert_checked [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc4_1.2(%int_0) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc4: init %i32 = converted %int_0, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] // CHECK:STDOUT: assign file.%a_orig.var, %.loc4 // CHECK:STDOUT: %a_orig.ref: ref %i32 = name_ref a_orig, file.%a_orig [concrete = file.%a_orig.var] // CHECK:STDOUT: %addr: %ptr = addr_of %a_orig.ref [concrete = constants.%addr] diff --git a/toolchain/check/testdata/return/code_after_return_value.carbon b/toolchain/check/testdata/return/code_after_return_value.carbon index 4af17ddd8f55..0a6f441a55ea 100644 --- a/toolchain/check/testdata/return/code_after_return_value.carbon +++ b/toolchain/check/testdata/return/code_after_return_value.carbon @@ -41,18 +41,18 @@ fn F(b: bool) -> i32 { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.d04: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.b6e: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.b6e: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -67,8 +67,8 @@ fn F(b: bool) -> i32 { // CHECK:STDOUT: %Core.Bool: %Bool.type = import_ref Core//prelude/parts/bool, Bool, loaded [concrete = constants.%Bool] // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -87,9 +87,9 @@ fn F(b: bool) -> i32 { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %b.param: bool = value_param call_param0 // CHECK:STDOUT: %.loc15_9.1: type = splice_block %.loc15_9.3 [concrete = bool] { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc15_9.2: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc15_9.3: type = converted %bool.make_type, %.loc15_9.2 [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc15_9.2: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc15_9.3: type = converted %Bool.call, %.loc15_9.2 [concrete = bool] // CHECK:STDOUT: } // CHECK:STDOUT: %b: bool = bind_name b, %b.param // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param1 @@ -100,12 +100,12 @@ fn F(b: bool) -> i32 { // CHECK:STDOUT: fn @F(%b.param: bool) -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc16_11.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Convert.bound.d04] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc16_11.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc16_11.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method.b6e] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc16_11.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc16_11.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc16_11.2(%int_0) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc16_11.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc16_11.2: %i32 = converted %int_0, %.loc16_11.1 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: return %.loc16_11.2 // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/return/fail_return_with_returned_var.carbon b/toolchain/check/testdata/return/fail_return_with_returned_var.carbon index d6e15685e25e..5eb999e1a835 100644 --- a/toolchain/check/testdata/return/fail_return_with_returned_var.carbon +++ b/toolchain/check/testdata/return/fail_return_with_returned_var.carbon @@ -52,25 +52,25 @@ fn G() -> C { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.d04: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.b6e: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.b6e: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.1, @Destroy.impl(%i32) [concrete] -// CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a17: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.e6a: %T.as.Destroy.impl.Op.type.a17 = struct_value () [concrete] // CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.e6a, @Op.1(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(%i32) [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %i32 [concrete] // CHECK:STDOUT: %struct_type.a.b.501: type = struct_type {.a: %i32, .b: %i32} [concrete] @@ -80,11 +80,11 @@ fn G() -> C { // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %struct_type.a.b.cfd: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %C.val: %C = struct_value (%int_1.5d2, %int_2.ef8) [concrete] // CHECK:STDOUT: } @@ -99,8 +99,8 @@ fn G() -> C { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -157,12 +157,12 @@ fn G() -> C { // CHECK:STDOUT: } // CHECK:STDOUT: %v.var: ref %i32 = var %v.var_patt // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc16_12.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Convert.bound.d04] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc16_12.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc16_12.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method.b6e] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc16_12.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc16_12: init %i32 = converted %int_0, %int.convert_checked [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc16_12.2(%int_0) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc16_12: init %i32 = converted %int_0, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] // CHECK:STDOUT: assign %v.var, %.loc16_12 // CHECK:STDOUT: %.loc16_19: type = splice_block %i32.loc16 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc16: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -170,11 +170,11 @@ fn G() -> C { // CHECK:STDOUT: } // CHECK:STDOUT: %v: ref %i32 = bind_name v, %v.var // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %Op.bound: = bound_method %v.var, constants.%Op.e6a -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.e6a, @Op.1(constants.%i32) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc16_12.3: = bound_method %v.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %v.var, constants.%T.as.Destroy.impl.Op.e6a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc16_12.3: = bound_method %v.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.235 = addr_of %v.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc16_12.3(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc16_12.3(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -187,20 +187,20 @@ fn G() -> C { // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %.loc29_38.1: %struct_type.a.b.cfd = struct_literal (%int_1, %int_2) -// CHECK:STDOUT: %impl.elem0.loc29_38.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc29_38.1: = bound_method %int_1, %impl.elem0.loc29_38.1 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc29_38.1: = specific_function %impl.elem0.loc29_38.1, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc29_38.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc29_38.1: = bound_method %int_1, %impl.elem0.loc29_38.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc29_38.1: = specific_function %impl.elem0.loc29_38.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc29_38.2: = bound_method %int_1, %specific_fn.loc29_38.1 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc29_38.1: init %i32 = call %bound_method.loc29_38.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc29_38.2: init %i32 = converted %int_1, %int.convert_checked.loc29_38.1 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc29_38.1: init %i32 = call %bound_method.loc29_38.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc29_38.2: init %i32 = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc29_38.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc29_38.3: ref %i32 = class_element_access %return, element0 // CHECK:STDOUT: %.loc29_38.4: init %i32 = initialize_from %.loc29_38.2 to %.loc29_38.3 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %impl.elem0.loc29_38.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc29_38.3: = bound_method %int_2, %impl.elem0.loc29_38.2 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc29_38.2: = specific_function %impl.elem0.loc29_38.2, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc29_38.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc29_38.3: = bound_method %int_2, %impl.elem0.loc29_38.2 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc29_38.2: = specific_function %impl.elem0.loc29_38.2, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc29_38.4: = bound_method %int_2, %specific_fn.loc29_38.2 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc29_38.2: init %i32 = call %bound_method.loc29_38.4(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc29_38.5: init %i32 = converted %int_2, %int.convert_checked.loc29_38.2 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc29_38.2: init %i32 = call %bound_method.loc29_38.4(%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc29_38.5: init %i32 = converted %int_2, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc29_38.2 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc29_38.6: ref %i32 = class_element_access %return, element1 // CHECK:STDOUT: %.loc29_38.7: init %i32 = initialize_from %.loc29_38.5 to %.loc29_38.6 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc29_38.8: init %C = class_init (%.loc29_38.4, %.loc29_38.7), %return [concrete = constants.%C.val] diff --git a/toolchain/check/testdata/return/fail_returned_var_no_return_type.carbon b/toolchain/check/testdata/return/fail_returned_var_no_return_type.carbon index a947ae5ff26d..d189c4d5f97c 100644 --- a/toolchain/check/testdata/return/fail_returned_var_no_return_type.carbon +++ b/toolchain/check/testdata/return/fail_returned_var_no_return_type.carbon @@ -57,10 +57,10 @@ fn ForgotReturnType() { // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.1, @Destroy.impl(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a63: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ea3: %T.as.Destroy.impl.Op.type.a63 = struct_value () [concrete] // CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ea3, @Op.1(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(%empty_tuple.type) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -97,11 +97,11 @@ fn ForgotReturnType() { // CHECK:STDOUT: %.loc12_20.3: type = converted %.loc12_20.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %v: ref %empty_tuple.type = bind_name v, %v.var -// CHECK:STDOUT: %Op.bound: = bound_method %v.var, constants.%Op.ea3 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.ea3, @Op.1(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %v.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %v.var, constants.%T.as.Destroy.impl.Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %v.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.843 = addr_of %v.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -114,10 +114,10 @@ fn ForgotReturnType() { // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.1, @Destroy.impl(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a63: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ea3: %T.as.Destroy.impl.Op.type.a63 = struct_value () [concrete] // CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ea3, @Op.1(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(%empty_tuple.type) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -154,11 +154,11 @@ fn ForgotReturnType() { // CHECK:STDOUT: %.loc12_20.3: type = converted %.loc12_20.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %v: ref %empty_tuple.type = bind_name v, %v.var -// CHECK:STDOUT: %Op.bound: = bound_method %v.var, constants.%Op.ea3 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.ea3, @Op.1(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %v.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %v.var, constants.%T.as.Destroy.impl.Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %v.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.843 = addr_of %v.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/fail_returned_var_shadow.carbon b/toolchain/check/testdata/return/fail_returned_var_shadow.carbon index df46159d9bbb..9f6fe323a9ad 100644 --- a/toolchain/check/testdata/return/fail_returned_var_shadow.carbon +++ b/toolchain/check/testdata/return/fail_returned_var_shadow.carbon @@ -60,28 +60,28 @@ fn DifferentScopes() -> i32 { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.d04: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.b6e: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.b6e: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.1, @Destroy.impl(%i32) [concrete] -// CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a17: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.e6a: %T.as.Destroy.impl.Op.type.a17 = struct_value () [concrete] // CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.e6a, @Op.1(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(%i32) [concrete] // CHECK:STDOUT: %DifferentScopes.type: type = fn_type @DifferentScopes [concrete] // CHECK:STDOUT: %DifferentScopes: %DifferentScopes.type = struct_value () [concrete] // CHECK:STDOUT: } @@ -96,8 +96,8 @@ fn DifferentScopes() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -140,12 +140,12 @@ fn DifferentScopes() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %v.var: ref %i32 = var %v.var_patt // CHECK:STDOUT: %int_0.loc17: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %impl.elem0.loc17: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc17_14.1: = bound_method %int_0.loc17, %impl.elem0.loc17 [concrete = constants.%Convert.bound.d04] -// CHECK:STDOUT: %specific_fn.loc17: = specific_function %impl.elem0.loc17, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc17: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc17_14.1: = bound_method %int_0.loc17, %impl.elem0.loc17 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04] +// CHECK:STDOUT: %specific_fn.loc17: = specific_function %impl.elem0.loc17, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc17_14.2: = bound_method %int_0.loc17, %specific_fn.loc17 [concrete = constants.%bound_method.b6e] -// CHECK:STDOUT: %int.convert_checked.loc17: init %i32 = call %bound_method.loc17_14.2(%int_0.loc17) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc17_14: init %i32 = converted %int_0.loc17, %int.convert_checked.loc17 [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc17: init %i32 = call %bound_method.loc17_14.2(%int_0.loc17) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc17_14: init %i32 = converted %int_0.loc17, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc17 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: assign %v.var, %.loc17_14 // CHECK:STDOUT: %.loc17_21: type = splice_block %i32.loc17 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc17: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -158,12 +158,12 @@ fn DifferentScopes() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %w.var: ref %i32 = var %w.var_patt // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0.loc25: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc25_14.1: = bound_method %int_1, %impl.elem0.loc25 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc25: = specific_function %impl.elem0.loc25, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc25: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc25_14.1: = bound_method %int_1, %impl.elem0.loc25 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc25: = specific_function %impl.elem0.loc25, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc25_14.2: = bound_method %int_1, %specific_fn.loc25 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc25: init %i32 = call %bound_method.loc25_14.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc25_14: init %i32 = converted %int_1, %int.convert_checked.loc25 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc25: init %i32 = call %bound_method.loc25_14.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc25_14: init %i32 = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc25 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: assign %w.var, %.loc25_14 // CHECK:STDOUT: %.loc25_21: type = splice_block %i32.loc25 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc25: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -174,23 +174,23 @@ fn DifferentScopes() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !if.else: // CHECK:STDOUT: %int_0.loc27: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %impl.elem0.loc27: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc27_11.1: = bound_method %int_0.loc27, %impl.elem0.loc27 [concrete = constants.%Convert.bound.d04] -// CHECK:STDOUT: %specific_fn.loc27: = specific_function %impl.elem0.loc27, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc27: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc27_11.1: = bound_method %int_0.loc27, %impl.elem0.loc27 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04] +// CHECK:STDOUT: %specific_fn.loc27: = specific_function %impl.elem0.loc27, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc27_11.2: = bound_method %int_0.loc27, %specific_fn.loc27 [concrete = constants.%bound_method.b6e] -// CHECK:STDOUT: %int.convert_checked.loc27: init %i32 = call %bound_method.loc27_11.2(%int_0.loc27) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc27_11.1: %i32 = value_of_initializer %int.convert_checked.loc27 [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc27: init %i32 = call %bound_method.loc27_11.2(%int_0.loc27) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc27_11.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc27 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc27_11.2: %i32 = converted %int_0.loc27, %.loc27_11.1 [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %Op.bound.loc25: = bound_method %w.var, constants.%Op.e6a -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.e6a, @Op.1(constants.%i32) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc25_14.3: = bound_method %w.var, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc25: = bound_method %w.var, constants.%T.as.Destroy.impl.Op.e6a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc25_14.3: = bound_method %w.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc25: %ptr.235 = addr_of %w.var -// CHECK:STDOUT: %no_op.loc25: init %empty_tuple.type = call %bound_method.loc25_14.3(%addr.loc25) -// CHECK:STDOUT: %Op.bound.loc17: = bound_method %v.var, constants.%Op.e6a -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.e6a, @Op.1(constants.%i32) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc17_14.3: = bound_method %v.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc25: init %empty_tuple.type = call %bound_method.loc25_14.3(%addr.loc25) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc17: = bound_method %v.var, constants.%T.as.Destroy.impl.Op.e6a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc17_14.3: = bound_method %v.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc17: %ptr.235 = addr_of %v.var -// CHECK:STDOUT: %no_op.loc17: init %empty_tuple.type = call %bound_method.loc17_14.3(%addr.loc17) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc17: init %empty_tuple.type = call %bound_method.loc17_14.3(%addr.loc17) // CHECK:STDOUT: return %.loc27_11.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -206,12 +206,12 @@ fn DifferentScopes() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %v.var: ref %i32 = var %v.var_patt // CHECK:STDOUT: %int_0.loc32: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %impl.elem0.loc32: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc32_14.1: = bound_method %int_0.loc32, %impl.elem0.loc32 [concrete = constants.%Convert.bound.d04] -// CHECK:STDOUT: %specific_fn.loc32: = specific_function %impl.elem0.loc32, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc32: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc32_14.1: = bound_method %int_0.loc32, %impl.elem0.loc32 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04] +// CHECK:STDOUT: %specific_fn.loc32: = specific_function %impl.elem0.loc32, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc32_14.2: = bound_method %int_0.loc32, %specific_fn.loc32 [concrete = constants.%bound_method.b6e] -// CHECK:STDOUT: %int.convert_checked.loc32: init %i32 = call %bound_method.loc32_14.2(%int_0.loc32) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc32_14: init %i32 = converted %int_0.loc32, %int.convert_checked.loc32 [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc32: init %i32 = call %bound_method.loc32_14.2(%int_0.loc32) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc32_14: init %i32 = converted %int_0.loc32, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc32 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: assign %v.var, %.loc32_14 // CHECK:STDOUT: %.loc32_21: type = splice_block %i32.loc32 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -228,12 +228,12 @@ fn DifferentScopes() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %w.var: ref %i32 = var %w.var_patt // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0.loc41: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc41_16.1: = bound_method %int_1, %impl.elem0.loc41 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc41: = specific_function %impl.elem0.loc41, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc41: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc41_16.1: = bound_method %int_1, %impl.elem0.loc41 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc41: = specific_function %impl.elem0.loc41, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc41_16.2: = bound_method %int_1, %specific_fn.loc41 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc41: init %i32 = call %bound_method.loc41_16.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc41_16: init %i32 = converted %int_1, %int.convert_checked.loc41 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc41: init %i32 = call %bound_method.loc41_16.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc41_16: init %i32 = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc41 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: assign %w.var, %.loc41_16 // CHECK:STDOUT: %.loc41_23: type = splice_block %i32.loc41 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc41: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -247,23 +247,23 @@ fn DifferentScopes() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !if.else.loc31: // CHECK:STDOUT: %int_0.loc44: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %impl.elem0.loc44: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc44_11.1: = bound_method %int_0.loc44, %impl.elem0.loc44 [concrete = constants.%Convert.bound.d04] -// CHECK:STDOUT: %specific_fn.loc44: = specific_function %impl.elem0.loc44, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc44: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc44_11.1: = bound_method %int_0.loc44, %impl.elem0.loc44 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04] +// CHECK:STDOUT: %specific_fn.loc44: = specific_function %impl.elem0.loc44, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc44_11.2: = bound_method %int_0.loc44, %specific_fn.loc44 [concrete = constants.%bound_method.b6e] -// CHECK:STDOUT: %int.convert_checked.loc44: init %i32 = call %bound_method.loc44_11.2(%int_0.loc44) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc44_11.1: %i32 = value_of_initializer %int.convert_checked.loc44 [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc44: init %i32 = call %bound_method.loc44_11.2(%int_0.loc44) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc44_11.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc44 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc44_11.2: %i32 = converted %int_0.loc44, %.loc44_11.1 [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %Op.bound.loc41: = bound_method %w.var, constants.%Op.e6a -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.e6a, @Op.1(constants.%i32) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc41_16.3: = bound_method %w.var, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc41: = bound_method %w.var, constants.%T.as.Destroy.impl.Op.e6a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc41_16.3: = bound_method %w.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc41: %ptr.235 = addr_of %w.var -// CHECK:STDOUT: %no_op.loc41: init %empty_tuple.type = call %bound_method.loc41_16.3(%addr.loc41) -// CHECK:STDOUT: %Op.bound.loc32: = bound_method %v.var, constants.%Op.e6a -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.e6a, @Op.1(constants.%i32) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc32_14.3: = bound_method %v.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc41: init %empty_tuple.type = call %bound_method.loc41_16.3(%addr.loc41) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc32: = bound_method %v.var, constants.%T.as.Destroy.impl.Op.e6a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc32_14.3: = bound_method %v.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc32: %ptr.235 = addr_of %v.var -// CHECK:STDOUT: %no_op.loc32: init %empty_tuple.type = call %bound_method.loc32_14.3(%addr.loc32) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc32: init %empty_tuple.type = call %bound_method.loc32_14.3(%addr.loc32) // CHECK:STDOUT: return %.loc44_11.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/fail_returned_var_type.carbon b/toolchain/check/testdata/return/fail_returned_var_type.carbon index c5c1ae3bbc1d..afb6dbf206f7 100644 --- a/toolchain/check/testdata/return/fail_returned_var_type.carbon +++ b/toolchain/check/testdata/return/fail_returned_var_type.carbon @@ -41,10 +41,10 @@ fn Mismatch() -> i32 { // CHECK:STDOUT: %pattern_type.3de: type = pattern_type f64 [concrete] // CHECK:STDOUT: %float: f64 = float_literal 0 [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.3ef: type = fn_type @Op.1, @Destroy.impl(f64) [concrete] -// CHECK:STDOUT: %Op.868: %Op.type.3ef = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.3ef: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(f64) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.868: %T.as.Destroy.impl.Op.type.3ef = struct_value () [concrete] // CHECK:STDOUT: %ptr.ef1: type = ptr_type f64 [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.868, @Op.1(f64) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.868, @T.as.Destroy.impl.Op(f64) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -88,17 +88,17 @@ fn Mismatch() -> i32 { // CHECK:STDOUT: assign %v.var, %float // CHECK:STDOUT: %.loc23_19.1: type = splice_block %.loc23_19.3 [concrete = f64] { // CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [concrete = constants.%int_64] -// CHECK:STDOUT: %float.make_type: init type = call constants.%Float(%int_64) [concrete = f64] -// CHECK:STDOUT: %.loc23_19.2: type = value_of_initializer %float.make_type [concrete = f64] -// CHECK:STDOUT: %.loc23_19.3: type = converted %float.make_type, %.loc23_19.2 [concrete = f64] +// CHECK:STDOUT: %Float.call: init type = call constants.%Float(%int_64) [concrete = f64] +// CHECK:STDOUT: %.loc23_19.2: type = value_of_initializer %Float.call [concrete = f64] +// CHECK:STDOUT: %.loc23_19.3: type = converted %Float.call, %.loc23_19.2 [concrete = f64] // CHECK:STDOUT: } // CHECK:STDOUT: %v: ref f64 = bind_name v, %v.var // CHECK:STDOUT: %.loc23_16: f64 = bind_value %v -// CHECK:STDOUT: %Op.bound: = bound_method %v.var, constants.%Op.868 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.868, @Op.1(f64) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %v.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %v.var, constants.%T.as.Destroy.impl.Op.868 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.868, @T.as.Destroy.impl.Op(f64) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %v.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.ef1 = addr_of %v.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %.loc23_16 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/import_convert_function.carbon b/toolchain/check/testdata/return/import_convert_function.carbon index 4b7d5321e849..51879464f39b 100644 --- a/toolchain/check/testdata/return/import_convert_function.carbon +++ b/toolchain/check/testdata/return/import_convert_function.carbon @@ -74,94 +74,94 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet.921: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet.921 [concrete] -// CHECK:STDOUT: %Convert.bound.d04: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.b6e: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet.921 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.b6e: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: %D.val: %D = struct_value (%int_0.6a9, %int_0.6a9) [concrete] // CHECK:STDOUT: %C.c8d: type = class_type @C, @C(%int_0.6a9) [concrete] // CHECK:STDOUT: %ImplicitAs.type.94e: type = facet_type <@ImplicitAs, @ImplicitAs(%D)> [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.00c: = impl_witness file.%ImplicitAs.impl_witness_table.loc8 [concrete] // CHECK:STDOUT: %pattern_type.f33: type = pattern_type %C.c8d [concrete] -// CHECK:STDOUT: %Convert.type.cd0: type = fn_type @Convert.loc8 [concrete] -// CHECK:STDOUT: %Convert.b95: %Convert.type.cd0 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.type.cd0: type = fn_type @C.as.ImplicitAs.impl.Convert.loc8 [concrete] +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.b95: %C.as.ImplicitAs.impl.Convert.type.cd0 = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.548: type = fn_type @Op.2, @Destroy.impl(%D) [concrete] -// CHECK:STDOUT: %Op.2d4: %Op.type.548 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.548: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%D) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.2d4: %T.as.Destroy.impl.Op.type.548 = struct_value () [concrete] // CHECK:STDOUT: %ptr.19c: type = ptr_type %D [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.2d4, @Op.2(%D) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.2d4, @T.as.Destroy.impl.Op(%D) [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %C.c02: type = class_type @C, @C(%int_1.5d2) [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.c66: = impl_witness file.%ImplicitAs.impl_witness_table.loc9 [concrete] // CHECK:STDOUT: %pattern_type.07c: type = pattern_type %C.c02 [concrete] -// CHECK:STDOUT: %Convert.type.af9: type = fn_type @Convert.loc9 [concrete] -// CHECK:STDOUT: %Convert.9a4: %Convert.type.af9 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.type.af9: type = fn_type @C.as.ImplicitAs.impl.Convert.loc9 [concrete] +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.9a4: %C.as.ImplicitAs.impl.Convert.type.af9 = struct_value () [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %C.70b: type = class_type @C, @C(%int_2.ef8) [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.f9c: = impl_witness file.%ImplicitAs.impl_witness_table.loc10 [concrete] // CHECK:STDOUT: %pattern_type.538: type = pattern_type %C.70b [concrete] -// CHECK:STDOUT: %Convert.type.5f9: type = fn_type @Convert.loc10 [concrete] -// CHECK:STDOUT: %Convert.aad: %Convert.type.5f9 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.type.5f9: type = fn_type @C.as.ImplicitAs.impl.Convert.loc10 [concrete] +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.aad: %C.as.ImplicitAs.impl.Convert.type.5f9 = struct_value () [concrete] // CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [concrete] -// CHECK:STDOUT: %Convert.bound.b30: = bound_method %int_3.1ba, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.047: = bound_method %int_3.1ba, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.b30: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.047: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_3.822: %i32 = int_value 3 [concrete] // CHECK:STDOUT: %C.8cb: type = class_type @C, @C(%int_3.822) [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.c1f: = impl_witness file.%ImplicitAs.impl_witness_table.loc11 [concrete] // CHECK:STDOUT: %pattern_type.232: type = pattern_type %C.8cb [concrete] -// CHECK:STDOUT: %Convert.type.d96: type = fn_type @Convert.loc11 [concrete] -// CHECK:STDOUT: %Convert.9b7: %Convert.type.d96 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.type.d96: type = fn_type @C.as.ImplicitAs.impl.Convert.loc11 [concrete] +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.9b7: %C.as.ImplicitAs.impl.Convert.type.d96 = struct_value () [concrete] // CHECK:STDOUT: %int_4.0c1: Core.IntLiteral = int_value 4 [concrete] -// CHECK:STDOUT: %Convert.bound.ac3: = bound_method %int_4.0c1, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.1da: = bound_method %int_4.0c1, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ac3: = bound_method %int_4.0c1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.1da: = bound_method %int_4.0c1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_4.940: %i32 = int_value 4 [concrete] // CHECK:STDOUT: %C.ba2: type = class_type @C, @C(%int_4.940) [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.097: = impl_witness file.%ImplicitAs.impl_witness_table.loc12 [concrete] // CHECK:STDOUT: %pattern_type.fe0: type = pattern_type %C.ba2 [concrete] -// CHECK:STDOUT: %Convert.type.33c: type = fn_type @Convert.loc12 [concrete] -// CHECK:STDOUT: %Convert.b7b: %Convert.type.33c = struct_value () [concrete] +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.type.33c: type = fn_type @C.as.ImplicitAs.impl.Convert.loc12 [concrete] +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.b7b: %C.as.ImplicitAs.impl.Convert.type.33c = struct_value () [concrete] // CHECK:STDOUT: %int_5.64b: Core.IntLiteral = int_value 5 [concrete] -// CHECK:STDOUT: %Convert.bound.4e6: = bound_method %int_5.64b, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.a25: = bound_method %int_5.64b, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.4e6: = bound_method %int_5.64b, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.a25: = bound_method %int_5.64b, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_5.0f6: %i32 = int_value 5 [concrete] // CHECK:STDOUT: %C.fcd: type = class_type @C, @C(%int_5.0f6) [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.03f: = impl_witness file.%ImplicitAs.impl_witness_table.loc13 [concrete] // CHECK:STDOUT: %pattern_type.e96: type = pattern_type %C.fcd [concrete] -// CHECK:STDOUT: %Convert.type.193: type = fn_type @Convert.loc13 [concrete] -// CHECK:STDOUT: %Convert.a6f: %Convert.type.193 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.type.193: type = fn_type @C.as.ImplicitAs.impl.Convert.loc13 [concrete] +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.a6f: %C.as.ImplicitAs.impl.Convert.type.193 = struct_value () [concrete] // CHECK:STDOUT: %int_6.462: Core.IntLiteral = int_value 6 [concrete] -// CHECK:STDOUT: %Convert.bound.ce9: = bound_method %int_6.462, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.efa: = bound_method %int_6.462, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ce9: = bound_method %int_6.462, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.efa: = bound_method %int_6.462, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_6.e56: %i32 = int_value 6 [concrete] // CHECK:STDOUT: %C.675: type = class_type @C, @C(%int_6.e56) [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.89c: = impl_witness file.%ImplicitAs.impl_witness_table.loc14 [concrete] // CHECK:STDOUT: %pattern_type.bc0: type = pattern_type %C.675 [concrete] -// CHECK:STDOUT: %Convert.type.7d3: type = fn_type @Convert.loc14 [concrete] -// CHECK:STDOUT: %Convert.f7f: %Convert.type.7d3 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.type.7d3: type = fn_type @C.as.ImplicitAs.impl.Convert.loc14 [concrete] +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.f7f: %C.as.ImplicitAs.impl.Convert.type.7d3 = struct_value () [concrete] // CHECK:STDOUT: %int_7.29f: Core.IntLiteral = int_value 7 [concrete] -// CHECK:STDOUT: %Convert.bound.208: = bound_method %int_7.29f, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.3bd: = bound_method %int_7.29f, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.208: = bound_method %int_7.29f, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.3bd: = bound_method %int_7.29f, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_7.0b1: %i32 = int_value 7 [concrete] // CHECK:STDOUT: %C.884: type = class_type @C, @C(%int_7.0b1) [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.217: = impl_witness file.%ImplicitAs.impl_witness_table.loc15 [concrete] // CHECK:STDOUT: %pattern_type.c15: type = pattern_type %C.884 [concrete] -// CHECK:STDOUT: %Convert.type.167: type = fn_type @Convert.loc15 [concrete] -// CHECK:STDOUT: %Convert.e51: %Convert.type.167 = struct_value () [concrete] +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.type.167: type = fn_type @C.as.ImplicitAs.impl.Convert.loc15 [concrete] +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.e51: %C.as.ImplicitAs.impl.Convert.type.167 = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -174,8 +174,8 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -205,15 +205,15 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %return.param: ref %D = out_param call_param0 // CHECK:STDOUT: %return: ref %D = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: impl_decl @ImplicitAs.impl.6d8 [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.ImplicitAs.impl.6d8 [concrete] {} { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc8_9.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Convert.bound.d04] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc8_9.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc8_9.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method.b6e] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc8_9.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc8_9.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc8_9.2(%int_0) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc8_9.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc8_9.2: %i32 = converted %int_0, %.loc8_9.1 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%int_0.6a9) [concrete = constants.%C.c8d] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] @@ -221,17 +221,17 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%D)> [concrete = constants.%ImplicitAs.type.94e] // CHECK:STDOUT: } -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.loc8 = impl_witness_table (@ImplicitAs.impl.6d8.%Convert.decl), @ImplicitAs.impl.6d8 [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.loc8 = impl_witness_table (@C.as.ImplicitAs.impl.6d8.%C.as.ImplicitAs.impl.Convert.decl), @C.as.ImplicitAs.impl.6d8 [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.loc8: = impl_witness %ImplicitAs.impl_witness_table.loc8 [concrete = constants.%ImplicitAs.impl_witness.00c] -// CHECK:STDOUT: impl_decl @ImplicitAs.impl.b66 [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.ImplicitAs.impl.b66 [concrete] {} { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc9_9.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc9_9.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc9_9.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc9_9.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc9_9.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc9_9.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc9_9.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc9_9.2: %i32 = converted %int_1, %.loc9_9.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%int_1.5d2) [concrete = constants.%C.c02] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] @@ -239,17 +239,17 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%D)> [concrete = constants.%ImplicitAs.type.94e] // CHECK:STDOUT: } -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.loc9 = impl_witness_table (@ImplicitAs.impl.b66.%Convert.decl), @ImplicitAs.impl.b66 [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.loc9 = impl_witness_table (@C.as.ImplicitAs.impl.b66.%C.as.ImplicitAs.impl.Convert.decl), @C.as.ImplicitAs.impl.b66 [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.loc9: = impl_witness %ImplicitAs.impl_witness_table.loc9 [concrete = constants.%ImplicitAs.impl_witness.c66] -// CHECK:STDOUT: impl_decl @ImplicitAs.impl.9de [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.ImplicitAs.impl.9de [concrete] {} { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc10_9.1: = bound_method %int_2, %impl.elem0 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc10_9.1: = bound_method %int_2, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc10_9.2: = bound_method %int_2, %specific_fn [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc10_9.2(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc10_9.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc10_9.2(%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc10_9.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc10_9.2: %i32 = converted %int_2, %.loc10_9.1 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%int_2.ef8) [concrete = constants.%C.70b] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] @@ -257,17 +257,17 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%D)> [concrete = constants.%ImplicitAs.type.94e] // CHECK:STDOUT: } -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.loc10 = impl_witness_table (@ImplicitAs.impl.9de.%Convert.decl), @ImplicitAs.impl.9de [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.loc10 = impl_witness_table (@C.as.ImplicitAs.impl.9de.%C.as.ImplicitAs.impl.Convert.decl), @C.as.ImplicitAs.impl.9de [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.loc10: = impl_witness %ImplicitAs.impl_witness_table.loc10 [concrete = constants.%ImplicitAs.impl_witness.f9c] -// CHECK:STDOUT: impl_decl @ImplicitAs.impl.649 [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.ImplicitAs.impl.649 [concrete] {} { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc11_9.1: = bound_method %int_3, %impl.elem0 [concrete = constants.%Convert.bound.b30] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc11_9.1: = bound_method %int_3, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.b30] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc11_9.2: = bound_method %int_3, %specific_fn [concrete = constants.%bound_method.047] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc11_9.2(%int_3) [concrete = constants.%int_3.822] -// CHECK:STDOUT: %.loc11_9.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_3.822] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc11_9.2(%int_3) [concrete = constants.%int_3.822] +// CHECK:STDOUT: %.loc11_9.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_3.822] // CHECK:STDOUT: %.loc11_9.2: %i32 = converted %int_3, %.loc11_9.1 [concrete = constants.%int_3.822] // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%int_3.822) [concrete = constants.%C.8cb] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] @@ -275,17 +275,17 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%D)> [concrete = constants.%ImplicitAs.type.94e] // CHECK:STDOUT: } -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.loc11 = impl_witness_table (@ImplicitAs.impl.649.%Convert.decl), @ImplicitAs.impl.649 [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.loc11 = impl_witness_table (@C.as.ImplicitAs.impl.649.%C.as.ImplicitAs.impl.Convert.decl), @C.as.ImplicitAs.impl.649 [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.loc11: = impl_witness %ImplicitAs.impl_witness_table.loc11 [concrete = constants.%ImplicitAs.impl_witness.c1f] -// CHECK:STDOUT: impl_decl @ImplicitAs.impl.49b [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.ImplicitAs.impl.49b [concrete] {} { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete = constants.%int_4.0c1] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc12_9.1: = bound_method %int_4, %impl.elem0 [concrete = constants.%Convert.bound.ac3] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc12_9.1: = bound_method %int_4, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ac3] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc12_9.2: = bound_method %int_4, %specific_fn [concrete = constants.%bound_method.1da] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc12_9.2(%int_4) [concrete = constants.%int_4.940] -// CHECK:STDOUT: %.loc12_9.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_4.940] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc12_9.2(%int_4) [concrete = constants.%int_4.940] +// CHECK:STDOUT: %.loc12_9.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_4.940] // CHECK:STDOUT: %.loc12_9.2: %i32 = converted %int_4, %.loc12_9.1 [concrete = constants.%int_4.940] // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%int_4.940) [concrete = constants.%C.ba2] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] @@ -293,17 +293,17 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%D)> [concrete = constants.%ImplicitAs.type.94e] // CHECK:STDOUT: } -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.loc12 = impl_witness_table (@ImplicitAs.impl.49b.%Convert.decl), @ImplicitAs.impl.49b [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.loc12 = impl_witness_table (@C.as.ImplicitAs.impl.49b.%C.as.ImplicitAs.impl.Convert.decl), @C.as.ImplicitAs.impl.49b [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.loc12: = impl_witness %ImplicitAs.impl_witness_table.loc12 [concrete = constants.%ImplicitAs.impl_witness.097] -// CHECK:STDOUT: impl_decl @ImplicitAs.impl.75f [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.ImplicitAs.impl.75f [concrete] {} { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] // CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [concrete = constants.%int_5.64b] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc13_9.1: = bound_method %int_5, %impl.elem0 [concrete = constants.%Convert.bound.4e6] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc13_9.1: = bound_method %int_5, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.4e6] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc13_9.2: = bound_method %int_5, %specific_fn [concrete = constants.%bound_method.a25] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc13_9.2(%int_5) [concrete = constants.%int_5.0f6] -// CHECK:STDOUT: %.loc13_9.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_5.0f6] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc13_9.2(%int_5) [concrete = constants.%int_5.0f6] +// CHECK:STDOUT: %.loc13_9.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_5.0f6] // CHECK:STDOUT: %.loc13_9.2: %i32 = converted %int_5, %.loc13_9.1 [concrete = constants.%int_5.0f6] // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%int_5.0f6) [concrete = constants.%C.fcd] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] @@ -311,17 +311,17 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%D)> [concrete = constants.%ImplicitAs.type.94e] // CHECK:STDOUT: } -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.loc13 = impl_witness_table (@ImplicitAs.impl.75f.%Convert.decl), @ImplicitAs.impl.75f [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.loc13 = impl_witness_table (@C.as.ImplicitAs.impl.75f.%C.as.ImplicitAs.impl.Convert.decl), @C.as.ImplicitAs.impl.75f [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.loc13: = impl_witness %ImplicitAs.impl_witness_table.loc13 [concrete = constants.%ImplicitAs.impl_witness.03f] -// CHECK:STDOUT: impl_decl @ImplicitAs.impl.98f [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.ImplicitAs.impl.98f [concrete] {} { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] // CHECK:STDOUT: %int_6: Core.IntLiteral = int_value 6 [concrete = constants.%int_6.462] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc14_9.1: = bound_method %int_6, %impl.elem0 [concrete = constants.%Convert.bound.ce9] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc14_9.1: = bound_method %int_6, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ce9] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc14_9.2: = bound_method %int_6, %specific_fn [concrete = constants.%bound_method.efa] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc14_9.2(%int_6) [concrete = constants.%int_6.e56] -// CHECK:STDOUT: %.loc14_9.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_6.e56] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc14_9.2(%int_6) [concrete = constants.%int_6.e56] +// CHECK:STDOUT: %.loc14_9.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_6.e56] // CHECK:STDOUT: %.loc14_9.2: %i32 = converted %int_6, %.loc14_9.1 [concrete = constants.%int_6.e56] // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%int_6.e56) [concrete = constants.%C.675] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] @@ -329,17 +329,17 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%D)> [concrete = constants.%ImplicitAs.type.94e] // CHECK:STDOUT: } -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.loc14 = impl_witness_table (@ImplicitAs.impl.98f.%Convert.decl), @ImplicitAs.impl.98f [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.loc14 = impl_witness_table (@C.as.ImplicitAs.impl.98f.%C.as.ImplicitAs.impl.Convert.decl), @C.as.ImplicitAs.impl.98f [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.loc14: = impl_witness %ImplicitAs.impl_witness_table.loc14 [concrete = constants.%ImplicitAs.impl_witness.89c] -// CHECK:STDOUT: impl_decl @ImplicitAs.impl.9fd [concrete] {} { +// CHECK:STDOUT: impl_decl @C.as.ImplicitAs.impl.9fd [concrete] {} { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] // CHECK:STDOUT: %int_7: Core.IntLiteral = int_value 7 [concrete = constants.%int_7.29f] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc15_9.1: = bound_method %int_7, %impl.elem0 [concrete = constants.%Convert.bound.208] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc15_9.1: = bound_method %int_7, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.208] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc15_9.2: = bound_method %int_7, %specific_fn [concrete = constants.%bound_method.3bd] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc15_9.2(%int_7) [concrete = constants.%int_7.0b1] -// CHECK:STDOUT: %.loc15_9.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_7.0b1] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc15_9.2(%int_7) [concrete = constants.%int_7.0b1] +// CHECK:STDOUT: %.loc15_9.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_7.0b1] // CHECK:STDOUT: %.loc15_9.2: %i32 = converted %int_7, %.loc15_9.1 [concrete = constants.%int_7.0b1] // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%int_7.0b1) [concrete = constants.%C.884] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] @@ -347,12 +347,12 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%D)> [concrete = constants.%ImplicitAs.type.94e] // CHECK:STDOUT: } -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.loc15 = impl_witness_table (@ImplicitAs.impl.9fd.%Convert.decl), @ImplicitAs.impl.9fd [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.loc15 = impl_witness_table (@C.as.ImplicitAs.impl.9fd.%C.as.ImplicitAs.impl.Convert.decl), @C.as.ImplicitAs.impl.9fd [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.loc15: = impl_witness %ImplicitAs.impl_witness_table.loc15 [concrete = constants.%ImplicitAs.impl_witness.217] // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @ImplicitAs.impl.6d8: %C as %ImplicitAs.type { -// CHECK:STDOUT: %Convert.decl: %Convert.type.cd0 = fn_decl @Convert.loc8 [concrete = constants.%Convert.b95] { +// CHECK:STDOUT: impl @C.as.ImplicitAs.impl.6d8: %C as %ImplicitAs.type { +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.decl: %C.as.ImplicitAs.impl.Convert.type.cd0 = fn_decl @C.as.ImplicitAs.impl.Convert.loc8 [concrete = constants.%C.as.ImplicitAs.impl.Convert.b95] { // CHECK:STDOUT: %self.patt: %pattern_type.f33 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.f33 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.510 = return_slot_pattern [concrete] @@ -360,7 +360,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %self.param: %C.c8d = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @ImplicitAs.impl.6d8.%C [concrete = constants.%C.c8d] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @C.as.ImplicitAs.impl.6d8.%C [concrete = constants.%C.c8d] // CHECK:STDOUT: %self: %C.c8d = bind_name self, %self.param // CHECK:STDOUT: %return.param: ref %D = out_param call_param1 // CHECK:STDOUT: %return: ref %D = return_slot %return.param @@ -368,13 +368,13 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .D = -// CHECK:STDOUT: .Convert = %Convert.decl +// CHECK:STDOUT: .Convert = %C.as.ImplicitAs.impl.Convert.decl // CHECK:STDOUT: .Make = // CHECK:STDOUT: witness = file.%ImplicitAs.impl_witness.loc8 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @ImplicitAs.impl.b66: %C as %ImplicitAs.type { -// CHECK:STDOUT: %Convert.decl: %Convert.type.af9 = fn_decl @Convert.loc9 [concrete = constants.%Convert.9a4] { +// CHECK:STDOUT: impl @C.as.ImplicitAs.impl.b66: %C as %ImplicitAs.type { +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.decl: %C.as.ImplicitAs.impl.Convert.type.af9 = fn_decl @C.as.ImplicitAs.impl.Convert.loc9 [concrete = constants.%C.as.ImplicitAs.impl.Convert.9a4] { // CHECK:STDOUT: %self.patt: %pattern_type.07c = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.07c = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.510 = return_slot_pattern [concrete] @@ -382,7 +382,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %self.param: %C.c02 = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @ImplicitAs.impl.b66.%C [concrete = constants.%C.c02] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @C.as.ImplicitAs.impl.b66.%C [concrete = constants.%C.c02] // CHECK:STDOUT: %self: %C.c02 = bind_name self, %self.param // CHECK:STDOUT: %return.param: ref %D = out_param call_param1 // CHECK:STDOUT: %return: ref %D = return_slot %return.param @@ -390,13 +390,13 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .D = -// CHECK:STDOUT: .Convert = %Convert.decl +// CHECK:STDOUT: .Convert = %C.as.ImplicitAs.impl.Convert.decl // CHECK:STDOUT: .Make = // CHECK:STDOUT: witness = file.%ImplicitAs.impl_witness.loc9 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @ImplicitAs.impl.9de: %C as %ImplicitAs.type { -// CHECK:STDOUT: %Convert.decl: %Convert.type.5f9 = fn_decl @Convert.loc10 [concrete = constants.%Convert.aad] { +// CHECK:STDOUT: impl @C.as.ImplicitAs.impl.9de: %C as %ImplicitAs.type { +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.decl: %C.as.ImplicitAs.impl.Convert.type.5f9 = fn_decl @C.as.ImplicitAs.impl.Convert.loc10 [concrete = constants.%C.as.ImplicitAs.impl.Convert.aad] { // CHECK:STDOUT: %self.patt: %pattern_type.538 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.538 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.510 = return_slot_pattern [concrete] @@ -404,7 +404,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %self.param: %C.70b = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @ImplicitAs.impl.9de.%C [concrete = constants.%C.70b] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @C.as.ImplicitAs.impl.9de.%C [concrete = constants.%C.70b] // CHECK:STDOUT: %self: %C.70b = bind_name self, %self.param // CHECK:STDOUT: %return.param: ref %D = out_param call_param1 // CHECK:STDOUT: %return: ref %D = return_slot %return.param @@ -412,13 +412,13 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .D = -// CHECK:STDOUT: .Convert = %Convert.decl +// CHECK:STDOUT: .Convert = %C.as.ImplicitAs.impl.Convert.decl // CHECK:STDOUT: .Make = // CHECK:STDOUT: witness = file.%ImplicitAs.impl_witness.loc10 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @ImplicitAs.impl.649: %C as %ImplicitAs.type { -// CHECK:STDOUT: %Convert.decl: %Convert.type.d96 = fn_decl @Convert.loc11 [concrete = constants.%Convert.9b7] { +// CHECK:STDOUT: impl @C.as.ImplicitAs.impl.649: %C as %ImplicitAs.type { +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.decl: %C.as.ImplicitAs.impl.Convert.type.d96 = fn_decl @C.as.ImplicitAs.impl.Convert.loc11 [concrete = constants.%C.as.ImplicitAs.impl.Convert.9b7] { // CHECK:STDOUT: %self.patt: %pattern_type.232 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.232 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.510 = return_slot_pattern [concrete] @@ -426,7 +426,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %self.param: %C.8cb = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @ImplicitAs.impl.649.%C [concrete = constants.%C.8cb] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @C.as.ImplicitAs.impl.649.%C [concrete = constants.%C.8cb] // CHECK:STDOUT: %self: %C.8cb = bind_name self, %self.param // CHECK:STDOUT: %return.param: ref %D = out_param call_param1 // CHECK:STDOUT: %return: ref %D = return_slot %return.param @@ -434,13 +434,13 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .D = -// CHECK:STDOUT: .Convert = %Convert.decl +// CHECK:STDOUT: .Convert = %C.as.ImplicitAs.impl.Convert.decl // CHECK:STDOUT: .Make = // CHECK:STDOUT: witness = file.%ImplicitAs.impl_witness.loc11 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @ImplicitAs.impl.49b: %C as %ImplicitAs.type { -// CHECK:STDOUT: %Convert.decl: %Convert.type.33c = fn_decl @Convert.loc12 [concrete = constants.%Convert.b7b] { +// CHECK:STDOUT: impl @C.as.ImplicitAs.impl.49b: %C as %ImplicitAs.type { +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.decl: %C.as.ImplicitAs.impl.Convert.type.33c = fn_decl @C.as.ImplicitAs.impl.Convert.loc12 [concrete = constants.%C.as.ImplicitAs.impl.Convert.b7b] { // CHECK:STDOUT: %self.patt: %pattern_type.fe0 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.fe0 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.510 = return_slot_pattern [concrete] @@ -448,7 +448,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %self.param: %C.ba2 = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @ImplicitAs.impl.49b.%C [concrete = constants.%C.ba2] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @C.as.ImplicitAs.impl.49b.%C [concrete = constants.%C.ba2] // CHECK:STDOUT: %self: %C.ba2 = bind_name self, %self.param // CHECK:STDOUT: %return.param: ref %D = out_param call_param1 // CHECK:STDOUT: %return: ref %D = return_slot %return.param @@ -456,13 +456,13 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .D = -// CHECK:STDOUT: .Convert = %Convert.decl +// CHECK:STDOUT: .Convert = %C.as.ImplicitAs.impl.Convert.decl // CHECK:STDOUT: .Make = // CHECK:STDOUT: witness = file.%ImplicitAs.impl_witness.loc12 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @ImplicitAs.impl.75f: %C as %ImplicitAs.type { -// CHECK:STDOUT: %Convert.decl: %Convert.type.193 = fn_decl @Convert.loc13 [concrete = constants.%Convert.a6f] { +// CHECK:STDOUT: impl @C.as.ImplicitAs.impl.75f: %C as %ImplicitAs.type { +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.decl: %C.as.ImplicitAs.impl.Convert.type.193 = fn_decl @C.as.ImplicitAs.impl.Convert.loc13 [concrete = constants.%C.as.ImplicitAs.impl.Convert.a6f] { // CHECK:STDOUT: %self.patt: %pattern_type.e96 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.e96 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.510 = return_slot_pattern [concrete] @@ -470,7 +470,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %self.param: %C.fcd = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @ImplicitAs.impl.75f.%C [concrete = constants.%C.fcd] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @C.as.ImplicitAs.impl.75f.%C [concrete = constants.%C.fcd] // CHECK:STDOUT: %self: %C.fcd = bind_name self, %self.param // CHECK:STDOUT: %return.param: ref %D = out_param call_param1 // CHECK:STDOUT: %return: ref %D = return_slot %return.param @@ -478,13 +478,13 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .D = -// CHECK:STDOUT: .Convert = %Convert.decl +// CHECK:STDOUT: .Convert = %C.as.ImplicitAs.impl.Convert.decl // CHECK:STDOUT: .Make = // CHECK:STDOUT: witness = file.%ImplicitAs.impl_witness.loc13 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @ImplicitAs.impl.98f: %C as %ImplicitAs.type { -// CHECK:STDOUT: %Convert.decl: %Convert.type.7d3 = fn_decl @Convert.loc14 [concrete = constants.%Convert.f7f] { +// CHECK:STDOUT: impl @C.as.ImplicitAs.impl.98f: %C as %ImplicitAs.type { +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.decl: %C.as.ImplicitAs.impl.Convert.type.7d3 = fn_decl @C.as.ImplicitAs.impl.Convert.loc14 [concrete = constants.%C.as.ImplicitAs.impl.Convert.f7f] { // CHECK:STDOUT: %self.patt: %pattern_type.bc0 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.bc0 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.510 = return_slot_pattern [concrete] @@ -492,7 +492,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %self.param: %C.675 = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @ImplicitAs.impl.98f.%C [concrete = constants.%C.675] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @C.as.ImplicitAs.impl.98f.%C [concrete = constants.%C.675] // CHECK:STDOUT: %self: %C.675 = bind_name self, %self.param // CHECK:STDOUT: %return.param: ref %D = out_param call_param1 // CHECK:STDOUT: %return: ref %D = return_slot %return.param @@ -500,13 +500,13 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .D = -// CHECK:STDOUT: .Convert = %Convert.decl +// CHECK:STDOUT: .Convert = %C.as.ImplicitAs.impl.Convert.decl // CHECK:STDOUT: .Make = // CHECK:STDOUT: witness = file.%ImplicitAs.impl_witness.loc14 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @ImplicitAs.impl.9fd: %C as %ImplicitAs.type { -// CHECK:STDOUT: %Convert.decl: %Convert.type.167 = fn_decl @Convert.loc15 [concrete = constants.%Convert.e51] { +// CHECK:STDOUT: impl @C.as.ImplicitAs.impl.9fd: %C as %ImplicitAs.type { +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.decl: %C.as.ImplicitAs.impl.Convert.type.167 = fn_decl @C.as.ImplicitAs.impl.Convert.loc15 [concrete = constants.%C.as.ImplicitAs.impl.Convert.e51] { // CHECK:STDOUT: %self.patt: %pattern_type.c15 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.c15 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.510 = return_slot_pattern [concrete] @@ -514,7 +514,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %self.param: %C.884 = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @ImplicitAs.impl.9fd.%C [concrete = constants.%C.884] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @C.as.ImplicitAs.impl.9fd.%C [concrete = constants.%C.884] // CHECK:STDOUT: %self: %C.884 = bind_name self, %self.param // CHECK:STDOUT: %return.param: ref %D = out_param call_param1 // CHECK:STDOUT: %return: ref %D = return_slot %return.param @@ -522,7 +522,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .D = -// CHECK:STDOUT: .Convert = %Convert.decl +// CHECK:STDOUT: .Convert = %C.as.ImplicitAs.impl.Convert.decl // CHECK:STDOUT: .Make = // CHECK:STDOUT: witness = file.%ImplicitAs.impl_witness.loc15 // CHECK:STDOUT: } @@ -564,20 +564,20 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %int_0.loc6_31: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] // CHECK:STDOUT: %int_0.loc6_39: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] // CHECK:STDOUT: %.loc6_40.1: %struct_type.n.m.819 = struct_literal (%int_0.loc6_31, %int_0.loc6_39) -// CHECK:STDOUT: %impl.elem0.loc6_40.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc6_40.1: = bound_method %int_0.loc6_31, %impl.elem0.loc6_40.1 [concrete = constants.%Convert.bound.d04] -// CHECK:STDOUT: %specific_fn.loc6_40.1: = specific_function %impl.elem0.loc6_40.1, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc6_40.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc6_40.1: = bound_method %int_0.loc6_31, %impl.elem0.loc6_40.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04] +// CHECK:STDOUT: %specific_fn.loc6_40.1: = specific_function %impl.elem0.loc6_40.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc6_40.2: = bound_method %int_0.loc6_31, %specific_fn.loc6_40.1 [concrete = constants.%bound_method.b6e] -// CHECK:STDOUT: %int.convert_checked.loc6_40.1: init %i32 = call %bound_method.loc6_40.2(%int_0.loc6_31) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc6_40.2: init %i32 = converted %int_0.loc6_31, %int.convert_checked.loc6_40.1 [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6_40.1: init %i32 = call %bound_method.loc6_40.2(%int_0.loc6_31) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc6_40.2: init %i32 = converted %int_0.loc6_31, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6_40.1 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc6_40.3: ref %i32 = class_element_access %return, element0 // CHECK:STDOUT: %.loc6_40.4: init %i32 = initialize_from %.loc6_40.2 to %.loc6_40.3 [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %impl.elem0.loc6_40.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc6_40.3: = bound_method %int_0.loc6_39, %impl.elem0.loc6_40.2 [concrete = constants.%Convert.bound.d04] -// CHECK:STDOUT: %specific_fn.loc6_40.2: = specific_function %impl.elem0.loc6_40.2, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc6_40.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc6_40.3: = bound_method %int_0.loc6_39, %impl.elem0.loc6_40.2 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04] +// CHECK:STDOUT: %specific_fn.loc6_40.2: = specific_function %impl.elem0.loc6_40.2, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc6_40.4: = bound_method %int_0.loc6_39, %specific_fn.loc6_40.2 [concrete = constants.%bound_method.b6e] -// CHECK:STDOUT: %int.convert_checked.loc6_40.2: init %i32 = call %bound_method.loc6_40.4(%int_0.loc6_39) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc6_40.5: init %i32 = converted %int_0.loc6_39, %int.convert_checked.loc6_40.2 [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6_40.2: init %i32 = call %bound_method.loc6_40.4(%int_0.loc6_39) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc6_40.5: init %i32 = converted %int_0.loc6_39, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6_40.2 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc6_40.6: ref %i32 = class_element_access %return, element1 // CHECK:STDOUT: %.loc6_40.7: init %i32 = initialize_from %.loc6_40.5 to %.loc6_40.6 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc6_40.8: init %D = class_init (%.loc6_40.4, %.loc6_40.7), %return [concrete = constants.%D.val] @@ -585,107 +585,107 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: return %.loc6_41 to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert.loc8(%self.param: %C.c8d) -> %return.param: %D { +// CHECK:STDOUT: fn @C.as.ImplicitAs.impl.Convert.loc8(%self.param: %C.c8d) -> %return.param: %D { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make] // CHECK:STDOUT: %.loc8: ref %D = splice_block %return {} // CHECK:STDOUT: %Make.call: init %D = call %Make.ref() to %.loc8 -// CHECK:STDOUT: %Op.bound: = bound_method %.loc8, constants.%Op.2d4 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.2d4, @Op.2(constants.%D) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc8, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8, constants.%T.as.Destroy.impl.Op.2d4 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.2d4, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %.loc8, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.19c = addr_of %.loc8 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %Make.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert.loc9(%self.param: %C.c02) -> %return.param: %D { +// CHECK:STDOUT: fn @C.as.ImplicitAs.impl.Convert.loc9(%self.param: %C.c02) -> %return.param: %D { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make] // CHECK:STDOUT: %.loc9: ref %D = splice_block %return {} // CHECK:STDOUT: %Make.call: init %D = call %Make.ref() to %.loc9 -// CHECK:STDOUT: %Op.bound: = bound_method %.loc9, constants.%Op.2d4 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.2d4, @Op.2(constants.%D) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc9, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc9, constants.%T.as.Destroy.impl.Op.2d4 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.2d4, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %.loc9, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.19c = addr_of %.loc9 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %Make.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert.loc10(%self.param: %C.70b) -> %return.param: %D { +// CHECK:STDOUT: fn @C.as.ImplicitAs.impl.Convert.loc10(%self.param: %C.70b) -> %return.param: %D { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make] // CHECK:STDOUT: %.loc10: ref %D = splice_block %return {} // CHECK:STDOUT: %Make.call: init %D = call %Make.ref() to %.loc10 -// CHECK:STDOUT: %Op.bound: = bound_method %.loc10, constants.%Op.2d4 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.2d4, @Op.2(constants.%D) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc10, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc10, constants.%T.as.Destroy.impl.Op.2d4 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.2d4, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %.loc10, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.19c = addr_of %.loc10 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %Make.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert.loc11(%self.param: %C.8cb) -> %return.param: %D { +// CHECK:STDOUT: fn @C.as.ImplicitAs.impl.Convert.loc11(%self.param: %C.8cb) -> %return.param: %D { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make] // CHECK:STDOUT: %.loc11: ref %D = splice_block %return {} // CHECK:STDOUT: %Make.call: init %D = call %Make.ref() to %.loc11 -// CHECK:STDOUT: %Op.bound: = bound_method %.loc11, constants.%Op.2d4 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.2d4, @Op.2(constants.%D) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc11, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc11, constants.%T.as.Destroy.impl.Op.2d4 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.2d4, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %.loc11, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.19c = addr_of %.loc11 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %Make.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert.loc12(%self.param: %C.ba2) -> %return.param: %D { +// CHECK:STDOUT: fn @C.as.ImplicitAs.impl.Convert.loc12(%self.param: %C.ba2) -> %return.param: %D { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make] // CHECK:STDOUT: %.loc12: ref %D = splice_block %return {} // CHECK:STDOUT: %Make.call: init %D = call %Make.ref() to %.loc12 -// CHECK:STDOUT: %Op.bound: = bound_method %.loc12, constants.%Op.2d4 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.2d4, @Op.2(constants.%D) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc12, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc12, constants.%T.as.Destroy.impl.Op.2d4 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.2d4, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %.loc12, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.19c = addr_of %.loc12 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %Make.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert.loc13(%self.param: %C.fcd) -> %return.param: %D { +// CHECK:STDOUT: fn @C.as.ImplicitAs.impl.Convert.loc13(%self.param: %C.fcd) -> %return.param: %D { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make] // CHECK:STDOUT: %.loc13: ref %D = splice_block %return {} // CHECK:STDOUT: %Make.call: init %D = call %Make.ref() to %.loc13 -// CHECK:STDOUT: %Op.bound: = bound_method %.loc13, constants.%Op.2d4 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.2d4, @Op.2(constants.%D) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc13, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc13, constants.%T.as.Destroy.impl.Op.2d4 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.2d4, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %.loc13, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.19c = addr_of %.loc13 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %Make.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert.loc14(%self.param: %C.675) -> %return.param: %D { +// CHECK:STDOUT: fn @C.as.ImplicitAs.impl.Convert.loc14(%self.param: %C.675) -> %return.param: %D { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make] // CHECK:STDOUT: %.loc14: ref %D = splice_block %return {} // CHECK:STDOUT: %Make.call: init %D = call %Make.ref() to %.loc14 -// CHECK:STDOUT: %Op.bound: = bound_method %.loc14, constants.%Op.2d4 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.2d4, @Op.2(constants.%D) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc14, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc14, constants.%T.as.Destroy.impl.Op.2d4 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.2d4, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %.loc14, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.19c = addr_of %.loc14 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %Make.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert.loc15(%self.param: %C.884) -> %return.param: %D { +// CHECK:STDOUT: fn @C.as.ImplicitAs.impl.Convert.loc15(%self.param: %C.884) -> %return.param: %D { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make] // CHECK:STDOUT: %.loc15: ref %D = splice_block %return {} // CHECK:STDOUT: %Make.call: init %D = call %Make.ref() to %.loc15 -// CHECK:STDOUT: %Op.bound: = bound_method %.loc15, constants.%Op.2d4 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.2d4, @Op.2(constants.%D) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc15, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc15, constants.%T.as.Destroy.impl.Op.2d4 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.2d4, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %.loc15, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.19c = addr_of %.loc15 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %Make.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -766,23 +766,23 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.10, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet.921: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet.921 [concrete] -// CHECK:STDOUT: %Convert.bound.d04: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.b6e: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet.921 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.b6e: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: %C.b00: type = class_type @C, @C(%int_0.6a9) [concrete] // CHECK:STDOUT: %C.val.452: %C.b00 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.5f9: type = facet_type <@ImplicitAs, @ImplicitAs(%D)> [concrete] -// CHECK:STDOUT: %Convert.type.334: type = fn_type @Convert.10, @ImplicitAs(%D) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.334: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%D) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %C.674: type = class_type @C, @C(%int_1.5d2) [concrete] @@ -800,108 +800,108 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %C.304: type = class_type @C, @C(%int_7.0b1) [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.f53: = impl_witness imports.%ImplicitAs.impl_witness_table.f4b [concrete] // CHECK:STDOUT: %ImplicitAs.facet.014: %ImplicitAs.type.5f9 = facet_value %C.b00, (%ImplicitAs.impl_witness.f53) [concrete] -// CHECK:STDOUT: %.a9c: type = fn_type_with_self_type %Convert.type.334, %ImplicitAs.facet.014 [concrete] -// CHECK:STDOUT: %Convert.type.971: type = fn_type @Convert.2 [concrete] -// CHECK:STDOUT: %Convert.bf9: %Convert.type.971 = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.69c: type = fn_type @Op.1, @Destroy.impl(%D) [concrete] -// CHECK:STDOUT: %Op.f5a: %Op.type.69c = struct_value () [concrete] +// CHECK:STDOUT: %.a9c: type = fn_type_with_self_type %ImplicitAs.Convert.type.334, %ImplicitAs.facet.014 [concrete] +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.type.971: type = fn_type @C.as.ImplicitAs.impl.Convert.1 [concrete] +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.bf9: %C.as.ImplicitAs.impl.Convert.type.971 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.69c: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%D) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.f5a: %T.as.Destroy.impl.Op.type.69c = struct_value () [concrete] // CHECK:STDOUT: %ptr.f29: type = ptr_type %D [concrete] -// CHECK:STDOUT: %Op.specific_fn.bd1: = specific_function %Op.f5a, @Op.1(%D) [concrete] -// CHECK:STDOUT: %Op.type.94c: type = fn_type @Op.1, @Destroy.impl(%C.b00) [concrete] -// CHECK:STDOUT: %Op.ae6: %Op.type.94c = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.bd1: = specific_function %T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(%D) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.94c: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C.b00) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ae6: %T.as.Destroy.impl.Op.type.94c = struct_value () [concrete] // CHECK:STDOUT: %ptr.697: type = ptr_type %C.b00 [concrete] -// CHECK:STDOUT: %Op.specific_fn.e42: = specific_function %Op.ae6, @Op.1(%C.b00) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.e42: = specific_function %T.as.Destroy.impl.Op.ae6, @T.as.Destroy.impl.Op(%C.b00) [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %C.val.678: %C.674 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.fcb: = impl_witness imports.%ImplicitAs.impl_witness_table.297 [concrete] // CHECK:STDOUT: %ImplicitAs.facet.b8a: %ImplicitAs.type.5f9 = facet_value %C.674, (%ImplicitAs.impl_witness.fcb) [concrete] -// CHECK:STDOUT: %.7d6: type = fn_type_with_self_type %Convert.type.334, %ImplicitAs.facet.b8a [concrete] -// CHECK:STDOUT: %Convert.type.bdd: type = fn_type @Convert.3 [concrete] -// CHECK:STDOUT: %Convert.c82: %Convert.type.bdd = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.b6b: type = fn_type @Op.1, @Destroy.impl(%C.674) [concrete] -// CHECK:STDOUT: %Op.ad8: %Op.type.b6b = struct_value () [concrete] +// CHECK:STDOUT: %.7d6: type = fn_type_with_self_type %ImplicitAs.Convert.type.334, %ImplicitAs.facet.b8a [concrete] +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.type.bdd: type = fn_type @C.as.ImplicitAs.impl.Convert.2 [concrete] +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.c82: %C.as.ImplicitAs.impl.Convert.type.bdd = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.b6b: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C.674) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ad8: %T.as.Destroy.impl.Op.type.b6b = struct_value () [concrete] // CHECK:STDOUT: %ptr.625: type = ptr_type %C.674 [concrete] -// CHECK:STDOUT: %Op.specific_fn.6b6: = specific_function %Op.ad8, @Op.1(%C.674) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.6b6: = specific_function %T.as.Destroy.impl.Op.ad8, @T.as.Destroy.impl.Op(%C.674) [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %C.val.fb5: %C.681 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.746: = impl_witness imports.%ImplicitAs.impl_witness_table.8b3 [concrete] // CHECK:STDOUT: %ImplicitAs.facet.d55: %ImplicitAs.type.5f9 = facet_value %C.681, (%ImplicitAs.impl_witness.746) [concrete] -// CHECK:STDOUT: %.987: type = fn_type_with_self_type %Convert.type.334, %ImplicitAs.facet.d55 [concrete] -// CHECK:STDOUT: %Convert.type.4c1: type = fn_type @Convert.4 [concrete] -// CHECK:STDOUT: %Convert.08c: %Convert.type.4c1 = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.a31: type = fn_type @Op.1, @Destroy.impl(%C.681) [concrete] -// CHECK:STDOUT: %Op.404: %Op.type.a31 = struct_value () [concrete] +// CHECK:STDOUT: %.987: type = fn_type_with_self_type %ImplicitAs.Convert.type.334, %ImplicitAs.facet.d55 [concrete] +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.type.4c1: type = fn_type @C.as.ImplicitAs.impl.Convert.3 [concrete] +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.08c: %C.as.ImplicitAs.impl.Convert.type.4c1 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a31: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C.681) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.404: %T.as.Destroy.impl.Op.type.a31 = struct_value () [concrete] // CHECK:STDOUT: %ptr.3bd: type = ptr_type %C.681 [concrete] -// CHECK:STDOUT: %Op.specific_fn.822: = specific_function %Op.404, @Op.1(%C.681) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.822: = specific_function %T.as.Destroy.impl.Op.404, @T.as.Destroy.impl.Op(%C.681) [concrete] // CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [concrete] -// CHECK:STDOUT: %Convert.bound.b30: = bound_method %int_3.1ba, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.047: = bound_method %int_3.1ba, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.b30: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.047: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %C.val.fe7: %C.7ac = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.f79: = impl_witness imports.%ImplicitAs.impl_witness_table.db0 [concrete] // CHECK:STDOUT: %ImplicitAs.facet.aa1: %ImplicitAs.type.5f9 = facet_value %C.7ac, (%ImplicitAs.impl_witness.f79) [concrete] -// CHECK:STDOUT: %.efa: type = fn_type_with_self_type %Convert.type.334, %ImplicitAs.facet.aa1 [concrete] -// CHECK:STDOUT: %Convert.type.f89: type = fn_type @Convert.5 [concrete] -// CHECK:STDOUT: %Convert.2dd: %Convert.type.f89 = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.100: type = fn_type @Op.1, @Destroy.impl(%C.7ac) [concrete] -// CHECK:STDOUT: %Op.9cf: %Op.type.100 = struct_value () [concrete] +// CHECK:STDOUT: %.efa: type = fn_type_with_self_type %ImplicitAs.Convert.type.334, %ImplicitAs.facet.aa1 [concrete] +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.type.f89: type = fn_type @C.as.ImplicitAs.impl.Convert.4 [concrete] +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.2dd: %C.as.ImplicitAs.impl.Convert.type.f89 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.100: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C.7ac) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.9cf: %T.as.Destroy.impl.Op.type.100 = struct_value () [concrete] // CHECK:STDOUT: %ptr.2b1: type = ptr_type %C.7ac [concrete] -// CHECK:STDOUT: %Op.specific_fn.694: = specific_function %Op.9cf, @Op.1(%C.7ac) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.694: = specific_function %T.as.Destroy.impl.Op.9cf, @T.as.Destroy.impl.Op(%C.7ac) [concrete] // CHECK:STDOUT: %int_4.0c1: Core.IntLiteral = int_value 4 [concrete] -// CHECK:STDOUT: %Convert.bound.ac3: = bound_method %int_4.0c1, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.1da: = bound_method %int_4.0c1, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ac3: = bound_method %int_4.0c1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.1da: = bound_method %int_4.0c1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %C.val.1dd: %C.89d = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.16c: = impl_witness imports.%ImplicitAs.impl_witness_table.54d [concrete] // CHECK:STDOUT: %ImplicitAs.facet.750: %ImplicitAs.type.5f9 = facet_value %C.89d, (%ImplicitAs.impl_witness.16c) [concrete] -// CHECK:STDOUT: %.26e: type = fn_type_with_self_type %Convert.type.334, %ImplicitAs.facet.750 [concrete] -// CHECK:STDOUT: %Convert.type.2ce: type = fn_type @Convert.6 [concrete] -// CHECK:STDOUT: %Convert.009: %Convert.type.2ce = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.86c: type = fn_type @Op.1, @Destroy.impl(%C.89d) [concrete] -// CHECK:STDOUT: %Op.6b4: %Op.type.86c = struct_value () [concrete] +// CHECK:STDOUT: %.26e: type = fn_type_with_self_type %ImplicitAs.Convert.type.334, %ImplicitAs.facet.750 [concrete] +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.type.2ce: type = fn_type @C.as.ImplicitAs.impl.Convert.5 [concrete] +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.009: %C.as.ImplicitAs.impl.Convert.type.2ce = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.86c: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C.89d) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.6b4: %T.as.Destroy.impl.Op.type.86c = struct_value () [concrete] // CHECK:STDOUT: %ptr.c28b: type = ptr_type %C.89d [concrete] -// CHECK:STDOUT: %Op.specific_fn.357: = specific_function %Op.6b4, @Op.1(%C.89d) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.357: = specific_function %T.as.Destroy.impl.Op.6b4, @T.as.Destroy.impl.Op(%C.89d) [concrete] // CHECK:STDOUT: %int_5.64b: Core.IntLiteral = int_value 5 [concrete] -// CHECK:STDOUT: %Convert.bound.4e6: = bound_method %int_5.64b, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.a25: = bound_method %int_5.64b, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.4e6: = bound_method %int_5.64b, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.a25: = bound_method %int_5.64b, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %C.val.a4a: %C.f0a = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.aa9: = impl_witness imports.%ImplicitAs.impl_witness_table.e3f [concrete] // CHECK:STDOUT: %ImplicitAs.facet.8cc: %ImplicitAs.type.5f9 = facet_value %C.f0a, (%ImplicitAs.impl_witness.aa9) [concrete] -// CHECK:STDOUT: %.eaf: type = fn_type_with_self_type %Convert.type.334, %ImplicitAs.facet.8cc [concrete] -// CHECK:STDOUT: %Convert.type.e9d: type = fn_type @Convert.7 [concrete] -// CHECK:STDOUT: %Convert.b66: %Convert.type.e9d = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.4df: type = fn_type @Op.1, @Destroy.impl(%C.f0a) [concrete] -// CHECK:STDOUT: %Op.985: %Op.type.4df = struct_value () [concrete] +// CHECK:STDOUT: %.eaf: type = fn_type_with_self_type %ImplicitAs.Convert.type.334, %ImplicitAs.facet.8cc [concrete] +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.type.e9d: type = fn_type @C.as.ImplicitAs.impl.Convert.6 [concrete] +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.b66: %C.as.ImplicitAs.impl.Convert.type.e9d = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.4df: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C.f0a) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.985: %T.as.Destroy.impl.Op.type.4df = struct_value () [concrete] // CHECK:STDOUT: %ptr.24c: type = ptr_type %C.f0a [concrete] -// CHECK:STDOUT: %Op.specific_fn.a66: = specific_function %Op.985, @Op.1(%C.f0a) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.a66: = specific_function %T.as.Destroy.impl.Op.985, @T.as.Destroy.impl.Op(%C.f0a) [concrete] // CHECK:STDOUT: %int_6.462: Core.IntLiteral = int_value 6 [concrete] -// CHECK:STDOUT: %Convert.bound.ce9: = bound_method %int_6.462, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.efa: = bound_method %int_6.462, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ce9: = bound_method %int_6.462, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.efa: = bound_method %int_6.462, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %C.val.a4b: %C.c60 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.e4d: = impl_witness imports.%ImplicitAs.impl_witness_table.b31 [concrete] // CHECK:STDOUT: %ImplicitAs.facet.a69: %ImplicitAs.type.5f9 = facet_value %C.c60, (%ImplicitAs.impl_witness.e4d) [concrete] -// CHECK:STDOUT: %.874: type = fn_type_with_self_type %Convert.type.334, %ImplicitAs.facet.a69 [concrete] -// CHECK:STDOUT: %Convert.type.4b8: type = fn_type @Convert.8 [concrete] -// CHECK:STDOUT: %Convert.f59: %Convert.type.4b8 = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.32d: type = fn_type @Op.1, @Destroy.impl(%C.c60) [concrete] -// CHECK:STDOUT: %Op.ca5: %Op.type.32d = struct_value () [concrete] +// CHECK:STDOUT: %.874: type = fn_type_with_self_type %ImplicitAs.Convert.type.334, %ImplicitAs.facet.a69 [concrete] +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.type.4b8: type = fn_type @C.as.ImplicitAs.impl.Convert.7 [concrete] +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.f59: %C.as.ImplicitAs.impl.Convert.type.4b8 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.32d: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C.c60) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ca5: %T.as.Destroy.impl.Op.type.32d = struct_value () [concrete] // CHECK:STDOUT: %ptr.b5e: type = ptr_type %C.c60 [concrete] -// CHECK:STDOUT: %Op.specific_fn.8d0: = specific_function %Op.ca5, @Op.1(%C.c60) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.8d0: = specific_function %T.as.Destroy.impl.Op.ca5, @T.as.Destroy.impl.Op(%C.c60) [concrete] // CHECK:STDOUT: %int_7.29f: Core.IntLiteral = int_value 7 [concrete] -// CHECK:STDOUT: %Convert.bound.208: = bound_method %int_7.29f, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.3bd: = bound_method %int_7.29f, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.208: = bound_method %int_7.29f, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.3bd: = bound_method %int_7.29f, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %C.val.f9f: %C.304 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.0ca: = impl_witness imports.%ImplicitAs.impl_witness_table.056 [concrete] // CHECK:STDOUT: %ImplicitAs.facet.cca: %ImplicitAs.type.5f9 = facet_value %C.304, (%ImplicitAs.impl_witness.0ca) [concrete] -// CHECK:STDOUT: %.79b: type = fn_type_with_self_type %Convert.type.334, %ImplicitAs.facet.cca [concrete] -// CHECK:STDOUT: %Convert.type.c7e: type = fn_type @Convert.9 [concrete] -// CHECK:STDOUT: %Convert.6c1: %Convert.type.c7e = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.986: type = fn_type @Op.1, @Destroy.impl(%C.304) [concrete] -// CHECK:STDOUT: %Op.6fc: %Op.type.986 = struct_value () [concrete] +// CHECK:STDOUT: %.79b: type = fn_type_with_self_type %ImplicitAs.Convert.type.334, %ImplicitAs.facet.cca [concrete] +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.type.c7e: type = fn_type @C.as.ImplicitAs.impl.Convert.8 [concrete] +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.6c1: %C.as.ImplicitAs.impl.Convert.type.c7e = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.986: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%C.304) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.6fc: %T.as.Destroy.impl.Op.type.986 = struct_value () [concrete] // CHECK:STDOUT: %ptr.dc3: type = ptr_type %C.304 [concrete] -// CHECK:STDOUT: %Op.specific_fn.a08: = specific_function %Op.6fc, @Op.1(%C.304) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.a08: = specific_function %T.as.Destroy.impl.Op.6fc, @T.as.Destroy.impl.Op(%C.304) [concrete] // CHECK:STDOUT: %Make.type: type = fn_type @Make [concrete] // CHECK:STDOUT: %Make: %Make.type = struct_value () [concrete] // CHECK:STDOUT: } @@ -931,8 +931,8 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %P.import_ref.8f2: = import_ref P//library, loc4_19, loaded [concrete = constants.%complete_type.357] // CHECK:STDOUT: %P.import_ref.f65 = import_ref P//library, inst51 [no loc], unloaded // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %P.import_ref.708: = import_ref P//library, loc8_33, loaded [concrete = constants.%ImplicitAs.impl_witness.f53] // CHECK:STDOUT: %P.import_ref.d2c: type = import_ref P//library, loc8_9, loaded [concrete = constants.%C.b00] // CHECK:STDOUT: %P.import_ref.b769fa.1: type = import_ref P//library, loc8_31, loaded [concrete = constants.%ImplicitAs.type.5f9] @@ -957,23 +957,23 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %P.import_ref.5f0: = import_ref P//library, loc15_33, loaded [concrete = constants.%ImplicitAs.impl_witness.0ca] // CHECK:STDOUT: %P.import_ref.dae: type = import_ref P//library, loc15_9, loaded [concrete = constants.%C.304] // CHECK:STDOUT: %P.import_ref.b769fa.8: type = import_ref P//library, loc15_31, loaded [concrete = constants.%ImplicitAs.type.5f9] -// CHECK:STDOUT: %P.import_ref.e36: %Convert.type.971 = import_ref P//library, loc8_65, loaded [concrete = constants.%Convert.bf9] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.f4b = impl_witness_table (%P.import_ref.e36), @ImplicitAs.impl.284 [concrete] +// CHECK:STDOUT: %P.import_ref.e36: %C.as.ImplicitAs.impl.Convert.type.971 = import_ref P//library, loc8_65, loaded [concrete = constants.%C.as.ImplicitAs.impl.Convert.bf9] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.f4b = impl_witness_table (%P.import_ref.e36), @C.as.ImplicitAs.impl.284 [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %P.import_ref.38e: %Convert.type.bdd = import_ref P//library, loc9_65, loaded [concrete = constants.%Convert.c82] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.297 = impl_witness_table (%P.import_ref.38e), @ImplicitAs.impl.628 [concrete] -// CHECK:STDOUT: %P.import_ref.5ab: %Convert.type.4c1 = import_ref P//library, loc10_65, loaded [concrete = constants.%Convert.08c] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.8b3 = impl_witness_table (%P.import_ref.5ab), @ImplicitAs.impl.88c [concrete] -// CHECK:STDOUT: %P.import_ref.db1: %Convert.type.f89 = import_ref P//library, loc11_65, loaded [concrete = constants.%Convert.2dd] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.db0 = impl_witness_table (%P.import_ref.db1), @ImplicitAs.impl.f76 [concrete] -// CHECK:STDOUT: %P.import_ref.134: %Convert.type.2ce = import_ref P//library, loc12_65, loaded [concrete = constants.%Convert.009] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.54d = impl_witness_table (%P.import_ref.134), @ImplicitAs.impl.521 [concrete] -// CHECK:STDOUT: %P.import_ref.9a0: %Convert.type.e9d = import_ref P//library, loc13_65, loaded [concrete = constants.%Convert.b66] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.e3f = impl_witness_table (%P.import_ref.9a0), @ImplicitAs.impl.ac4 [concrete] -// CHECK:STDOUT: %P.import_ref.b13: %Convert.type.4b8 = import_ref P//library, loc14_65, loaded [concrete = constants.%Convert.f59] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.b31 = impl_witness_table (%P.import_ref.b13), @ImplicitAs.impl.3bf [concrete] -// CHECK:STDOUT: %P.import_ref.216: %Convert.type.c7e = import_ref P//library, loc15_65, loaded [concrete = constants.%Convert.6c1] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.056 = impl_witness_table (%P.import_ref.216), @ImplicitAs.impl.935 [concrete] +// CHECK:STDOUT: %P.import_ref.38e: %C.as.ImplicitAs.impl.Convert.type.bdd = import_ref P//library, loc9_65, loaded [concrete = constants.%C.as.ImplicitAs.impl.Convert.c82] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.297 = impl_witness_table (%P.import_ref.38e), @C.as.ImplicitAs.impl.628 [concrete] +// CHECK:STDOUT: %P.import_ref.5ab: %C.as.ImplicitAs.impl.Convert.type.4c1 = import_ref P//library, loc10_65, loaded [concrete = constants.%C.as.ImplicitAs.impl.Convert.08c] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.8b3 = impl_witness_table (%P.import_ref.5ab), @C.as.ImplicitAs.impl.88c [concrete] +// CHECK:STDOUT: %P.import_ref.db1: %C.as.ImplicitAs.impl.Convert.type.f89 = import_ref P//library, loc11_65, loaded [concrete = constants.%C.as.ImplicitAs.impl.Convert.2dd] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.db0 = impl_witness_table (%P.import_ref.db1), @C.as.ImplicitAs.impl.f76 [concrete] +// CHECK:STDOUT: %P.import_ref.134: %C.as.ImplicitAs.impl.Convert.type.2ce = import_ref P//library, loc12_65, loaded [concrete = constants.%C.as.ImplicitAs.impl.Convert.009] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.54d = impl_witness_table (%P.import_ref.134), @C.as.ImplicitAs.impl.521 [concrete] +// CHECK:STDOUT: %P.import_ref.9a0: %C.as.ImplicitAs.impl.Convert.type.e9d = import_ref P//library, loc13_65, loaded [concrete = constants.%C.as.ImplicitAs.impl.Convert.b66] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.e3f = impl_witness_table (%P.import_ref.9a0), @C.as.ImplicitAs.impl.ac4 [concrete] +// CHECK:STDOUT: %P.import_ref.b13: %C.as.ImplicitAs.impl.Convert.type.4b8 = import_ref P//library, loc14_65, loaded [concrete = constants.%C.as.ImplicitAs.impl.Convert.f59] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.b31 = impl_witness_table (%P.import_ref.b13), @C.as.ImplicitAs.impl.3bf [concrete] +// CHECK:STDOUT: %P.import_ref.216: %C.as.ImplicitAs.impl.Convert.type.c7e = import_ref P//library, loc15_65, loaded [concrete = constants.%C.as.ImplicitAs.impl.Convert.6c1] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.056 = impl_witness_table (%P.import_ref.216), @C.as.ImplicitAs.impl.935 [concrete] // CHECK:STDOUT: %P.Make: %Make.type = import_ref P//library, Make, loaded [concrete = constants.%Make] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1004,42 +1004,42 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @ImplicitAs.impl.284: imports.%P.import_ref.d2c as imports.%P.import_ref.b769fa.1 [from "library.carbon"] { +// CHECK:STDOUT: impl @C.as.ImplicitAs.impl.284: imports.%P.import_ref.d2c as imports.%P.import_ref.b769fa.1 [from "library.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = imports.%P.import_ref.708 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @ImplicitAs.impl.628: imports.%P.import_ref.cf3 as imports.%P.import_ref.b769fa.2 [from "library.carbon"] { +// CHECK:STDOUT: impl @C.as.ImplicitAs.impl.628: imports.%P.import_ref.cf3 as imports.%P.import_ref.b769fa.2 [from "library.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = imports.%P.import_ref.ae8 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @ImplicitAs.impl.88c: imports.%P.import_ref.095 as imports.%P.import_ref.b769fa.3 [from "library.carbon"] { +// CHECK:STDOUT: impl @C.as.ImplicitAs.impl.88c: imports.%P.import_ref.095 as imports.%P.import_ref.b769fa.3 [from "library.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = imports.%P.import_ref.2fc // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @ImplicitAs.impl.f76: imports.%P.import_ref.82b as imports.%P.import_ref.b769fa.4 [from "library.carbon"] { +// CHECK:STDOUT: impl @C.as.ImplicitAs.impl.f76: imports.%P.import_ref.82b as imports.%P.import_ref.b769fa.4 [from "library.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = imports.%P.import_ref.d75 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @ImplicitAs.impl.521: imports.%P.import_ref.f7d as imports.%P.import_ref.b769fa.5 [from "library.carbon"] { +// CHECK:STDOUT: impl @C.as.ImplicitAs.impl.521: imports.%P.import_ref.f7d as imports.%P.import_ref.b769fa.5 [from "library.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = imports.%P.import_ref.6c2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @ImplicitAs.impl.ac4: imports.%P.import_ref.a43 as imports.%P.import_ref.b769fa.6 [from "library.carbon"] { +// CHECK:STDOUT: impl @C.as.ImplicitAs.impl.ac4: imports.%P.import_ref.a43 as imports.%P.import_ref.b769fa.6 [from "library.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = imports.%P.import_ref.0e0 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @ImplicitAs.impl.3bf: imports.%P.import_ref.654 as imports.%P.import_ref.b769fa.7 [from "library.carbon"] { +// CHECK:STDOUT: impl @C.as.ImplicitAs.impl.3bf: imports.%P.import_ref.654 as imports.%P.import_ref.b769fa.7 [from "library.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = imports.%P.import_ref.e6a // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @ImplicitAs.impl.935: imports.%P.import_ref.dae as imports.%P.import_ref.b769fa.8 [from "library.carbon"] { +// CHECK:STDOUT: impl @C.as.ImplicitAs.impl.935: imports.%P.import_ref.dae as imports.%P.import_ref.b769fa.8 [from "library.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: witness = imports.%P.import_ref.5f0 // CHECK:STDOUT: } @@ -1076,34 +1076,34 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %P.ref.loc7: = name_ref P, imports.%P [concrete = imports.%P] // CHECK:STDOUT: %C.ref.loc7: %C.type = name_ref C, imports.%P.C [concrete = constants.%C.generic] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %impl.elem0.loc7_34: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc7_34.1: = bound_method %int_0, %impl.elem0.loc7_34 [concrete = constants.%Convert.bound.d04] -// CHECK:STDOUT: %specific_fn.loc7: = specific_function %impl.elem0.loc7_34, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc7_34: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc7_34.1: = bound_method %int_0, %impl.elem0.loc7_34 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04] +// CHECK:STDOUT: %specific_fn.loc7: = specific_function %impl.elem0.loc7_34, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc7_34.2: = bound_method %int_0, %specific_fn.loc7 [concrete = constants.%bound_method.b6e] -// CHECK:STDOUT: %int.convert_checked.loc7: init %i32 = call %bound_method.loc7_34.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc7_34.1: %i32 = value_of_initializer %int.convert_checked.loc7 [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc7: init %i32 = call %bound_method.loc7_34.2(%int_0) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc7_34.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc7 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc7_34.2: %i32 = converted %int_0, %.loc7_34.1 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %C.loc7: type = class_type @C, @C(constants.%int_0.6a9) [concrete = constants.%C.b00] // CHECK:STDOUT: %.loc7_24.2: ref %C.b00 = temporary_storage // CHECK:STDOUT: %.loc7_24.3: init %C.b00 = class_init (), %.loc7_24.2 [concrete = constants.%C.val.452] // CHECK:STDOUT: %.loc7_24.4: ref %C.b00 = temporary %.loc7_24.2, %.loc7_24.3 // CHECK:STDOUT: %.loc7_26.1: ref %C.b00 = converted %.loc7_24.1, %.loc7_24.4 -// CHECK:STDOUT: %impl.elem0.loc7_35: %.a9c = impl_witness_access constants.%ImplicitAs.impl_witness.f53, element0 [concrete = constants.%Convert.bf9] +// CHECK:STDOUT: %impl.elem0.loc7_35: %.a9c = impl_witness_access constants.%ImplicitAs.impl_witness.f53, element0 [concrete = constants.%C.as.ImplicitAs.impl.Convert.bf9] // CHECK:STDOUT: %bound_method.loc7_35.1: = bound_method %.loc7_26.1, %impl.elem0.loc7_35 // CHECK:STDOUT: %.loc7_35.1: ref %D = temporary_storage // CHECK:STDOUT: %.loc7_26.2: %C.b00 = bind_value %.loc7_26.1 -// CHECK:STDOUT: %Convert.call.loc7: init %D = call %bound_method.loc7_35.1(%.loc7_26.2) to %.loc7_35.1 -// CHECK:STDOUT: %.loc7_35.2: init %D = converted %.loc7_26.1, %Convert.call.loc7 -// CHECK:STDOUT: %Op.bound.loc7_35.1: = bound_method %.loc7_35.1, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc7_35.2: = bound_method %.loc7_35.1, %Op.specific_fn.1 +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.call.loc7: init %D = call %bound_method.loc7_35.1(%.loc7_26.2) to %.loc7_35.1 +// CHECK:STDOUT: %.loc7_35.2: init %D = converted %.loc7_26.1, %C.as.ImplicitAs.impl.Convert.call.loc7 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc7_35.1: = bound_method %.loc7_35.1, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc7_35.2: = bound_method %.loc7_35.1, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc7_35.1: %ptr.f29 = addr_of %.loc7_35.1 -// CHECK:STDOUT: %no_op.loc7_35.1: init %empty_tuple.type = call %bound_method.loc7_35.2(%addr.loc7_35.1) -// CHECK:STDOUT: %Op.bound.loc7_24.1: = bound_method %.loc7_24.2, constants.%Op.ae6 -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.ae6, @Op.1(constants.%C.b00) [concrete = constants.%Op.specific_fn.e42] -// CHECK:STDOUT: %bound_method.loc7_24.1: = bound_method %.loc7_24.2, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc7_35.1: init %empty_tuple.type = call %bound_method.loc7_35.2(%addr.loc7_35.1) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc7_24.1: = bound_method %.loc7_24.2, constants.%T.as.Destroy.impl.Op.ae6 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.ae6, @T.as.Destroy.impl.Op(constants.%C.b00) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.e42] +// CHECK:STDOUT: %bound_method.loc7_24.1: = bound_method %.loc7_24.2, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc7_24.1: %ptr.697 = addr_of %.loc7_24.2 -// CHECK:STDOUT: %no_op.loc7_24.1: init %empty_tuple.type = call %bound_method.loc7_24.1(%addr.loc7_24.1) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc7_24.1: init %empty_tuple.type = call %bound_method.loc7_24.1(%addr.loc7_24.1) // CHECK:STDOUT: return %.loc7_35.2 to %return // CHECK:STDOUT: // CHECK:STDOUT: !if.else.loc7: @@ -1115,44 +1115,44 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %P.ref.loc8: = name_ref P, imports.%P [concrete = imports.%P] // CHECK:STDOUT: %C.ref.loc8: %C.type = name_ref C, imports.%P.C [concrete = constants.%C.generic] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0.loc8_34: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc8_34.1: = bound_method %int_1, %impl.elem0.loc8_34 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc8: = specific_function %impl.elem0.loc8_34, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc8_34: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc8_34.1: = bound_method %int_1, %impl.elem0.loc8_34 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc8: = specific_function %impl.elem0.loc8_34, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc8_34.2: = bound_method %int_1, %specific_fn.loc8 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc8: init %i32 = call %bound_method.loc8_34.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc8_34.1: %i32 = value_of_initializer %int.convert_checked.loc8 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc8: init %i32 = call %bound_method.loc8_34.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc8_34.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc8 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc8_34.2: %i32 = converted %int_1, %.loc8_34.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %C.loc8: type = class_type @C, @C(constants.%int_1.5d2) [concrete = constants.%C.674] // CHECK:STDOUT: %.loc8_24.2: ref %C.674 = temporary_storage // CHECK:STDOUT: %.loc8_24.3: init %C.674 = class_init (), %.loc8_24.2 [concrete = constants.%C.val.678] // CHECK:STDOUT: %.loc8_24.4: ref %C.674 = temporary %.loc8_24.2, %.loc8_24.3 // CHECK:STDOUT: %.loc8_26.1: ref %C.674 = converted %.loc8_24.1, %.loc8_24.4 -// CHECK:STDOUT: %impl.elem0.loc8_35: %.7d6 = impl_witness_access constants.%ImplicitAs.impl_witness.fcb, element0 [concrete = constants.%Convert.c82] +// CHECK:STDOUT: %impl.elem0.loc8_35: %.7d6 = impl_witness_access constants.%ImplicitAs.impl_witness.fcb, element0 [concrete = constants.%C.as.ImplicitAs.impl.Convert.c82] // CHECK:STDOUT: %bound_method.loc8_35.1: = bound_method %.loc8_26.1, %impl.elem0.loc8_35 // CHECK:STDOUT: %.loc8_35.1: ref %D = temporary_storage // CHECK:STDOUT: %.loc8_26.2: %C.674 = bind_value %.loc8_26.1 -// CHECK:STDOUT: %Convert.call.loc8: init %D = call %bound_method.loc8_35.1(%.loc8_26.2) to %.loc8_35.1 -// CHECK:STDOUT: %.loc8_35.2: init %D = converted %.loc8_26.1, %Convert.call.loc8 -// CHECK:STDOUT: %Op.bound.loc8_35.1: = bound_method %.loc8_35.1, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.3: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc8_35.2: = bound_method %.loc8_35.1, %Op.specific_fn.3 +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.call.loc8: init %D = call %bound_method.loc8_35.1(%.loc8_26.2) to %.loc8_35.1 +// CHECK:STDOUT: %.loc8_35.2: init %D = converted %.loc8_26.1, %C.as.ImplicitAs.impl.Convert.call.loc8 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8_35.1: = bound_method %.loc8_35.1, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.3: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc8_35.2: = bound_method %.loc8_35.1, %T.as.Destroy.impl.Op.specific_fn.3 // CHECK:STDOUT: %addr.loc8_35.1: %ptr.f29 = addr_of %.loc8_35.1 -// CHECK:STDOUT: %no_op.loc8_35.1: init %empty_tuple.type = call %bound_method.loc8_35.2(%addr.loc8_35.1) -// CHECK:STDOUT: %Op.bound.loc8_24.1: = bound_method %.loc8_24.2, constants.%Op.ad8 -// CHECK:STDOUT: %Op.specific_fn.4: = specific_function constants.%Op.ad8, @Op.1(constants.%C.674) [concrete = constants.%Op.specific_fn.6b6] -// CHECK:STDOUT: %bound_method.loc8_24.1: = bound_method %.loc8_24.2, %Op.specific_fn.4 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8_35.1: init %empty_tuple.type = call %bound_method.loc8_35.2(%addr.loc8_35.1) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8_24.1: = bound_method %.loc8_24.2, constants.%T.as.Destroy.impl.Op.ad8 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.4: = specific_function constants.%T.as.Destroy.impl.Op.ad8, @T.as.Destroy.impl.Op(constants.%C.674) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.6b6] +// CHECK:STDOUT: %bound_method.loc8_24.1: = bound_method %.loc8_24.2, %T.as.Destroy.impl.Op.specific_fn.4 // CHECK:STDOUT: %addr.loc8_24.1: %ptr.625 = addr_of %.loc8_24.2 -// CHECK:STDOUT: %no_op.loc8_24.1: init %empty_tuple.type = call %bound_method.loc8_24.1(%addr.loc8_24.1) -// CHECK:STDOUT: %Op.bound.loc7_35.2: = bound_method %.loc7_35.1, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.5: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc7_35.3: = bound_method %.loc7_35.1, %Op.specific_fn.5 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8_24.1: init %empty_tuple.type = call %bound_method.loc8_24.1(%addr.loc8_24.1) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc7_35.2: = bound_method %.loc7_35.1, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.5: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc7_35.3: = bound_method %.loc7_35.1, %T.as.Destroy.impl.Op.specific_fn.5 // CHECK:STDOUT: %addr.loc7_35.2: %ptr.f29 = addr_of %.loc7_35.1 -// CHECK:STDOUT: %no_op.loc7_35.2: init %empty_tuple.type = call %bound_method.loc7_35.3(%addr.loc7_35.2) -// CHECK:STDOUT: %Op.bound.loc7_24.2: = bound_method %.loc7_24.2, constants.%Op.ae6 -// CHECK:STDOUT: %Op.specific_fn.6: = specific_function constants.%Op.ae6, @Op.1(constants.%C.b00) [concrete = constants.%Op.specific_fn.e42] -// CHECK:STDOUT: %bound_method.loc7_24.2: = bound_method %.loc7_24.2, %Op.specific_fn.6 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc7_35.2: init %empty_tuple.type = call %bound_method.loc7_35.3(%addr.loc7_35.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc7_24.2: = bound_method %.loc7_24.2, constants.%T.as.Destroy.impl.Op.ae6 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.6: = specific_function constants.%T.as.Destroy.impl.Op.ae6, @T.as.Destroy.impl.Op(constants.%C.b00) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.e42] +// CHECK:STDOUT: %bound_method.loc7_24.2: = bound_method %.loc7_24.2, %T.as.Destroy.impl.Op.specific_fn.6 // CHECK:STDOUT: %addr.loc7_24.2: %ptr.697 = addr_of %.loc7_24.2 -// CHECK:STDOUT: %no_op.loc7_24.2: init %empty_tuple.type = call %bound_method.loc7_24.2(%addr.loc7_24.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc7_24.2: init %empty_tuple.type = call %bound_method.loc7_24.2(%addr.loc7_24.2) // CHECK:STDOUT: return %.loc8_35.2 to %return // CHECK:STDOUT: // CHECK:STDOUT: !if.else.loc8: @@ -1164,54 +1164,54 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %P.ref.loc9: = name_ref P, imports.%P [concrete = imports.%P] // CHECK:STDOUT: %C.ref.loc9: %C.type = name_ref C, imports.%P.C [concrete = constants.%C.generic] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %impl.elem0.loc9_34: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc9_34.1: = bound_method %int_2, %impl.elem0.loc9_34 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc9: = specific_function %impl.elem0.loc9_34, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc9_34: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc9_34.1: = bound_method %int_2, %impl.elem0.loc9_34 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc9: = specific_function %impl.elem0.loc9_34, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc9_34.2: = bound_method %int_2, %specific_fn.loc9 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc9: init %i32 = call %bound_method.loc9_34.2(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc9_34.1: %i32 = value_of_initializer %int.convert_checked.loc9 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9: init %i32 = call %bound_method.loc9_34.2(%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc9_34.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc9_34.2: %i32 = converted %int_2, %.loc9_34.1 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %C.loc9: type = class_type @C, @C(constants.%int_2.ef8) [concrete = constants.%C.681] // CHECK:STDOUT: %.loc9_24.2: ref %C.681 = temporary_storage // CHECK:STDOUT: %.loc9_24.3: init %C.681 = class_init (), %.loc9_24.2 [concrete = constants.%C.val.fb5] // CHECK:STDOUT: %.loc9_24.4: ref %C.681 = temporary %.loc9_24.2, %.loc9_24.3 // CHECK:STDOUT: %.loc9_26.1: ref %C.681 = converted %.loc9_24.1, %.loc9_24.4 -// CHECK:STDOUT: %impl.elem0.loc9_35: %.987 = impl_witness_access constants.%ImplicitAs.impl_witness.746, element0 [concrete = constants.%Convert.08c] +// CHECK:STDOUT: %impl.elem0.loc9_35: %.987 = impl_witness_access constants.%ImplicitAs.impl_witness.746, element0 [concrete = constants.%C.as.ImplicitAs.impl.Convert.08c] // CHECK:STDOUT: %bound_method.loc9_35.1: = bound_method %.loc9_26.1, %impl.elem0.loc9_35 // CHECK:STDOUT: %.loc9_35.1: ref %D = temporary_storage // CHECK:STDOUT: %.loc9_26.2: %C.681 = bind_value %.loc9_26.1 -// CHECK:STDOUT: %Convert.call.loc9: init %D = call %bound_method.loc9_35.1(%.loc9_26.2) to %.loc9_35.1 -// CHECK:STDOUT: %.loc9_35.2: init %D = converted %.loc9_26.1, %Convert.call.loc9 -// CHECK:STDOUT: %Op.bound.loc9_35.1: = bound_method %.loc9_35.1, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.7: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc9_35.2: = bound_method %.loc9_35.1, %Op.specific_fn.7 +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.call.loc9: init %D = call %bound_method.loc9_35.1(%.loc9_26.2) to %.loc9_35.1 +// CHECK:STDOUT: %.loc9_35.2: init %D = converted %.loc9_26.1, %C.as.ImplicitAs.impl.Convert.call.loc9 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc9_35.1: = bound_method %.loc9_35.1, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.7: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc9_35.2: = bound_method %.loc9_35.1, %T.as.Destroy.impl.Op.specific_fn.7 // CHECK:STDOUT: %addr.loc9_35.1: %ptr.f29 = addr_of %.loc9_35.1 -// CHECK:STDOUT: %no_op.loc9_35.1: init %empty_tuple.type = call %bound_method.loc9_35.2(%addr.loc9_35.1) -// CHECK:STDOUT: %Op.bound.loc9_24.1: = bound_method %.loc9_24.2, constants.%Op.404 -// CHECK:STDOUT: %Op.specific_fn.8: = specific_function constants.%Op.404, @Op.1(constants.%C.681) [concrete = constants.%Op.specific_fn.822] -// CHECK:STDOUT: %bound_method.loc9_24.1: = bound_method %.loc9_24.2, %Op.specific_fn.8 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc9_35.1: init %empty_tuple.type = call %bound_method.loc9_35.2(%addr.loc9_35.1) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc9_24.1: = bound_method %.loc9_24.2, constants.%T.as.Destroy.impl.Op.404 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.8: = specific_function constants.%T.as.Destroy.impl.Op.404, @T.as.Destroy.impl.Op(constants.%C.681) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.822] +// CHECK:STDOUT: %bound_method.loc9_24.1: = bound_method %.loc9_24.2, %T.as.Destroy.impl.Op.specific_fn.8 // CHECK:STDOUT: %addr.loc9_24.1: %ptr.3bd = addr_of %.loc9_24.2 -// CHECK:STDOUT: %no_op.loc9_24.1: init %empty_tuple.type = call %bound_method.loc9_24.1(%addr.loc9_24.1) -// CHECK:STDOUT: %Op.bound.loc8_35.2: = bound_method %.loc8_35.1, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.9: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc8_35.3: = bound_method %.loc8_35.1, %Op.specific_fn.9 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc9_24.1: init %empty_tuple.type = call %bound_method.loc9_24.1(%addr.loc9_24.1) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8_35.2: = bound_method %.loc8_35.1, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.9: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc8_35.3: = bound_method %.loc8_35.1, %T.as.Destroy.impl.Op.specific_fn.9 // CHECK:STDOUT: %addr.loc8_35.2: %ptr.f29 = addr_of %.loc8_35.1 -// CHECK:STDOUT: %no_op.loc8_35.2: init %empty_tuple.type = call %bound_method.loc8_35.3(%addr.loc8_35.2) -// CHECK:STDOUT: %Op.bound.loc8_24.2: = bound_method %.loc8_24.2, constants.%Op.ad8 -// CHECK:STDOUT: %Op.specific_fn.10: = specific_function constants.%Op.ad8, @Op.1(constants.%C.674) [concrete = constants.%Op.specific_fn.6b6] -// CHECK:STDOUT: %bound_method.loc8_24.2: = bound_method %.loc8_24.2, %Op.specific_fn.10 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8_35.2: init %empty_tuple.type = call %bound_method.loc8_35.3(%addr.loc8_35.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8_24.2: = bound_method %.loc8_24.2, constants.%T.as.Destroy.impl.Op.ad8 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.10: = specific_function constants.%T.as.Destroy.impl.Op.ad8, @T.as.Destroy.impl.Op(constants.%C.674) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.6b6] +// CHECK:STDOUT: %bound_method.loc8_24.2: = bound_method %.loc8_24.2, %T.as.Destroy.impl.Op.specific_fn.10 // CHECK:STDOUT: %addr.loc8_24.2: %ptr.625 = addr_of %.loc8_24.2 -// CHECK:STDOUT: %no_op.loc8_24.2: init %empty_tuple.type = call %bound_method.loc8_24.2(%addr.loc8_24.2) -// CHECK:STDOUT: %Op.bound.loc7_35.3: = bound_method %.loc7_35.1, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.11: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc7_35.4: = bound_method %.loc7_35.1, %Op.specific_fn.11 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8_24.2: init %empty_tuple.type = call %bound_method.loc8_24.2(%addr.loc8_24.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc7_35.3: = bound_method %.loc7_35.1, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.11: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc7_35.4: = bound_method %.loc7_35.1, %T.as.Destroy.impl.Op.specific_fn.11 // CHECK:STDOUT: %addr.loc7_35.3: %ptr.f29 = addr_of %.loc7_35.1 -// CHECK:STDOUT: %no_op.loc7_35.3: init %empty_tuple.type = call %bound_method.loc7_35.4(%addr.loc7_35.3) -// CHECK:STDOUT: %Op.bound.loc7_24.3: = bound_method %.loc7_24.2, constants.%Op.ae6 -// CHECK:STDOUT: %Op.specific_fn.12: = specific_function constants.%Op.ae6, @Op.1(constants.%C.b00) [concrete = constants.%Op.specific_fn.e42] -// CHECK:STDOUT: %bound_method.loc7_24.3: = bound_method %.loc7_24.2, %Op.specific_fn.12 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc7_35.3: init %empty_tuple.type = call %bound_method.loc7_35.4(%addr.loc7_35.3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc7_24.3: = bound_method %.loc7_24.2, constants.%T.as.Destroy.impl.Op.ae6 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.12: = specific_function constants.%T.as.Destroy.impl.Op.ae6, @T.as.Destroy.impl.Op(constants.%C.b00) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.e42] +// CHECK:STDOUT: %bound_method.loc7_24.3: = bound_method %.loc7_24.2, %T.as.Destroy.impl.Op.specific_fn.12 // CHECK:STDOUT: %addr.loc7_24.3: %ptr.697 = addr_of %.loc7_24.2 -// CHECK:STDOUT: %no_op.loc7_24.3: init %empty_tuple.type = call %bound_method.loc7_24.3(%addr.loc7_24.3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc7_24.3: init %empty_tuple.type = call %bound_method.loc7_24.3(%addr.loc7_24.3) // CHECK:STDOUT: return %.loc9_35.2 to %return // CHECK:STDOUT: // CHECK:STDOUT: !if.else.loc9: @@ -1223,64 +1223,64 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %P.ref.loc10: = name_ref P, imports.%P [concrete = imports.%P] // CHECK:STDOUT: %C.ref.loc10: %C.type = name_ref C, imports.%P.C [concrete = constants.%C.generic] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] -// CHECK:STDOUT: %impl.elem0.loc10_34: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc10_34.1: = bound_method %int_3, %impl.elem0.loc10_34 [concrete = constants.%Convert.bound.b30] -// CHECK:STDOUT: %specific_fn.loc10: = specific_function %impl.elem0.loc10_34, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc10_34: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc10_34.1: = bound_method %int_3, %impl.elem0.loc10_34 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.b30] +// CHECK:STDOUT: %specific_fn.loc10: = specific_function %impl.elem0.loc10_34, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc10_34.2: = bound_method %int_3, %specific_fn.loc10 [concrete = constants.%bound_method.047] -// CHECK:STDOUT: %int.convert_checked.loc10: init %i32 = call %bound_method.loc10_34.2(%int_3) [concrete = constants.%int_3.822] -// CHECK:STDOUT: %.loc10_34.1: %i32 = value_of_initializer %int.convert_checked.loc10 [concrete = constants.%int_3.822] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10: init %i32 = call %bound_method.loc10_34.2(%int_3) [concrete = constants.%int_3.822] +// CHECK:STDOUT: %.loc10_34.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10 [concrete = constants.%int_3.822] // CHECK:STDOUT: %.loc10_34.2: %i32 = converted %int_3, %.loc10_34.1 [concrete = constants.%int_3.822] // CHECK:STDOUT: %C.loc10: type = class_type @C, @C(constants.%int_3.822) [concrete = constants.%C.7ac] // CHECK:STDOUT: %.loc10_24.2: ref %C.7ac = temporary_storage // CHECK:STDOUT: %.loc10_24.3: init %C.7ac = class_init (), %.loc10_24.2 [concrete = constants.%C.val.fe7] // CHECK:STDOUT: %.loc10_24.4: ref %C.7ac = temporary %.loc10_24.2, %.loc10_24.3 // CHECK:STDOUT: %.loc10_26.1: ref %C.7ac = converted %.loc10_24.1, %.loc10_24.4 -// CHECK:STDOUT: %impl.elem0.loc10_35: %.efa = impl_witness_access constants.%ImplicitAs.impl_witness.f79, element0 [concrete = constants.%Convert.2dd] +// CHECK:STDOUT: %impl.elem0.loc10_35: %.efa = impl_witness_access constants.%ImplicitAs.impl_witness.f79, element0 [concrete = constants.%C.as.ImplicitAs.impl.Convert.2dd] // CHECK:STDOUT: %bound_method.loc10_35.1: = bound_method %.loc10_26.1, %impl.elem0.loc10_35 // CHECK:STDOUT: %.loc10_35.1: ref %D = temporary_storage // CHECK:STDOUT: %.loc10_26.2: %C.7ac = bind_value %.loc10_26.1 -// CHECK:STDOUT: %Convert.call.loc10: init %D = call %bound_method.loc10_35.1(%.loc10_26.2) to %.loc10_35.1 -// CHECK:STDOUT: %.loc10_35.2: init %D = converted %.loc10_26.1, %Convert.call.loc10 -// CHECK:STDOUT: %Op.bound.loc10_35.1: = bound_method %.loc10_35.1, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.13: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc10_35.2: = bound_method %.loc10_35.1, %Op.specific_fn.13 +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.call.loc10: init %D = call %bound_method.loc10_35.1(%.loc10_26.2) to %.loc10_35.1 +// CHECK:STDOUT: %.loc10_35.2: init %D = converted %.loc10_26.1, %C.as.ImplicitAs.impl.Convert.call.loc10 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10_35.1: = bound_method %.loc10_35.1, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.13: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc10_35.2: = bound_method %.loc10_35.1, %T.as.Destroy.impl.Op.specific_fn.13 // CHECK:STDOUT: %addr.loc10_35.1: %ptr.f29 = addr_of %.loc10_35.1 -// CHECK:STDOUT: %no_op.loc10_35.1: init %empty_tuple.type = call %bound_method.loc10_35.2(%addr.loc10_35.1) -// CHECK:STDOUT: %Op.bound.loc10_24.1: = bound_method %.loc10_24.2, constants.%Op.9cf -// CHECK:STDOUT: %Op.specific_fn.14: = specific_function constants.%Op.9cf, @Op.1(constants.%C.7ac) [concrete = constants.%Op.specific_fn.694] -// CHECK:STDOUT: %bound_method.loc10_24.1: = bound_method %.loc10_24.2, %Op.specific_fn.14 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10_35.1: init %empty_tuple.type = call %bound_method.loc10_35.2(%addr.loc10_35.1) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10_24.1: = bound_method %.loc10_24.2, constants.%T.as.Destroy.impl.Op.9cf +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.14: = specific_function constants.%T.as.Destroy.impl.Op.9cf, @T.as.Destroy.impl.Op(constants.%C.7ac) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.694] +// CHECK:STDOUT: %bound_method.loc10_24.1: = bound_method %.loc10_24.2, %T.as.Destroy.impl.Op.specific_fn.14 // CHECK:STDOUT: %addr.loc10_24.1: %ptr.2b1 = addr_of %.loc10_24.2 -// CHECK:STDOUT: %no_op.loc10_24.1: init %empty_tuple.type = call %bound_method.loc10_24.1(%addr.loc10_24.1) -// CHECK:STDOUT: %Op.bound.loc9_35.2: = bound_method %.loc9_35.1, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.15: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc9_35.3: = bound_method %.loc9_35.1, %Op.specific_fn.15 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10_24.1: init %empty_tuple.type = call %bound_method.loc10_24.1(%addr.loc10_24.1) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc9_35.2: = bound_method %.loc9_35.1, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.15: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc9_35.3: = bound_method %.loc9_35.1, %T.as.Destroy.impl.Op.specific_fn.15 // CHECK:STDOUT: %addr.loc9_35.2: %ptr.f29 = addr_of %.loc9_35.1 -// CHECK:STDOUT: %no_op.loc9_35.2: init %empty_tuple.type = call %bound_method.loc9_35.3(%addr.loc9_35.2) -// CHECK:STDOUT: %Op.bound.loc9_24.2: = bound_method %.loc9_24.2, constants.%Op.404 -// CHECK:STDOUT: %Op.specific_fn.16: = specific_function constants.%Op.404, @Op.1(constants.%C.681) [concrete = constants.%Op.specific_fn.822] -// CHECK:STDOUT: %bound_method.loc9_24.2: = bound_method %.loc9_24.2, %Op.specific_fn.16 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc9_35.2: init %empty_tuple.type = call %bound_method.loc9_35.3(%addr.loc9_35.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc9_24.2: = bound_method %.loc9_24.2, constants.%T.as.Destroy.impl.Op.404 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.16: = specific_function constants.%T.as.Destroy.impl.Op.404, @T.as.Destroy.impl.Op(constants.%C.681) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.822] +// CHECK:STDOUT: %bound_method.loc9_24.2: = bound_method %.loc9_24.2, %T.as.Destroy.impl.Op.specific_fn.16 // CHECK:STDOUT: %addr.loc9_24.2: %ptr.3bd = addr_of %.loc9_24.2 -// CHECK:STDOUT: %no_op.loc9_24.2: init %empty_tuple.type = call %bound_method.loc9_24.2(%addr.loc9_24.2) -// CHECK:STDOUT: %Op.bound.loc8_35.3: = bound_method %.loc8_35.1, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.17: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc8_35.4: = bound_method %.loc8_35.1, %Op.specific_fn.17 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc9_24.2: init %empty_tuple.type = call %bound_method.loc9_24.2(%addr.loc9_24.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8_35.3: = bound_method %.loc8_35.1, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.17: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc8_35.4: = bound_method %.loc8_35.1, %T.as.Destroy.impl.Op.specific_fn.17 // CHECK:STDOUT: %addr.loc8_35.3: %ptr.f29 = addr_of %.loc8_35.1 -// CHECK:STDOUT: %no_op.loc8_35.3: init %empty_tuple.type = call %bound_method.loc8_35.4(%addr.loc8_35.3) -// CHECK:STDOUT: %Op.bound.loc8_24.3: = bound_method %.loc8_24.2, constants.%Op.ad8 -// CHECK:STDOUT: %Op.specific_fn.18: = specific_function constants.%Op.ad8, @Op.1(constants.%C.674) [concrete = constants.%Op.specific_fn.6b6] -// CHECK:STDOUT: %bound_method.loc8_24.3: = bound_method %.loc8_24.2, %Op.specific_fn.18 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8_35.3: init %empty_tuple.type = call %bound_method.loc8_35.4(%addr.loc8_35.3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8_24.3: = bound_method %.loc8_24.2, constants.%T.as.Destroy.impl.Op.ad8 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.18: = specific_function constants.%T.as.Destroy.impl.Op.ad8, @T.as.Destroy.impl.Op(constants.%C.674) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.6b6] +// CHECK:STDOUT: %bound_method.loc8_24.3: = bound_method %.loc8_24.2, %T.as.Destroy.impl.Op.specific_fn.18 // CHECK:STDOUT: %addr.loc8_24.3: %ptr.625 = addr_of %.loc8_24.2 -// CHECK:STDOUT: %no_op.loc8_24.3: init %empty_tuple.type = call %bound_method.loc8_24.3(%addr.loc8_24.3) -// CHECK:STDOUT: %Op.bound.loc7_35.4: = bound_method %.loc7_35.1, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.19: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc7_35.5: = bound_method %.loc7_35.1, %Op.specific_fn.19 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8_24.3: init %empty_tuple.type = call %bound_method.loc8_24.3(%addr.loc8_24.3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc7_35.4: = bound_method %.loc7_35.1, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.19: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc7_35.5: = bound_method %.loc7_35.1, %T.as.Destroy.impl.Op.specific_fn.19 // CHECK:STDOUT: %addr.loc7_35.4: %ptr.f29 = addr_of %.loc7_35.1 -// CHECK:STDOUT: %no_op.loc7_35.4: init %empty_tuple.type = call %bound_method.loc7_35.5(%addr.loc7_35.4) -// CHECK:STDOUT: %Op.bound.loc7_24.4: = bound_method %.loc7_24.2, constants.%Op.ae6 -// CHECK:STDOUT: %Op.specific_fn.20: = specific_function constants.%Op.ae6, @Op.1(constants.%C.b00) [concrete = constants.%Op.specific_fn.e42] -// CHECK:STDOUT: %bound_method.loc7_24.4: = bound_method %.loc7_24.2, %Op.specific_fn.20 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc7_35.4: init %empty_tuple.type = call %bound_method.loc7_35.5(%addr.loc7_35.4) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc7_24.4: = bound_method %.loc7_24.2, constants.%T.as.Destroy.impl.Op.ae6 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.20: = specific_function constants.%T.as.Destroy.impl.Op.ae6, @T.as.Destroy.impl.Op(constants.%C.b00) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.e42] +// CHECK:STDOUT: %bound_method.loc7_24.4: = bound_method %.loc7_24.2, %T.as.Destroy.impl.Op.specific_fn.20 // CHECK:STDOUT: %addr.loc7_24.4: %ptr.697 = addr_of %.loc7_24.2 -// CHECK:STDOUT: %no_op.loc7_24.4: init %empty_tuple.type = call %bound_method.loc7_24.4(%addr.loc7_24.4) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc7_24.4: init %empty_tuple.type = call %bound_method.loc7_24.4(%addr.loc7_24.4) // CHECK:STDOUT: return %.loc10_35.2 to %return // CHECK:STDOUT: // CHECK:STDOUT: !if.else.loc10: @@ -1292,74 +1292,74 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %P.ref.loc11: = name_ref P, imports.%P [concrete = imports.%P] // CHECK:STDOUT: %C.ref.loc11: %C.type = name_ref C, imports.%P.C [concrete = constants.%C.generic] // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete = constants.%int_4.0c1] -// CHECK:STDOUT: %impl.elem0.loc11_34: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc11_34.1: = bound_method %int_4, %impl.elem0.loc11_34 [concrete = constants.%Convert.bound.ac3] -// CHECK:STDOUT: %specific_fn.loc11: = specific_function %impl.elem0.loc11_34, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc11_34: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc11_34.1: = bound_method %int_4, %impl.elem0.loc11_34 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ac3] +// CHECK:STDOUT: %specific_fn.loc11: = specific_function %impl.elem0.loc11_34, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc11_34.2: = bound_method %int_4, %specific_fn.loc11 [concrete = constants.%bound_method.1da] -// CHECK:STDOUT: %int.convert_checked.loc11: init %i32 = call %bound_method.loc11_34.2(%int_4) [concrete = constants.%int_4.940] -// CHECK:STDOUT: %.loc11_34.1: %i32 = value_of_initializer %int.convert_checked.loc11 [concrete = constants.%int_4.940] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc11: init %i32 = call %bound_method.loc11_34.2(%int_4) [concrete = constants.%int_4.940] +// CHECK:STDOUT: %.loc11_34.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc11 [concrete = constants.%int_4.940] // CHECK:STDOUT: %.loc11_34.2: %i32 = converted %int_4, %.loc11_34.1 [concrete = constants.%int_4.940] // CHECK:STDOUT: %C.loc11: type = class_type @C, @C(constants.%int_4.940) [concrete = constants.%C.89d] // CHECK:STDOUT: %.loc11_24.2: ref %C.89d = temporary_storage // CHECK:STDOUT: %.loc11_24.3: init %C.89d = class_init (), %.loc11_24.2 [concrete = constants.%C.val.1dd] // CHECK:STDOUT: %.loc11_24.4: ref %C.89d = temporary %.loc11_24.2, %.loc11_24.3 // CHECK:STDOUT: %.loc11_26.1: ref %C.89d = converted %.loc11_24.1, %.loc11_24.4 -// CHECK:STDOUT: %impl.elem0.loc11_35: %.26e = impl_witness_access constants.%ImplicitAs.impl_witness.16c, element0 [concrete = constants.%Convert.009] +// CHECK:STDOUT: %impl.elem0.loc11_35: %.26e = impl_witness_access constants.%ImplicitAs.impl_witness.16c, element0 [concrete = constants.%C.as.ImplicitAs.impl.Convert.009] // CHECK:STDOUT: %bound_method.loc11_35.1: = bound_method %.loc11_26.1, %impl.elem0.loc11_35 // CHECK:STDOUT: %.loc11_35.1: ref %D = temporary_storage // CHECK:STDOUT: %.loc11_26.2: %C.89d = bind_value %.loc11_26.1 -// CHECK:STDOUT: %Convert.call.loc11: init %D = call %bound_method.loc11_35.1(%.loc11_26.2) to %.loc11_35.1 -// CHECK:STDOUT: %.loc11_35.2: init %D = converted %.loc11_26.1, %Convert.call.loc11 -// CHECK:STDOUT: %Op.bound.loc11_35.1: = bound_method %.loc11_35.1, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.21: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc11_35.2: = bound_method %.loc11_35.1, %Op.specific_fn.21 +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.call.loc11: init %D = call %bound_method.loc11_35.1(%.loc11_26.2) to %.loc11_35.1 +// CHECK:STDOUT: %.loc11_35.2: init %D = converted %.loc11_26.1, %C.as.ImplicitAs.impl.Convert.call.loc11 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc11_35.1: = bound_method %.loc11_35.1, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.21: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc11_35.2: = bound_method %.loc11_35.1, %T.as.Destroy.impl.Op.specific_fn.21 // CHECK:STDOUT: %addr.loc11_35.1: %ptr.f29 = addr_of %.loc11_35.1 -// CHECK:STDOUT: %no_op.loc11_35.1: init %empty_tuple.type = call %bound_method.loc11_35.2(%addr.loc11_35.1) -// CHECK:STDOUT: %Op.bound.loc11_24.1: = bound_method %.loc11_24.2, constants.%Op.6b4 -// CHECK:STDOUT: %Op.specific_fn.22: = specific_function constants.%Op.6b4, @Op.1(constants.%C.89d) [concrete = constants.%Op.specific_fn.357] -// CHECK:STDOUT: %bound_method.loc11_24.1: = bound_method %.loc11_24.2, %Op.specific_fn.22 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc11_35.1: init %empty_tuple.type = call %bound_method.loc11_35.2(%addr.loc11_35.1) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc11_24.1: = bound_method %.loc11_24.2, constants.%T.as.Destroy.impl.Op.6b4 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.22: = specific_function constants.%T.as.Destroy.impl.Op.6b4, @T.as.Destroy.impl.Op(constants.%C.89d) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.357] +// CHECK:STDOUT: %bound_method.loc11_24.1: = bound_method %.loc11_24.2, %T.as.Destroy.impl.Op.specific_fn.22 // CHECK:STDOUT: %addr.loc11_24.1: %ptr.c28b = addr_of %.loc11_24.2 -// CHECK:STDOUT: %no_op.loc11_24.1: init %empty_tuple.type = call %bound_method.loc11_24.1(%addr.loc11_24.1) -// CHECK:STDOUT: %Op.bound.loc10_35.2: = bound_method %.loc10_35.1, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.23: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc10_35.3: = bound_method %.loc10_35.1, %Op.specific_fn.23 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc11_24.1: init %empty_tuple.type = call %bound_method.loc11_24.1(%addr.loc11_24.1) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10_35.2: = bound_method %.loc10_35.1, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.23: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc10_35.3: = bound_method %.loc10_35.1, %T.as.Destroy.impl.Op.specific_fn.23 // CHECK:STDOUT: %addr.loc10_35.2: %ptr.f29 = addr_of %.loc10_35.1 -// CHECK:STDOUT: %no_op.loc10_35.2: init %empty_tuple.type = call %bound_method.loc10_35.3(%addr.loc10_35.2) -// CHECK:STDOUT: %Op.bound.loc10_24.2: = bound_method %.loc10_24.2, constants.%Op.9cf -// CHECK:STDOUT: %Op.specific_fn.24: = specific_function constants.%Op.9cf, @Op.1(constants.%C.7ac) [concrete = constants.%Op.specific_fn.694] -// CHECK:STDOUT: %bound_method.loc10_24.2: = bound_method %.loc10_24.2, %Op.specific_fn.24 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10_35.2: init %empty_tuple.type = call %bound_method.loc10_35.3(%addr.loc10_35.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10_24.2: = bound_method %.loc10_24.2, constants.%T.as.Destroy.impl.Op.9cf +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.24: = specific_function constants.%T.as.Destroy.impl.Op.9cf, @T.as.Destroy.impl.Op(constants.%C.7ac) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.694] +// CHECK:STDOUT: %bound_method.loc10_24.2: = bound_method %.loc10_24.2, %T.as.Destroy.impl.Op.specific_fn.24 // CHECK:STDOUT: %addr.loc10_24.2: %ptr.2b1 = addr_of %.loc10_24.2 -// CHECK:STDOUT: %no_op.loc10_24.2: init %empty_tuple.type = call %bound_method.loc10_24.2(%addr.loc10_24.2) -// CHECK:STDOUT: %Op.bound.loc9_35.3: = bound_method %.loc9_35.1, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.25: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc9_35.4: = bound_method %.loc9_35.1, %Op.specific_fn.25 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10_24.2: init %empty_tuple.type = call %bound_method.loc10_24.2(%addr.loc10_24.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc9_35.3: = bound_method %.loc9_35.1, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.25: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc9_35.4: = bound_method %.loc9_35.1, %T.as.Destroy.impl.Op.specific_fn.25 // CHECK:STDOUT: %addr.loc9_35.3: %ptr.f29 = addr_of %.loc9_35.1 -// CHECK:STDOUT: %no_op.loc9_35.3: init %empty_tuple.type = call %bound_method.loc9_35.4(%addr.loc9_35.3) -// CHECK:STDOUT: %Op.bound.loc9_24.3: = bound_method %.loc9_24.2, constants.%Op.404 -// CHECK:STDOUT: %Op.specific_fn.26: = specific_function constants.%Op.404, @Op.1(constants.%C.681) [concrete = constants.%Op.specific_fn.822] -// CHECK:STDOUT: %bound_method.loc9_24.3: = bound_method %.loc9_24.2, %Op.specific_fn.26 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc9_35.3: init %empty_tuple.type = call %bound_method.loc9_35.4(%addr.loc9_35.3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc9_24.3: = bound_method %.loc9_24.2, constants.%T.as.Destroy.impl.Op.404 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.26: = specific_function constants.%T.as.Destroy.impl.Op.404, @T.as.Destroy.impl.Op(constants.%C.681) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.822] +// CHECK:STDOUT: %bound_method.loc9_24.3: = bound_method %.loc9_24.2, %T.as.Destroy.impl.Op.specific_fn.26 // CHECK:STDOUT: %addr.loc9_24.3: %ptr.3bd = addr_of %.loc9_24.2 -// CHECK:STDOUT: %no_op.loc9_24.3: init %empty_tuple.type = call %bound_method.loc9_24.3(%addr.loc9_24.3) -// CHECK:STDOUT: %Op.bound.loc8_35.4: = bound_method %.loc8_35.1, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.27: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc8_35.5: = bound_method %.loc8_35.1, %Op.specific_fn.27 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc9_24.3: init %empty_tuple.type = call %bound_method.loc9_24.3(%addr.loc9_24.3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8_35.4: = bound_method %.loc8_35.1, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.27: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc8_35.5: = bound_method %.loc8_35.1, %T.as.Destroy.impl.Op.specific_fn.27 // CHECK:STDOUT: %addr.loc8_35.4: %ptr.f29 = addr_of %.loc8_35.1 -// CHECK:STDOUT: %no_op.loc8_35.4: init %empty_tuple.type = call %bound_method.loc8_35.5(%addr.loc8_35.4) -// CHECK:STDOUT: %Op.bound.loc8_24.4: = bound_method %.loc8_24.2, constants.%Op.ad8 -// CHECK:STDOUT: %Op.specific_fn.28: = specific_function constants.%Op.ad8, @Op.1(constants.%C.674) [concrete = constants.%Op.specific_fn.6b6] -// CHECK:STDOUT: %bound_method.loc8_24.4: = bound_method %.loc8_24.2, %Op.specific_fn.28 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8_35.4: init %empty_tuple.type = call %bound_method.loc8_35.5(%addr.loc8_35.4) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8_24.4: = bound_method %.loc8_24.2, constants.%T.as.Destroy.impl.Op.ad8 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.28: = specific_function constants.%T.as.Destroy.impl.Op.ad8, @T.as.Destroy.impl.Op(constants.%C.674) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.6b6] +// CHECK:STDOUT: %bound_method.loc8_24.4: = bound_method %.loc8_24.2, %T.as.Destroy.impl.Op.specific_fn.28 // CHECK:STDOUT: %addr.loc8_24.4: %ptr.625 = addr_of %.loc8_24.2 -// CHECK:STDOUT: %no_op.loc8_24.4: init %empty_tuple.type = call %bound_method.loc8_24.4(%addr.loc8_24.4) -// CHECK:STDOUT: %Op.bound.loc7_35.5: = bound_method %.loc7_35.1, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.29: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc7_35.6: = bound_method %.loc7_35.1, %Op.specific_fn.29 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8_24.4: init %empty_tuple.type = call %bound_method.loc8_24.4(%addr.loc8_24.4) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc7_35.5: = bound_method %.loc7_35.1, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.29: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc7_35.6: = bound_method %.loc7_35.1, %T.as.Destroy.impl.Op.specific_fn.29 // CHECK:STDOUT: %addr.loc7_35.5: %ptr.f29 = addr_of %.loc7_35.1 -// CHECK:STDOUT: %no_op.loc7_35.5: init %empty_tuple.type = call %bound_method.loc7_35.6(%addr.loc7_35.5) -// CHECK:STDOUT: %Op.bound.loc7_24.5: = bound_method %.loc7_24.2, constants.%Op.ae6 -// CHECK:STDOUT: %Op.specific_fn.30: = specific_function constants.%Op.ae6, @Op.1(constants.%C.b00) [concrete = constants.%Op.specific_fn.e42] -// CHECK:STDOUT: %bound_method.loc7_24.5: = bound_method %.loc7_24.2, %Op.specific_fn.30 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc7_35.5: init %empty_tuple.type = call %bound_method.loc7_35.6(%addr.loc7_35.5) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc7_24.5: = bound_method %.loc7_24.2, constants.%T.as.Destroy.impl.Op.ae6 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.30: = specific_function constants.%T.as.Destroy.impl.Op.ae6, @T.as.Destroy.impl.Op(constants.%C.b00) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.e42] +// CHECK:STDOUT: %bound_method.loc7_24.5: = bound_method %.loc7_24.2, %T.as.Destroy.impl.Op.specific_fn.30 // CHECK:STDOUT: %addr.loc7_24.5: %ptr.697 = addr_of %.loc7_24.2 -// CHECK:STDOUT: %no_op.loc7_24.5: init %empty_tuple.type = call %bound_method.loc7_24.5(%addr.loc7_24.5) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc7_24.5: init %empty_tuple.type = call %bound_method.loc7_24.5(%addr.loc7_24.5) // CHECK:STDOUT: return %.loc11_35.2 to %return // CHECK:STDOUT: // CHECK:STDOUT: !if.else.loc11: @@ -1371,84 +1371,84 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %P.ref.loc12: = name_ref P, imports.%P [concrete = imports.%P] // CHECK:STDOUT: %C.ref.loc12: %C.type = name_ref C, imports.%P.C [concrete = constants.%C.generic] // CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [concrete = constants.%int_5.64b] -// CHECK:STDOUT: %impl.elem0.loc12_34: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc12_34.1: = bound_method %int_5, %impl.elem0.loc12_34 [concrete = constants.%Convert.bound.4e6] -// CHECK:STDOUT: %specific_fn.loc12: = specific_function %impl.elem0.loc12_34, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc12_34: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc12_34.1: = bound_method %int_5, %impl.elem0.loc12_34 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.4e6] +// CHECK:STDOUT: %specific_fn.loc12: = specific_function %impl.elem0.loc12_34, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc12_34.2: = bound_method %int_5, %specific_fn.loc12 [concrete = constants.%bound_method.a25] -// CHECK:STDOUT: %int.convert_checked.loc12: init %i32 = call %bound_method.loc12_34.2(%int_5) [concrete = constants.%int_5.0f6] -// CHECK:STDOUT: %.loc12_34.1: %i32 = value_of_initializer %int.convert_checked.loc12 [concrete = constants.%int_5.0f6] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc12: init %i32 = call %bound_method.loc12_34.2(%int_5) [concrete = constants.%int_5.0f6] +// CHECK:STDOUT: %.loc12_34.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc12 [concrete = constants.%int_5.0f6] // CHECK:STDOUT: %.loc12_34.2: %i32 = converted %int_5, %.loc12_34.1 [concrete = constants.%int_5.0f6] // CHECK:STDOUT: %C.loc12: type = class_type @C, @C(constants.%int_5.0f6) [concrete = constants.%C.f0a] // CHECK:STDOUT: %.loc12_24.2: ref %C.f0a = temporary_storage // CHECK:STDOUT: %.loc12_24.3: init %C.f0a = class_init (), %.loc12_24.2 [concrete = constants.%C.val.a4a] // CHECK:STDOUT: %.loc12_24.4: ref %C.f0a = temporary %.loc12_24.2, %.loc12_24.3 // CHECK:STDOUT: %.loc12_26.1: ref %C.f0a = converted %.loc12_24.1, %.loc12_24.4 -// CHECK:STDOUT: %impl.elem0.loc12_35: %.eaf = impl_witness_access constants.%ImplicitAs.impl_witness.aa9, element0 [concrete = constants.%Convert.b66] +// CHECK:STDOUT: %impl.elem0.loc12_35: %.eaf = impl_witness_access constants.%ImplicitAs.impl_witness.aa9, element0 [concrete = constants.%C.as.ImplicitAs.impl.Convert.b66] // CHECK:STDOUT: %bound_method.loc12_35.1: = bound_method %.loc12_26.1, %impl.elem0.loc12_35 // CHECK:STDOUT: %.loc12_35.1: ref %D = temporary_storage // CHECK:STDOUT: %.loc12_26.2: %C.f0a = bind_value %.loc12_26.1 -// CHECK:STDOUT: %Convert.call.loc12: init %D = call %bound_method.loc12_35.1(%.loc12_26.2) to %.loc12_35.1 -// CHECK:STDOUT: %.loc12_35.2: init %D = converted %.loc12_26.1, %Convert.call.loc12 -// CHECK:STDOUT: %Op.bound.loc12_35.1: = bound_method %.loc12_35.1, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.31: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc12_35.2: = bound_method %.loc12_35.1, %Op.specific_fn.31 +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.call.loc12: init %D = call %bound_method.loc12_35.1(%.loc12_26.2) to %.loc12_35.1 +// CHECK:STDOUT: %.loc12_35.2: init %D = converted %.loc12_26.1, %C.as.ImplicitAs.impl.Convert.call.loc12 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc12_35.1: = bound_method %.loc12_35.1, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.31: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc12_35.2: = bound_method %.loc12_35.1, %T.as.Destroy.impl.Op.specific_fn.31 // CHECK:STDOUT: %addr.loc12_35.1: %ptr.f29 = addr_of %.loc12_35.1 -// CHECK:STDOUT: %no_op.loc12_35.1: init %empty_tuple.type = call %bound_method.loc12_35.2(%addr.loc12_35.1) -// CHECK:STDOUT: %Op.bound.loc12_24.1: = bound_method %.loc12_24.2, constants.%Op.985 -// CHECK:STDOUT: %Op.specific_fn.32: = specific_function constants.%Op.985, @Op.1(constants.%C.f0a) [concrete = constants.%Op.specific_fn.a66] -// CHECK:STDOUT: %bound_method.loc12_24.1: = bound_method %.loc12_24.2, %Op.specific_fn.32 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc12_35.1: init %empty_tuple.type = call %bound_method.loc12_35.2(%addr.loc12_35.1) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc12_24.1: = bound_method %.loc12_24.2, constants.%T.as.Destroy.impl.Op.985 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.32: = specific_function constants.%T.as.Destroy.impl.Op.985, @T.as.Destroy.impl.Op(constants.%C.f0a) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.a66] +// CHECK:STDOUT: %bound_method.loc12_24.1: = bound_method %.loc12_24.2, %T.as.Destroy.impl.Op.specific_fn.32 // CHECK:STDOUT: %addr.loc12_24.1: %ptr.24c = addr_of %.loc12_24.2 -// CHECK:STDOUT: %no_op.loc12_24.1: init %empty_tuple.type = call %bound_method.loc12_24.1(%addr.loc12_24.1) -// CHECK:STDOUT: %Op.bound.loc11_35.2: = bound_method %.loc11_35.1, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.33: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc11_35.3: = bound_method %.loc11_35.1, %Op.specific_fn.33 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc12_24.1: init %empty_tuple.type = call %bound_method.loc12_24.1(%addr.loc12_24.1) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc11_35.2: = bound_method %.loc11_35.1, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.33: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc11_35.3: = bound_method %.loc11_35.1, %T.as.Destroy.impl.Op.specific_fn.33 // CHECK:STDOUT: %addr.loc11_35.2: %ptr.f29 = addr_of %.loc11_35.1 -// CHECK:STDOUT: %no_op.loc11_35.2: init %empty_tuple.type = call %bound_method.loc11_35.3(%addr.loc11_35.2) -// CHECK:STDOUT: %Op.bound.loc11_24.2: = bound_method %.loc11_24.2, constants.%Op.6b4 -// CHECK:STDOUT: %Op.specific_fn.34: = specific_function constants.%Op.6b4, @Op.1(constants.%C.89d) [concrete = constants.%Op.specific_fn.357] -// CHECK:STDOUT: %bound_method.loc11_24.2: = bound_method %.loc11_24.2, %Op.specific_fn.34 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc11_35.2: init %empty_tuple.type = call %bound_method.loc11_35.3(%addr.loc11_35.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc11_24.2: = bound_method %.loc11_24.2, constants.%T.as.Destroy.impl.Op.6b4 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.34: = specific_function constants.%T.as.Destroy.impl.Op.6b4, @T.as.Destroy.impl.Op(constants.%C.89d) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.357] +// CHECK:STDOUT: %bound_method.loc11_24.2: = bound_method %.loc11_24.2, %T.as.Destroy.impl.Op.specific_fn.34 // CHECK:STDOUT: %addr.loc11_24.2: %ptr.c28b = addr_of %.loc11_24.2 -// CHECK:STDOUT: %no_op.loc11_24.2: init %empty_tuple.type = call %bound_method.loc11_24.2(%addr.loc11_24.2) -// CHECK:STDOUT: %Op.bound.loc10_35.3: = bound_method %.loc10_35.1, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.35: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc10_35.4: = bound_method %.loc10_35.1, %Op.specific_fn.35 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc11_24.2: init %empty_tuple.type = call %bound_method.loc11_24.2(%addr.loc11_24.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10_35.3: = bound_method %.loc10_35.1, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.35: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc10_35.4: = bound_method %.loc10_35.1, %T.as.Destroy.impl.Op.specific_fn.35 // CHECK:STDOUT: %addr.loc10_35.3: %ptr.f29 = addr_of %.loc10_35.1 -// CHECK:STDOUT: %no_op.loc10_35.3: init %empty_tuple.type = call %bound_method.loc10_35.4(%addr.loc10_35.3) -// CHECK:STDOUT: %Op.bound.loc10_24.3: = bound_method %.loc10_24.2, constants.%Op.9cf -// CHECK:STDOUT: %Op.specific_fn.36: = specific_function constants.%Op.9cf, @Op.1(constants.%C.7ac) [concrete = constants.%Op.specific_fn.694] -// CHECK:STDOUT: %bound_method.loc10_24.3: = bound_method %.loc10_24.2, %Op.specific_fn.36 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10_35.3: init %empty_tuple.type = call %bound_method.loc10_35.4(%addr.loc10_35.3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10_24.3: = bound_method %.loc10_24.2, constants.%T.as.Destroy.impl.Op.9cf +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.36: = specific_function constants.%T.as.Destroy.impl.Op.9cf, @T.as.Destroy.impl.Op(constants.%C.7ac) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.694] +// CHECK:STDOUT: %bound_method.loc10_24.3: = bound_method %.loc10_24.2, %T.as.Destroy.impl.Op.specific_fn.36 // CHECK:STDOUT: %addr.loc10_24.3: %ptr.2b1 = addr_of %.loc10_24.2 -// CHECK:STDOUT: %no_op.loc10_24.3: init %empty_tuple.type = call %bound_method.loc10_24.3(%addr.loc10_24.3) -// CHECK:STDOUT: %Op.bound.loc9_35.4: = bound_method %.loc9_35.1, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.37: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc9_35.5: = bound_method %.loc9_35.1, %Op.specific_fn.37 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10_24.3: init %empty_tuple.type = call %bound_method.loc10_24.3(%addr.loc10_24.3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc9_35.4: = bound_method %.loc9_35.1, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.37: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc9_35.5: = bound_method %.loc9_35.1, %T.as.Destroy.impl.Op.specific_fn.37 // CHECK:STDOUT: %addr.loc9_35.4: %ptr.f29 = addr_of %.loc9_35.1 -// CHECK:STDOUT: %no_op.loc9_35.4: init %empty_tuple.type = call %bound_method.loc9_35.5(%addr.loc9_35.4) -// CHECK:STDOUT: %Op.bound.loc9_24.4: = bound_method %.loc9_24.2, constants.%Op.404 -// CHECK:STDOUT: %Op.specific_fn.38: = specific_function constants.%Op.404, @Op.1(constants.%C.681) [concrete = constants.%Op.specific_fn.822] -// CHECK:STDOUT: %bound_method.loc9_24.4: = bound_method %.loc9_24.2, %Op.specific_fn.38 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc9_35.4: init %empty_tuple.type = call %bound_method.loc9_35.5(%addr.loc9_35.4) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc9_24.4: = bound_method %.loc9_24.2, constants.%T.as.Destroy.impl.Op.404 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.38: = specific_function constants.%T.as.Destroy.impl.Op.404, @T.as.Destroy.impl.Op(constants.%C.681) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.822] +// CHECK:STDOUT: %bound_method.loc9_24.4: = bound_method %.loc9_24.2, %T.as.Destroy.impl.Op.specific_fn.38 // CHECK:STDOUT: %addr.loc9_24.4: %ptr.3bd = addr_of %.loc9_24.2 -// CHECK:STDOUT: %no_op.loc9_24.4: init %empty_tuple.type = call %bound_method.loc9_24.4(%addr.loc9_24.4) -// CHECK:STDOUT: %Op.bound.loc8_35.5: = bound_method %.loc8_35.1, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.39: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc8_35.6: = bound_method %.loc8_35.1, %Op.specific_fn.39 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc9_24.4: init %empty_tuple.type = call %bound_method.loc9_24.4(%addr.loc9_24.4) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8_35.5: = bound_method %.loc8_35.1, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.39: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc8_35.6: = bound_method %.loc8_35.1, %T.as.Destroy.impl.Op.specific_fn.39 // CHECK:STDOUT: %addr.loc8_35.5: %ptr.f29 = addr_of %.loc8_35.1 -// CHECK:STDOUT: %no_op.loc8_35.5: init %empty_tuple.type = call %bound_method.loc8_35.6(%addr.loc8_35.5) -// CHECK:STDOUT: %Op.bound.loc8_24.5: = bound_method %.loc8_24.2, constants.%Op.ad8 -// CHECK:STDOUT: %Op.specific_fn.40: = specific_function constants.%Op.ad8, @Op.1(constants.%C.674) [concrete = constants.%Op.specific_fn.6b6] -// CHECK:STDOUT: %bound_method.loc8_24.5: = bound_method %.loc8_24.2, %Op.specific_fn.40 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8_35.5: init %empty_tuple.type = call %bound_method.loc8_35.6(%addr.loc8_35.5) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8_24.5: = bound_method %.loc8_24.2, constants.%T.as.Destroy.impl.Op.ad8 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.40: = specific_function constants.%T.as.Destroy.impl.Op.ad8, @T.as.Destroy.impl.Op(constants.%C.674) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.6b6] +// CHECK:STDOUT: %bound_method.loc8_24.5: = bound_method %.loc8_24.2, %T.as.Destroy.impl.Op.specific_fn.40 // CHECK:STDOUT: %addr.loc8_24.5: %ptr.625 = addr_of %.loc8_24.2 -// CHECK:STDOUT: %no_op.loc8_24.5: init %empty_tuple.type = call %bound_method.loc8_24.5(%addr.loc8_24.5) -// CHECK:STDOUT: %Op.bound.loc7_35.6: = bound_method %.loc7_35.1, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.41: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc7_35.7: = bound_method %.loc7_35.1, %Op.specific_fn.41 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8_24.5: init %empty_tuple.type = call %bound_method.loc8_24.5(%addr.loc8_24.5) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc7_35.6: = bound_method %.loc7_35.1, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.41: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc7_35.7: = bound_method %.loc7_35.1, %T.as.Destroy.impl.Op.specific_fn.41 // CHECK:STDOUT: %addr.loc7_35.6: %ptr.f29 = addr_of %.loc7_35.1 -// CHECK:STDOUT: %no_op.loc7_35.6: init %empty_tuple.type = call %bound_method.loc7_35.7(%addr.loc7_35.6) -// CHECK:STDOUT: %Op.bound.loc7_24.6: = bound_method %.loc7_24.2, constants.%Op.ae6 -// CHECK:STDOUT: %Op.specific_fn.42: = specific_function constants.%Op.ae6, @Op.1(constants.%C.b00) [concrete = constants.%Op.specific_fn.e42] -// CHECK:STDOUT: %bound_method.loc7_24.6: = bound_method %.loc7_24.2, %Op.specific_fn.42 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc7_35.6: init %empty_tuple.type = call %bound_method.loc7_35.7(%addr.loc7_35.6) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc7_24.6: = bound_method %.loc7_24.2, constants.%T.as.Destroy.impl.Op.ae6 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.42: = specific_function constants.%T.as.Destroy.impl.Op.ae6, @T.as.Destroy.impl.Op(constants.%C.b00) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.e42] +// CHECK:STDOUT: %bound_method.loc7_24.6: = bound_method %.loc7_24.2, %T.as.Destroy.impl.Op.specific_fn.42 // CHECK:STDOUT: %addr.loc7_24.6: %ptr.697 = addr_of %.loc7_24.2 -// CHECK:STDOUT: %no_op.loc7_24.6: init %empty_tuple.type = call %bound_method.loc7_24.6(%addr.loc7_24.6) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc7_24.6: init %empty_tuple.type = call %bound_method.loc7_24.6(%addr.loc7_24.6) // CHECK:STDOUT: return %.loc12_35.2 to %return // CHECK:STDOUT: // CHECK:STDOUT: !if.else.loc12: @@ -1460,94 +1460,94 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %P.ref.loc13: = name_ref P, imports.%P [concrete = imports.%P] // CHECK:STDOUT: %C.ref.loc13: %C.type = name_ref C, imports.%P.C [concrete = constants.%C.generic] // CHECK:STDOUT: %int_6: Core.IntLiteral = int_value 6 [concrete = constants.%int_6.462] -// CHECK:STDOUT: %impl.elem0.loc13_34: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc13_34.1: = bound_method %int_6, %impl.elem0.loc13_34 [concrete = constants.%Convert.bound.ce9] -// CHECK:STDOUT: %specific_fn.loc13: = specific_function %impl.elem0.loc13_34, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc13_34: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc13_34.1: = bound_method %int_6, %impl.elem0.loc13_34 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ce9] +// CHECK:STDOUT: %specific_fn.loc13: = specific_function %impl.elem0.loc13_34, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc13_34.2: = bound_method %int_6, %specific_fn.loc13 [concrete = constants.%bound_method.efa] -// CHECK:STDOUT: %int.convert_checked.loc13: init %i32 = call %bound_method.loc13_34.2(%int_6) [concrete = constants.%int_6.e56] -// CHECK:STDOUT: %.loc13_34.1: %i32 = value_of_initializer %int.convert_checked.loc13 [concrete = constants.%int_6.e56] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc13: init %i32 = call %bound_method.loc13_34.2(%int_6) [concrete = constants.%int_6.e56] +// CHECK:STDOUT: %.loc13_34.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc13 [concrete = constants.%int_6.e56] // CHECK:STDOUT: %.loc13_34.2: %i32 = converted %int_6, %.loc13_34.1 [concrete = constants.%int_6.e56] // CHECK:STDOUT: %C.loc13: type = class_type @C, @C(constants.%int_6.e56) [concrete = constants.%C.c60] // CHECK:STDOUT: %.loc13_24.2: ref %C.c60 = temporary_storage // CHECK:STDOUT: %.loc13_24.3: init %C.c60 = class_init (), %.loc13_24.2 [concrete = constants.%C.val.a4b] // CHECK:STDOUT: %.loc13_24.4: ref %C.c60 = temporary %.loc13_24.2, %.loc13_24.3 // CHECK:STDOUT: %.loc13_26.1: ref %C.c60 = converted %.loc13_24.1, %.loc13_24.4 -// CHECK:STDOUT: %impl.elem0.loc13_35: %.874 = impl_witness_access constants.%ImplicitAs.impl_witness.e4d, element0 [concrete = constants.%Convert.f59] +// CHECK:STDOUT: %impl.elem0.loc13_35: %.874 = impl_witness_access constants.%ImplicitAs.impl_witness.e4d, element0 [concrete = constants.%C.as.ImplicitAs.impl.Convert.f59] // CHECK:STDOUT: %bound_method.loc13_35.1: = bound_method %.loc13_26.1, %impl.elem0.loc13_35 // CHECK:STDOUT: %.loc13_35.1: ref %D = temporary_storage // CHECK:STDOUT: %.loc13_26.2: %C.c60 = bind_value %.loc13_26.1 -// CHECK:STDOUT: %Convert.call.loc13: init %D = call %bound_method.loc13_35.1(%.loc13_26.2) to %.loc13_35.1 -// CHECK:STDOUT: %.loc13_35.2: init %D = converted %.loc13_26.1, %Convert.call.loc13 -// CHECK:STDOUT: %Op.bound.loc13_35.1: = bound_method %.loc13_35.1, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.43: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc13_35.2: = bound_method %.loc13_35.1, %Op.specific_fn.43 +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.call.loc13: init %D = call %bound_method.loc13_35.1(%.loc13_26.2) to %.loc13_35.1 +// CHECK:STDOUT: %.loc13_35.2: init %D = converted %.loc13_26.1, %C.as.ImplicitAs.impl.Convert.call.loc13 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc13_35.1: = bound_method %.loc13_35.1, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.43: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc13_35.2: = bound_method %.loc13_35.1, %T.as.Destroy.impl.Op.specific_fn.43 // CHECK:STDOUT: %addr.loc13_35.1: %ptr.f29 = addr_of %.loc13_35.1 -// CHECK:STDOUT: %no_op.loc13_35.1: init %empty_tuple.type = call %bound_method.loc13_35.2(%addr.loc13_35.1) -// CHECK:STDOUT: %Op.bound.loc13_24.1: = bound_method %.loc13_24.2, constants.%Op.ca5 -// CHECK:STDOUT: %Op.specific_fn.44: = specific_function constants.%Op.ca5, @Op.1(constants.%C.c60) [concrete = constants.%Op.specific_fn.8d0] -// CHECK:STDOUT: %bound_method.loc13_24.1: = bound_method %.loc13_24.2, %Op.specific_fn.44 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc13_35.1: init %empty_tuple.type = call %bound_method.loc13_35.2(%addr.loc13_35.1) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc13_24.1: = bound_method %.loc13_24.2, constants.%T.as.Destroy.impl.Op.ca5 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.44: = specific_function constants.%T.as.Destroy.impl.Op.ca5, @T.as.Destroy.impl.Op(constants.%C.c60) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.8d0] +// CHECK:STDOUT: %bound_method.loc13_24.1: = bound_method %.loc13_24.2, %T.as.Destroy.impl.Op.specific_fn.44 // CHECK:STDOUT: %addr.loc13_24.1: %ptr.b5e = addr_of %.loc13_24.2 -// CHECK:STDOUT: %no_op.loc13_24.1: init %empty_tuple.type = call %bound_method.loc13_24.1(%addr.loc13_24.1) -// CHECK:STDOUT: %Op.bound.loc12_35.2: = bound_method %.loc12_35.1, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.45: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc12_35.3: = bound_method %.loc12_35.1, %Op.specific_fn.45 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc13_24.1: init %empty_tuple.type = call %bound_method.loc13_24.1(%addr.loc13_24.1) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc12_35.2: = bound_method %.loc12_35.1, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.45: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc12_35.3: = bound_method %.loc12_35.1, %T.as.Destroy.impl.Op.specific_fn.45 // CHECK:STDOUT: %addr.loc12_35.2: %ptr.f29 = addr_of %.loc12_35.1 -// CHECK:STDOUT: %no_op.loc12_35.2: init %empty_tuple.type = call %bound_method.loc12_35.3(%addr.loc12_35.2) -// CHECK:STDOUT: %Op.bound.loc12_24.2: = bound_method %.loc12_24.2, constants.%Op.985 -// CHECK:STDOUT: %Op.specific_fn.46: = specific_function constants.%Op.985, @Op.1(constants.%C.f0a) [concrete = constants.%Op.specific_fn.a66] -// CHECK:STDOUT: %bound_method.loc12_24.2: = bound_method %.loc12_24.2, %Op.specific_fn.46 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc12_35.2: init %empty_tuple.type = call %bound_method.loc12_35.3(%addr.loc12_35.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc12_24.2: = bound_method %.loc12_24.2, constants.%T.as.Destroy.impl.Op.985 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.46: = specific_function constants.%T.as.Destroy.impl.Op.985, @T.as.Destroy.impl.Op(constants.%C.f0a) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.a66] +// CHECK:STDOUT: %bound_method.loc12_24.2: = bound_method %.loc12_24.2, %T.as.Destroy.impl.Op.specific_fn.46 // CHECK:STDOUT: %addr.loc12_24.2: %ptr.24c = addr_of %.loc12_24.2 -// CHECK:STDOUT: %no_op.loc12_24.2: init %empty_tuple.type = call %bound_method.loc12_24.2(%addr.loc12_24.2) -// CHECK:STDOUT: %Op.bound.loc11_35.3: = bound_method %.loc11_35.1, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.47: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc11_35.4: = bound_method %.loc11_35.1, %Op.specific_fn.47 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc12_24.2: init %empty_tuple.type = call %bound_method.loc12_24.2(%addr.loc12_24.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc11_35.3: = bound_method %.loc11_35.1, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.47: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc11_35.4: = bound_method %.loc11_35.1, %T.as.Destroy.impl.Op.specific_fn.47 // CHECK:STDOUT: %addr.loc11_35.3: %ptr.f29 = addr_of %.loc11_35.1 -// CHECK:STDOUT: %no_op.loc11_35.3: init %empty_tuple.type = call %bound_method.loc11_35.4(%addr.loc11_35.3) -// CHECK:STDOUT: %Op.bound.loc11_24.3: = bound_method %.loc11_24.2, constants.%Op.6b4 -// CHECK:STDOUT: %Op.specific_fn.48: = specific_function constants.%Op.6b4, @Op.1(constants.%C.89d) [concrete = constants.%Op.specific_fn.357] -// CHECK:STDOUT: %bound_method.loc11_24.3: = bound_method %.loc11_24.2, %Op.specific_fn.48 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc11_35.3: init %empty_tuple.type = call %bound_method.loc11_35.4(%addr.loc11_35.3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc11_24.3: = bound_method %.loc11_24.2, constants.%T.as.Destroy.impl.Op.6b4 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.48: = specific_function constants.%T.as.Destroy.impl.Op.6b4, @T.as.Destroy.impl.Op(constants.%C.89d) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.357] +// CHECK:STDOUT: %bound_method.loc11_24.3: = bound_method %.loc11_24.2, %T.as.Destroy.impl.Op.specific_fn.48 // CHECK:STDOUT: %addr.loc11_24.3: %ptr.c28b = addr_of %.loc11_24.2 -// CHECK:STDOUT: %no_op.loc11_24.3: init %empty_tuple.type = call %bound_method.loc11_24.3(%addr.loc11_24.3) -// CHECK:STDOUT: %Op.bound.loc10_35.4: = bound_method %.loc10_35.1, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.49: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc10_35.5: = bound_method %.loc10_35.1, %Op.specific_fn.49 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc11_24.3: init %empty_tuple.type = call %bound_method.loc11_24.3(%addr.loc11_24.3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10_35.4: = bound_method %.loc10_35.1, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.49: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc10_35.5: = bound_method %.loc10_35.1, %T.as.Destroy.impl.Op.specific_fn.49 // CHECK:STDOUT: %addr.loc10_35.4: %ptr.f29 = addr_of %.loc10_35.1 -// CHECK:STDOUT: %no_op.loc10_35.4: init %empty_tuple.type = call %bound_method.loc10_35.5(%addr.loc10_35.4) -// CHECK:STDOUT: %Op.bound.loc10_24.4: = bound_method %.loc10_24.2, constants.%Op.9cf -// CHECK:STDOUT: %Op.specific_fn.50: = specific_function constants.%Op.9cf, @Op.1(constants.%C.7ac) [concrete = constants.%Op.specific_fn.694] -// CHECK:STDOUT: %bound_method.loc10_24.4: = bound_method %.loc10_24.2, %Op.specific_fn.50 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10_35.4: init %empty_tuple.type = call %bound_method.loc10_35.5(%addr.loc10_35.4) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10_24.4: = bound_method %.loc10_24.2, constants.%T.as.Destroy.impl.Op.9cf +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.50: = specific_function constants.%T.as.Destroy.impl.Op.9cf, @T.as.Destroy.impl.Op(constants.%C.7ac) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.694] +// CHECK:STDOUT: %bound_method.loc10_24.4: = bound_method %.loc10_24.2, %T.as.Destroy.impl.Op.specific_fn.50 // CHECK:STDOUT: %addr.loc10_24.4: %ptr.2b1 = addr_of %.loc10_24.2 -// CHECK:STDOUT: %no_op.loc10_24.4: init %empty_tuple.type = call %bound_method.loc10_24.4(%addr.loc10_24.4) -// CHECK:STDOUT: %Op.bound.loc9_35.5: = bound_method %.loc9_35.1, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.51: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc9_35.6: = bound_method %.loc9_35.1, %Op.specific_fn.51 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10_24.4: init %empty_tuple.type = call %bound_method.loc10_24.4(%addr.loc10_24.4) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc9_35.5: = bound_method %.loc9_35.1, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.51: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc9_35.6: = bound_method %.loc9_35.1, %T.as.Destroy.impl.Op.specific_fn.51 // CHECK:STDOUT: %addr.loc9_35.5: %ptr.f29 = addr_of %.loc9_35.1 -// CHECK:STDOUT: %no_op.loc9_35.5: init %empty_tuple.type = call %bound_method.loc9_35.6(%addr.loc9_35.5) -// CHECK:STDOUT: %Op.bound.loc9_24.5: = bound_method %.loc9_24.2, constants.%Op.404 -// CHECK:STDOUT: %Op.specific_fn.52: = specific_function constants.%Op.404, @Op.1(constants.%C.681) [concrete = constants.%Op.specific_fn.822] -// CHECK:STDOUT: %bound_method.loc9_24.5: = bound_method %.loc9_24.2, %Op.specific_fn.52 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc9_35.5: init %empty_tuple.type = call %bound_method.loc9_35.6(%addr.loc9_35.5) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc9_24.5: = bound_method %.loc9_24.2, constants.%T.as.Destroy.impl.Op.404 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.52: = specific_function constants.%T.as.Destroy.impl.Op.404, @T.as.Destroy.impl.Op(constants.%C.681) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.822] +// CHECK:STDOUT: %bound_method.loc9_24.5: = bound_method %.loc9_24.2, %T.as.Destroy.impl.Op.specific_fn.52 // CHECK:STDOUT: %addr.loc9_24.5: %ptr.3bd = addr_of %.loc9_24.2 -// CHECK:STDOUT: %no_op.loc9_24.5: init %empty_tuple.type = call %bound_method.loc9_24.5(%addr.loc9_24.5) -// CHECK:STDOUT: %Op.bound.loc8_35.6: = bound_method %.loc8_35.1, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.53: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc8_35.7: = bound_method %.loc8_35.1, %Op.specific_fn.53 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc9_24.5: init %empty_tuple.type = call %bound_method.loc9_24.5(%addr.loc9_24.5) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8_35.6: = bound_method %.loc8_35.1, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.53: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc8_35.7: = bound_method %.loc8_35.1, %T.as.Destroy.impl.Op.specific_fn.53 // CHECK:STDOUT: %addr.loc8_35.6: %ptr.f29 = addr_of %.loc8_35.1 -// CHECK:STDOUT: %no_op.loc8_35.6: init %empty_tuple.type = call %bound_method.loc8_35.7(%addr.loc8_35.6) -// CHECK:STDOUT: %Op.bound.loc8_24.6: = bound_method %.loc8_24.2, constants.%Op.ad8 -// CHECK:STDOUT: %Op.specific_fn.54: = specific_function constants.%Op.ad8, @Op.1(constants.%C.674) [concrete = constants.%Op.specific_fn.6b6] -// CHECK:STDOUT: %bound_method.loc8_24.6: = bound_method %.loc8_24.2, %Op.specific_fn.54 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8_35.6: init %empty_tuple.type = call %bound_method.loc8_35.7(%addr.loc8_35.6) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8_24.6: = bound_method %.loc8_24.2, constants.%T.as.Destroy.impl.Op.ad8 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.54: = specific_function constants.%T.as.Destroy.impl.Op.ad8, @T.as.Destroy.impl.Op(constants.%C.674) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.6b6] +// CHECK:STDOUT: %bound_method.loc8_24.6: = bound_method %.loc8_24.2, %T.as.Destroy.impl.Op.specific_fn.54 // CHECK:STDOUT: %addr.loc8_24.6: %ptr.625 = addr_of %.loc8_24.2 -// CHECK:STDOUT: %no_op.loc8_24.6: init %empty_tuple.type = call %bound_method.loc8_24.6(%addr.loc8_24.6) -// CHECK:STDOUT: %Op.bound.loc7_35.7: = bound_method %.loc7_35.1, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.55: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc7_35.8: = bound_method %.loc7_35.1, %Op.specific_fn.55 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8_24.6: init %empty_tuple.type = call %bound_method.loc8_24.6(%addr.loc8_24.6) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc7_35.7: = bound_method %.loc7_35.1, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.55: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc7_35.8: = bound_method %.loc7_35.1, %T.as.Destroy.impl.Op.specific_fn.55 // CHECK:STDOUT: %addr.loc7_35.7: %ptr.f29 = addr_of %.loc7_35.1 -// CHECK:STDOUT: %no_op.loc7_35.7: init %empty_tuple.type = call %bound_method.loc7_35.8(%addr.loc7_35.7) -// CHECK:STDOUT: %Op.bound.loc7_24.7: = bound_method %.loc7_24.2, constants.%Op.ae6 -// CHECK:STDOUT: %Op.specific_fn.56: = specific_function constants.%Op.ae6, @Op.1(constants.%C.b00) [concrete = constants.%Op.specific_fn.e42] -// CHECK:STDOUT: %bound_method.loc7_24.7: = bound_method %.loc7_24.2, %Op.specific_fn.56 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc7_35.7: init %empty_tuple.type = call %bound_method.loc7_35.8(%addr.loc7_35.7) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc7_24.7: = bound_method %.loc7_24.2, constants.%T.as.Destroy.impl.Op.ae6 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.56: = specific_function constants.%T.as.Destroy.impl.Op.ae6, @T.as.Destroy.impl.Op(constants.%C.b00) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.e42] +// CHECK:STDOUT: %bound_method.loc7_24.7: = bound_method %.loc7_24.2, %T.as.Destroy.impl.Op.specific_fn.56 // CHECK:STDOUT: %addr.loc7_24.7: %ptr.697 = addr_of %.loc7_24.2 -// CHECK:STDOUT: %no_op.loc7_24.7: init %empty_tuple.type = call %bound_method.loc7_24.7(%addr.loc7_24.7) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc7_24.7: init %empty_tuple.type = call %bound_method.loc7_24.7(%addr.loc7_24.7) // CHECK:STDOUT: return %.loc13_35.2 to %return // CHECK:STDOUT: // CHECK:STDOUT: !if.else.loc13: @@ -1559,104 +1559,104 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %P.ref.loc14: = name_ref P, imports.%P [concrete = imports.%P] // CHECK:STDOUT: %C.ref.loc14: %C.type = name_ref C, imports.%P.C [concrete = constants.%C.generic] // CHECK:STDOUT: %int_7: Core.IntLiteral = int_value 7 [concrete = constants.%int_7.29f] -// CHECK:STDOUT: %impl.elem0.loc14_34: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc14_34.1: = bound_method %int_7, %impl.elem0.loc14_34 [concrete = constants.%Convert.bound.208] -// CHECK:STDOUT: %specific_fn.loc14: = specific_function %impl.elem0.loc14_34, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc14_34: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc14_34.1: = bound_method %int_7, %impl.elem0.loc14_34 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.208] +// CHECK:STDOUT: %specific_fn.loc14: = specific_function %impl.elem0.loc14_34, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc14_34.2: = bound_method %int_7, %specific_fn.loc14 [concrete = constants.%bound_method.3bd] -// CHECK:STDOUT: %int.convert_checked.loc14: init %i32 = call %bound_method.loc14_34.2(%int_7) [concrete = constants.%int_7.0b1] -// CHECK:STDOUT: %.loc14_34.1: %i32 = value_of_initializer %int.convert_checked.loc14 [concrete = constants.%int_7.0b1] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc14: init %i32 = call %bound_method.loc14_34.2(%int_7) [concrete = constants.%int_7.0b1] +// CHECK:STDOUT: %.loc14_34.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc14 [concrete = constants.%int_7.0b1] // CHECK:STDOUT: %.loc14_34.2: %i32 = converted %int_7, %.loc14_34.1 [concrete = constants.%int_7.0b1] // CHECK:STDOUT: %C.loc14: type = class_type @C, @C(constants.%int_7.0b1) [concrete = constants.%C.304] // CHECK:STDOUT: %.loc14_24.2: ref %C.304 = temporary_storage // CHECK:STDOUT: %.loc14_24.3: init %C.304 = class_init (), %.loc14_24.2 [concrete = constants.%C.val.f9f] // CHECK:STDOUT: %.loc14_24.4: ref %C.304 = temporary %.loc14_24.2, %.loc14_24.3 // CHECK:STDOUT: %.loc14_26.1: ref %C.304 = converted %.loc14_24.1, %.loc14_24.4 -// CHECK:STDOUT: %impl.elem0.loc14_35: %.79b = impl_witness_access constants.%ImplicitAs.impl_witness.0ca, element0 [concrete = constants.%Convert.6c1] +// CHECK:STDOUT: %impl.elem0.loc14_35: %.79b = impl_witness_access constants.%ImplicitAs.impl_witness.0ca, element0 [concrete = constants.%C.as.ImplicitAs.impl.Convert.6c1] // CHECK:STDOUT: %bound_method.loc14_35.1: = bound_method %.loc14_26.1, %impl.elem0.loc14_35 // CHECK:STDOUT: %.loc14_35.1: ref %D = temporary_storage // CHECK:STDOUT: %.loc14_26.2: %C.304 = bind_value %.loc14_26.1 -// CHECK:STDOUT: %Convert.call.loc14: init %D = call %bound_method.loc14_35.1(%.loc14_26.2) to %.loc14_35.1 -// CHECK:STDOUT: %.loc14_35.2: init %D = converted %.loc14_26.1, %Convert.call.loc14 -// CHECK:STDOUT: %Op.bound.loc14_35.1: = bound_method %.loc14_35.1, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.57: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc14_35.2: = bound_method %.loc14_35.1, %Op.specific_fn.57 +// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.call.loc14: init %D = call %bound_method.loc14_35.1(%.loc14_26.2) to %.loc14_35.1 +// CHECK:STDOUT: %.loc14_35.2: init %D = converted %.loc14_26.1, %C.as.ImplicitAs.impl.Convert.call.loc14 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc14_35.1: = bound_method %.loc14_35.1, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.57: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc14_35.2: = bound_method %.loc14_35.1, %T.as.Destroy.impl.Op.specific_fn.57 // CHECK:STDOUT: %addr.loc14_35.1: %ptr.f29 = addr_of %.loc14_35.1 -// CHECK:STDOUT: %no_op.loc14_35.1: init %empty_tuple.type = call %bound_method.loc14_35.2(%addr.loc14_35.1) -// CHECK:STDOUT: %Op.bound.loc14_24.1: = bound_method %.loc14_24.2, constants.%Op.6fc -// CHECK:STDOUT: %Op.specific_fn.58: = specific_function constants.%Op.6fc, @Op.1(constants.%C.304) [concrete = constants.%Op.specific_fn.a08] -// CHECK:STDOUT: %bound_method.loc14_24.1: = bound_method %.loc14_24.2, %Op.specific_fn.58 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc14_35.1: init %empty_tuple.type = call %bound_method.loc14_35.2(%addr.loc14_35.1) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc14_24.1: = bound_method %.loc14_24.2, constants.%T.as.Destroy.impl.Op.6fc +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.58: = specific_function constants.%T.as.Destroy.impl.Op.6fc, @T.as.Destroy.impl.Op(constants.%C.304) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.a08] +// CHECK:STDOUT: %bound_method.loc14_24.1: = bound_method %.loc14_24.2, %T.as.Destroy.impl.Op.specific_fn.58 // CHECK:STDOUT: %addr.loc14_24.1: %ptr.dc3 = addr_of %.loc14_24.2 -// CHECK:STDOUT: %no_op.loc14_24.1: init %empty_tuple.type = call %bound_method.loc14_24.1(%addr.loc14_24.1) -// CHECK:STDOUT: %Op.bound.loc13_35.2: = bound_method %.loc13_35.1, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.59: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc13_35.3: = bound_method %.loc13_35.1, %Op.specific_fn.59 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc14_24.1: init %empty_tuple.type = call %bound_method.loc14_24.1(%addr.loc14_24.1) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc13_35.2: = bound_method %.loc13_35.1, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.59: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc13_35.3: = bound_method %.loc13_35.1, %T.as.Destroy.impl.Op.specific_fn.59 // CHECK:STDOUT: %addr.loc13_35.2: %ptr.f29 = addr_of %.loc13_35.1 -// CHECK:STDOUT: %no_op.loc13_35.2: init %empty_tuple.type = call %bound_method.loc13_35.3(%addr.loc13_35.2) -// CHECK:STDOUT: %Op.bound.loc13_24.2: = bound_method %.loc13_24.2, constants.%Op.ca5 -// CHECK:STDOUT: %Op.specific_fn.60: = specific_function constants.%Op.ca5, @Op.1(constants.%C.c60) [concrete = constants.%Op.specific_fn.8d0] -// CHECK:STDOUT: %bound_method.loc13_24.2: = bound_method %.loc13_24.2, %Op.specific_fn.60 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc13_35.2: init %empty_tuple.type = call %bound_method.loc13_35.3(%addr.loc13_35.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc13_24.2: = bound_method %.loc13_24.2, constants.%T.as.Destroy.impl.Op.ca5 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.60: = specific_function constants.%T.as.Destroy.impl.Op.ca5, @T.as.Destroy.impl.Op(constants.%C.c60) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.8d0] +// CHECK:STDOUT: %bound_method.loc13_24.2: = bound_method %.loc13_24.2, %T.as.Destroy.impl.Op.specific_fn.60 // CHECK:STDOUT: %addr.loc13_24.2: %ptr.b5e = addr_of %.loc13_24.2 -// CHECK:STDOUT: %no_op.loc13_24.2: init %empty_tuple.type = call %bound_method.loc13_24.2(%addr.loc13_24.2) -// CHECK:STDOUT: %Op.bound.loc12_35.3: = bound_method %.loc12_35.1, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.61: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc12_35.4: = bound_method %.loc12_35.1, %Op.specific_fn.61 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc13_24.2: init %empty_tuple.type = call %bound_method.loc13_24.2(%addr.loc13_24.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc12_35.3: = bound_method %.loc12_35.1, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.61: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc12_35.4: = bound_method %.loc12_35.1, %T.as.Destroy.impl.Op.specific_fn.61 // CHECK:STDOUT: %addr.loc12_35.3: %ptr.f29 = addr_of %.loc12_35.1 -// CHECK:STDOUT: %no_op.loc12_35.3: init %empty_tuple.type = call %bound_method.loc12_35.4(%addr.loc12_35.3) -// CHECK:STDOUT: %Op.bound.loc12_24.3: = bound_method %.loc12_24.2, constants.%Op.985 -// CHECK:STDOUT: %Op.specific_fn.62: = specific_function constants.%Op.985, @Op.1(constants.%C.f0a) [concrete = constants.%Op.specific_fn.a66] -// CHECK:STDOUT: %bound_method.loc12_24.3: = bound_method %.loc12_24.2, %Op.specific_fn.62 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc12_35.3: init %empty_tuple.type = call %bound_method.loc12_35.4(%addr.loc12_35.3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc12_24.3: = bound_method %.loc12_24.2, constants.%T.as.Destroy.impl.Op.985 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.62: = specific_function constants.%T.as.Destroy.impl.Op.985, @T.as.Destroy.impl.Op(constants.%C.f0a) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.a66] +// CHECK:STDOUT: %bound_method.loc12_24.3: = bound_method %.loc12_24.2, %T.as.Destroy.impl.Op.specific_fn.62 // CHECK:STDOUT: %addr.loc12_24.3: %ptr.24c = addr_of %.loc12_24.2 -// CHECK:STDOUT: %no_op.loc12_24.3: init %empty_tuple.type = call %bound_method.loc12_24.3(%addr.loc12_24.3) -// CHECK:STDOUT: %Op.bound.loc11_35.4: = bound_method %.loc11_35.1, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.63: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc11_35.5: = bound_method %.loc11_35.1, %Op.specific_fn.63 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc12_24.3: init %empty_tuple.type = call %bound_method.loc12_24.3(%addr.loc12_24.3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc11_35.4: = bound_method %.loc11_35.1, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.63: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc11_35.5: = bound_method %.loc11_35.1, %T.as.Destroy.impl.Op.specific_fn.63 // CHECK:STDOUT: %addr.loc11_35.4: %ptr.f29 = addr_of %.loc11_35.1 -// CHECK:STDOUT: %no_op.loc11_35.4: init %empty_tuple.type = call %bound_method.loc11_35.5(%addr.loc11_35.4) -// CHECK:STDOUT: %Op.bound.loc11_24.4: = bound_method %.loc11_24.2, constants.%Op.6b4 -// CHECK:STDOUT: %Op.specific_fn.64: = specific_function constants.%Op.6b4, @Op.1(constants.%C.89d) [concrete = constants.%Op.specific_fn.357] -// CHECK:STDOUT: %bound_method.loc11_24.4: = bound_method %.loc11_24.2, %Op.specific_fn.64 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc11_35.4: init %empty_tuple.type = call %bound_method.loc11_35.5(%addr.loc11_35.4) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc11_24.4: = bound_method %.loc11_24.2, constants.%T.as.Destroy.impl.Op.6b4 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.64: = specific_function constants.%T.as.Destroy.impl.Op.6b4, @T.as.Destroy.impl.Op(constants.%C.89d) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.357] +// CHECK:STDOUT: %bound_method.loc11_24.4: = bound_method %.loc11_24.2, %T.as.Destroy.impl.Op.specific_fn.64 // CHECK:STDOUT: %addr.loc11_24.4: %ptr.c28b = addr_of %.loc11_24.2 -// CHECK:STDOUT: %no_op.loc11_24.4: init %empty_tuple.type = call %bound_method.loc11_24.4(%addr.loc11_24.4) -// CHECK:STDOUT: %Op.bound.loc10_35.5: = bound_method %.loc10_35.1, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.65: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc10_35.6: = bound_method %.loc10_35.1, %Op.specific_fn.65 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc11_24.4: init %empty_tuple.type = call %bound_method.loc11_24.4(%addr.loc11_24.4) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10_35.5: = bound_method %.loc10_35.1, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.65: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc10_35.6: = bound_method %.loc10_35.1, %T.as.Destroy.impl.Op.specific_fn.65 // CHECK:STDOUT: %addr.loc10_35.5: %ptr.f29 = addr_of %.loc10_35.1 -// CHECK:STDOUT: %no_op.loc10_35.5: init %empty_tuple.type = call %bound_method.loc10_35.6(%addr.loc10_35.5) -// CHECK:STDOUT: %Op.bound.loc10_24.5: = bound_method %.loc10_24.2, constants.%Op.9cf -// CHECK:STDOUT: %Op.specific_fn.66: = specific_function constants.%Op.9cf, @Op.1(constants.%C.7ac) [concrete = constants.%Op.specific_fn.694] -// CHECK:STDOUT: %bound_method.loc10_24.5: = bound_method %.loc10_24.2, %Op.specific_fn.66 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10_35.5: init %empty_tuple.type = call %bound_method.loc10_35.6(%addr.loc10_35.5) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10_24.5: = bound_method %.loc10_24.2, constants.%T.as.Destroy.impl.Op.9cf +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.66: = specific_function constants.%T.as.Destroy.impl.Op.9cf, @T.as.Destroy.impl.Op(constants.%C.7ac) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.694] +// CHECK:STDOUT: %bound_method.loc10_24.5: = bound_method %.loc10_24.2, %T.as.Destroy.impl.Op.specific_fn.66 // CHECK:STDOUT: %addr.loc10_24.5: %ptr.2b1 = addr_of %.loc10_24.2 -// CHECK:STDOUT: %no_op.loc10_24.5: init %empty_tuple.type = call %bound_method.loc10_24.5(%addr.loc10_24.5) -// CHECK:STDOUT: %Op.bound.loc9_35.6: = bound_method %.loc9_35.1, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.67: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc9_35.7: = bound_method %.loc9_35.1, %Op.specific_fn.67 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10_24.5: init %empty_tuple.type = call %bound_method.loc10_24.5(%addr.loc10_24.5) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc9_35.6: = bound_method %.loc9_35.1, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.67: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc9_35.7: = bound_method %.loc9_35.1, %T.as.Destroy.impl.Op.specific_fn.67 // CHECK:STDOUT: %addr.loc9_35.6: %ptr.f29 = addr_of %.loc9_35.1 -// CHECK:STDOUT: %no_op.loc9_35.6: init %empty_tuple.type = call %bound_method.loc9_35.7(%addr.loc9_35.6) -// CHECK:STDOUT: %Op.bound.loc9_24.6: = bound_method %.loc9_24.2, constants.%Op.404 -// CHECK:STDOUT: %Op.specific_fn.68: = specific_function constants.%Op.404, @Op.1(constants.%C.681) [concrete = constants.%Op.specific_fn.822] -// CHECK:STDOUT: %bound_method.loc9_24.6: = bound_method %.loc9_24.2, %Op.specific_fn.68 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc9_35.6: init %empty_tuple.type = call %bound_method.loc9_35.7(%addr.loc9_35.6) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc9_24.6: = bound_method %.loc9_24.2, constants.%T.as.Destroy.impl.Op.404 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.68: = specific_function constants.%T.as.Destroy.impl.Op.404, @T.as.Destroy.impl.Op(constants.%C.681) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.822] +// CHECK:STDOUT: %bound_method.loc9_24.6: = bound_method %.loc9_24.2, %T.as.Destroy.impl.Op.specific_fn.68 // CHECK:STDOUT: %addr.loc9_24.6: %ptr.3bd = addr_of %.loc9_24.2 -// CHECK:STDOUT: %no_op.loc9_24.6: init %empty_tuple.type = call %bound_method.loc9_24.6(%addr.loc9_24.6) -// CHECK:STDOUT: %Op.bound.loc8_35.7: = bound_method %.loc8_35.1, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.69: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc8_35.8: = bound_method %.loc8_35.1, %Op.specific_fn.69 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc9_24.6: init %empty_tuple.type = call %bound_method.loc9_24.6(%addr.loc9_24.6) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8_35.7: = bound_method %.loc8_35.1, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.69: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc8_35.8: = bound_method %.loc8_35.1, %T.as.Destroy.impl.Op.specific_fn.69 // CHECK:STDOUT: %addr.loc8_35.7: %ptr.f29 = addr_of %.loc8_35.1 -// CHECK:STDOUT: %no_op.loc8_35.7: init %empty_tuple.type = call %bound_method.loc8_35.8(%addr.loc8_35.7) -// CHECK:STDOUT: %Op.bound.loc8_24.7: = bound_method %.loc8_24.2, constants.%Op.ad8 -// CHECK:STDOUT: %Op.specific_fn.70: = specific_function constants.%Op.ad8, @Op.1(constants.%C.674) [concrete = constants.%Op.specific_fn.6b6] -// CHECK:STDOUT: %bound_method.loc8_24.7: = bound_method %.loc8_24.2, %Op.specific_fn.70 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8_35.7: init %empty_tuple.type = call %bound_method.loc8_35.8(%addr.loc8_35.7) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8_24.7: = bound_method %.loc8_24.2, constants.%T.as.Destroy.impl.Op.ad8 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.70: = specific_function constants.%T.as.Destroy.impl.Op.ad8, @T.as.Destroy.impl.Op(constants.%C.674) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.6b6] +// CHECK:STDOUT: %bound_method.loc8_24.7: = bound_method %.loc8_24.2, %T.as.Destroy.impl.Op.specific_fn.70 // CHECK:STDOUT: %addr.loc8_24.7: %ptr.625 = addr_of %.loc8_24.2 -// CHECK:STDOUT: %no_op.loc8_24.7: init %empty_tuple.type = call %bound_method.loc8_24.7(%addr.loc8_24.7) -// CHECK:STDOUT: %Op.bound.loc7_35.8: = bound_method %.loc7_35.1, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.71: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc7_35.9: = bound_method %.loc7_35.1, %Op.specific_fn.71 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8_24.7: init %empty_tuple.type = call %bound_method.loc8_24.7(%addr.loc8_24.7) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc7_35.8: = bound_method %.loc7_35.1, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.71: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc7_35.9: = bound_method %.loc7_35.1, %T.as.Destroy.impl.Op.specific_fn.71 // CHECK:STDOUT: %addr.loc7_35.8: %ptr.f29 = addr_of %.loc7_35.1 -// CHECK:STDOUT: %no_op.loc7_35.8: init %empty_tuple.type = call %bound_method.loc7_35.9(%addr.loc7_35.8) -// CHECK:STDOUT: %Op.bound.loc7_24.8: = bound_method %.loc7_24.2, constants.%Op.ae6 -// CHECK:STDOUT: %Op.specific_fn.72: = specific_function constants.%Op.ae6, @Op.1(constants.%C.b00) [concrete = constants.%Op.specific_fn.e42] -// CHECK:STDOUT: %bound_method.loc7_24.8: = bound_method %.loc7_24.2, %Op.specific_fn.72 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc7_35.8: init %empty_tuple.type = call %bound_method.loc7_35.9(%addr.loc7_35.8) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc7_24.8: = bound_method %.loc7_24.2, constants.%T.as.Destroy.impl.Op.ae6 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.72: = specific_function constants.%T.as.Destroy.impl.Op.ae6, @T.as.Destroy.impl.Op(constants.%C.b00) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.e42] +// CHECK:STDOUT: %bound_method.loc7_24.8: = bound_method %.loc7_24.2, %T.as.Destroy.impl.Op.specific_fn.72 // CHECK:STDOUT: %addr.loc7_24.8: %ptr.697 = addr_of %.loc7_24.2 -// CHECK:STDOUT: %no_op.loc7_24.8: init %empty_tuple.type = call %bound_method.loc7_24.8(%addr.loc7_24.8) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc7_24.8: init %empty_tuple.type = call %bound_method.loc7_24.8(%addr.loc7_24.8) // CHECK:STDOUT: return %.loc14_35.2 to %return // CHECK:STDOUT: // CHECK:STDOUT: !if.else.loc14: @@ -1664,109 +1664,109 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, imports.%P.Make [concrete = constants.%Make] // CHECK:STDOUT: %.loc6_15: ref %D = splice_block %return {} // CHECK:STDOUT: %Make.call: init %D = call %Make.ref() to %.loc6_15 -// CHECK:STDOUT: %Op.bound.loc6: = bound_method %.loc6_15, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.73: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc6: = bound_method %.loc6_15, %Op.specific_fn.73 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc6: = bound_method %.loc6_15, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.73: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc6: = bound_method %.loc6_15, %T.as.Destroy.impl.Op.specific_fn.73 // CHECK:STDOUT: %addr.loc6: %ptr.f29 = addr_of %.loc6_15 -// CHECK:STDOUT: %no_op.loc6: init %empty_tuple.type = call %bound_method.loc6(%addr.loc6) -// CHECK:STDOUT: %Op.bound.loc14_35.2: = bound_method %.loc14_35.1, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.74: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc14_35.3: = bound_method %.loc14_35.1, %Op.specific_fn.74 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc6: init %empty_tuple.type = call %bound_method.loc6(%addr.loc6) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc14_35.2: = bound_method %.loc14_35.1, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.74: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc14_35.3: = bound_method %.loc14_35.1, %T.as.Destroy.impl.Op.specific_fn.74 // CHECK:STDOUT: %addr.loc14_35.2: %ptr.f29 = addr_of %.loc14_35.1 -// CHECK:STDOUT: %no_op.loc14_35.2: init %empty_tuple.type = call %bound_method.loc14_35.3(%addr.loc14_35.2) -// CHECK:STDOUT: %Op.bound.loc14_24.2: = bound_method %.loc14_24.2, constants.%Op.6fc -// CHECK:STDOUT: %Op.specific_fn.75: = specific_function constants.%Op.6fc, @Op.1(constants.%C.304) [concrete = constants.%Op.specific_fn.a08] -// CHECK:STDOUT: %bound_method.loc14_24.2: = bound_method %.loc14_24.2, %Op.specific_fn.75 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc14_35.2: init %empty_tuple.type = call %bound_method.loc14_35.3(%addr.loc14_35.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc14_24.2: = bound_method %.loc14_24.2, constants.%T.as.Destroy.impl.Op.6fc +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.75: = specific_function constants.%T.as.Destroy.impl.Op.6fc, @T.as.Destroy.impl.Op(constants.%C.304) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.a08] +// CHECK:STDOUT: %bound_method.loc14_24.2: = bound_method %.loc14_24.2, %T.as.Destroy.impl.Op.specific_fn.75 // CHECK:STDOUT: %addr.loc14_24.2: %ptr.dc3 = addr_of %.loc14_24.2 -// CHECK:STDOUT: %no_op.loc14_24.2: init %empty_tuple.type = call %bound_method.loc14_24.2(%addr.loc14_24.2) -// CHECK:STDOUT: %Op.bound.loc13_35.3: = bound_method %.loc13_35.1, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.76: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc13_35.4: = bound_method %.loc13_35.1, %Op.specific_fn.76 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc14_24.2: init %empty_tuple.type = call %bound_method.loc14_24.2(%addr.loc14_24.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc13_35.3: = bound_method %.loc13_35.1, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.76: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc13_35.4: = bound_method %.loc13_35.1, %T.as.Destroy.impl.Op.specific_fn.76 // CHECK:STDOUT: %addr.loc13_35.3: %ptr.f29 = addr_of %.loc13_35.1 -// CHECK:STDOUT: %no_op.loc13_35.3: init %empty_tuple.type = call %bound_method.loc13_35.4(%addr.loc13_35.3) -// CHECK:STDOUT: %Op.bound.loc13_24.3: = bound_method %.loc13_24.2, constants.%Op.ca5 -// CHECK:STDOUT: %Op.specific_fn.77: = specific_function constants.%Op.ca5, @Op.1(constants.%C.c60) [concrete = constants.%Op.specific_fn.8d0] -// CHECK:STDOUT: %bound_method.loc13_24.3: = bound_method %.loc13_24.2, %Op.specific_fn.77 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc13_35.3: init %empty_tuple.type = call %bound_method.loc13_35.4(%addr.loc13_35.3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc13_24.3: = bound_method %.loc13_24.2, constants.%T.as.Destroy.impl.Op.ca5 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.77: = specific_function constants.%T.as.Destroy.impl.Op.ca5, @T.as.Destroy.impl.Op(constants.%C.c60) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.8d0] +// CHECK:STDOUT: %bound_method.loc13_24.3: = bound_method %.loc13_24.2, %T.as.Destroy.impl.Op.specific_fn.77 // CHECK:STDOUT: %addr.loc13_24.3: %ptr.b5e = addr_of %.loc13_24.2 -// CHECK:STDOUT: %no_op.loc13_24.3: init %empty_tuple.type = call %bound_method.loc13_24.3(%addr.loc13_24.3) -// CHECK:STDOUT: %Op.bound.loc12_35.4: = bound_method %.loc12_35.1, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.78: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc12_35.5: = bound_method %.loc12_35.1, %Op.specific_fn.78 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc13_24.3: init %empty_tuple.type = call %bound_method.loc13_24.3(%addr.loc13_24.3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc12_35.4: = bound_method %.loc12_35.1, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.78: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc12_35.5: = bound_method %.loc12_35.1, %T.as.Destroy.impl.Op.specific_fn.78 // CHECK:STDOUT: %addr.loc12_35.4: %ptr.f29 = addr_of %.loc12_35.1 -// CHECK:STDOUT: %no_op.loc12_35.4: init %empty_tuple.type = call %bound_method.loc12_35.5(%addr.loc12_35.4) -// CHECK:STDOUT: %Op.bound.loc12_24.4: = bound_method %.loc12_24.2, constants.%Op.985 -// CHECK:STDOUT: %Op.specific_fn.79: = specific_function constants.%Op.985, @Op.1(constants.%C.f0a) [concrete = constants.%Op.specific_fn.a66] -// CHECK:STDOUT: %bound_method.loc12_24.4: = bound_method %.loc12_24.2, %Op.specific_fn.79 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc12_35.4: init %empty_tuple.type = call %bound_method.loc12_35.5(%addr.loc12_35.4) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc12_24.4: = bound_method %.loc12_24.2, constants.%T.as.Destroy.impl.Op.985 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.79: = specific_function constants.%T.as.Destroy.impl.Op.985, @T.as.Destroy.impl.Op(constants.%C.f0a) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.a66] +// CHECK:STDOUT: %bound_method.loc12_24.4: = bound_method %.loc12_24.2, %T.as.Destroy.impl.Op.specific_fn.79 // CHECK:STDOUT: %addr.loc12_24.4: %ptr.24c = addr_of %.loc12_24.2 -// CHECK:STDOUT: %no_op.loc12_24.4: init %empty_tuple.type = call %bound_method.loc12_24.4(%addr.loc12_24.4) -// CHECK:STDOUT: %Op.bound.loc11_35.5: = bound_method %.loc11_35.1, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.80: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc11_35.6: = bound_method %.loc11_35.1, %Op.specific_fn.80 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc12_24.4: init %empty_tuple.type = call %bound_method.loc12_24.4(%addr.loc12_24.4) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc11_35.5: = bound_method %.loc11_35.1, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.80: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc11_35.6: = bound_method %.loc11_35.1, %T.as.Destroy.impl.Op.specific_fn.80 // CHECK:STDOUT: %addr.loc11_35.5: %ptr.f29 = addr_of %.loc11_35.1 -// CHECK:STDOUT: %no_op.loc11_35.5: init %empty_tuple.type = call %bound_method.loc11_35.6(%addr.loc11_35.5) -// CHECK:STDOUT: %Op.bound.loc11_24.5: = bound_method %.loc11_24.2, constants.%Op.6b4 -// CHECK:STDOUT: %Op.specific_fn.81: = specific_function constants.%Op.6b4, @Op.1(constants.%C.89d) [concrete = constants.%Op.specific_fn.357] -// CHECK:STDOUT: %bound_method.loc11_24.5: = bound_method %.loc11_24.2, %Op.specific_fn.81 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc11_35.5: init %empty_tuple.type = call %bound_method.loc11_35.6(%addr.loc11_35.5) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc11_24.5: = bound_method %.loc11_24.2, constants.%T.as.Destroy.impl.Op.6b4 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.81: = specific_function constants.%T.as.Destroy.impl.Op.6b4, @T.as.Destroy.impl.Op(constants.%C.89d) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.357] +// CHECK:STDOUT: %bound_method.loc11_24.5: = bound_method %.loc11_24.2, %T.as.Destroy.impl.Op.specific_fn.81 // CHECK:STDOUT: %addr.loc11_24.5: %ptr.c28b = addr_of %.loc11_24.2 -// CHECK:STDOUT: %no_op.loc11_24.5: init %empty_tuple.type = call %bound_method.loc11_24.5(%addr.loc11_24.5) -// CHECK:STDOUT: %Op.bound.loc10_35.6: = bound_method %.loc10_35.1, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.82: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc10_35.7: = bound_method %.loc10_35.1, %Op.specific_fn.82 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc11_24.5: init %empty_tuple.type = call %bound_method.loc11_24.5(%addr.loc11_24.5) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10_35.6: = bound_method %.loc10_35.1, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.82: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc10_35.7: = bound_method %.loc10_35.1, %T.as.Destroy.impl.Op.specific_fn.82 // CHECK:STDOUT: %addr.loc10_35.6: %ptr.f29 = addr_of %.loc10_35.1 -// CHECK:STDOUT: %no_op.loc10_35.6: init %empty_tuple.type = call %bound_method.loc10_35.7(%addr.loc10_35.6) -// CHECK:STDOUT: %Op.bound.loc10_24.6: = bound_method %.loc10_24.2, constants.%Op.9cf -// CHECK:STDOUT: %Op.specific_fn.83: = specific_function constants.%Op.9cf, @Op.1(constants.%C.7ac) [concrete = constants.%Op.specific_fn.694] -// CHECK:STDOUT: %bound_method.loc10_24.6: = bound_method %.loc10_24.2, %Op.specific_fn.83 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10_35.6: init %empty_tuple.type = call %bound_method.loc10_35.7(%addr.loc10_35.6) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10_24.6: = bound_method %.loc10_24.2, constants.%T.as.Destroy.impl.Op.9cf +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.83: = specific_function constants.%T.as.Destroy.impl.Op.9cf, @T.as.Destroy.impl.Op(constants.%C.7ac) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.694] +// CHECK:STDOUT: %bound_method.loc10_24.6: = bound_method %.loc10_24.2, %T.as.Destroy.impl.Op.specific_fn.83 // CHECK:STDOUT: %addr.loc10_24.6: %ptr.2b1 = addr_of %.loc10_24.2 -// CHECK:STDOUT: %no_op.loc10_24.6: init %empty_tuple.type = call %bound_method.loc10_24.6(%addr.loc10_24.6) -// CHECK:STDOUT: %Op.bound.loc9_35.7: = bound_method %.loc9_35.1, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.84: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc9_35.8: = bound_method %.loc9_35.1, %Op.specific_fn.84 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10_24.6: init %empty_tuple.type = call %bound_method.loc10_24.6(%addr.loc10_24.6) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc9_35.7: = bound_method %.loc9_35.1, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.84: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc9_35.8: = bound_method %.loc9_35.1, %T.as.Destroy.impl.Op.specific_fn.84 // CHECK:STDOUT: %addr.loc9_35.7: %ptr.f29 = addr_of %.loc9_35.1 -// CHECK:STDOUT: %no_op.loc9_35.7: init %empty_tuple.type = call %bound_method.loc9_35.8(%addr.loc9_35.7) -// CHECK:STDOUT: %Op.bound.loc9_24.7: = bound_method %.loc9_24.2, constants.%Op.404 -// CHECK:STDOUT: %Op.specific_fn.85: = specific_function constants.%Op.404, @Op.1(constants.%C.681) [concrete = constants.%Op.specific_fn.822] -// CHECK:STDOUT: %bound_method.loc9_24.7: = bound_method %.loc9_24.2, %Op.specific_fn.85 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc9_35.7: init %empty_tuple.type = call %bound_method.loc9_35.8(%addr.loc9_35.7) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc9_24.7: = bound_method %.loc9_24.2, constants.%T.as.Destroy.impl.Op.404 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.85: = specific_function constants.%T.as.Destroy.impl.Op.404, @T.as.Destroy.impl.Op(constants.%C.681) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.822] +// CHECK:STDOUT: %bound_method.loc9_24.7: = bound_method %.loc9_24.2, %T.as.Destroy.impl.Op.specific_fn.85 // CHECK:STDOUT: %addr.loc9_24.7: %ptr.3bd = addr_of %.loc9_24.2 -// CHECK:STDOUT: %no_op.loc9_24.7: init %empty_tuple.type = call %bound_method.loc9_24.7(%addr.loc9_24.7) -// CHECK:STDOUT: %Op.bound.loc8_35.8: = bound_method %.loc8_35.1, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.86: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc8_35.9: = bound_method %.loc8_35.1, %Op.specific_fn.86 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc9_24.7: init %empty_tuple.type = call %bound_method.loc9_24.7(%addr.loc9_24.7) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8_35.8: = bound_method %.loc8_35.1, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.86: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc8_35.9: = bound_method %.loc8_35.1, %T.as.Destroy.impl.Op.specific_fn.86 // CHECK:STDOUT: %addr.loc8_35.8: %ptr.f29 = addr_of %.loc8_35.1 -// CHECK:STDOUT: %no_op.loc8_35.8: init %empty_tuple.type = call %bound_method.loc8_35.9(%addr.loc8_35.8) -// CHECK:STDOUT: %Op.bound.loc8_24.8: = bound_method %.loc8_24.2, constants.%Op.ad8 -// CHECK:STDOUT: %Op.specific_fn.87: = specific_function constants.%Op.ad8, @Op.1(constants.%C.674) [concrete = constants.%Op.specific_fn.6b6] -// CHECK:STDOUT: %bound_method.loc8_24.8: = bound_method %.loc8_24.2, %Op.specific_fn.87 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8_35.8: init %empty_tuple.type = call %bound_method.loc8_35.9(%addr.loc8_35.8) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8_24.8: = bound_method %.loc8_24.2, constants.%T.as.Destroy.impl.Op.ad8 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.87: = specific_function constants.%T.as.Destroy.impl.Op.ad8, @T.as.Destroy.impl.Op(constants.%C.674) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.6b6] +// CHECK:STDOUT: %bound_method.loc8_24.8: = bound_method %.loc8_24.2, %T.as.Destroy.impl.Op.specific_fn.87 // CHECK:STDOUT: %addr.loc8_24.8: %ptr.625 = addr_of %.loc8_24.2 -// CHECK:STDOUT: %no_op.loc8_24.8: init %empty_tuple.type = call %bound_method.loc8_24.8(%addr.loc8_24.8) -// CHECK:STDOUT: %Op.bound.loc7_35.9: = bound_method %.loc7_35.1, constants.%Op.f5a -// CHECK:STDOUT: %Op.specific_fn.88: = specific_function constants.%Op.f5a, @Op.1(constants.%D) [concrete = constants.%Op.specific_fn.bd1] -// CHECK:STDOUT: %bound_method.loc7_35.10: = bound_method %.loc7_35.1, %Op.specific_fn.88 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8_24.8: init %empty_tuple.type = call %bound_method.loc8_24.8(%addr.loc8_24.8) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc7_35.9: = bound_method %.loc7_35.1, constants.%T.as.Destroy.impl.Op.f5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.88: = specific_function constants.%T.as.Destroy.impl.Op.f5a, @T.as.Destroy.impl.Op(constants.%D) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.bd1] +// CHECK:STDOUT: %bound_method.loc7_35.10: = bound_method %.loc7_35.1, %T.as.Destroy.impl.Op.specific_fn.88 // CHECK:STDOUT: %addr.loc7_35.9: %ptr.f29 = addr_of %.loc7_35.1 -// CHECK:STDOUT: %no_op.loc7_35.9: init %empty_tuple.type = call %bound_method.loc7_35.10(%addr.loc7_35.9) -// CHECK:STDOUT: %Op.bound.loc7_24.9: = bound_method %.loc7_24.2, constants.%Op.ae6 -// CHECK:STDOUT: %Op.specific_fn.89: = specific_function constants.%Op.ae6, @Op.1(constants.%C.b00) [concrete = constants.%Op.specific_fn.e42] -// CHECK:STDOUT: %bound_method.loc7_24.9: = bound_method %.loc7_24.2, %Op.specific_fn.89 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc7_35.9: init %empty_tuple.type = call %bound_method.loc7_35.10(%addr.loc7_35.9) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc7_24.9: = bound_method %.loc7_24.2, constants.%T.as.Destroy.impl.Op.ae6 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.89: = specific_function constants.%T.as.Destroy.impl.Op.ae6, @T.as.Destroy.impl.Op(constants.%C.b00) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.e42] +// CHECK:STDOUT: %bound_method.loc7_24.9: = bound_method %.loc7_24.2, %T.as.Destroy.impl.Op.specific_fn.89 // CHECK:STDOUT: %addr.loc7_24.9: %ptr.697 = addr_of %.loc7_24.2 -// CHECK:STDOUT: %no_op.loc7_24.9: init %empty_tuple.type = call %bound_method.loc7_24.9(%addr.loc7_24.9) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc7_24.9: init %empty_tuple.type = call %bound_method.loc7_24.9(%addr.loc7_24.9) // CHECK:STDOUT: return %Make.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert.2 [from "library.carbon"]; +// CHECK:STDOUT: fn @C.as.ImplicitAs.impl.Convert.1 [from "library.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert.3 [from "library.carbon"]; +// CHECK:STDOUT: fn @C.as.ImplicitAs.impl.Convert.2 [from "library.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert.4 [from "library.carbon"]; +// CHECK:STDOUT: fn @C.as.ImplicitAs.impl.Convert.3 [from "library.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert.5 [from "library.carbon"]; +// CHECK:STDOUT: fn @C.as.ImplicitAs.impl.Convert.4 [from "library.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert.6 [from "library.carbon"]; +// CHECK:STDOUT: fn @C.as.ImplicitAs.impl.Convert.5 [from "library.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert.7 [from "library.carbon"]; +// CHECK:STDOUT: fn @C.as.ImplicitAs.impl.Convert.6 [from "library.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert.8 [from "library.carbon"]; +// CHECK:STDOUT: fn @C.as.ImplicitAs.impl.Convert.7 [from "library.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert.9 [from "library.carbon"]; +// CHECK:STDOUT: fn @C.as.ImplicitAs.impl.Convert.8 [from "library.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: fn @Make [from "library.carbon"]; // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/returned_var.carbon b/toolchain/check/testdata/return/returned_var.carbon index e8603c789bbc..2db77585d2b5 100644 --- a/toolchain/check/testdata/return/returned_var.carbon +++ b/toolchain/check/testdata/return/returned_var.carbon @@ -48,35 +48,35 @@ fn G() -> i32 { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %C.val: %C = struct_value (%int_1.5d2, %int_2.ef8) [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [concrete] -// CHECK:STDOUT: %Convert.bound.d04: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b6e: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b6e: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.2, @Destroy.impl(%i32) [concrete] -// CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a17: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.e6a: %T.as.Destroy.impl.Op.type.a17 = struct_value () [concrete] // CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.e6a, @Op.2(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(%i32) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -89,8 +89,8 @@ fn G() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -148,20 +148,20 @@ fn G() -> i32 { // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %.loc21_43.1: %struct_type.a.b.cfd = struct_literal (%int_1, %int_2) -// CHECK:STDOUT: %impl.elem0.loc21_43.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc21_43.1: = bound_method %int_1, %impl.elem0.loc21_43.1 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc21_43.1: = specific_function %impl.elem0.loc21_43.1, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc21_43.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc21_43.1: = bound_method %int_1, %impl.elem0.loc21_43.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc21_43.1: = specific_function %impl.elem0.loc21_43.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc21_43.2: = bound_method %int_1, %specific_fn.loc21_43.1 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc21_43.1: init %i32 = call %bound_method.loc21_43.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc21_43.2: init %i32 = converted %int_1, %int.convert_checked.loc21_43.1 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21_43.1: init %i32 = call %bound_method.loc21_43.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc21_43.2: init %i32 = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21_43.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc21_43.3: ref %i32 = class_element_access %return, element0 // CHECK:STDOUT: %.loc21_43.4: init %i32 = initialize_from %.loc21_43.2 to %.loc21_43.3 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %impl.elem0.loc21_43.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc21_43.3: = bound_method %int_2, %impl.elem0.loc21_43.2 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc21_43.2: = specific_function %impl.elem0.loc21_43.2, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc21_43.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc21_43.3: = bound_method %int_2, %impl.elem0.loc21_43.2 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc21_43.2: = specific_function %impl.elem0.loc21_43.2, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc21_43.4: = bound_method %int_2, %specific_fn.loc21_43.2 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc21_43.2: init %i32 = call %bound_method.loc21_43.4(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc21_43.5: init %i32 = converted %int_2, %int.convert_checked.loc21_43.2 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21_43.2: init %i32 = call %bound_method.loc21_43.4(%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc21_43.5: init %i32 = converted %int_2, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21_43.2 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc21_43.6: ref %i32 = class_element_access %return, element1 // CHECK:STDOUT: %.loc21_43.7: init %i32 = initialize_from %.loc21_43.5 to %.loc21_43.6 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc21_43.8: init %C = class_init (%.loc21_43.4, %.loc21_43.7), %return [concrete = constants.%C.val] @@ -180,12 +180,12 @@ fn G() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %result.var: ref %i32 = var %result.var_patt // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc26_12.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Convert.bound.d04] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc26_12.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc26_12.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method.b6e] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc26_12.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc26_12: init %i32 = converted %int_0, %int.convert_checked [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc26_12.2(%int_0) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc26_12: init %i32 = converted %int_0, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] // CHECK:STDOUT: assign %result.var, %.loc26_12 // CHECK:STDOUT: %.loc26_24: type = splice_block %i32.loc26 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc26: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -193,11 +193,11 @@ fn G() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %result: ref %i32 = bind_name result, %result.var // CHECK:STDOUT: %.loc26_16: %i32 = bind_value %result -// CHECK:STDOUT: %Op.bound: = bound_method %result.var, constants.%Op.e6a -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.e6a, @Op.2(constants.%i32) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc26_12.3: = bound_method %result.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %result.var, constants.%T.as.Destroy.impl.Op.e6a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc26_12.3: = bound_method %result.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.235 = addr_of %result.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc26_12.3(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc26_12.3(%addr) // CHECK:STDOUT: return %.loc26_16 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/returned_var_scope.carbon b/toolchain/check/testdata/return/returned_var_scope.carbon index 9ada64c3cef1..49967ccb5fd7 100644 --- a/toolchain/check/testdata/return/returned_var_scope.carbon +++ b/toolchain/check/testdata/return/returned_var_scope.carbon @@ -47,28 +47,28 @@ fn EnclosingButAfter(b: bool) -> i32 { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.d04: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.b6e: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.b6e: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.1, @Destroy.impl(%i32) [concrete] -// CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a17: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.e6a: %T.as.Destroy.impl.Op.type.a17 = struct_value () [concrete] // CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.e6a, @Op.1(%i32) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(%i32) [concrete] // CHECK:STDOUT: %Bool.type: type = fn_type @Bool [concrete] // CHECK:STDOUT: %Bool: %Bool.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.831: type = pattern_type bool [concrete] @@ -87,8 +87,8 @@ fn EnclosingButAfter(b: bool) -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: %Core.Bool: %Bool.type = import_ref Core//prelude/parts/bool, Bool, loaded [concrete = constants.%Bool] // CHECK:STDOUT: } @@ -119,9 +119,9 @@ fn EnclosingButAfter(b: bool) -> i32 { // CHECK:STDOUT: %i32.loc25: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %b.param: bool = value_param call_param0 // CHECK:STDOUT: %.loc25_25.1: type = splice_block %.loc25_25.3 [concrete = bool] { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc25_25.2: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc25_25.3: type = converted %bool.make_type, %.loc25_25.2 [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc25_25.2: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc25_25.3: type = converted %Bool.call, %.loc25_25.2 [concrete = bool] // CHECK:STDOUT: } // CHECK:STDOUT: %b: bool = bind_name b, %b.param // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param1 @@ -141,12 +141,12 @@ fn EnclosingButAfter(b: bool) -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %v.var: ref %i32 = var %v.var_patt // CHECK:STDOUT: %int_0.loc17: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %impl.elem0.loc17: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc17_14.1: = bound_method %int_0.loc17, %impl.elem0.loc17 [concrete = constants.%Convert.bound.d04] -// CHECK:STDOUT: %specific_fn.loc17: = specific_function %impl.elem0.loc17, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc17: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc17_14.1: = bound_method %int_0.loc17, %impl.elem0.loc17 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04] +// CHECK:STDOUT: %specific_fn.loc17: = specific_function %impl.elem0.loc17, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc17_14.2: = bound_method %int_0.loc17, %specific_fn.loc17 [concrete = constants.%bound_method.b6e] -// CHECK:STDOUT: %int.convert_checked.loc17: init %i32 = call %bound_method.loc17_14.2(%int_0.loc17) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc17_14: init %i32 = converted %int_0.loc17, %int.convert_checked.loc17 [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc17: init %i32 = call %bound_method.loc17_14.2(%int_0.loc17) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc17_14: init %i32 = converted %int_0.loc17, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc17 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: assign %v.var, %.loc17_14 // CHECK:STDOUT: %.loc17_21: type = splice_block %i32.loc17 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc17: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -166,12 +166,12 @@ fn EnclosingButAfter(b: bool) -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %w.var: ref %i32 = var %w.var_patt // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0.loc20: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc20_14.1: = bound_method %int_1, %impl.elem0.loc20 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc20: = specific_function %impl.elem0.loc20, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc20: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc20_14.1: = bound_method %int_1, %impl.elem0.loc20 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc20: = specific_function %impl.elem0.loc20, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc20_14.2: = bound_method %int_1, %specific_fn.loc20 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc20: init %i32 = call %bound_method.loc20_14.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc20_14: init %i32 = converted %int_1, %int.convert_checked.loc20 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc20: init %i32 = call %bound_method.loc20_14.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc20_14: init %i32 = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc20 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: assign %w.var, %.loc20_14 // CHECK:STDOUT: %.loc20_21: type = splice_block %i32.loc20 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc20: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -182,23 +182,23 @@ fn EnclosingButAfter(b: bool) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !if.else.loc19: // CHECK:STDOUT: %int_0.loc22: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %impl.elem0.loc22: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc22_11.1: = bound_method %int_0.loc22, %impl.elem0.loc22 [concrete = constants.%Convert.bound.d04] -// CHECK:STDOUT: %specific_fn.loc22: = specific_function %impl.elem0.loc22, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc22: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc22_11.1: = bound_method %int_0.loc22, %impl.elem0.loc22 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04] +// CHECK:STDOUT: %specific_fn.loc22: = specific_function %impl.elem0.loc22, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc22_11.2: = bound_method %int_0.loc22, %specific_fn.loc22 [concrete = constants.%bound_method.b6e] -// CHECK:STDOUT: %int.convert_checked.loc22: init %i32 = call %bound_method.loc22_11.2(%int_0.loc22) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc22_11.1: %i32 = value_of_initializer %int.convert_checked.loc22 [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22: init %i32 = call %bound_method.loc22_11.2(%int_0.loc22) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc22_11.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc22_11.2: %i32 = converted %int_0.loc22, %.loc22_11.1 [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %Op.bound.loc20: = bound_method %w.var, constants.%Op.e6a -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.e6a, @Op.1(constants.%i32) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc20_14.3: = bound_method %w.var, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc20: = bound_method %w.var, constants.%T.as.Destroy.impl.Op.e6a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc20_14.3: = bound_method %w.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc20: %ptr.235 = addr_of %w.var -// CHECK:STDOUT: %no_op.loc20: init %empty_tuple.type = call %bound_method.loc20_14.3(%addr.loc20) -// CHECK:STDOUT: %Op.bound.loc17: = bound_method %v.var, constants.%Op.e6a -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.e6a, @Op.1(constants.%i32) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc17_14.3: = bound_method %v.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc20: init %empty_tuple.type = call %bound_method.loc20_14.3(%addr.loc20) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc17: = bound_method %v.var, constants.%T.as.Destroy.impl.Op.e6a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc17_14.3: = bound_method %v.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc17: %ptr.235 = addr_of %v.var -// CHECK:STDOUT: %no_op.loc17: init %empty_tuple.type = call %bound_method.loc17_14.3(%addr.loc17) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc17: init %empty_tuple.type = call %bound_method.loc17_14.3(%addr.loc17) // CHECK:STDOUT: return %.loc22_11.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -214,12 +214,12 @@ fn EnclosingButAfter(b: bool) -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %v.var: ref %i32 = var %v.var_patt // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %impl.elem0.loc27: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc27_14.1: = bound_method %int_0, %impl.elem0.loc27 [concrete = constants.%Convert.bound.d04] -// CHECK:STDOUT: %specific_fn.loc27: = specific_function %impl.elem0.loc27, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc27: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc27_14.1: = bound_method %int_0, %impl.elem0.loc27 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04] +// CHECK:STDOUT: %specific_fn.loc27: = specific_function %impl.elem0.loc27, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc27_14.2: = bound_method %int_0, %specific_fn.loc27 [concrete = constants.%bound_method.b6e] -// CHECK:STDOUT: %int.convert_checked.loc27: init %i32 = call %bound_method.loc27_14.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc27_14: init %i32 = converted %int_0, %int.convert_checked.loc27 [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc27: init %i32 = call %bound_method.loc27_14.2(%int_0) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc27_14: init %i32 = converted %int_0, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc27 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: assign %v.var, %.loc27_14 // CHECK:STDOUT: %.loc27_21: type = splice_block %i32.loc27 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc27: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -227,11 +227,11 @@ fn EnclosingButAfter(b: bool) -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %v: ref %i32 = bind_name v, %v.var // CHECK:STDOUT: %.loc27_18: %i32 = bind_value %v -// CHECK:STDOUT: %Op.bound.loc27_14.1: = bound_method %v.var, constants.%Op.e6a -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.e6a, @Op.1(constants.%i32) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc27_14.3: = bound_method %v.var, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc27_14.1: = bound_method %v.var, constants.%T.as.Destroy.impl.Op.e6a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc27_14.3: = bound_method %v.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc27_14.1: %ptr.235 = addr_of %v.var -// CHECK:STDOUT: %no_op.loc27_14.1: init %empty_tuple.type = call %bound_method.loc27_14.3(%addr.loc27_14.1) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc27_14.1: init %empty_tuple.type = call %bound_method.loc27_14.3(%addr.loc27_14.1) // CHECK:STDOUT: return %.loc27_18 // CHECK:STDOUT: // CHECK:STDOUT: !if.else: @@ -241,12 +241,12 @@ fn EnclosingButAfter(b: bool) -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %w.var: ref %i32 = var %w.var_patt // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0.loc30: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc30_12.1: = bound_method %int_1, %impl.elem0.loc30 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc30: = specific_function %impl.elem0.loc30, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc30: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc30_12.1: = bound_method %int_1, %impl.elem0.loc30 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc30: = specific_function %impl.elem0.loc30, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc30_12.2: = bound_method %int_1, %specific_fn.loc30 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc30: init %i32 = call %bound_method.loc30_12.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc30_12: init %i32 = converted %int_1, %int.convert_checked.loc30 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc30: init %i32 = call %bound_method.loc30_12.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc30_12: init %i32 = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc30 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: assign %w.var, %.loc30_12 // CHECK:STDOUT: %.loc30_19: type = splice_block %i32.loc30 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc30: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -254,16 +254,16 @@ fn EnclosingButAfter(b: bool) -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %w: ref %i32 = bind_name w, %w.var // CHECK:STDOUT: %.loc30_16: %i32 = bind_value %w -// CHECK:STDOUT: %Op.bound.loc30: = bound_method %w.var, constants.%Op.e6a -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.e6a, @Op.1(constants.%i32) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc30_12.3: = bound_method %w.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc30: = bound_method %w.var, constants.%T.as.Destroy.impl.Op.e6a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc30_12.3: = bound_method %w.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc30: %ptr.235 = addr_of %w.var -// CHECK:STDOUT: %no_op.loc30: init %empty_tuple.type = call %bound_method.loc30_12.3(%addr.loc30) -// CHECK:STDOUT: %Op.bound.loc27_14.2: = bound_method %v.var, constants.%Op.e6a -// CHECK:STDOUT: %Op.specific_fn.3: = specific_function constants.%Op.e6a, @Op.1(constants.%i32) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc27_14.4: = bound_method %v.var, %Op.specific_fn.3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc30: init %empty_tuple.type = call %bound_method.loc30_12.3(%addr.loc30) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc27_14.2: = bound_method %v.var, constants.%T.as.Destroy.impl.Op.e6a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.3: = specific_function constants.%T.as.Destroy.impl.Op.e6a, @T.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc27_14.4: = bound_method %v.var, %T.as.Destroy.impl.Op.specific_fn.3 // CHECK:STDOUT: %addr.loc27_14.2: %ptr.235 = addr_of %v.var -// CHECK:STDOUT: %no_op.loc27_14.2: init %empty_tuple.type = call %bound_method.loc27_14.4(%addr.loc27_14.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc27_14.2: init %empty_tuple.type = call %bound_method.loc27_14.4(%addr.loc27_14.2) // CHECK:STDOUT: return %.loc30_16 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/struct.carbon b/toolchain/check/testdata/return/struct.carbon index 3f41fb5b8bad..fb50ba7c13cf 100644 --- a/toolchain/check/testdata/return/struct.carbon +++ b/toolchain/check/testdata/return/struct.carbon @@ -32,18 +32,18 @@ fn Main() -> {.a: i32} { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_3.1ba, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_3.1ba, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_3.822: %i32 = int_value 3 [concrete] // CHECK:STDOUT: %struct: %struct_type.a.ba9 = struct_value (%int_3.822) [concrete] // CHECK:STDOUT: } @@ -57,8 +57,8 @@ fn Main() -> {.a: i32} { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -83,12 +83,12 @@ fn Main() -> {.a: i32} { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] // CHECK:STDOUT: %.loc16_17.1: %struct_type.a.a6c = struct_literal (%int_3) -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc16_17.1: = bound_method %int_3, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc16_17.1: = bound_method %int_3, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc16_17.2: = bound_method %int_3, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc16_17.2(%int_3) [concrete = constants.%int_3.822] -// CHECK:STDOUT: %.loc16_17.2: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_3.822] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc16_17.2(%int_3) [concrete = constants.%int_3.822] +// CHECK:STDOUT: %.loc16_17.2: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_3.822] // CHECK:STDOUT: %.loc16_17.3: %i32 = converted %int_3, %.loc16_17.2 [concrete = constants.%int_3.822] // CHECK:STDOUT: %struct: %struct_type.a.ba9 = struct_value (%.loc16_17.3) [concrete = constants.%struct] // CHECK:STDOUT: %.loc16_18: %struct_type.a.ba9 = converted %.loc16_17.1, %struct [concrete = constants.%struct] diff --git a/toolchain/check/testdata/return/tuple.carbon b/toolchain/check/testdata/return/tuple.carbon index a22d6a47ab8f..e63696ab5d6f 100644 --- a/toolchain/check/testdata/return/tuple.carbon +++ b/toolchain/check/testdata/return/tuple.carbon @@ -35,21 +35,21 @@ fn Main() -> (i32, i32) { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.75f: = bound_method %int_15.447, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.984: = bound_method %int_15.447, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.75f: = bound_method %int_15.447, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.984: = bound_method %int_15.447, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_15.7f7: %i32 = int_value 15 [concrete] -// CHECK:STDOUT: %Convert.bound.76a: = bound_method %int_35.c79, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.231: = bound_method %int_35.c79, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.76a: = bound_method %int_35.c79, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.231: = bound_method %int_35.c79, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_35.c78: %i32 = int_value 35 [concrete] // CHECK:STDOUT: %tuple: %tuple.type.d07 = tuple_value (%int_15.7f7, %int_35.c78) [concrete] // CHECK:STDOUT: } @@ -63,8 +63,8 @@ fn Main() -> (i32, i32) { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -93,20 +93,20 @@ fn Main() -> (i32, i32) { // CHECK:STDOUT: %int_15: Core.IntLiteral = int_value 15 [concrete = constants.%int_15.447] // CHECK:STDOUT: %int_35: Core.IntLiteral = int_value 35 [concrete = constants.%int_35.c79] // CHECK:STDOUT: %.loc17_17.1: %tuple.type.f94 = tuple_literal (%int_15, %int_35) -// CHECK:STDOUT: %impl.elem0.loc17_17.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc17_17.1: = bound_method %int_15, %impl.elem0.loc17_17.1 [concrete = constants.%Convert.bound.75f] -// CHECK:STDOUT: %specific_fn.loc17_17.1: = specific_function %impl.elem0.loc17_17.1, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc17_17.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc17_17.1: = bound_method %int_15, %impl.elem0.loc17_17.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.75f] +// CHECK:STDOUT: %specific_fn.loc17_17.1: = specific_function %impl.elem0.loc17_17.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc17_17.2: = bound_method %int_15, %specific_fn.loc17_17.1 [concrete = constants.%bound_method.984] -// CHECK:STDOUT: %int.convert_checked.loc17_17.1: init %i32 = call %bound_method.loc17_17.2(%int_15) [concrete = constants.%int_15.7f7] -// CHECK:STDOUT: %.loc17_17.2: init %i32 = converted %int_15, %int.convert_checked.loc17_17.1 [concrete = constants.%int_15.7f7] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc17_17.1: init %i32 = call %bound_method.loc17_17.2(%int_15) [concrete = constants.%int_15.7f7] +// CHECK:STDOUT: %.loc17_17.2: init %i32 = converted %int_15, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc17_17.1 [concrete = constants.%int_15.7f7] // CHECK:STDOUT: %tuple.elem0: ref %i32 = tuple_access %return, element0 // CHECK:STDOUT: %.loc17_17.3: init %i32 = initialize_from %.loc17_17.2 to %tuple.elem0 [concrete = constants.%int_15.7f7] -// CHECK:STDOUT: %impl.elem0.loc17_17.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc17_17.3: = bound_method %int_35, %impl.elem0.loc17_17.2 [concrete = constants.%Convert.bound.76a] -// CHECK:STDOUT: %specific_fn.loc17_17.2: = specific_function %impl.elem0.loc17_17.2, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc17_17.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc17_17.3: = bound_method %int_35, %impl.elem0.loc17_17.2 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.76a] +// CHECK:STDOUT: %specific_fn.loc17_17.2: = specific_function %impl.elem0.loc17_17.2, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc17_17.4: = bound_method %int_35, %specific_fn.loc17_17.2 [concrete = constants.%bound_method.231] -// CHECK:STDOUT: %int.convert_checked.loc17_17.2: init %i32 = call %bound_method.loc17_17.4(%int_35) [concrete = constants.%int_35.c78] -// CHECK:STDOUT: %.loc17_17.4: init %i32 = converted %int_35, %int.convert_checked.loc17_17.2 [concrete = constants.%int_35.c78] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc17_17.2: init %i32 = call %bound_method.loc17_17.4(%int_35) [concrete = constants.%int_35.c78] +// CHECK:STDOUT: %.loc17_17.4: init %i32 = converted %int_35, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc17_17.2 [concrete = constants.%int_35.c78] // CHECK:STDOUT: %tuple.elem1: ref %i32 = tuple_access %return, element1 // CHECK:STDOUT: %.loc17_17.5: init %i32 = initialize_from %.loc17_17.4 to %tuple.elem1 [concrete = constants.%int_35.c78] // CHECK:STDOUT: %.loc17_17.6: init %tuple.type.d07 = tuple_init (%.loc17_17.3, %.loc17_17.5) to %return [concrete = constants.%tuple] diff --git a/toolchain/check/testdata/return/value.carbon b/toolchain/check/testdata/return/value.carbon index 379035a8faa0..bcaaa5c2cae3 100644 --- a/toolchain/check/testdata/return/value.carbon +++ b/toolchain/check/testdata/return/value.carbon @@ -30,18 +30,18 @@ fn Main() -> i32 { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -54,8 +54,8 @@ fn Main() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -78,12 +78,12 @@ fn Main() -> i32 { // CHECK:STDOUT: fn @Main() -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc16_11.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc16_11.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc16_11.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc16_11.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc16_11.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc16_11.2(%int_0) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc16_11.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc16_11.2: %i32 = converted %int_0, %.loc16_11.1 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: return %.loc16_11.2 // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/struct/fail_member_access_type.carbon b/toolchain/check/testdata/struct/fail_member_access_type.carbon index c7fa8cf67fc3..c892b912fce4 100644 --- a/toolchain/check/testdata/struct/fail_member_access_type.carbon +++ b/toolchain/check/testdata/struct/fail_member_access_type.carbon @@ -61,9 +61,9 @@ var y: i32 = x.b; // CHECK:STDOUT: %x.var: ref %struct_type.a = var %x.var_patt [concrete] // CHECK:STDOUT: %.loc15_16: type = splice_block %struct_type.a [concrete = constants.%struct_type.a] { // CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [concrete = constants.%int_64] -// CHECK:STDOUT: %float.make_type: init type = call constants.%Float(%int_64) [concrete = f64] -// CHECK:STDOUT: %.loc15_13.1: type = value_of_initializer %float.make_type [concrete = f64] -// CHECK:STDOUT: %.loc15_13.2: type = converted %float.make_type, %.loc15_13.1 [concrete = f64] +// CHECK:STDOUT: %Float.call: init type = call constants.%Float(%int_64) [concrete = f64] +// CHECK:STDOUT: %.loc15_13.1: type = value_of_initializer %Float.call [concrete = f64] +// CHECK:STDOUT: %.loc15_13.2: type = converted %Float.call, %.loc15_13.1 [concrete = f64] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: f64} [concrete = constants.%struct_type.a] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %struct_type.a = bind_name x, %x.var [concrete = %x.var] diff --git a/toolchain/check/testdata/struct/fail_non_member_access.carbon b/toolchain/check/testdata/struct/fail_non_member_access.carbon index 894ec24dcbf6..bf6d0a1b109f 100644 --- a/toolchain/check/testdata/struct/fail_non_member_access.carbon +++ b/toolchain/check/testdata/struct/fail_non_member_access.carbon @@ -33,19 +33,19 @@ var y: i32 = x.b; // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_4.0c1, %Convert.956 [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_4.0c1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_4.0c1, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_4.0c1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_4.940: %i32 = int_value 4 [concrete] // CHECK:STDOUT: %struct: %struct_type.a.ba9 = struct_value (%int_4.940) [concrete] // CHECK:STDOUT: } @@ -59,8 +59,8 @@ var y: i32 = x.b; // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -97,12 +97,12 @@ var y: i32 = x.b; // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete = constants.%int_4.0c1] // CHECK:STDOUT: %.loc15_27.1: %struct_type.a.a6c = struct_literal (%int_4) -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc15_27.1: = bound_method %int_4, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc15_27.1: = bound_method %int_4, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc15_27.2: = bound_method %int_4, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc15_27.2(%int_4) [concrete = constants.%int_4.940] -// CHECK:STDOUT: %.loc15_27.2: init %i32 = converted %int_4, %int.convert_checked [concrete = constants.%int_4.940] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc15_27.2(%int_4) [concrete = constants.%int_4.940] +// CHECK:STDOUT: %.loc15_27.2: init %i32 = converted %int_4, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_4.940] // CHECK:STDOUT: %.loc15_27.3: init %struct_type.a.ba9 = struct_init (%.loc15_27.2) to file.%x.var [concrete = constants.%struct] // CHECK:STDOUT: %.loc15_1: init %struct_type.a.ba9 = converted %.loc15_27.1, %.loc15_27.3 [concrete = constants.%struct] // CHECK:STDOUT: assign file.%x.var, %.loc15_1 diff --git a/toolchain/check/testdata/struct/import.carbon b/toolchain/check/testdata/struct/import.carbon index 245f76442776..4e43ed1cb1cc 100644 --- a/toolchain/check/testdata/struct/import.carbon +++ b/toolchain/check/testdata/struct/import.carbon @@ -70,18 +70,18 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.d04: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.b6e: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.b6e: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: %struct.92d: %struct_type.a.ba9 = struct_value (%int_0.6a9) [concrete] // CHECK:STDOUT: %tuple.type.85c: type = tuple_type (type) [concrete] @@ -110,11 +110,11 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %struct_type.a.b.cfd: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %struct.ed5: %struct_type.a.b.501 = struct_value (%int_1.5d2, %int_2.ef8) [concrete] // CHECK:STDOUT: %C.c8f: type = class_type @C, @C(%struct.ed5) [concrete] @@ -132,8 +132,8 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -194,19 +194,19 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %.loc9_28.1: %struct_type.a.b.cfd = struct_literal (%int_1, %int_2) -// CHECK:STDOUT: %impl.elem0.loc9_28.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc9_28.1: = bound_method %int_1, %impl.elem0.loc9_28.1 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc9_28.1: = specific_function %impl.elem0.loc9_28.1, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc9_28.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc9_28.1: = bound_method %int_1, %impl.elem0.loc9_28.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc9_28.1: = specific_function %impl.elem0.loc9_28.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc9_28.2: = bound_method %int_1, %specific_fn.loc9_28.1 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc9_28.1: init %i32 = call %bound_method.loc9_28.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc9_28.2: %i32 = value_of_initializer %int.convert_checked.loc9_28.1 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9_28.1: init %i32 = call %bound_method.loc9_28.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc9_28.2: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9_28.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc9_28.3: %i32 = converted %int_1, %.loc9_28.2 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %impl.elem0.loc9_28.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc9_28.3: = bound_method %int_2, %impl.elem0.loc9_28.2 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc9_28.2: = specific_function %impl.elem0.loc9_28.2, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc9_28.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc9_28.3: = bound_method %int_2, %impl.elem0.loc9_28.2 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc9_28.2: = specific_function %impl.elem0.loc9_28.2, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc9_28.4: = bound_method %int_2, %specific_fn.loc9_28.2 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc9_28.2: init %i32 = call %bound_method.loc9_28.4(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc9_28.4: %i32 = value_of_initializer %int.convert_checked.loc9_28.2 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9_28.2: init %i32 = call %bound_method.loc9_28.4(%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc9_28.4: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9_28.2 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc9_28.5: %i32 = converted %int_2, %.loc9_28.4 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %struct: %struct_type.a.b.501 = struct_value (%.loc9_28.3, %.loc9_28.5) [concrete = constants.%struct.ed5] // CHECK:STDOUT: %.loc9_29: %struct_type.a.b.501 = converted %.loc9_28.1, %struct [concrete = constants.%struct.ed5] @@ -237,12 +237,12 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_0.loc4: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] // CHECK:STDOUT: %.loc4_31.1: %struct_type.a.a6c = struct_literal (%int_0.loc4) -// CHECK:STDOUT: %impl.elem0.loc4: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc4_31.1: = bound_method %int_0.loc4, %impl.elem0.loc4 [concrete = constants.%Convert.bound.d04] -// CHECK:STDOUT: %specific_fn.loc4: = specific_function %impl.elem0.loc4, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc4: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc4_31.1: = bound_method %int_0.loc4, %impl.elem0.loc4 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04] +// CHECK:STDOUT: %specific_fn.loc4: = specific_function %impl.elem0.loc4, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc4_31.2: = bound_method %int_0.loc4, %specific_fn.loc4 [concrete = constants.%bound_method.b6e] -// CHECK:STDOUT: %int.convert_checked.loc4: init %i32 = call %bound_method.loc4_31.2(%int_0.loc4) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc4_31.2: init %i32 = converted %int_0.loc4, %int.convert_checked.loc4 [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc4: init %i32 = call %bound_method.loc4_31.2(%int_0.loc4) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc4_31.2: init %i32 = converted %int_0.loc4, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc4 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc4_31.3: init %struct_type.a.ba9 = struct_init (%.loc4_31.2) to file.%a_ref.var [concrete = constants.%struct.92d] // CHECK:STDOUT: %.loc4_1: init %struct_type.a.ba9 = converted %.loc4_31.1, %.loc4_31.3 [concrete = constants.%struct.92d] // CHECK:STDOUT: assign file.%a_ref.var, %.loc4_1 @@ -252,33 +252,33 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: %.loc6_29.1: %struct_type.b.c.9af = struct_literal (%int_0.loc6_17, %.loc6_28.1) // CHECK:STDOUT: %int_0.loc6_37: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] // CHECK:STDOUT: %.loc6_38.1: %struct_type.a.d.b82 = struct_literal (%.loc6_29.1, %int_0.loc6_37) -// CHECK:STDOUT: %impl.elem0.loc6_29: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc6_29.1: = bound_method %int_0.loc6_17, %impl.elem0.loc6_29 [concrete = constants.%Convert.bound.d04] -// CHECK:STDOUT: %specific_fn.loc6_29: = specific_function %impl.elem0.loc6_29, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc6_29: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc6_29.1: = bound_method %int_0.loc6_17, %impl.elem0.loc6_29 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04] +// CHECK:STDOUT: %specific_fn.loc6_29: = specific_function %impl.elem0.loc6_29, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc6_29.2: = bound_method %int_0.loc6_17, %specific_fn.loc6_29 [concrete = constants.%bound_method.b6e] -// CHECK:STDOUT: %int.convert_checked.loc6_29: init %i32 = call %bound_method.loc6_29.2(%int_0.loc6_17) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc6_29.2: init %i32 = converted %int_0.loc6_17, %int.convert_checked.loc6_29 [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6_29: init %i32 = call %bound_method.loc6_29.2(%int_0.loc6_17) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc6_29.2: init %i32 = converted %int_0.loc6_17, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6_29 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc6_38.2: ref %struct_type.b.c.929 = struct_access file.%b_ref.var, element0 [concrete = constants.%.042] // CHECK:STDOUT: %.loc6_29.3: ref %i32 = struct_access %.loc6_38.2, element0 [concrete = constants.%.643] // CHECK:STDOUT: %.loc6_29.4: init %i32 = initialize_from %.loc6_29.2 to %.loc6_29.3 [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %impl.elem0.loc6_28: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc6_28.1: = bound_method %int_0.loc6_26, %impl.elem0.loc6_28 [concrete = constants.%Convert.bound.d04] -// CHECK:STDOUT: %specific_fn.loc6_28: = specific_function %impl.elem0.loc6_28, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc6_28: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc6_28.1: = bound_method %int_0.loc6_26, %impl.elem0.loc6_28 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04] +// CHECK:STDOUT: %specific_fn.loc6_28: = specific_function %impl.elem0.loc6_28, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc6_28.2: = bound_method %int_0.loc6_26, %specific_fn.loc6_28 [concrete = constants.%bound_method.b6e] -// CHECK:STDOUT: %int.convert_checked.loc6_28: init %i32 = call %bound_method.loc6_28.2(%int_0.loc6_26) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc6_28.2: init %i32 = converted %int_0.loc6_26, %int.convert_checked.loc6_28 [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6_28: init %i32 = call %bound_method.loc6_28.2(%int_0.loc6_26) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc6_28.2: init %i32 = converted %int_0.loc6_26, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6_28 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc6_29.5: ref %tuple.type.a1c = struct_access %.loc6_38.2, element1 [concrete = constants.%.66d] // CHECK:STDOUT: %.loc6_28.3: init %tuple.type.a1c = tuple_init (%.loc6_28.2) to %.loc6_29.5 [concrete = constants.%tuple] // CHECK:STDOUT: %.loc6_29.6: init %tuple.type.a1c = converted %.loc6_28.1, %.loc6_28.3 [concrete = constants.%tuple] // CHECK:STDOUT: %.loc6_29.7: init %tuple.type.a1c = initialize_from %.loc6_29.6 to %.loc6_29.5 [concrete = constants.%tuple] // CHECK:STDOUT: %.loc6_29.8: init %struct_type.b.c.929 = struct_init (%.loc6_29.4, %.loc6_29.7) to %.loc6_38.2 [concrete = constants.%struct.381] // CHECK:STDOUT: %.loc6_38.3: init %struct_type.b.c.929 = converted %.loc6_29.1, %.loc6_29.8 [concrete = constants.%struct.381] -// CHECK:STDOUT: %impl.elem0.loc6_38: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc6_38.1: = bound_method %int_0.loc6_37, %impl.elem0.loc6_38 [concrete = constants.%Convert.bound.d04] -// CHECK:STDOUT: %specific_fn.loc6_38: = specific_function %impl.elem0.loc6_38, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc6_38: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc6_38.1: = bound_method %int_0.loc6_37, %impl.elem0.loc6_38 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04] +// CHECK:STDOUT: %specific_fn.loc6_38: = specific_function %impl.elem0.loc6_38, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc6_38.2: = bound_method %int_0.loc6_37, %specific_fn.loc6_38 [concrete = constants.%bound_method.b6e] -// CHECK:STDOUT: %int.convert_checked.loc6_38: init %i32 = call %bound_method.loc6_38.2(%int_0.loc6_37) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc6_38.4: init %i32 = converted %int_0.loc6_37, %int.convert_checked.loc6_38 [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6_38: init %i32 = call %bound_method.loc6_38.2(%int_0.loc6_37) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc6_38.4: init %i32 = converted %int_0.loc6_37, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6_38 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc6_38.5: ref %i32 = struct_access file.%b_ref.var, element1 [concrete = constants.%.c6b] // CHECK:STDOUT: %.loc6_38.6: init %i32 = initialize_from %.loc6_38.4 to %.loc6_38.5 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc6_38.7: init %struct_type.a.d.3d9 = struct_init (%.loc6_38.3, %.loc6_38.6) to file.%b_ref.var [concrete = constants.%struct.20d] @@ -303,8 +303,8 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.595: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.595 = struct_value () [concrete] -// CHECK:STDOUT: %Convert.type.9a6: type = fn_type @Convert.2, @ImplicitAs.impl.a8d(%To) [symbolic] -// CHECK:STDOUT: %Convert.458: %Convert.type.9a6 = struct_value () [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.9a6: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.458: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.9a6 = struct_value () [symbolic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %i32} [concrete] @@ -334,18 +334,18 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %struct_type.a.b.cfd: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [concrete] // CHECK:STDOUT: %ImplicitAs.type.b9e: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.ea0: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] -// CHECK:STDOUT: %ImplicitAs.impl_witness.2ce: = impl_witness imports.%ImplicitAs.impl_witness_table.1ad, @ImplicitAs.impl.a8d(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.e14: type = fn_type @Convert.2, @ImplicitAs.impl.a8d(%int_32) [concrete] -// CHECK:STDOUT: %Convert.4cb: %Convert.type.e14 = struct_value () [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.ea0: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.2ce: = impl_witness imports.%ImplicitAs.impl_witness_table.1ad, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e14: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.4cb: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e14 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.b9e = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.2ce) [concrete] -// CHECK:STDOUT: %.940: type = fn_type_with_self_type %Convert.type.ea0, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.dc5: = bound_method %int_1.5b8, %Convert.4cb [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.4cb, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.c37: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.940: type = fn_type_with_self_type %ImplicitAs.Convert.type.ea0, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.dc5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.4cb [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.4cb, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.c37: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.47b: %i32 = int_value 1 [concrete] -// CHECK:STDOUT: %Convert.bound.30f: = bound_method %int_2.ecc, %Convert.4cb [concrete] -// CHECK:STDOUT: %bound_method.62b: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.30f: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.4cb [concrete] +// CHECK:STDOUT: %bound_method.62b: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.d0d: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %struct: %struct_type.a.b.5ca = struct_value (%int_1.47b, %int_2.d0d) [concrete] // CHECK:STDOUT: %C.a8a: type = class_type @C, @C(%struct) [concrete] @@ -365,8 +365,8 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Implicit.import_ref.773: @ImplicitAs.impl.a8d.%Convert.type (%Convert.type.9a6) = import_ref Implicit//default, inst117 [indirect], loaded [symbolic = @ImplicitAs.impl.a8d.%Convert (constants.%Convert.458)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.1ad = impl_witness_table (%Implicit.import_ref.773), @ImplicitAs.impl.a8d [concrete] +// CHECK:STDOUT: %Implicit.import_ref.773: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.9a6) = import_ref Implicit//default, inst117 [indirect], loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.458)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.1ad = impl_witness_table (%Implicit.import_ref.773), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %a_ref.patt: %pattern_type.b54 = binding_pattern a_ref [concrete] // CHECK:STDOUT: %a_ref.var_patt: %pattern_type.b54 = var_pattern %a_ref.patt [concrete] @@ -433,19 +433,19 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %.loc6_25.1: %struct_type.a.b.cfd = struct_literal (%int_1, %int_2) -// CHECK:STDOUT: %impl.elem0.loc6_25.1: %.940 = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Convert.4cb] -// CHECK:STDOUT: %bound_method.loc6_25.1: = bound_method %int_1, %impl.elem0.loc6_25.1 [concrete = constants.%Convert.bound.dc5] -// CHECK:STDOUT: %specific_fn.loc6_25.1: = specific_function %impl.elem0.loc6_25.1, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc6_25.1: %.940 = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.4cb] +// CHECK:STDOUT: %bound_method.loc6_25.1: = bound_method %int_1, %impl.elem0.loc6_25.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.dc5] +// CHECK:STDOUT: %specific_fn.loc6_25.1: = specific_function %impl.elem0.loc6_25.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc6_25.2: = bound_method %int_1, %specific_fn.loc6_25.1 [concrete = constants.%bound_method.c37] -// CHECK:STDOUT: %int.convert_checked.loc6_25.1: init %i32 = call %bound_method.loc6_25.2(%int_1) [concrete = constants.%int_1.47b] -// CHECK:STDOUT: %.loc6_25.2: %i32 = value_of_initializer %int.convert_checked.loc6_25.1 [concrete = constants.%int_1.47b] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6_25.1: init %i32 = call %bound_method.loc6_25.2(%int_1) [concrete = constants.%int_1.47b] +// CHECK:STDOUT: %.loc6_25.2: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6_25.1 [concrete = constants.%int_1.47b] // CHECK:STDOUT: %.loc6_25.3: %i32 = converted %int_1, %.loc6_25.2 [concrete = constants.%int_1.47b] -// CHECK:STDOUT: %impl.elem0.loc6_25.2: %.940 = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Convert.4cb] -// CHECK:STDOUT: %bound_method.loc6_25.3: = bound_method %int_2, %impl.elem0.loc6_25.2 [concrete = constants.%Convert.bound.30f] -// CHECK:STDOUT: %specific_fn.loc6_25.2: = specific_function %impl.elem0.loc6_25.2, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc6_25.2: %.940 = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.4cb] +// CHECK:STDOUT: %bound_method.loc6_25.3: = bound_method %int_2, %impl.elem0.loc6_25.2 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.30f] +// CHECK:STDOUT: %specific_fn.loc6_25.2: = specific_function %impl.elem0.loc6_25.2, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc6_25.4: = bound_method %int_2, %specific_fn.loc6_25.2 [concrete = constants.%bound_method.62b] -// CHECK:STDOUT: %int.convert_checked.loc6_25.2: init %i32 = call %bound_method.loc6_25.4(%int_2) [concrete = constants.%int_2.d0d] -// CHECK:STDOUT: %.loc6_25.4: %i32 = value_of_initializer %int.convert_checked.loc6_25.2 [concrete = constants.%int_2.d0d] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6_25.2: init %i32 = call %bound_method.loc6_25.4(%int_2) [concrete = constants.%int_2.d0d] +// CHECK:STDOUT: %.loc6_25.4: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc6_25.2 [concrete = constants.%int_2.d0d] // CHECK:STDOUT: %.loc6_25.5: %i32 = converted %int_2, %.loc6_25.4 [concrete = constants.%int_2.d0d] // CHECK:STDOUT: %struct: %struct_type.a.b.5ca = struct_value (%.loc6_25.3, %.loc6_25.5) [concrete = constants.%struct] // CHECK:STDOUT: %.loc6_26.2: %struct_type.a.b.5ca = converted %.loc6_25.1, %struct [concrete = constants.%struct] @@ -619,8 +619,8 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] // CHECK:STDOUT: %ImplicitAs.type.595: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.595 = struct_value () [concrete] -// CHECK:STDOUT: %Convert.type.9a6: type = fn_type @Convert.2, @ImplicitAs.impl.a8d(%To) [symbolic] -// CHECK:STDOUT: %Convert.458: %Convert.type.9a6 = struct_value () [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.9a6: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.458: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.9a6 = struct_value () [symbolic] // CHECK:STDOUT: %C.type: type = generic_class_type @C [concrete] // CHECK:STDOUT: %C.generic: %C.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] @@ -633,18 +633,18 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: %int_4.0c1: Core.IntLiteral = int_value 4 [concrete] // CHECK:STDOUT: %struct_type.a.b.cfd: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [concrete] // CHECK:STDOUT: %ImplicitAs.type.b9e: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.ea0: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] -// CHECK:STDOUT: %ImplicitAs.impl_witness.2ce: = impl_witness imports.%ImplicitAs.impl_witness_table.1ad, @ImplicitAs.impl.a8d(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.e14: type = fn_type @Convert.2, @ImplicitAs.impl.a8d(%int_32) [concrete] -// CHECK:STDOUT: %Convert.4cb: %Convert.type.e14 = struct_value () [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.ea0: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.2ce: = impl_witness imports.%ImplicitAs.impl_witness_table.1ad, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e14: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.4cb: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e14 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.b9e = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.2ce) [concrete] -// CHECK:STDOUT: %.940: type = fn_type_with_self_type %Convert.type.ea0, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.a00: = bound_method %int_3.1ba, %Convert.4cb [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.4cb, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.fc5: = bound_method %int_3.1ba, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.940: type = fn_type_with_self_type %ImplicitAs.Convert.type.ea0, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.a00: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.4cb [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.4cb, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.fc5: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_3.d47: %i32 = int_value 3 [concrete] -// CHECK:STDOUT: %Convert.bound.694: = bound_method %int_4.0c1, %Convert.4cb [concrete] -// CHECK:STDOUT: %bound_method.b6e: = bound_method %int_4.0c1, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.694: = bound_method %int_4.0c1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.4cb [concrete] +// CHECK:STDOUT: %bound_method.b6e: = bound_method %int_4.0c1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_4.ea3: %i32 = int_value 4 [concrete] // CHECK:STDOUT: %struct.8e6: %struct_type.a.b.5ca = struct_value (%int_3.d47, %int_4.ea3) [concrete] // CHECK:STDOUT: %C.5a7: type = class_type @C, @C(%struct.8e6) [concrete] @@ -667,8 +667,8 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Implicit.import_ref.773: @ImplicitAs.impl.a8d.%Convert.type (%Convert.type.9a6) = import_ref Implicit//default, inst117 [indirect], loaded [symbolic = @ImplicitAs.impl.a8d.%Convert (constants.%Convert.458)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.1ad = impl_witness_table (%Implicit.import_ref.773), @ImplicitAs.impl.a8d [concrete] +// CHECK:STDOUT: %Implicit.import_ref.773: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.9a6) = import_ref Implicit//default, inst117 [indirect], loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.458)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.1ad = impl_witness_table (%Implicit.import_ref.773), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Implicit.import_ref.c81: %struct_type.a.b.5ca = import_ref Implicit//default, loc8_9, loaded [symbolic = @C.%S (constants.%S)] // CHECK:STDOUT: %Implicit.import_ref.8f2: = import_ref Implicit//default, loc8_34, loaded [concrete = constants.%complete_type.357] // CHECK:STDOUT: %Implicit.import_ref.b8b = import_ref Implicit//default, inst456 [no loc], unloaded @@ -697,19 +697,19 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete = constants.%int_4.0c1] // CHECK:STDOUT: %.loc10_29.1: %struct_type.a.b.cfd = struct_literal (%int_3, %int_4) -// CHECK:STDOUT: %impl.elem0.loc10_29.1: %.940 = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Convert.4cb] -// CHECK:STDOUT: %bound_method.loc10_29.1: = bound_method %int_3, %impl.elem0.loc10_29.1 [concrete = constants.%Convert.bound.a00] -// CHECK:STDOUT: %specific_fn.loc10_29.1: = specific_function %impl.elem0.loc10_29.1, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc10_29.1: %.940 = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.4cb] +// CHECK:STDOUT: %bound_method.loc10_29.1: = bound_method %int_3, %impl.elem0.loc10_29.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.a00] +// CHECK:STDOUT: %specific_fn.loc10_29.1: = specific_function %impl.elem0.loc10_29.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc10_29.2: = bound_method %int_3, %specific_fn.loc10_29.1 [concrete = constants.%bound_method.fc5] -// CHECK:STDOUT: %int.convert_checked.loc10_29.1: init %i32 = call %bound_method.loc10_29.2(%int_3) [concrete = constants.%int_3.d47] -// CHECK:STDOUT: %.loc10_29.2: %i32 = value_of_initializer %int.convert_checked.loc10_29.1 [concrete = constants.%int_3.d47] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10_29.1: init %i32 = call %bound_method.loc10_29.2(%int_3) [concrete = constants.%int_3.d47] +// CHECK:STDOUT: %.loc10_29.2: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10_29.1 [concrete = constants.%int_3.d47] // CHECK:STDOUT: %.loc10_29.3: %i32 = converted %int_3, %.loc10_29.2 [concrete = constants.%int_3.d47] -// CHECK:STDOUT: %impl.elem0.loc10_29.2: %.940 = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Convert.4cb] -// CHECK:STDOUT: %bound_method.loc10_29.3: = bound_method %int_4, %impl.elem0.loc10_29.2 [concrete = constants.%Convert.bound.694] -// CHECK:STDOUT: %specific_fn.loc10_29.2: = specific_function %impl.elem0.loc10_29.2, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc10_29.2: %.940 = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.4cb] +// CHECK:STDOUT: %bound_method.loc10_29.3: = bound_method %int_4, %impl.elem0.loc10_29.2 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.694] +// CHECK:STDOUT: %specific_fn.loc10_29.2: = specific_function %impl.elem0.loc10_29.2, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc10_29.4: = bound_method %int_4, %specific_fn.loc10_29.2 [concrete = constants.%bound_method.b6e] -// CHECK:STDOUT: %int.convert_checked.loc10_29.2: init %i32 = call %bound_method.loc10_29.4(%int_4) [concrete = constants.%int_4.ea3] -// CHECK:STDOUT: %.loc10_29.4: %i32 = value_of_initializer %int.convert_checked.loc10_29.2 [concrete = constants.%int_4.ea3] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10_29.2: init %i32 = call %bound_method.loc10_29.4(%int_4) [concrete = constants.%int_4.ea3] +// CHECK:STDOUT: %.loc10_29.4: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10_29.2 [concrete = constants.%int_4.ea3] // CHECK:STDOUT: %.loc10_29.5: %i32 = converted %int_4, %.loc10_29.4 [concrete = constants.%int_4.ea3] // CHECK:STDOUT: %struct: %struct_type.a.b.5ca = struct_value (%.loc10_29.3, %.loc10_29.5) [concrete = constants.%struct.8e6] // CHECK:STDOUT: %.loc10_30.2: %struct_type.a.b.5ca = converted %.loc10_29.1, %struct [concrete = constants.%struct.8e6] diff --git a/toolchain/check/testdata/struct/literal_member_access.carbon b/toolchain/check/testdata/struct/literal_member_access.carbon index 52a92a0afcb4..2867492b1105 100644 --- a/toolchain/check/testdata/struct/literal_member_access.carbon +++ b/toolchain/check/testdata/struct/literal_member_access.carbon @@ -38,9 +38,9 @@ fn F() -> i32 { // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete] // CHECK:STDOUT: %struct_type.a.b.c.4ca: type = struct_type {.a: Core.IntLiteral, .b: %struct_type.x.y.z, .c: Core.IntLiteral} [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.f60: type = fn_type @Op.1, @Destroy.impl(%struct_type.x.y.z) [concrete] -// CHECK:STDOUT: %Op.1a4: %Op.type.f60 = struct_value () [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.1a4, @Op.1(%struct_type.x.y.z) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.f60: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%struct_type.x.y.z) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.1a4: %T.as.Destroy.impl.Op.type.f60 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.1a4, @T.as.Destroy.impl.Op(%struct_type.x.y.z) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -109,11 +109,11 @@ fn F() -> i32 { // CHECK:STDOUT: %.loc18_35.3: %struct_type.a.b.c.4ca = converted %.loc18_35.1, %struct.loc18_35 // CHECK:STDOUT: %.loc18_36: %struct_type.x.y.z = struct_access %.loc18_35.3, element1 // CHECK:STDOUT: %.loc18_38: %i32 = struct_access %.loc18_36, element1 -// CHECK:STDOUT: %Op.bound: = bound_method %.loc18_26.1, constants.%Op.1a4 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.1a4, @Op.1(constants.%struct_type.x.y.z) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc18_26.1, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc18_26.1, constants.%T.as.Destroy.impl.Op.1a4 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.1a4, @T.as.Destroy.impl.Op(constants.%struct_type.x.y.z) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %.loc18_26.1, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.6eb = addr_of %.loc18_26.1 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %.loc18_38 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/struct/member_access.carbon b/toolchain/check/testdata/struct/member_access.carbon index e5b15ea18681..7911ae1f1fcb 100644 --- a/toolchain/check/testdata/struct/member_access.carbon +++ b/toolchain/check/testdata/struct/member_access.carbon @@ -36,19 +36,19 @@ var z: i32 = y; // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.956 [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %struct: %struct_type.a.b.ddf = struct_value (%float, %int_1.5d2) [concrete] // CHECK:STDOUT: } @@ -64,8 +64,8 @@ var z: i32 = y; // CHECK:STDOUT: %Core.Float: %Float.type = import_ref Core//prelude/parts/float, Float, loaded [concrete = constants.%Float] // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -83,9 +83,9 @@ var z: i32 = y; // CHECK:STDOUT: %x.var: ref %struct_type.a.b.ddf = var %x.var_patt [concrete] // CHECK:STDOUT: %.loc15_25: type = splice_block %struct_type.a.b [concrete = constants.%struct_type.a.b.ddf] { // CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [concrete = constants.%int_64] -// CHECK:STDOUT: %float.make_type: init type = call constants.%Float(%int_64) [concrete = f64] -// CHECK:STDOUT: %.loc15_13.1: type = value_of_initializer %float.make_type [concrete = f64] -// CHECK:STDOUT: %.loc15_13.2: type = converted %float.make_type, %.loc15_13.1 [concrete = f64] +// CHECK:STDOUT: %Float.call: init type = call constants.%Float(%int_64) [concrete = f64] +// CHECK:STDOUT: %.loc15_13.1: type = value_of_initializer %Float.call [concrete = f64] +// CHECK:STDOUT: %.loc15_13.2: type = converted %Float.call, %.loc15_13.1 [concrete = f64] // CHECK:STDOUT: %int_32.loc15: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc15: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %struct_type.a.b: type = struct_type {.a: f64, .b: %i32} [concrete = constants.%struct_type.a.b.ddf] @@ -120,12 +120,12 @@ var z: i32 = y; // CHECK:STDOUT: %.loc15_46.1: %struct_type.a.b.fbb = struct_literal (%float, %int_1) // CHECK:STDOUT: %.loc15_46.2: ref f64 = struct_access file.%x.var, element0 [concrete = constants.%.984] // CHECK:STDOUT: %.loc15_46.3: init f64 = initialize_from %float to %.loc15_46.2 [concrete = constants.%float] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc15_46.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc15_46.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc15_46.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc15_46.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc15_46.4: init %i32 = converted %int_1, %int.convert_checked [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc15_46.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc15_46.4: init %i32 = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc15_46.5: ref %i32 = struct_access file.%x.var, element1 [concrete = constants.%.865] // CHECK:STDOUT: %.loc15_46.6: init %i32 = initialize_from %.loc15_46.4 to %.loc15_46.5 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc15_46.7: init %struct_type.a.b.ddf = struct_init (%.loc15_46.3, %.loc15_46.6) to file.%x.var [concrete = constants.%struct] diff --git a/toolchain/check/testdata/struct/nested_struct_in_place.carbon b/toolchain/check/testdata/struct/nested_struct_in_place.carbon index 009432556c65..7485e83c903d 100644 --- a/toolchain/check/testdata/struct/nested_struct_in_place.carbon +++ b/toolchain/check/testdata/struct/nested_struct_in_place.carbon @@ -37,13 +37,13 @@ fn G() { // CHECK:STDOUT: %ptr.7ae: type = ptr_type %tuple.type.189 [concrete] // CHECK:STDOUT: %pattern_type.3c2: type = pattern_type %struct_type.a.b.2f9 [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.19f: type = fn_type @Op.1, @Destroy.impl(%tuple.type.189) [concrete] -// CHECK:STDOUT: %Op.672: %Op.type.19f = struct_value () [concrete] -// CHECK:STDOUT: %Op.specific_fn.cf9: = specific_function %Op.672, @Op.1(%tuple.type.189) [concrete] -// CHECK:STDOUT: %Op.type.840: type = fn_type @Op.1, @Destroy.impl(%struct_type.a.b.2f9) [concrete] -// CHECK:STDOUT: %Op.52b: %Op.type.840 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.19f: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%tuple.type.189) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.672: %T.as.Destroy.impl.Op.type.19f = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.cf9: = specific_function %T.as.Destroy.impl.Op.672, @T.as.Destroy.impl.Op(%tuple.type.189) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.840: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%struct_type.a.b.2f9) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.52b: %T.as.Destroy.impl.Op.type.840 = struct_value () [concrete] // CHECK:STDOUT: %ptr.c95: type = ptr_type %struct_type.a.b.2f9 [concrete] -// CHECK:STDOUT: %Op.specific_fn.c7e: = specific_function %Op.52b, @Op.1(%struct_type.a.b.2f9) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.c7e: = specific_function %T.as.Destroy.impl.Op.52b, @T.as.Destroy.impl.Op(%struct_type.a.b.2f9) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -121,21 +121,21 @@ fn G() { // CHECK:STDOUT: %struct_type.a.b: type = struct_type {.a: %tuple.type.189, .b: %tuple.type.189} [concrete = constants.%struct_type.a.b.2f9] // CHECK:STDOUT: } // CHECK:STDOUT: %v: ref %struct_type.a.b.2f9 = bind_name v, %v.var -// CHECK:STDOUT: %Op.bound.loc18_74.1: = bound_method %.loc18_74.2, constants.%Op.672 -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.672, @Op.1(constants.%tuple.type.189) [concrete = constants.%Op.specific_fn.cf9] -// CHECK:STDOUT: %bound_method.loc18_74.1: = bound_method %.loc18_74.2, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc18_74.1: = bound_method %.loc18_74.2, constants.%T.as.Destroy.impl.Op.672 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.672, @T.as.Destroy.impl.Op(constants.%tuple.type.189) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.cf9] +// CHECK:STDOUT: %bound_method.loc18_74.1: = bound_method %.loc18_74.2, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc18_74.1: %ptr.7ae = addr_of %.loc18_74.2 -// CHECK:STDOUT: %no_op.loc18_74.1: init %empty_tuple.type = call %bound_method.loc18_74.1(%addr.loc18_74.1) -// CHECK:STDOUT: %Op.bound.loc18_74.2: = bound_method %.loc18_74.1, constants.%Op.672 -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.672, @Op.1(constants.%tuple.type.189) [concrete = constants.%Op.specific_fn.cf9] -// CHECK:STDOUT: %bound_method.loc18_74.2: = bound_method %.loc18_74.1, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc18_74.1: init %empty_tuple.type = call %bound_method.loc18_74.1(%addr.loc18_74.1) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc18_74.2: = bound_method %.loc18_74.1, constants.%T.as.Destroy.impl.Op.672 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.672, @T.as.Destroy.impl.Op(constants.%tuple.type.189) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.cf9] +// CHECK:STDOUT: %bound_method.loc18_74.2: = bound_method %.loc18_74.1, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc18_74.2: %ptr.7ae = addr_of %.loc18_74.1 -// CHECK:STDOUT: %no_op.loc18_74.2: init %empty_tuple.type = call %bound_method.loc18_74.2(%addr.loc18_74.2) -// CHECK:STDOUT: %Op.bound.loc18_3: = bound_method %v.var, constants.%Op.52b -// CHECK:STDOUT: %Op.specific_fn.3: = specific_function constants.%Op.52b, @Op.1(constants.%struct_type.a.b.2f9) [concrete = constants.%Op.specific_fn.c7e] -// CHECK:STDOUT: %bound_method.loc18_3: = bound_method %v.var, %Op.specific_fn.3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc18_74.2: init %empty_tuple.type = call %bound_method.loc18_74.2(%addr.loc18_74.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc18_3: = bound_method %v.var, constants.%T.as.Destroy.impl.Op.52b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.3: = specific_function constants.%T.as.Destroy.impl.Op.52b, @T.as.Destroy.impl.Op(constants.%struct_type.a.b.2f9) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.c7e] +// CHECK:STDOUT: %bound_method.loc18_3: = bound_method %v.var, %T.as.Destroy.impl.Op.specific_fn.3 // CHECK:STDOUT: %addr.loc18_3: %ptr.c95 = addr_of %v.var -// CHECK:STDOUT: %no_op.loc18_3: init %empty_tuple.type = call %bound_method.loc18_3(%addr.loc18_3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc18_3: init %empty_tuple.type = call %bound_method.loc18_3(%addr.loc18_3) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/struct/one_entry.carbon b/toolchain/check/testdata/struct/one_entry.carbon index 9ff6cd6f2454..5aed7707e220 100644 --- a/toolchain/check/testdata/struct/one_entry.carbon +++ b/toolchain/check/testdata/struct/one_entry.carbon @@ -30,18 +30,18 @@ var y: {.a: i32} = x; // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_4.0c1, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_4.0c1, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_4.0c1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_4.0c1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_4.940: %i32 = int_value 4 [concrete] // CHECK:STDOUT: %struct: %struct_type.a.ba9 = struct_value (%int_4.940) [concrete] // CHECK:STDOUT: } @@ -55,8 +55,8 @@ var y: {.a: i32} = x; // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -94,12 +94,12 @@ var y: {.a: i32} = x; // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete = constants.%int_4.0c1] // CHECK:STDOUT: %.loc15_27.1: %struct_type.a.a6c = struct_literal (%int_4) -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc15_27.1: = bound_method %int_4, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc15_27.1: = bound_method %int_4, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc15_27.2: = bound_method %int_4, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc15_27.2(%int_4) [concrete = constants.%int_4.940] -// CHECK:STDOUT: %.loc15_27.2: init %i32 = converted %int_4, %int.convert_checked [concrete = constants.%int_4.940] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc15_27.2(%int_4) [concrete = constants.%int_4.940] +// CHECK:STDOUT: %.loc15_27.2: init %i32 = converted %int_4, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_4.940] // CHECK:STDOUT: %.loc15_27.3: init %struct_type.a.ba9 = struct_init (%.loc15_27.2) to file.%x.var [concrete = constants.%struct] // CHECK:STDOUT: %.loc15_1: init %struct_type.a.ba9 = converted %.loc15_27.1, %.loc15_27.3 [concrete = constants.%struct] // CHECK:STDOUT: assign file.%x.var, %.loc15_1 diff --git a/toolchain/check/testdata/struct/partially_const.carbon b/toolchain/check/testdata/struct/partially_const.carbon index 96a721383622..ac33601e79fe 100644 --- a/toolchain/check/testdata/struct/partially_const.carbon +++ b/toolchain/check/testdata/struct/partially_const.carbon @@ -33,18 +33,18 @@ fn Make(n: i32) -> {.a: i32, .b: i32, .c: i32} { // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.2, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.1, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.1(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -57,8 +57,8 @@ fn Make(n: i32) -> {.a: i32, .b: i32, .c: i32} { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -97,22 +97,22 @@ fn Make(n: i32) -> {.a: i32, .b: i32, .c: i32} { // CHECK:STDOUT: %n.ref: %i32 = name_ref n, %n // CHECK:STDOUT: %int_0.loc16_32: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] // CHECK:STDOUT: %.loc16_33.1: %struct_type.a.b.c.1ee = struct_literal (%int_0.loc16_16, %n.ref, %int_0.loc16_32) -// CHECK:STDOUT: %impl.elem0.loc16_33.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc16_33.1: = bound_method %int_0.loc16_16, %impl.elem0.loc16_33.1 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn.loc16_33.1: = specific_function %impl.elem0.loc16_33.1, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc16_33.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc16_33.1: = bound_method %int_0.loc16_16, %impl.elem0.loc16_33.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc16_33.1: = specific_function %impl.elem0.loc16_33.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc16_33.2: = bound_method %int_0.loc16_16, %specific_fn.loc16_33.1 [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked.loc16_33.1: init %i32 = call %bound_method.loc16_33.2(%int_0.loc16_16) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc16_33.2: init %i32 = converted %int_0.loc16_16, %int.convert_checked.loc16_33.1 [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc16_33.1: init %i32 = call %bound_method.loc16_33.2(%int_0.loc16_16) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc16_33.2: init %i32 = converted %int_0.loc16_16, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc16_33.1 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc16_33.3: ref %i32 = struct_access %return, element0 // CHECK:STDOUT: %.loc16_33.4: init %i32 = initialize_from %.loc16_33.2 to %.loc16_33.3 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc16_33.5: ref %i32 = struct_access %return, element1 // CHECK:STDOUT: %.loc16_33.6: init %i32 = initialize_from %n.ref to %.loc16_33.5 -// CHECK:STDOUT: %impl.elem0.loc16_33.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc16_33.3: = bound_method %int_0.loc16_32, %impl.elem0.loc16_33.2 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn.loc16_33.2: = specific_function %impl.elem0.loc16_33.2, @Convert.1(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc16_33.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc16_33.3: = bound_method %int_0.loc16_32, %impl.elem0.loc16_33.2 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc16_33.2: = specific_function %impl.elem0.loc16_33.2, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc16_33.4: = bound_method %int_0.loc16_32, %specific_fn.loc16_33.2 [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked.loc16_33.2: init %i32 = call %bound_method.loc16_33.4(%int_0.loc16_32) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc16_33.7: init %i32 = converted %int_0.loc16_32, %int.convert_checked.loc16_33.2 [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc16_33.2: init %i32 = call %bound_method.loc16_33.4(%int_0.loc16_32) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc16_33.7: init %i32 = converted %int_0.loc16_32, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc16_33.2 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc16_33.8: ref %i32 = struct_access %return, element2 // CHECK:STDOUT: %.loc16_33.9: init %i32 = initialize_from %.loc16_33.7 to %.loc16_33.8 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc16_33.10: init %struct_type.a.b.c.0b6 = struct_init (%.loc16_33.4, %.loc16_33.6, %.loc16_33.9) to %return diff --git a/toolchain/check/testdata/struct/reorder_fields.carbon b/toolchain/check/testdata/struct/reorder_fields.carbon index 8db59edb527d..93dd9d01434c 100644 --- a/toolchain/check/testdata/struct/reorder_fields.carbon +++ b/toolchain/check/testdata/struct/reorder_fields.carbon @@ -78,9 +78,9 @@ fn F() -> {.a: i32, .b: f64} { // CHECK:STDOUT: %return.param_patt: %pattern_type.3de = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [concrete = constants.%int_64] -// CHECK:STDOUT: %float.make_type: init type = call constants.%Float(%int_64) [concrete = f64] -// CHECK:STDOUT: %.loc16_17.1: type = value_of_initializer %float.make_type [concrete = f64] -// CHECK:STDOUT: %.loc16_17.2: type = converted %float.make_type, %.loc16_17.1 [concrete = f64] +// CHECK:STDOUT: %Float.call: init type = call constants.%Float(%int_64) [concrete = f64] +// CHECK:STDOUT: %.loc16_17.1: type = value_of_initializer %Float.call [concrete = f64] +// CHECK:STDOUT: %.loc16_17.2: type = converted %Float.call, %.loc16_17.1 [concrete = f64] // CHECK:STDOUT: %return.param: ref f64 = out_param call_param0 // CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } @@ -91,9 +91,9 @@ fn F() -> {.a: i32, .b: f64} { // CHECK:STDOUT: %int_32.loc18: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc18: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_64.loc18: Core.IntLiteral = int_value 64 [concrete = constants.%int_64] -// CHECK:STDOUT: %float.make_type.loc18: init type = call constants.%Float(%int_64.loc18) [concrete = f64] -// CHECK:STDOUT: %.loc18_25.1: type = value_of_initializer %float.make_type.loc18 [concrete = f64] -// CHECK:STDOUT: %.loc18_25.2: type = converted %float.make_type.loc18, %.loc18_25.1 [concrete = f64] +// CHECK:STDOUT: %Float.call.loc18: init type = call constants.%Float(%int_64.loc18) [concrete = f64] +// CHECK:STDOUT: %.loc18_25.1: type = value_of_initializer %Float.call.loc18 [concrete = f64] +// CHECK:STDOUT: %.loc18_25.2: type = converted %Float.call.loc18, %.loc18_25.1 [concrete = f64] // CHECK:STDOUT: %struct_type.a.b.loc18: type = struct_type {.a: %i32, .b: f64} [concrete = constants.%struct_type.a.b] // CHECK:STDOUT: %return.param: ref %struct_type.a.b = out_param call_param0 // CHECK:STDOUT: %return: ref %struct_type.a.b = return_slot %return.param @@ -118,9 +118,9 @@ fn F() -> {.a: i32, .b: f64} { // CHECK:STDOUT: %int_32.loc19: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc19: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_64.loc19: Core.IntLiteral = int_value 64 [concrete = constants.%int_64] -// CHECK:STDOUT: %float.make_type.loc19: init type = call constants.%Float(%int_64.loc19) [concrete = f64] -// CHECK:STDOUT: %.loc19_24.1: type = value_of_initializer %float.make_type.loc19 [concrete = f64] -// CHECK:STDOUT: %.loc19_24.2: type = converted %float.make_type.loc19, %.loc19_24.1 [concrete = f64] +// CHECK:STDOUT: %Float.call.loc19: init type = call constants.%Float(%int_64.loc19) [concrete = f64] +// CHECK:STDOUT: %.loc19_24.1: type = value_of_initializer %Float.call.loc19 [concrete = f64] +// CHECK:STDOUT: %.loc19_24.2: type = converted %Float.call.loc19, %.loc19_24.1 [concrete = f64] // CHECK:STDOUT: %struct_type.a.b.loc19: type = struct_type {.a: %i32, .b: f64} [concrete = constants.%struct_type.a.b] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc19_62.2: %i32 = value_of_initializer %MakeI32.call @@ -136,9 +136,9 @@ fn F() -> {.a: i32, .b: f64} { // CHECK:STDOUT: %x.ref: %struct_type.a.b = name_ref x, %x // CHECK:STDOUT: %.loc20_27: type = splice_block %struct_type.b.a [concrete = constants.%struct_type.b.a] { // CHECK:STDOUT: %int_64.loc20: Core.IntLiteral = int_value 64 [concrete = constants.%int_64] -// CHECK:STDOUT: %float.make_type.loc20: init type = call constants.%Float(%int_64.loc20) [concrete = f64] -// CHECK:STDOUT: %.loc20_15.1: type = value_of_initializer %float.make_type.loc20 [concrete = f64] -// CHECK:STDOUT: %.loc20_15.2: type = converted %float.make_type.loc20, %.loc20_15.1 [concrete = f64] +// CHECK:STDOUT: %Float.call.loc20: init type = call constants.%Float(%int_64.loc20) [concrete = f64] +// CHECK:STDOUT: %.loc20_15.1: type = value_of_initializer %Float.call.loc20 [concrete = f64] +// CHECK:STDOUT: %.loc20_15.2: type = converted %Float.call.loc20, %.loc20_15.1 [concrete = f64] // CHECK:STDOUT: %int_32.loc20: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc20: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %struct_type.b.a: type = struct_type {.b: f64, .a: %i32} [concrete = constants.%struct_type.b.a] diff --git a/toolchain/check/testdata/struct/tuple_as_element.carbon b/toolchain/check/testdata/struct/tuple_as_element.carbon index 8f2d312f574f..4cf0d74acd2c 100644 --- a/toolchain/check/testdata/struct/tuple_as_element.carbon +++ b/toolchain/check/testdata/struct/tuple_as_element.carbon @@ -34,23 +34,23 @@ var y: {.a: i32, .b: (i32,)} = x; // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %.dd9: ref %tuple.type.a1c = struct_access file.%x.var, element1 [concrete] // CHECK:STDOUT: %tuple.elem0.2a6: ref %i32 = tuple_access %.dd9, element0 [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %tuple: %tuple.type.a1c = tuple_value (%int_2.ef8) [concrete] // CHECK:STDOUT: %struct: %struct_type.a.b.3d5 = struct_value (%int_1.5d2, %tuple) [concrete] @@ -67,8 +67,8 @@ var y: {.a: i32, .b: (i32,)} = x; // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -116,20 +116,20 @@ var y: {.a: i32, .b: (i32,)} = x; // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %.loc15_49.1: %tuple.type.985 = tuple_literal (%int_2) // CHECK:STDOUT: %.loc15_50.1: %struct_type.a.b.057 = struct_literal (%int_1, %.loc15_49.1) -// CHECK:STDOUT: %impl.elem0.loc15_50: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc15_50.1: = bound_method %int_1, %impl.elem0.loc15_50 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc15_50: = specific_function %impl.elem0.loc15_50, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc15_50: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc15_50.1: = bound_method %int_1, %impl.elem0.loc15_50 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc15_50: = specific_function %impl.elem0.loc15_50, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc15_50.2: = bound_method %int_1, %specific_fn.loc15_50 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc15_50: init %i32 = call %bound_method.loc15_50.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc15_50.2: init %i32 = converted %int_1, %int.convert_checked.loc15_50 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc15_50: init %i32 = call %bound_method.loc15_50.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc15_50.2: init %i32 = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc15_50 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc15_50.3: ref %i32 = struct_access file.%x.var, element0 [concrete = constants.%.b14] // CHECK:STDOUT: %.loc15_50.4: init %i32 = initialize_from %.loc15_50.2 to %.loc15_50.3 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %impl.elem0.loc15_49: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc15_49.1: = bound_method %int_2, %impl.elem0.loc15_49 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc15_49: = specific_function %impl.elem0.loc15_49, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc15_49: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc15_49.1: = bound_method %int_2, %impl.elem0.loc15_49 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc15_49: = specific_function %impl.elem0.loc15_49, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc15_49.2: = bound_method %int_2, %specific_fn.loc15_49 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc15_49: init %i32 = call %bound_method.loc15_49.2(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc15_49.2: init %i32 = converted %int_2, %int.convert_checked.loc15_49 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc15_49: init %i32 = call %bound_method.loc15_49.2(%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc15_49.2: init %i32 = converted %int_2, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc15_49 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc15_50.5: ref %tuple.type.a1c = struct_access file.%x.var, element1 [concrete = constants.%.dd9] // CHECK:STDOUT: %.loc15_49.3: init %tuple.type.a1c = tuple_init (%.loc15_49.2) to %.loc15_50.5 [concrete = constants.%tuple] // CHECK:STDOUT: %.loc15_50.6: init %tuple.type.a1c = converted %.loc15_49.1, %.loc15_49.3 [concrete = constants.%tuple] diff --git a/toolchain/check/testdata/struct/two_entries.carbon b/toolchain/check/testdata/struct/two_entries.carbon index d537eca970c5..caa7784bb898 100644 --- a/toolchain/check/testdata/struct/two_entries.carbon +++ b/toolchain/check/testdata/struct/two_entries.carbon @@ -33,21 +33,21 @@ var y: {.a: i32, .b: i32} = x; // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %struct: %struct_type.a.b.501 = struct_value (%int_1.5d2, %int_2.ef8) [concrete] // CHECK:STDOUT: %.22f: ref %i32 = struct_access file.%x.var, element0 [concrete] @@ -65,8 +65,8 @@ var y: {.a: i32, .b: i32} = x; // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -88,19 +88,19 @@ var y: {.a: i32, .b: i32} = x; // CHECK:STDOUT: %i32.loc15_22: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %struct_type.a.b.loc15: type = struct_type {.a: %i32, .b: %i32} [concrete = constants.%struct_type.a.b.501] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl.elem0.loc15_44.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc15_44.1: = bound_method @__global_init.%int_1.loc15, %impl.elem0.loc15_44.1 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc15_44.1: = specific_function %impl.elem0.loc15_44.1, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc15_44.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc15_44.1: = bound_method @__global_init.%int_1.loc15, %impl.elem0.loc15_44.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc15_44.1: = specific_function %impl.elem0.loc15_44.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc15_44.2: = bound_method @__global_init.%int_1.loc15, %specific_fn.loc15_44.1 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc15_44.1: init %i32 = call %bound_method.loc15_44.2(@__global_init.%int_1.loc15) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc15_44.1: %i32 = value_of_initializer %int.convert_checked.loc15_44.1 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc15_44.1: init %i32 = call %bound_method.loc15_44.2(@__global_init.%int_1.loc15) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc15_44.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc15_44.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc15_44.2: %i32 = converted @__global_init.%int_1.loc15, %.loc15_44.1 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %impl.elem0.loc15_44.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc15_44.3: = bound_method @__global_init.%int_2.loc15, %impl.elem0.loc15_44.2 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc15_44.2: = specific_function %impl.elem0.loc15_44.2, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc15_44.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc15_44.3: = bound_method @__global_init.%int_2.loc15, %impl.elem0.loc15_44.2 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc15_44.2: = specific_function %impl.elem0.loc15_44.2, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc15_44.4: = bound_method @__global_init.%int_2.loc15, %specific_fn.loc15_44.2 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc15_44.2: init %i32 = call %bound_method.loc15_44.4(@__global_init.%int_2.loc15) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc15_44.3: %i32 = value_of_initializer %int.convert_checked.loc15_44.2 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc15_44.2: init %i32 = call %bound_method.loc15_44.4(@__global_init.%int_2.loc15) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc15_44.3: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc15_44.2 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc15_44.4: %i32 = converted @__global_init.%int_2.loc15, %.loc15_44.3 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %struct: %struct_type.a.b.501 = struct_value (%.loc15_44.2, %.loc15_44.4) [concrete = constants.%struct] // CHECK:STDOUT: %.loc15_44.5: %struct_type.a.b.501 = converted @__global_init.%.loc15, %struct [concrete = constants.%struct] @@ -153,20 +153,20 @@ var y: {.a: i32, .b: i32} = x; // CHECK:STDOUT: %int_1.loc18: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2.loc18: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %.loc18_44.1: %struct_type.a.b.cfd = struct_literal (%int_1.loc18, %int_2.loc18) -// CHECK:STDOUT: %impl.elem0.loc18_44.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc18_44.1: = bound_method %int_1.loc18, %impl.elem0.loc18_44.1 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc18_44.1: = specific_function %impl.elem0.loc18_44.1, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc18_44.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc18_44.1: = bound_method %int_1.loc18, %impl.elem0.loc18_44.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc18_44.1: = specific_function %impl.elem0.loc18_44.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc18_44.2: = bound_method %int_1.loc18, %specific_fn.loc18_44.1 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc18_44.1: init %i32 = call %bound_method.loc18_44.2(%int_1.loc18) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc18_44.2: init %i32 = converted %int_1.loc18, %int.convert_checked.loc18_44.1 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc18_44.1: init %i32 = call %bound_method.loc18_44.2(%int_1.loc18) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc18_44.2: init %i32 = converted %int_1.loc18, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc18_44.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc18_44.3: ref %i32 = struct_access file.%x.var, element0 [concrete = constants.%.22f] // CHECK:STDOUT: %.loc18_44.4: init %i32 = initialize_from %.loc18_44.2 to %.loc18_44.3 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %impl.elem0.loc18_44.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc18_44.3: = bound_method %int_2.loc18, %impl.elem0.loc18_44.2 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc18_44.2: = specific_function %impl.elem0.loc18_44.2, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc18_44.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc18_44.3: = bound_method %int_2.loc18, %impl.elem0.loc18_44.2 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc18_44.2: = specific_function %impl.elem0.loc18_44.2, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc18_44.4: = bound_method %int_2.loc18, %specific_fn.loc18_44.2 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc18_44.2: init %i32 = call %bound_method.loc18_44.4(%int_2.loc18) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc18_44.5: init %i32 = converted %int_2.loc18, %int.convert_checked.loc18_44.2 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc18_44.2: init %i32 = call %bound_method.loc18_44.4(%int_2.loc18) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc18_44.5: init %i32 = converted %int_2.loc18, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc18_44.2 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc18_44.6: ref %i32 = struct_access file.%x.var, element1 [concrete = constants.%.5fc] // CHECK:STDOUT: %.loc18_44.7: init %i32 = initialize_from %.loc18_44.5 to %.loc18_44.6 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc18_44.8: init %struct_type.a.b.501 = struct_init (%.loc18_44.4, %.loc18_44.7) to file.%x.var [concrete = constants.%struct] diff --git a/toolchain/check/testdata/tuple/element_access.carbon b/toolchain/check/testdata/tuple/element_access.carbon index c26e48eadcbe..7164aa84ced1 100644 --- a/toolchain/check/testdata/tuple/element_access.carbon +++ b/toolchain/check/testdata/tuple/element_access.carbon @@ -203,11 +203,11 @@ var b: i32 = a.({.index = 2}.index); // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] // CHECK:STDOUT: %ImplicitAs.type.2fd: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [concrete] // CHECK:STDOUT: %From: Core.IntLiteral = bind_symbolic_name From, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.708: type = fn_type @Convert.3, @ImplicitAs.impl.971(%From) [symbolic] -// CHECK:STDOUT: %Convert.c68: %Convert.type.708 = struct_value () [symbolic] -// CHECK:STDOUT: %Convert.type.71e: type = fn_type @Convert.1, @ImplicitAs(Core.IntLiteral) [concrete] -// CHECK:STDOUT: %Convert.type.062: type = fn_type @Convert.5, @As.impl.686(%To) [symbolic] -// CHECK:STDOUT: %Convert.527: %Convert.type.062 = struct_value () [symbolic] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.type.708: type = fn_type @Int.as.ImplicitAs.impl.Convert, @Int.as.ImplicitAs.impl(%From) [symbolic] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.c68: %Int.as.ImplicitAs.impl.Convert.type.708 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.Convert.type.71e: type = fn_type @ImplicitAs.Convert, @ImplicitAs(Core.IntLiteral) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.062: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.527: %Core.IntLiteral.as.As.impl.Convert.type.062 = struct_value () [symbolic] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %struct_type.index.b1b: type = struct_type {.index: Core.IntLiteral} [concrete] @@ -215,38 +215,38 @@ var b: i32 = a.({.index = 2}.index); // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %As.type.fd4: type = facet_type <@As, @As(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.99b: type = fn_type @Convert.4, @As(%i32) [concrete] -// CHECK:STDOUT: %As.impl_witness.6b4: = impl_witness imports.%As.impl_witness_table.eb4, @As.impl.686(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.4fd: type = fn_type @Convert.5, @As.impl.686(%int_32) [concrete] -// CHECK:STDOUT: %Convert.197: %Convert.type.4fd = struct_value () [concrete] +// CHECK:STDOUT: %As.Convert.type.99b: type = fn_type @As.Convert, @As(%i32) [concrete] +// CHECK:STDOUT: %As.impl_witness.6b4: = impl_witness imports.%As.impl_witness_table.eb4, @Core.IntLiteral.as.As.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.4fd: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.197: %Core.IntLiteral.as.As.impl.Convert.type.4fd = struct_value () [concrete] // CHECK:STDOUT: %As.facet: %As.type.fd4 = facet_value Core.IntLiteral, (%As.impl_witness.6b4) [concrete] -// CHECK:STDOUT: %.982: type = fn_type_with_self_type %Convert.type.99b, %As.facet [concrete] -// CHECK:STDOUT: %Convert.bound.129: = bound_method %int_0.5c6, %Convert.197 [concrete] -// CHECK:STDOUT: %Convert.specific_fn.aad: = specific_function %Convert.197, @Convert.5(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.46b: = bound_method %int_0.5c6, %Convert.specific_fn.aad [concrete] +// CHECK:STDOUT: %.982: type = fn_type_with_self_type %As.Convert.type.99b, %As.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.bound.129: = bound_method %int_0.5c6, %Core.IntLiteral.as.As.impl.Convert.197 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.As.impl.Convert.197, @Core.IntLiteral.as.As.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.46b: = bound_method %int_0.5c6, %Core.IntLiteral.as.As.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] -// CHECK:STDOUT: %ImplicitAs.impl_witness.a11: = impl_witness imports.%ImplicitAs.impl_witness_table.1d9, @ImplicitAs.impl.971(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.4ad: type = fn_type @Convert.3, @ImplicitAs.impl.971(%int_32) [concrete] -// CHECK:STDOUT: %Convert.960: %Convert.type.4ad = struct_value () [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.a11: = impl_witness imports.%ImplicitAs.impl_witness_table.1d9, @Int.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.type.4ad: type = fn_type @Int.as.ImplicitAs.impl.Convert, @Int.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.960: %Int.as.ImplicitAs.impl.Convert.type.4ad = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet.f49: %ImplicitAs.type.2fd = facet_value %i32, (%ImplicitAs.impl_witness.a11) [concrete] -// CHECK:STDOUT: %.0ea: type = fn_type_with_self_type %Convert.type.71e, %ImplicitAs.facet.f49 [concrete] -// CHECK:STDOUT: %Convert.bound.0fd: = bound_method %int_0.6a9, %Convert.960 [concrete] -// CHECK:STDOUT: %Convert.specific_fn.8a8: = specific_function %Convert.960, @Convert.3(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.4b5: = bound_method %int_0.6a9, %Convert.specific_fn.8a8 [concrete] -// CHECK:STDOUT: %Convert.bound.c1b: = bound_method %int_1.5b8, %Convert.197 [concrete] -// CHECK:STDOUT: %bound_method.082: = bound_method %int_1.5b8, %Convert.specific_fn.aad [concrete] +// CHECK:STDOUT: %.0ea: type = fn_type_with_self_type %ImplicitAs.Convert.type.71e, %ImplicitAs.facet.f49 [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.bound.0fd: = bound_method %int_0.6a9, %Int.as.ImplicitAs.impl.Convert.960 [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Int.as.ImplicitAs.impl.Convert.960, @Int.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.4b5: = bound_method %int_0.6a9, %Int.as.ImplicitAs.impl.Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.bound.c1b: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert.197 [concrete] +// CHECK:STDOUT: %bound_method.082: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %struct_type.index.6ea: type = struct_type {.index: %i32} [concrete] // CHECK:STDOUT: %struct.63a: %struct_type.index.6ea = struct_value (%int_1.5d2) [concrete] -// CHECK:STDOUT: %Convert.bound.faf: = bound_method %int_1.5d2, %Convert.960 [concrete] -// CHECK:STDOUT: %bound_method.711: = bound_method %int_1.5d2, %Convert.specific_fn.8a8 [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.bound.faf: = bound_method %int_1.5d2, %Int.as.ImplicitAs.impl.Convert.960 [concrete] +// CHECK:STDOUT: %bound_method.711: = bound_method %int_1.5d2, %Int.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core.import_ref.85c: @ImplicitAs.impl.971.%Convert.type (%Convert.type.708) = import_ref Core//prelude/parts/int, loc20_44, loaded [symbolic = @ImplicitAs.impl.971.%Convert (constants.%Convert.c68)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.1d9 = impl_witness_table (%Core.import_ref.85c), @ImplicitAs.impl.971 [concrete] -// CHECK:STDOUT: %Core.import_ref.78a: @As.impl.686.%Convert.type (%Convert.type.062) = import_ref Core//prelude/parts/int, loc25_39, loaded [symbolic = @As.impl.686.%Convert (constants.%Convert.527)] -// CHECK:STDOUT: %As.impl_witness_table.eb4 = impl_witness_table (%Core.import_ref.78a), @As.impl.686 [concrete] +// CHECK:STDOUT: %Core.import_ref.85c: @Int.as.ImplicitAs.impl.%Int.as.ImplicitAs.impl.Convert.type (%Int.as.ImplicitAs.impl.Convert.type.708) = import_ref Core//prelude/parts/int, loc20_44, loaded [symbolic = @Int.as.ImplicitAs.impl.%Int.as.ImplicitAs.impl.Convert (constants.%Int.as.ImplicitAs.impl.Convert.c68)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.1d9 = impl_witness_table (%Core.import_ref.85c), @Int.as.ImplicitAs.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.78a: @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert.type (%Core.IntLiteral.as.As.impl.Convert.type.062) = import_ref Core//prelude/parts/int, loc25_39, loaded [symbolic = @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert (constants.%Core.IntLiteral.as.As.impl.Convert.527)] +// CHECK:STDOUT: %As.impl_witness_table.eb4 = impl_witness_table (%Core.import_ref.78a), @Core.IntLiteral.as.As.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -298,19 +298,19 @@ var b: i32 = a.({.index = 2}.index); // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] // CHECK:STDOUT: %int_32.loc6: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc6: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc6_18.1: %.982 = impl_witness_access constants.%As.impl_witness.6b4, element0 [concrete = constants.%Convert.197] -// CHECK:STDOUT: %bound_method.loc6_18.1: = bound_method %int_0, %impl.elem0.loc6_18.1 [concrete = constants.%Convert.bound.129] -// CHECK:STDOUT: %specific_fn.loc6_18.1: = specific_function %impl.elem0.loc6_18.1, @Convert.5(constants.%int_32) [concrete = constants.%Convert.specific_fn.aad] +// CHECK:STDOUT: %impl.elem0.loc6_18.1: %.982 = impl_witness_access constants.%As.impl_witness.6b4, element0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.197] +// CHECK:STDOUT: %bound_method.loc6_18.1: = bound_method %int_0, %impl.elem0.loc6_18.1 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.bound.129] +// CHECK:STDOUT: %specific_fn.loc6_18.1: = specific_function %impl.elem0.loc6_18.1, @Core.IntLiteral.as.As.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc6_18.2: = bound_method %int_0, %specific_fn.loc6_18.1 [concrete = constants.%bound_method.46b] -// CHECK:STDOUT: %int.convert_checked.loc6_18.1: init %i32 = call %bound_method.loc6_18.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc6_18.1: %i32 = value_of_initializer %int.convert_checked.loc6_18.1 [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.call.loc6: init %i32 = call %bound_method.loc6_18.2(%int_0) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc6_18.1: %i32 = value_of_initializer %Core.IntLiteral.as.As.impl.Convert.call.loc6 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc6_18.2: %i32 = converted %int_0, %.loc6_18.1 [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %impl.elem0.loc6_18.2: %.0ea = impl_witness_access constants.%ImplicitAs.impl_witness.a11, element0 [concrete = constants.%Convert.960] -// CHECK:STDOUT: %bound_method.loc6_18.3: = bound_method %.loc6_18.2, %impl.elem0.loc6_18.2 [concrete = constants.%Convert.bound.0fd] -// CHECK:STDOUT: %specific_fn.loc6_18.2: = specific_function %impl.elem0.loc6_18.2, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn.8a8] +// CHECK:STDOUT: %impl.elem0.loc6_18.2: %.0ea = impl_witness_access constants.%ImplicitAs.impl_witness.a11, element0 [concrete = constants.%Int.as.ImplicitAs.impl.Convert.960] +// CHECK:STDOUT: %bound_method.loc6_18.3: = bound_method %.loc6_18.2, %impl.elem0.loc6_18.2 [concrete = constants.%Int.as.ImplicitAs.impl.Convert.bound.0fd] +// CHECK:STDOUT: %specific_fn.loc6_18.2: = specific_function %impl.elem0.loc6_18.2, @Int.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Int.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc6_18.4: = bound_method %.loc6_18.2, %specific_fn.loc6_18.2 [concrete = constants.%bound_method.4b5] -// CHECK:STDOUT: %int.convert_checked.loc6_18.2: init Core.IntLiteral = call %bound_method.loc6_18.4(%.loc6_18.2) [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %.loc6_18.3: Core.IntLiteral = value_of_initializer %int.convert_checked.loc6_18.2 [concrete = constants.%int_0.5c6] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call.loc6: init Core.IntLiteral = call %bound_method.loc6_18.4(%.loc6_18.2) [concrete = constants.%int_0.5c6] +// CHECK:STDOUT: %.loc6_18.3: Core.IntLiteral = value_of_initializer %Int.as.ImplicitAs.impl.Convert.call.loc6 [concrete = constants.%int_0.5c6] // CHECK:STDOUT: %.loc6_18.4: Core.IntLiteral = converted %.loc6_18.2, %.loc6_18.3 [concrete = constants.%int_0.5c6] // CHECK:STDOUT: %tuple.elem0.loc6: ref %empty_tuple.type = tuple_access %a.ref.loc6, element0 [concrete = constants.%tuple.elem0] // CHECK:STDOUT: %.loc6_14: init %empty_tuple.type = tuple_init () to file.%c.var [concrete = constants.%empty_tuple] @@ -320,23 +320,23 @@ var b: i32 = a.({.index = 2}.index); // CHECK:STDOUT: %int_1.loc7: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_32.loc7: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc7: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc7_29: %.982 = impl_witness_access constants.%As.impl_witness.6b4, element0 [concrete = constants.%Convert.197] -// CHECK:STDOUT: %bound_method.loc7_29.1: = bound_method %int_1.loc7, %impl.elem0.loc7_29 [concrete = constants.%Convert.bound.c1b] -// CHECK:STDOUT: %specific_fn.loc7_29: = specific_function %impl.elem0.loc7_29, @Convert.5(constants.%int_32) [concrete = constants.%Convert.specific_fn.aad] +// CHECK:STDOUT: %impl.elem0.loc7_29: %.982 = impl_witness_access constants.%As.impl_witness.6b4, element0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.197] +// CHECK:STDOUT: %bound_method.loc7_29.1: = bound_method %int_1.loc7, %impl.elem0.loc7_29 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.bound.c1b] +// CHECK:STDOUT: %specific_fn.loc7_29: = specific_function %impl.elem0.loc7_29, @Core.IntLiteral.as.As.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc7_29.2: = bound_method %int_1.loc7, %specific_fn.loc7_29 [concrete = constants.%bound_method.082] -// CHECK:STDOUT: %int.convert_checked.loc7_29: init %i32 = call %bound_method.loc7_29.2(%int_1.loc7) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc7_29.1: %i32 = value_of_initializer %int.convert_checked.loc7_29 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.call.loc7: init %i32 = call %bound_method.loc7_29.2(%int_1.loc7) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc7_29.1: %i32 = value_of_initializer %Core.IntLiteral.as.As.impl.Convert.call.loc7 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc7_29.2: %i32 = converted %int_1.loc7, %.loc7_29.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc7_35.1: %struct_type.index.6ea = struct_literal (%.loc7_29.2) // CHECK:STDOUT: %struct.loc7: %struct_type.index.6ea = struct_value (%.loc7_29.2) [concrete = constants.%struct.63a] // CHECK:STDOUT: %.loc7_35.2: %struct_type.index.6ea = converted %.loc7_35.1, %struct.loc7 [concrete = constants.%struct.63a] // CHECK:STDOUT: %.loc7_36.1: %i32 = struct_access %.loc7_35.2, element0 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %impl.elem0.loc7_36: %.0ea = impl_witness_access constants.%ImplicitAs.impl_witness.a11, element0 [concrete = constants.%Convert.960] -// CHECK:STDOUT: %bound_method.loc7_36.1: = bound_method %.loc7_36.1, %impl.elem0.loc7_36 [concrete = constants.%Convert.bound.faf] -// CHECK:STDOUT: %specific_fn.loc7_36: = specific_function %impl.elem0.loc7_36, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn.8a8] +// CHECK:STDOUT: %impl.elem0.loc7_36: %.0ea = impl_witness_access constants.%ImplicitAs.impl_witness.a11, element0 [concrete = constants.%Int.as.ImplicitAs.impl.Convert.960] +// CHECK:STDOUT: %bound_method.loc7_36.1: = bound_method %.loc7_36.1, %impl.elem0.loc7_36 [concrete = constants.%Int.as.ImplicitAs.impl.Convert.bound.faf] +// CHECK:STDOUT: %specific_fn.loc7_36: = specific_function %impl.elem0.loc7_36, @Int.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Int.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc7_36.2: = bound_method %.loc7_36.1, %specific_fn.loc7_36 [concrete = constants.%bound_method.711] -// CHECK:STDOUT: %int.convert_checked.loc7_36: init Core.IntLiteral = call %bound_method.loc7_36.2(%.loc7_36.1) [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %.loc7_36.2: Core.IntLiteral = value_of_initializer %int.convert_checked.loc7_36 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call.loc7: init Core.IntLiteral = call %bound_method.loc7_36.2(%.loc7_36.1) [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %.loc7_36.2: Core.IntLiteral = value_of_initializer %Int.as.ImplicitAs.impl.Convert.call.loc7 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %.loc7_36.3: Core.IntLiteral = converted %.loc7_36.1, %.loc7_36.2 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %tuple.elem1.loc7: ref %i32 = tuple_access %a.ref.loc7, element1 [concrete = constants.%tuple.elem1] // CHECK:STDOUT: %.loc7_15: %i32 = bind_value %tuple.elem1.loc7 @@ -354,8 +354,8 @@ var b: i32 = a.({.index = 2}.index); // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [concrete] -// CHECK:STDOUT: %Op.type.438: type = fn_type @Op.2, @Destroy.impl(%tuple.type.a1c) [concrete] -// CHECK:STDOUT: %Op.c8e: %Op.type.438 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.438: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%tuple.type.a1c) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.c8e: %T.as.Destroy.impl.Op.type.438 = struct_value () [concrete] // CHECK:STDOUT: %ptr.0b7: type = ptr_type %tuple.type.a1c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -371,11 +371,11 @@ var b: i32 = a.({.index = 2}.index); // CHECK:STDOUT: %.loc7_12.2: ref %tuple.type.a1c = temporary %.loc7_12.1, %F.call // CHECK:STDOUT: %tuple.elem0: ref %i32 = tuple_access %.loc7_12.2, element0 // CHECK:STDOUT: %.loc7_13: %i32 = bind_value %tuple.elem0 -// CHECK:STDOUT: %Op.bound: = bound_method %.loc7_12.1, constants.%Op.c8e +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc7_12.1, constants.%T.as.Destroy.impl.Op.c8e // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc7_12.1, %Op.specific_fn +// CHECK:STDOUT: %bound_method: = bound_method %.loc7_12.1, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.0b7 = addr_of %.loc7_12.1 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %.loc7_13 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/tuple/import.carbon b/toolchain/check/testdata/tuple/import.carbon index eec3f1045b28..53a55b552e88 100644 --- a/toolchain/check/testdata/tuple/import.carbon +++ b/toolchain/check/testdata/tuple/import.carbon @@ -62,8 +62,8 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.9a6: type = fn_type @Convert.2, @ImplicitAs.impl.a8d(%To) [symbolic] -// CHECK:STDOUT: %Convert.458: %Convert.type.9a6 = struct_value () [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.9a6: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.458: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.9a6 = struct_value () [symbolic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %tuple.type.85c: type = tuple_type (type) [concrete] @@ -96,18 +96,18 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %tuple.type.f94: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [concrete] // CHECK:STDOUT: %ImplicitAs.type.b9e: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.ea0: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] -// CHECK:STDOUT: %ImplicitAs.impl_witness.2ce: = impl_witness imports.%ImplicitAs.impl_witness_table.1ad, @ImplicitAs.impl.a8d(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.e14: type = fn_type @Convert.2, @ImplicitAs.impl.a8d(%int_32) [concrete] -// CHECK:STDOUT: %Convert.4cb: %Convert.type.e14 = struct_value () [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.ea0: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.2ce: = impl_witness imports.%ImplicitAs.impl_witness_table.1ad, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e14: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.4cb: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e14 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.b9e = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.2ce) [concrete] -// CHECK:STDOUT: %.940: type = fn_type_with_self_type %Convert.type.ea0, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.dc5: = bound_method %int_1.5b8, %Convert.4cb [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.4cb, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.c37: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.940: type = fn_type_with_self_type %ImplicitAs.Convert.type.ea0, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.dc5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.4cb [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.4cb, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.c37: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.47b: %i32 = int_value 1 [concrete] -// CHECK:STDOUT: %Convert.bound.30f: = bound_method %int_2.ecc, %Convert.4cb [concrete] -// CHECK:STDOUT: %bound_method.62b: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.30f: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.4cb [concrete] +// CHECK:STDOUT: %bound_method.62b: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.d0d: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %tuple: %tuple.type.c2c = tuple_value (%int_1.47b, %int_2.d0d) [concrete] // CHECK:STDOUT: %C.cf0: type = class_type @C, @C(%tuple) [concrete] @@ -121,8 +121,8 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: %Implicit.b_ref: ref %tuple.type.cfa = import_ref Implicit//default, b_ref, loaded [concrete = %b_ref.var] // CHECK:STDOUT: %Implicit.C: %C.type = import_ref Implicit//default, C, loaded [concrete = constants.%C.generic] // CHECK:STDOUT: %Implicit.F: %F.type = import_ref Implicit//default, F, loaded [concrete = constants.%F] -// CHECK:STDOUT: %Implicit.import_ref.773: @ImplicitAs.impl.a8d.%Convert.type (%Convert.type.9a6) = import_ref Implicit//default, inst119 [indirect], loaded [symbolic = @ImplicitAs.impl.a8d.%Convert (constants.%Convert.458)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.1ad = impl_witness_table (%Implicit.import_ref.773), @ImplicitAs.impl.a8d [concrete] +// CHECK:STDOUT: %Implicit.import_ref.773: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.9a6) = import_ref Implicit//default, inst119 [indirect], loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.458)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.1ad = impl_witness_table (%Implicit.import_ref.773), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %a_ref.patt: %pattern_type.2e8 = binding_pattern a_ref [concrete] // CHECK:STDOUT: %a_ref.var_patt: %pattern_type.2e8 = var_pattern %a_ref.patt [concrete] // CHECK:STDOUT: %a_ref.var: ref %tuple.type.dd4 = var %a_ref.var_patt [concrete] @@ -178,19 +178,19 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %.loc7_15.1: %tuple.type.f94 = tuple_literal (%int_1, %int_2) -// CHECK:STDOUT: %impl.elem0.loc7_15.1: %.940 = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Convert.4cb] -// CHECK:STDOUT: %bound_method.loc7_15.1: = bound_method %int_1, %impl.elem0.loc7_15.1 [concrete = constants.%Convert.bound.dc5] -// CHECK:STDOUT: %specific_fn.loc7_15.1: = specific_function %impl.elem0.loc7_15.1, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc7_15.1: %.940 = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.4cb] +// CHECK:STDOUT: %bound_method.loc7_15.1: = bound_method %int_1, %impl.elem0.loc7_15.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.dc5] +// CHECK:STDOUT: %specific_fn.loc7_15.1: = specific_function %impl.elem0.loc7_15.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc7_15.2: = bound_method %int_1, %specific_fn.loc7_15.1 [concrete = constants.%bound_method.c37] -// CHECK:STDOUT: %int.convert_checked.loc7_15.1: init %i32 = call %bound_method.loc7_15.2(%int_1) [concrete = constants.%int_1.47b] -// CHECK:STDOUT: %.loc7_15.2: %i32 = value_of_initializer %int.convert_checked.loc7_15.1 [concrete = constants.%int_1.47b] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc7_15.1: init %i32 = call %bound_method.loc7_15.2(%int_1) [concrete = constants.%int_1.47b] +// CHECK:STDOUT: %.loc7_15.2: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc7_15.1 [concrete = constants.%int_1.47b] // CHECK:STDOUT: %.loc7_15.3: %i32 = converted %int_1, %.loc7_15.2 [concrete = constants.%int_1.47b] -// CHECK:STDOUT: %impl.elem0.loc7_15.2: %.940 = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Convert.4cb] -// CHECK:STDOUT: %bound_method.loc7_15.3: = bound_method %int_2, %impl.elem0.loc7_15.2 [concrete = constants.%Convert.bound.30f] -// CHECK:STDOUT: %specific_fn.loc7_15.2: = specific_function %impl.elem0.loc7_15.2, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc7_15.2: %.940 = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.4cb] +// CHECK:STDOUT: %bound_method.loc7_15.3: = bound_method %int_2, %impl.elem0.loc7_15.2 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.30f] +// CHECK:STDOUT: %specific_fn.loc7_15.2: = specific_function %impl.elem0.loc7_15.2, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc7_15.4: = bound_method %int_2, %specific_fn.loc7_15.2 [concrete = constants.%bound_method.62b] -// CHECK:STDOUT: %int.convert_checked.loc7_15.2: init %i32 = call %bound_method.loc7_15.4(%int_2) [concrete = constants.%int_2.d0d] -// CHECK:STDOUT: %.loc7_15.4: %i32 = value_of_initializer %int.convert_checked.loc7_15.2 [concrete = constants.%int_2.d0d] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc7_15.2: init %i32 = call %bound_method.loc7_15.4(%int_2) [concrete = constants.%int_2.d0d] +// CHECK:STDOUT: %.loc7_15.4: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc7_15.2 [concrete = constants.%int_2.d0d] // CHECK:STDOUT: %.loc7_15.5: %i32 = converted %int_2, %.loc7_15.4 [concrete = constants.%int_2.d0d] // CHECK:STDOUT: %tuple: %tuple.type.c2c = tuple_value (%.loc7_15.3, %.loc7_15.5) [concrete = constants.%tuple] // CHECK:STDOUT: %.loc7_16.2: %tuple.type.c2c = converted %.loc7_15.1, %tuple [concrete = constants.%tuple] diff --git a/toolchain/check/testdata/tuple/in_place_tuple_init.carbon b/toolchain/check/testdata/tuple/in_place_tuple_init.carbon index bd78276e7c2d..203614088a1f 100644 --- a/toolchain/check/testdata/tuple/in_place_tuple_init.carbon +++ b/toolchain/check/testdata/tuple/in_place_tuple_init.carbon @@ -60,8 +60,8 @@ fn H() { // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %ptr.261: type = ptr_type %tuple.type.d07 [concrete] -// CHECK:STDOUT: %Op.type.a4a: type = fn_type @Op.1, @Destroy.impl(%tuple.type.d07) [concrete] -// CHECK:STDOUT: %Op.7c6: %Op.type.a4a = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a4a: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%tuple.type.d07) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.7c6: %T.as.Destroy.impl.Op.type.a4a = struct_value () [concrete] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -97,21 +97,21 @@ fn H() { // CHECK:STDOUT: // CHECK:STDOUT: %F.call.loc9: init %tuple.type.d07 = call %F.ref.loc9() to %.loc5_8 // CHECK:STDOUT: -// CHECK:STDOUT: %Op.bound.loc8: = bound_method %.loc8, constants.%Op.7c6 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8: = bound_method %.loc8, constants.%T.as.Destroy.impl.Op.7c6 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc8: = bound_method %.loc8, %Op.specific_fn.2 +// CHECK:STDOUT: %bound_method.loc8: = bound_method %.loc8, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc8: %ptr.261 = addr_of %.loc8 -// CHECK:STDOUT: %no_op.loc8: init %empty_tuple.type = call %bound_method.loc8(%addr.loc8) -// CHECK:STDOUT: %Op.bound.loc7_3.1: = bound_method %.loc7_3, constants.%Op.7c6 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8: init %empty_tuple.type = call %bound_method.loc8(%addr.loc8) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc7_3.1: = bound_method %.loc7_3, constants.%T.as.Destroy.impl.Op.7c6 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc7_3.1: = bound_method %.loc7_3, %Op.specific_fn.3 +// CHECK:STDOUT: %bound_method.loc7_3.1: = bound_method %.loc7_3, %T.as.Destroy.impl.Op.specific_fn.3 // CHECK:STDOUT: %addr.loc7_3.1: %ptr.261 = addr_of %.loc7_3 -// CHECK:STDOUT: %no_op.loc7_3.1: init %empty_tuple.type = call %bound_method.loc7_3.1(%addr.loc7_3.1) -// CHECK:STDOUT: %Op.bound.loc7_3.2: = bound_method %v.var, constants.%Op.7c6 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc7_3.1: init %empty_tuple.type = call %bound_method.loc7_3.1(%addr.loc7_3.1) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc7_3.2: = bound_method %v.var, constants.%T.as.Destroy.impl.Op.7c6 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc7_3.2: = bound_method %v.var, %Op.specific_fn.4 +// CHECK:STDOUT: %bound_method.loc7_3.2: = bound_method %v.var, %T.as.Destroy.impl.Op.specific_fn.4 // CHECK:STDOUT: %addr.loc7_3.2: %ptr.261 = addr_of %v.var -// CHECK:STDOUT: %no_op.loc7_3.2: init %empty_tuple.type = call %bound_method.loc7_3.2(%addr.loc7_3.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc7_3.2: init %empty_tuple.type = call %bound_method.loc7_3.2(%addr.loc7_3.2) // CHECK:STDOUT: return %F.call.loc9 to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -124,11 +124,11 @@ fn H() { // CHECK:STDOUT: %.loc15_12.2: ref %tuple.type.d07 = temporary %.loc15_12.1, %G.call // CHECK:STDOUT: %tuple.elem0: ref %i32 = tuple_access %.loc15_12.2, element0 // CHECK:STDOUT: %.loc15_13: %i32 = bind_value %tuple.elem0 -// CHECK:STDOUT: %Op.bound: = bound_method %.loc15_12.1, constants.%Op.7c6 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc15_12.1, constants.%T.as.Destroy.impl.Op.7c6 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc15_12.1, %Op.specific_fn +// CHECK:STDOUT: %bound_method: = bound_method %.loc15_12.1, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.261 = addr_of %.loc15_12.1 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %.loc15_13 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -147,12 +147,12 @@ fn H() { // CHECK:STDOUT: %ptr.7ae: type = ptr_type %tuple.type.189 [concrete] // CHECK:STDOUT: %pattern_type.d88: type = pattern_type %tuple.type.99b [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%To) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %Op.type.19f: type = fn_type @Op.1, @Destroy.impl(%tuple.type.189) [concrete] -// CHECK:STDOUT: %Op.672: %Op.type.19f = struct_value () [concrete] -// CHECK:STDOUT: %Op.type.387: type = fn_type @Op.1, @Destroy.impl(%tuple.type.99b) [concrete] -// CHECK:STDOUT: %Op.b09: %Op.type.387 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.19f: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%tuple.type.189) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.672: %T.as.Destroy.impl.Op.type.19f = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.387: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%tuple.type.99b) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.b09: %T.as.Destroy.impl.Op.type.387 = struct_value () [concrete] // CHECK:STDOUT: %ptr.8bc: type = ptr_type %tuple.type.99b [concrete] // CHECK:STDOUT: %tuple.type.3a3: type = tuple_type (type, %tuple.type.ff9, type) [concrete] // CHECK:STDOUT: %tuple.type.516: type = tuple_type (%i32, %tuple.type.189, %i32) [concrete] @@ -161,27 +161,27 @@ fn H() { // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %tuple.type.667: type = tuple_type (Core.IntLiteral, %tuple.type.189, Core.IntLiteral) [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @ImplicitAs.impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] +// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] +// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] -// CHECK:STDOUT: %Op.type.701: type = fn_type @Op.1, @Destroy.impl(%tuple.type.516) [concrete] -// CHECK:STDOUT: %Op.dfb: %Op.type.701 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.701: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%tuple.type.516) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.dfb: %T.as.Destroy.impl.Op.type.701 = struct_value () [concrete] // CHECK:STDOUT: %ptr.12e: type = ptr_type %tuple.type.516 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core.import_ref.a5b: @ImplicitAs.impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @ImplicitAs.impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @ImplicitAs.impl.4f9 [concrete] +// CHECK:STDOUT: %Core.import_ref.a5b: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @G() { @@ -222,21 +222,21 @@ fn H() { // CHECK:STDOUT: %.loc7_43.5: type = converted %.loc7_43.2, constants.%tuple.type.99b [concrete = constants.%tuple.type.99b] // CHECK:STDOUT: } // CHECK:STDOUT: %v: ref %tuple.type.99b = bind_name v, %v.var -// CHECK:STDOUT: %Op.bound.loc7_56.1: = bound_method %tuple.elem1, constants.%Op.672 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc7_56.1: = bound_method %tuple.elem1, constants.%T.as.Destroy.impl.Op.672 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc7_56.1: = bound_method %tuple.elem1, %Op.specific_fn.1 +// CHECK:STDOUT: %bound_method.loc7_56.1: = bound_method %tuple.elem1, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc7_56.1: %ptr.7ae = addr_of %tuple.elem1 -// CHECK:STDOUT: %no_op.loc7_56.1: init %empty_tuple.type = call %bound_method.loc7_56.1(%addr.loc7_56.1) -// CHECK:STDOUT: %Op.bound.loc7_56.2: = bound_method %tuple.elem0, constants.%Op.672 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc7_56.1: init %empty_tuple.type = call %bound_method.loc7_56.1(%addr.loc7_56.1) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc7_56.2: = bound_method %tuple.elem0, constants.%T.as.Destroy.impl.Op.672 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc7_56.2: = bound_method %tuple.elem0, %Op.specific_fn.2 +// CHECK:STDOUT: %bound_method.loc7_56.2: = bound_method %tuple.elem0, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc7_56.2: %ptr.7ae = addr_of %tuple.elem0 -// CHECK:STDOUT: %no_op.loc7_56.2: init %empty_tuple.type = call %bound_method.loc7_56.2(%addr.loc7_56.2) -// CHECK:STDOUT: %Op.bound.loc7_3: = bound_method %v.var, constants.%Op.b09 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc7_56.2: init %empty_tuple.type = call %bound_method.loc7_56.2(%addr.loc7_56.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc7_3: = bound_method %v.var, constants.%T.as.Destroy.impl.Op.b09 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc7_3: = bound_method %v.var, %Op.specific_fn.3 +// CHECK:STDOUT: %bound_method.loc7_3: = bound_method %v.var, %T.as.Destroy.impl.Op.specific_fn.3 // CHECK:STDOUT: %addr.loc7_3: %ptr.8bc = addr_of %v.var -// CHECK:STDOUT: %no_op.loc7_3: init %empty_tuple.type = call %bound_method.loc7_3(%addr.loc7_3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc7_3: init %empty_tuple.type = call %bound_method.loc7_3(%addr.loc7_3) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -253,20 +253,20 @@ fn H() { // CHECK:STDOUT: %F.call: init %tuple.type.189 = call %F.ref() to %tuple.elem1 // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %.loc13_50.1: %tuple.type.667 = tuple_literal (%int_1, %F.call, %int_2) -// CHECK:STDOUT: %impl.elem0.loc13_50.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc13_50.1: = bound_method %int_1, %impl.elem0.loc13_50.1 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc13_50.1: = specific_function %impl.elem0.loc13_50.1, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc13_50.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc13_50.1: = bound_method %int_1, %impl.elem0.loc13_50.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc13_50.1: = specific_function %impl.elem0.loc13_50.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc13_50.2: = bound_method %int_1, %specific_fn.loc13_50.1 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc13_50.1: init %i32 = call %bound_method.loc13_50.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc13_50.2: init %i32 = converted %int_1, %int.convert_checked.loc13_50.1 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc13_50.1: init %i32 = call %bound_method.loc13_50.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc13_50.2: init %i32 = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc13_50.1 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %tuple.elem0: ref %i32 = tuple_access %v.var, element0 // CHECK:STDOUT: %.loc13_50.3: init %i32 = initialize_from %.loc13_50.2 to %tuple.elem0 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %impl.elem0.loc13_50.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc13_50.3: = bound_method %int_2, %impl.elem0.loc13_50.2 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc13_50.2: = specific_function %impl.elem0.loc13_50.2, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %impl.elem0.loc13_50.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.956] +// CHECK:STDOUT: %bound_method.loc13_50.3: = bound_method %int_2, %impl.elem0.loc13_50.2 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc13_50.2: = specific_function %impl.elem0.loc13_50.2, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc13_50.4: = bound_method %int_2, %specific_fn.loc13_50.2 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc13_50.2: init %i32 = call %bound_method.loc13_50.4(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc13_50.4: init %i32 = converted %int_2, %int.convert_checked.loc13_50.2 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc13_50.2: init %i32 = call %bound_method.loc13_50.4(%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc13_50.4: init %i32 = converted %int_2, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc13_50.2 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %tuple.elem2: ref %i32 = tuple_access %v.var, element2 // CHECK:STDOUT: %.loc13_50.5: init %i32 = initialize_from %.loc13_50.4 to %tuple.elem2 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc13_50.6: init %tuple.type.516 = tuple_init (%.loc13_50.3, %F.call, %.loc13_50.5) to %v.var @@ -289,16 +289,16 @@ fn H() { // CHECK:STDOUT: %.loc13_36.4: type = converted %.loc13_36.2, constants.%tuple.type.516 [concrete = constants.%tuple.type.516] // CHECK:STDOUT: } // CHECK:STDOUT: %v: ref %tuple.type.516 = bind_name v, %v.var -// CHECK:STDOUT: %Op.bound.loc13_50: = bound_method %tuple.elem1, constants.%Op.672 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc13_50: = bound_method %tuple.elem1, constants.%T.as.Destroy.impl.Op.672 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc13_50.5: = bound_method %tuple.elem1, %Op.specific_fn.1 +// CHECK:STDOUT: %bound_method.loc13_50.5: = bound_method %tuple.elem1, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc13_50: %ptr.7ae = addr_of %tuple.elem1 -// CHECK:STDOUT: %no_op.loc13_50: init %empty_tuple.type = call %bound_method.loc13_50.5(%addr.loc13_50) -// CHECK:STDOUT: %Op.bound.loc13_3: = bound_method %v.var, constants.%Op.dfb +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc13_50: init %empty_tuple.type = call %bound_method.loc13_50.5(%addr.loc13_50) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc13_3: = bound_method %v.var, constants.%T.as.Destroy.impl.Op.dfb // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc13_3: = bound_method %v.var, %Op.specific_fn.2 +// CHECK:STDOUT: %bound_method.loc13_3: = bound_method %v.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc13_3: %ptr.12e = addr_of %v.var -// CHECK:STDOUT: %no_op.loc13_3: init %empty_tuple.type = call %bound_method.loc13_3(%addr.loc13_3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc13_3: init %empty_tuple.type = call %bound_method.loc13_3(%addr.loc13_3) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/tuple/tuple_pattern.carbon b/toolchain/check/testdata/tuple/tuple_pattern.carbon index d63d3979e5b9..484febc8602a 100644 --- a/toolchain/check/testdata/tuple/tuple_pattern.carbon +++ b/toolchain/check/testdata/tuple/tuple_pattern.carbon @@ -129,8 +129,8 @@ let (a: {}, b: {}) = ({}, {}, {}); // CHECK:STDOUT: %pattern_type.de4: type = pattern_type %tuple.type.b6b [concrete] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %tuple: %tuple.type.b6b = tuple_value (%empty_struct, %empty_struct) [concrete] -// CHECK:STDOUT: %Op.type.72a: type = fn_type @Op.1, @Destroy.impl(%tuple.type.b6b) [concrete] -// CHECK:STDOUT: %Op.973: %Op.type.72a = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.72a: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%tuple.type.b6b) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.973: %T.as.Destroy.impl.Op.type.72a = struct_value () [concrete] // CHECK:STDOUT: %ptr.8fc: type = ptr_type %tuple.type.b6b [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -211,16 +211,16 @@ let (a: {}, b: {}) = ({}, {}, {}); // CHECK:STDOUT: %.loc8_19.3: type = converted %.loc8_19.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %d: ref %empty_struct_type = bind_name d, %tuple.elem1.loc8_3 -// CHECK:STDOUT: %Op.bound.loc8: = bound_method %.var.loc8, constants.%Op.973 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8: = bound_method %.var.loc8, constants.%T.as.Destroy.impl.Op.973 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc8: = bound_method %.var.loc8, %Op.specific_fn.1 +// CHECK:STDOUT: %bound_method.loc8: = bound_method %.var.loc8, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc8: %ptr.8fc = addr_of %.var.loc8 -// CHECK:STDOUT: %no_op.loc8: init %empty_tuple.type = call %bound_method.loc8(%addr.loc8) -// CHECK:STDOUT: %Op.bound.loc7: = bound_method %.var.loc7, constants.%Op.973 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8: init %empty_tuple.type = call %bound_method.loc8(%addr.loc8) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc7: = bound_method %.var.loc7, constants.%T.as.Destroy.impl.Op.973 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc7: = bound_method %.var.loc7, %Op.specific_fn.2 +// CHECK:STDOUT: %bound_method.loc7: = bound_method %.var.loc7, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc7: %ptr.8fc = addr_of %.var.loc7 -// CHECK:STDOUT: %no_op.loc7: init %empty_tuple.type = call %bound_method.loc7(%addr.loc7) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc7: init %empty_tuple.type = call %bound_method.loc7(%addr.loc7) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -234,8 +234,8 @@ let (a: {}, b: {}) = ({}, {}, {}); // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %tuple: %tuple.type.b6b = tuple_value (%empty_struct, %empty_struct) [concrete] // CHECK:STDOUT: %pattern_type.a96: type = pattern_type %empty_struct_type [concrete] -// CHECK:STDOUT: %Op.type.72a: type = fn_type @Op.1, @Destroy.impl(%tuple.type.b6b) [concrete] -// CHECK:STDOUT: %Op.973: %Op.type.72a = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.72a: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%tuple.type.b6b) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.973: %T.as.Destroy.impl.Op.type.72a = struct_value () [concrete] // CHECK:STDOUT: %ptr.8fc: type = ptr_type %tuple.type.b6b [concrete] // CHECK:STDOUT: %MakeTuple.type: type = fn_type @MakeTuple [concrete] // CHECK:STDOUT: %MakeTuple: %MakeTuple.type = struct_value () [concrete] @@ -303,16 +303,16 @@ let (a: {}, b: {}) = ({}, {}, {}); // CHECK:STDOUT: %.loc7_19.3: type = converted %.loc7_19.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %y: ref %empty_struct_type = bind_name y, %tuple.elem1.loc7_3 -// CHECK:STDOUT: %Op.bound.loc7: = bound_method %.var, constants.%Op.973 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc7: = bound_method %.var, constants.%T.as.Destroy.impl.Op.973 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc7: = bound_method %.var, %Op.specific_fn.1 +// CHECK:STDOUT: %bound_method.loc7: = bound_method %.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc7: %ptr.8fc = addr_of %.var -// CHECK:STDOUT: %no_op.loc7: init %empty_tuple.type = call %bound_method.loc7(%addr.loc7) -// CHECK:STDOUT: %Op.bound.loc6: = bound_method %tuple.var, constants.%Op.973 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc7: init %empty_tuple.type = call %bound_method.loc7(%addr.loc7) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc6: = bound_method %tuple.var, constants.%T.as.Destroy.impl.Op.973 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc6: = bound_method %tuple.var, %Op.specific_fn.2 +// CHECK:STDOUT: %bound_method.loc6: = bound_method %tuple.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc6: %ptr.8fc = addr_of %tuple.var -// CHECK:STDOUT: %no_op.loc6: init %empty_tuple.type = call %bound_method.loc6(%addr.loc6) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc6: init %empty_tuple.type = call %bound_method.loc6(%addr.loc6) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -370,11 +370,11 @@ let (a: {}, b: {}) = ({}, {}, {}); // CHECK:STDOUT: %.loc14_19.3: type = converted %.loc14_19.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %y: ref %empty_struct_type = bind_name y, %tuple.elem1.loc14_3 -// CHECK:STDOUT: %Op.bound: = bound_method %.var, constants.%Op.973 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.var, constants.%T.as.Destroy.impl.Op.973 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.var, %Op.specific_fn +// CHECK:STDOUT: %bound_method: = bound_method %.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.8fc = addr_of %.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -403,16 +403,16 @@ let (a: {}, b: {}) = ({}, {}, {}); // CHECK:STDOUT: %.loc22_19.3: type = converted %.loc22_19.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %y: ref %empty_struct_type = bind_name y, %tuple.elem1 -// CHECK:STDOUT: %Op.bound.loc22_3.1: = bound_method %.loc22_3, constants.%Op.973 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc22_3.1: = bound_method %.loc22_3, constants.%T.as.Destroy.impl.Op.973 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc22_3.1: = bound_method %.loc22_3, %Op.specific_fn.1 +// CHECK:STDOUT: %bound_method.loc22_3.1: = bound_method %.loc22_3, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc22_3.1: %ptr.8fc = addr_of %.loc22_3 -// CHECK:STDOUT: %no_op.loc22_3.1: init %empty_tuple.type = call %bound_method.loc22_3.1(%addr.loc22_3.1) -// CHECK:STDOUT: %Op.bound.loc22_3.2: = bound_method %.var, constants.%Op.973 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc22_3.1: init %empty_tuple.type = call %bound_method.loc22_3.1(%addr.loc22_3.1) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc22_3.2: = bound_method %.var, constants.%T.as.Destroy.impl.Op.973 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc22_3.2: = bound_method %.var, %Op.specific_fn.2 +// CHECK:STDOUT: %bound_method.loc22_3.2: = bound_method %.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc22_3.2: %ptr.8fc = addr_of %.var -// CHECK:STDOUT: %no_op.loc22_3.2: init %empty_tuple.type = call %bound_method.loc22_3.2(%addr.loc22_3.2) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc22_3.2: init %empty_tuple.type = call %bound_method.loc22_3.2(%addr.loc22_3.2) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/decl.carbon b/toolchain/check/testdata/var/decl.carbon index dc56af238afc..f3983547d906 100644 --- a/toolchain/check/testdata/var/decl.carbon +++ b/toolchain/check/testdata/var/decl.carbon @@ -26,10 +26,10 @@ fn Main() { // CHECK:STDOUT: %Main: %Main.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.1, @Destroy.impl(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a63: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ea3: %T.as.Destroy.impl.Op.type.a63 = struct_value () [concrete] // CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ea3, @Op.1(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(%empty_tuple.type) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -62,11 +62,11 @@ fn Main() { // CHECK:STDOUT: %.loc3_11.3: type = converted %.loc3_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %empty_tuple.type = bind_name x, %x.var -// CHECK:STDOUT: %Op.bound: = bound_method %x.var, constants.%Op.ea3 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.ea3, @Op.1(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %x.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %x.var, constants.%T.as.Destroy.impl.Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %x.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.843 = addr_of %x.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/decl_with_init.carbon b/toolchain/check/testdata/var/decl_with_init.carbon index 3254490ba6e6..387f9698deea 100644 --- a/toolchain/check/testdata/var/decl_with_init.carbon +++ b/toolchain/check/testdata/var/decl_with_init.carbon @@ -27,10 +27,10 @@ fn Main() { // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.1, @Destroy.impl(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a63: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ea3: %T.as.Destroy.impl.Op.type.a63 = struct_value () [concrete] // CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ea3, @Op.1(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(%empty_tuple.type) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -67,11 +67,11 @@ fn Main() { // CHECK:STDOUT: %.loc3_11.3: type = converted %.loc3_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %empty_tuple.type = bind_name x, %x.var -// CHECK:STDOUT: %Op.bound: = bound_method %x.var, constants.%Op.ea3 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.ea3, @Op.1(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %x.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %x.var, constants.%T.as.Destroy.impl.Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %x.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.843 = addr_of %x.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/fail_duplicate_decl.carbon b/toolchain/check/testdata/var/fail_duplicate_decl.carbon index ac1e0937e006..5c0f71a7de34 100644 --- a/toolchain/check/testdata/var/fail_duplicate_decl.carbon +++ b/toolchain/check/testdata/var/fail_duplicate_decl.carbon @@ -35,10 +35,10 @@ fn Main() { // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.1, @Destroy.impl(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a63: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ea3: %T.as.Destroy.impl.Op.type.a63 = struct_value () [concrete] // CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ea3, @Op.1(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(%empty_tuple.type) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -89,16 +89,16 @@ fn Main() { // CHECK:STDOUT: %.loc11_11.3: type = converted %.loc11_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x.loc11: ref %empty_tuple.type = bind_name x, %x.var.loc11 -// CHECK:STDOUT: %Op.bound.loc11: = bound_method %x.var.loc11, constants.%Op.ea3 -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.ea3, @Op.1(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc11: = bound_method %x.var.loc11, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc11: = bound_method %x.var.loc11, constants.%T.as.Destroy.impl.Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc11: = bound_method %x.var.loc11, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc11: %ptr.843 = addr_of %x.var.loc11 -// CHECK:STDOUT: %no_op.loc11: init %empty_tuple.type = call %bound_method.loc11(%addr.loc11) -// CHECK:STDOUT: %Op.bound.loc3: = bound_method %x.var.loc3, constants.%Op.ea3 -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.ea3, @Op.1(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc3: = bound_method %x.var.loc3, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc11: init %empty_tuple.type = call %bound_method.loc11(%addr.loc11) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc3: = bound_method %x.var.loc3, constants.%T.as.Destroy.impl.Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc3: = bound_method %x.var.loc3, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc3: %ptr.843 = addr_of %x.var.loc3 -// CHECK:STDOUT: %no_op.loc3: init %empty_tuple.type = call %bound_method.loc3(%addr.loc3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc3: init %empty_tuple.type = call %bound_method.loc3(%addr.loc3) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/fail_init_with_self.carbon b/toolchain/check/testdata/var/fail_init_with_self.carbon index 17147e07bf68..72329b182cb1 100644 --- a/toolchain/check/testdata/var/fail_init_with_self.carbon +++ b/toolchain/check/testdata/var/fail_init_with_self.carbon @@ -30,10 +30,10 @@ fn Main() { // CHECK:STDOUT: %Main: %Main.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.1, @Destroy.impl(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a63: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ea3: %T.as.Destroy.impl.Op.type.a63 = struct_value () [concrete] // CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ea3, @Op.1(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(%empty_tuple.type) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -68,11 +68,11 @@ fn Main() { // CHECK:STDOUT: %.loc7_11.3: type = converted %.loc7_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %empty_tuple.type = bind_name x, %x.var -// CHECK:STDOUT: %Op.bound: = bound_method %x.var, constants.%Op.ea3 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.ea3, @Op.1(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %x.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %x.var, constants.%T.as.Destroy.impl.Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %x.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.843 = addr_of %x.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/fail_lookup_outside_scope.carbon b/toolchain/check/testdata/var/fail_lookup_outside_scope.carbon index 600c9fedfe79..9cd4e07769dc 100644 --- a/toolchain/check/testdata/var/fail_lookup_outside_scope.carbon +++ b/toolchain/check/testdata/var/fail_lookup_outside_scope.carbon @@ -32,10 +32,10 @@ var y: () = x; // CHECK:STDOUT: %Main: %Main.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.1, @Destroy.impl(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a63: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ea3: %T.as.Destroy.impl.Op.type.a63 = struct_value () [concrete] // CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ea3, @Op.1(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(%empty_tuple.type) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -80,11 +80,11 @@ var y: () = x; // CHECK:STDOUT: %.loc3_11.3: type = converted %.loc3_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %empty_tuple.type = bind_name x, %x.var -// CHECK:STDOUT: %Op.bound: = bound_method %x.var, constants.%Op.ea3 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.ea3, @Op.1(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %x.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %x.var, constants.%T.as.Destroy.impl.Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %x.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.843 = addr_of %x.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/fail_not_copyable.carbon b/toolchain/check/testdata/var/fail_not_copyable.carbon index d9222d4fd0f6..8515c9b6bb7f 100644 --- a/toolchain/check/testdata/var/fail_not_copyable.carbon +++ b/toolchain/check/testdata/var/fail_not_copyable.carbon @@ -46,13 +46,13 @@ fn F(x: X) { // CHECK:STDOUT: %pattern_type.b05: type = pattern_type String [concrete] // CHECK:STDOUT: %str: String = string_literal "hello" [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.9e1: type = fn_type @Op.1, @Destroy.impl(%X) [concrete] -// CHECK:STDOUT: %Op.33a: %Op.type.9e1 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.9e1: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%X) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.33a: %T.as.Destroy.impl.Op.type.9e1 = struct_value () [concrete] // CHECK:STDOUT: %ptr.d17: type = ptr_type %X [concrete] -// CHECK:STDOUT: %Op.specific_fn.d1f: = specific_function %Op.33a, @Op.1(%X) [concrete] -// CHECK:STDOUT: %Op.type.051: type = fn_type @Op.1, @Destroy.impl(String) [concrete] -// CHECK:STDOUT: %Op.5ef: %Op.type.051 = struct_value () [concrete] -// CHECK:STDOUT: %Op.specific_fn.93f: = specific_function %Op.5ef, @Op.1(String) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.d1f: = specific_function %T.as.Destroy.impl.Op.33a, @T.as.Destroy.impl.Op(%X) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.051: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(String) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.5ef: %T.as.Destroy.impl.Op.type.051 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.93f: = specific_function %T.as.Destroy.impl.Op.5ef, @T.as.Destroy.impl.Op(String) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -110,16 +110,16 @@ fn F(x: X) { // CHECK:STDOUT: assign %y.var, // CHECK:STDOUT: %X.ref.loc32: type = name_ref X, file.%X.decl [concrete = constants.%X] // CHECK:STDOUT: %y: ref %X = bind_name y, %y.var -// CHECK:STDOUT: %Op.bound.loc32: = bound_method %y.var, constants.%Op.33a -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.33a, @Op.1(constants.%X) [concrete = constants.%Op.specific_fn.d1f] -// CHECK:STDOUT: %bound_method.loc32: = bound_method %y.var, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc32: = bound_method %y.var, constants.%T.as.Destroy.impl.Op.33a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.33a, @T.as.Destroy.impl.Op(constants.%X) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.d1f] +// CHECK:STDOUT: %bound_method.loc32: = bound_method %y.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc32: %ptr.d17 = addr_of %y.var -// CHECK:STDOUT: %no_op.loc32: init %empty_tuple.type = call %bound_method.loc32(%addr.loc32) -// CHECK:STDOUT: %Op.bound.loc25: = bound_method %s.var, constants.%Op.5ef -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.5ef, @Op.1(String) [concrete = constants.%Op.specific_fn.93f] -// CHECK:STDOUT: %bound_method.loc25: = bound_method %s.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc32: init %empty_tuple.type = call %bound_method.loc32(%addr.loc32) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc25: = bound_method %s.var, constants.%T.as.Destroy.impl.Op.5ef +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.5ef, @T.as.Destroy.impl.Op(String) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.93f] +// CHECK:STDOUT: %bound_method.loc25: = bound_method %s.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc25: %ptr.a45 = addr_of %s.var -// CHECK:STDOUT: %no_op.loc25: init %empty_tuple.type = call %bound_method.loc25(%addr.loc25) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc25: init %empty_tuple.type = call %bound_method.loc25(%addr.loc25) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/global_lookup_in_scope.carbon b/toolchain/check/testdata/var/global_lookup_in_scope.carbon index 69aa267b909f..0c0b06bc9cea 100644 --- a/toolchain/check/testdata/var/global_lookup_in_scope.carbon +++ b/toolchain/check/testdata/var/global_lookup_in_scope.carbon @@ -32,10 +32,10 @@ fn Main() { // CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete] // CHECK:STDOUT: %Main: %Main.type = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.7e5: type = fn_type @Op.1, @Destroy.impl(%struct_type.v) [concrete] -// CHECK:STDOUT: %Op.477: %Op.type.7e5 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.7e5: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%struct_type.v) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.477: %T.as.Destroy.impl.Op.type.7e5 = struct_value () [concrete] // CHECK:STDOUT: %ptr.ef9: type = ptr_type %struct_type.v [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.477, @Op.1(%struct_type.v) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.477, @T.as.Destroy.impl.Op(%struct_type.v) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -89,11 +89,11 @@ fn Main() { // CHECK:STDOUT: %struct_type.v: type = struct_type {.v: %empty_tuple.type} [concrete = constants.%struct_type.v] // CHECK:STDOUT: } // CHECK:STDOUT: %y: ref %struct_type.v = bind_name y, %y.var -// CHECK:STDOUT: %Op.bound: = bound_method %y.var, constants.%Op.477 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.477, @Op.1(constants.%struct_type.v) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %y.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %y.var, constants.%T.as.Destroy.impl.Op.477 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.477, @T.as.Destroy.impl.Op(constants.%struct_type.v) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %y.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.ef9 = addr_of %y.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/lookup.carbon b/toolchain/check/testdata/var/lookup.carbon index bb52e0011428..144742e48c47 100644 --- a/toolchain/check/testdata/var/lookup.carbon +++ b/toolchain/check/testdata/var/lookup.carbon @@ -26,10 +26,10 @@ fn Main() { // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.1, @Destroy.impl(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a63: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ea3: %T.as.Destroy.impl.Op.type.a63 = struct_value () [concrete] // CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ea3, @Op.1(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(%empty_tuple.type) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -67,11 +67,11 @@ fn Main() { // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %empty_tuple.type = bind_name x, %x.var // CHECK:STDOUT: %x.ref: ref %empty_tuple.type = name_ref x, %x -// CHECK:STDOUT: %Op.bound: = bound_method %x.var, constants.%Op.ea3 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.ea3, @Op.1(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %x.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %x.var, constants.%T.as.Destroy.impl.Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %x.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.843 = addr_of %x.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/shadowing.carbon b/toolchain/check/testdata/var/shadowing.carbon index 4c6a767a462a..37360b139e1e 100644 --- a/toolchain/check/testdata/var/shadowing.carbon +++ b/toolchain/check/testdata/var/shadowing.carbon @@ -39,10 +39,10 @@ fn Main() { // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %true: bool = bool_literal true [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.1, @Destroy.impl(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a63: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ea3: %T.as.Destroy.impl.Op.type.a63 = struct_value () [concrete] // CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ea3, @Op.1(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(%empty_tuple.type) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -126,21 +126,21 @@ fn Main() { // CHECK:STDOUT: br !if.else // CHECK:STDOUT: // CHECK:STDOUT: !if.else: -// CHECK:STDOUT: %Op.bound.loc10: = bound_method %x.var.loc10, constants.%Op.ea3 -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.ea3, @Op.1(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc10: = bound_method %x.var.loc10, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10: = bound_method %x.var.loc10, constants.%T.as.Destroy.impl.Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc10: = bound_method %x.var.loc10, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc10: %ptr.843 = addr_of %x.var.loc10 -// CHECK:STDOUT: %no_op.loc10: init %empty_tuple.type = call %bound_method.loc10(%addr.loc10) -// CHECK:STDOUT: %Op.bound.loc8: = bound_method %x.var.loc8, constants.%Op.ea3 -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.ea3, @Op.1(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc8: = bound_method %x.var.loc8, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10: init %empty_tuple.type = call %bound_method.loc10(%addr.loc10) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8: = bound_method %x.var.loc8, constants.%T.as.Destroy.impl.Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc8: = bound_method %x.var.loc8, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc8: %ptr.843 = addr_of %x.var.loc8 -// CHECK:STDOUT: %no_op.loc8: init %empty_tuple.type = call %bound_method.loc8(%addr.loc8) -// CHECK:STDOUT: %Op.bound.loc5: = bound_method %NS.var, constants.%Op.ea3 -// CHECK:STDOUT: %Op.specific_fn.3: = specific_function constants.%Op.ea3, @Op.1(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc5: = bound_method %NS.var, %Op.specific_fn.3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8: init %empty_tuple.type = call %bound_method.loc8(%addr.loc8) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc5: = bound_method %NS.var, constants.%T.as.Destroy.impl.Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.3: = specific_function constants.%T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc5: = bound_method %NS.var, %T.as.Destroy.impl.Op.specific_fn.3 // CHECK:STDOUT: %addr.loc5: %ptr.843 = addr_of %NS.var -// CHECK:STDOUT: %no_op.loc5: init %empty_tuple.type = call %bound_method.loc5(%addr.loc5) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc5: init %empty_tuple.type = call %bound_method.loc5(%addr.loc5) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/var_pattern.carbon b/toolchain/check/testdata/var/var_pattern.carbon index 2e59fd7481e0..4916df7b924c 100644 --- a/toolchain/check/testdata/var/var_pattern.carbon +++ b/toolchain/check/testdata/var/var_pattern.carbon @@ -154,10 +154,10 @@ fn G() { // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.1, @Destroy.impl(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a63: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ea3: %T.as.Destroy.impl.Op.type.a63 = struct_value () [concrete] // CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ea3, @Op.1(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(%empty_tuple.type) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -194,11 +194,11 @@ fn G() { // CHECK:STDOUT: %.loc5_15.3: type = converted %.loc5_15.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %empty_tuple.type = bind_name x, %x.var -// CHECK:STDOUT: %Op.bound: = bound_method %x.var, constants.%Op.ea3 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.ea3, @Op.1(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %x.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %x.var, constants.%T.as.Destroy.impl.Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %x.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.843 = addr_of %x.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -213,10 +213,10 @@ fn G() { // CHECK:STDOUT: %pattern_type.5b8: type = pattern_type %tuple.type [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.1, @Destroy.impl(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a63: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ea3: %T.as.Destroy.impl.Op.type.a63 = struct_value () [concrete] // CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ea3, @Op.1(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(%empty_tuple.type) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -264,11 +264,11 @@ fn G() { // CHECK:STDOUT: %.loc5_23.3: type = converted %.loc5_23.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %y: ref %empty_tuple.type = bind_name y, %y.var -// CHECK:STDOUT: %Op.bound: = bound_method %y.var, constants.%Op.ea3 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.ea3, @Op.1(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %y.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %y.var, constants.%T.as.Destroy.impl.Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %y.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.843 = addr_of %y.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -285,9 +285,9 @@ fn G() { // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%empty_tuple, %empty_tuple) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.4e8: type = fn_type @Op.1, @Destroy.impl(%tuple.type) [concrete] -// CHECK:STDOUT: %Op.166: %Op.type.4e8 = struct_value () [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.166, @Op.1(%tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.4e8: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.166: %T.as.Destroy.impl.Op.type.4e8 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.166, @T.as.Destroy.impl.Op(%tuple.type) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -341,11 +341,11 @@ fn G() { // CHECK:STDOUT: %.loc5_19.3: type = converted %.loc5_19.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %y: ref %empty_tuple.type = bind_name y, %tuple.elem1.loc5_3 -// CHECK:STDOUT: %Op.bound: = bound_method %.var, constants.%Op.166 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.166, @Op.1(constants.%tuple.type) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.var, constants.%T.as.Destroy.impl.Op.166 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.166, @T.as.Destroy.impl.Op(constants.%tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.709 = addr_of %.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -362,9 +362,9 @@ fn G() { // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%empty_tuple, %empty_tuple) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.4e8: type = fn_type @Op.1, @Destroy.impl(%tuple.type) [concrete] -// CHECK:STDOUT: %Op.166: %Op.type.4e8 = struct_value () [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.166, @Op.1(%tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.4e8: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.166: %T.as.Destroy.impl.Op.type.4e8 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.166, @T.as.Destroy.impl.Op(%tuple.type) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -418,11 +418,11 @@ fn G() { // CHECK:STDOUT: %.loc5_23.3: type = converted %.loc5_23.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %y: ref %empty_tuple.type = bind_name y, %tuple.elem1.loc5_7 -// CHECK:STDOUT: %Op.bound: = bound_method %.var, constants.%Op.166 -// CHECK:STDOUT: %Op.specific_fn: = specific_function constants.%Op.166, @Op.1(constants.%tuple.type) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.var, %Op.specific_fn +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.var, constants.%T.as.Destroy.impl.Op.166 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.166, @T.as.Destroy.impl.Op(constants.%tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %.var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr: %ptr.709 = addr_of %.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -437,10 +437,10 @@ fn G() { // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.1, @Destroy.impl(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a63: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ea3: %T.as.Destroy.impl.Op.type.a63 = struct_value () [concrete] // CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ea3, @Op.1(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(%empty_tuple.type) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -510,16 +510,16 @@ fn G() { // CHECK:STDOUT: %.loc4_13.2: init %empty_tuple.type = converted %.loc8_9.1, %.loc8_9.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: assign %.loc4_13.1, %.loc4_13.2 // CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.ref(%.loc8_5, %.loc4_13.1) -// CHECK:STDOUT: %Op.bound.loc4: = bound_method %.loc4_13.1, constants.%Op.ea3 -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.ea3, @Op.1(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc4: = bound_method %.loc4_13.1, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc4: = bound_method %.loc4_13.1, constants.%T.as.Destroy.impl.Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc4: = bound_method %.loc4_13.1, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc4: %ptr.843 = addr_of %.loc4_13.1 -// CHECK:STDOUT: %no_op.loc4: init %empty_tuple.type = call %bound_method.loc4(%addr.loc4) -// CHECK:STDOUT: %Op.bound.loc7: = bound_method %v.var, constants.%Op.ea3 -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.ea3, @Op.1(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc7: = bound_method %v.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc4: init %empty_tuple.type = call %bound_method.loc4(%addr.loc4) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc7: = bound_method %v.var, constants.%T.as.Destroy.impl.Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc7: = bound_method %v.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc7: %ptr.843 = addr_of %v.var -// CHECK:STDOUT: %no_op.loc7: init %empty_tuple.type = call %bound_method.loc7(%addr.loc7) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc7: init %empty_tuple.type = call %bound_method.loc7(%addr.loc7) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -632,18 +632,18 @@ fn G() { // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %Destroy.assoc_type: type = assoc_entity_type @Destroy [concrete] // CHECK:STDOUT: %assoc0: %Destroy.assoc_type = assoc_entity element0, imports.%Core.import_ref.725 [concrete] -// CHECK:STDOUT: %Op.type.bae: type = fn_type @Op.2 [concrete] -// CHECK:STDOUT: %Op.651: %Op.type.bae = struct_value () [concrete] +// CHECK:STDOUT: %Destroy.Op.type: type = fn_type @Destroy.Op [concrete] +// CHECK:STDOUT: %Destroy.Op: %Destroy.Op.type = struct_value () [concrete] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %Op.type.bc9: type = fn_type @Op.1, @Destroy.impl(%T) [symbolic] -// CHECK:STDOUT: %Op.46f: %Op.type.bc9 = struct_value () [symbolic] -// CHECK:STDOUT: %Destroy.impl_witness.1dc: = impl_witness imports.%Destroy.impl_witness_table, @Destroy.impl(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.1, @Destroy.impl(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.bc9: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%T) [symbolic] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.46f: %T.as.Destroy.impl.Op.type.bc9 = struct_value () [symbolic] +// CHECK:STDOUT: %Destroy.impl_witness.1dc: = impl_witness imports.%Destroy.impl_witness_table, @T.as.Destroy.impl(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a63: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ea3: %T.as.Destroy.impl.Op.type.a63 = struct_value () [concrete] // CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %empty_tuple.type, (%Destroy.impl_witness.1dc) [concrete] -// CHECK:STDOUT: %.346: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ea3, @Op.1(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %.346: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(%empty_tuple.type) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -659,9 +659,9 @@ fn G() { // CHECK:STDOUT: %P.F: %F.type = import_ref P//default, F, loaded [concrete = constants.%F] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: %Core.import_ref.f99: %Destroy.assoc_type = import_ref Core//prelude/parts/destroy, loc5_28, loaded [concrete = constants.%assoc0] -// CHECK:STDOUT: %Core.import_ref.725: %Op.type.bae = import_ref Core//prelude/parts/destroy, loc5_28, loaded [concrete = constants.%Op.651] -// CHECK:STDOUT: %Core.import_ref.0b9: @Destroy.impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @Destroy.impl.%Op (constants.%Op.46f)] -// CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @Destroy.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.725: %Destroy.Op.type = import_ref Core//prelude/parts/destroy, loc5_28, loaded [concrete = constants.%Destroy.Op] +// CHECK:STDOUT: %Core.import_ref.0b9: @T.as.Destroy.impl.%T.as.Destroy.impl.Op.type (%T.as.Destroy.impl.Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @T.as.Destroy.impl.%T.as.Destroy.impl.Op (constants.%T.as.Destroy.impl.Op.46f)] +// CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @T.as.Destroy.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -689,12 +689,12 @@ fn G() { // CHECK:STDOUT: assign %.1, %.2 // CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.ref(%.loc7_8.2, %.1) // CHECK:STDOUT: %Op.ref: %Destroy.assoc_type = name_ref Op, imports.%Core.import_ref.f99 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: %.346 = impl_witness_access constants.%Destroy.impl_witness.1dc, element0 [concrete = constants.%Op.ea3] +// CHECK:STDOUT: %impl.elem0: %.346 = impl_witness_access constants.%Destroy.impl_witness.1dc, element0 [concrete = constants.%T.as.Destroy.impl.Op.ea3] // CHECK:STDOUT: %bound_method.1: = bound_method %.1, %impl.elem0 -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.1(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] // CHECK:STDOUT: %bound_method.2: = bound_method %.1, %specific_fn // CHECK:STDOUT: %addr: %ptr.843 = addr_of %.1 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.2(%addr) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -715,13 +715,13 @@ fn G() { // CHECK:STDOUT: %ptr.709: type = ptr_type %tuple.type.bcd [concrete] // CHECK:STDOUT: %tuple: %tuple.type.bcd = tuple_value (%empty_tuple, %empty_tuple) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.4e8: type = fn_type @Op.1, @Destroy.impl(%tuple.type.bcd) [concrete] -// CHECK:STDOUT: %Op.166: %Op.type.4e8 = struct_value () [concrete] -// CHECK:STDOUT: %Op.specific_fn.48a: = specific_function %Op.166, @Op.1(%tuple.type.bcd) [concrete] -// CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.1, @Destroy.impl(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.4e8: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%tuple.type.bcd) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.166: %T.as.Destroy.impl.Op.type.4e8 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.48a: = specific_function %T.as.Destroy.impl.Op.166, @T.as.Destroy.impl.Op(%tuple.type.bcd) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a63: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ea3: %T.as.Destroy.impl.Op.type.a63 = struct_value () [concrete] // CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] -// CHECK:STDOUT: %Op.specific_fn.393: = specific_function %Op.ea3, @Op.1(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.393: = specific_function %T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(%empty_tuple.type) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -791,16 +791,16 @@ fn G() { // CHECK:STDOUT: %.loc9_35.3: type = converted %.loc9_35.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %z: ref %empty_tuple.type = bind_name z, %z.var -// CHECK:STDOUT: %Op.bound.loc9_15: = bound_method %.var, constants.%Op.166 -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.166, @Op.1(constants.%tuple.type.bcd) [concrete = constants.%Op.specific_fn.48a] -// CHECK:STDOUT: %bound_method.loc9_15: = bound_method %.var, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc9_15: = bound_method %.var, constants.%T.as.Destroy.impl.Op.166 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.166, @T.as.Destroy.impl.Op(constants.%tuple.type.bcd) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.48a] +// CHECK:STDOUT: %bound_method.loc9_15: = bound_method %.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc9_15: %ptr.709 = addr_of %.var -// CHECK:STDOUT: %no_op.loc9_15: init %empty_tuple.type = call %bound_method.loc9_15(%addr.loc9_15) -// CHECK:STDOUT: %Op.bound.loc9_27: = bound_method %z.var, constants.%Op.ea3 -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.ea3, @Op.1(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn.393] -// CHECK:STDOUT: %bound_method.loc9_27: = bound_method %z.var, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc9_15: init %empty_tuple.type = call %bound_method.loc9_15(%addr.loc9_15) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc9_27: = bound_method %z.var, constants.%T.as.Destroy.impl.Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.393] +// CHECK:STDOUT: %bound_method.loc9_27: = bound_method %z.var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc9_27: %ptr.843 = addr_of %z.var -// CHECK:STDOUT: %no_op.loc9_27: init %empty_tuple.type = call %bound_method.loc9_27(%addr.loc9_27) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc9_27: init %empty_tuple.type = call %bound_method.loc9_27(%addr.loc9_27) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -823,8 +823,8 @@ fn G() { // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %C.F.type: type = fn_type @C.F [concrete] +// CHECK:STDOUT: %C.F: %C.F.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: } @@ -846,7 +846,7 @@ fn G() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { +// CHECK:STDOUT: %C.F.decl: %C.F.type = fn_decl @C.F [concrete = constants.%C.F] { // CHECK:STDOUT: %self.patt: %pattern_type = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type = ref_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %self.var_patt: %pattern_type = var_pattern %self.param_patt [concrete] @@ -861,10 +861,10 @@ fn G() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .F = %C.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F(%self.param: %C); +// CHECK:STDOUT: fn @C.F(%self.param: %C); // CHECK:STDOUT: // CHECK:STDOUT: --- nested_match.carbon // CHECK:STDOUT: @@ -879,10 +879,10 @@ fn G() { // CHECK:STDOUT: %pattern_type.8c1: type = pattern_type %tuple.type [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.1, @Destroy.impl(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a63: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.ea3: %T.as.Destroy.impl.Op.type.a63 = struct_value () [concrete] // CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] -// CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ea3, @Op.1(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(%empty_tuple.type) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -956,21 +956,21 @@ fn G() { // CHECK:STDOUT: %tuple.loc8_48: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc8_48.3: %empty_tuple.type = converted %F.call.loc8_48, %tuple.loc8_48 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %z: %empty_tuple.type = bind_name z, %.loc8_48.3 -// CHECK:STDOUT: %Op.bound.loc8_48: = bound_method %.loc8_48.1, constants.%Op.ea3 -// CHECK:STDOUT: %Op.specific_fn.1: = specific_function constants.%Op.ea3, @Op.1(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc8_48: = bound_method %.loc8_48.1, %Op.specific_fn.1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8_48: = bound_method %.loc8_48.1, constants.%T.as.Destroy.impl.Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc8_48: = bound_method %.loc8_48.1, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc8_48: %ptr.843 = addr_of %.loc8_48.1 -// CHECK:STDOUT: %no_op.loc8_48: init %empty_tuple.type = call %bound_method.loc8_48(%addr.loc8_48) -// CHECK:STDOUT: %Op.bound.loc8_38: = bound_method %.loc8_38.1, constants.%Op.ea3 -// CHECK:STDOUT: %Op.specific_fn.2: = specific_function constants.%Op.ea3, @Op.1(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc8_38: = bound_method %.loc8_38.1, %Op.specific_fn.2 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8_48: init %empty_tuple.type = call %bound_method.loc8_48(%addr.loc8_48) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8_38: = bound_method %.loc8_38.1, constants.%T.as.Destroy.impl.Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc8_38: = bound_method %.loc8_38.1, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc8_38: %ptr.843 = addr_of %.loc8_38.1 -// CHECK:STDOUT: %no_op.loc8_38: init %empty_tuple.type = call %bound_method.loc8_38(%addr.loc8_38) -// CHECK:STDOUT: %Op.bound.loc8_15: = bound_method %y.var, constants.%Op.ea3 -// CHECK:STDOUT: %Op.specific_fn.3: = specific_function constants.%Op.ea3, @Op.1(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc8_15: = bound_method %y.var, %Op.specific_fn.3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8_38: init %empty_tuple.type = call %bound_method.loc8_38(%addr.loc8_38) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8_15: = bound_method %y.var, constants.%T.as.Destroy.impl.Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.3: = specific_function constants.%T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc8_15: = bound_method %y.var, %T.as.Destroy.impl.Op.specific_fn.3 // CHECK:STDOUT: %addr.loc8_15: %ptr.843 = addr_of %y.var -// CHECK:STDOUT: %no_op.loc8_15: init %empty_tuple.type = call %bound_method.loc8_15(%addr.loc8_15) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8_15: init %empty_tuple.type = call %bound_method.loc8_15(%addr.loc8_15) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/where_expr/equal_rewrite.carbon b/toolchain/check/testdata/where_expr/equal_rewrite.carbon index 140b9d588319..a87796370850 100644 --- a/toolchain/check/testdata/where_expr/equal_rewrite.carbon +++ b/toolchain/check/testdata/where_expr/equal_rewrite.carbon @@ -301,9 +301,9 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: %.Self.as_type.loc10_31: type = facet_access_type %.Self.ref.loc10_31 [symbolic_self = constants.%.Self.as_type.adb] // CHECK:STDOUT: %.loc10_31: type = converted %.Self.ref.loc10_31, %.Self.as_type.loc10_31 [symbolic_self = constants.%.Self.as_type.adb] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%A.lookup_impl_witness.5ad, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc10_36.1: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc10_36.2: type = converted %bool.make_type, %.loc10_36.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc10_36.1: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc10_36.2: type = converted %Bool.call, %.loc10_36.1 [concrete = bool] // CHECK:STDOUT: %.loc10_25: type = where_expr %.Self.1 [concrete = constants.%A_where.type.ef7] { // CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc10_36.2 // CHECK:STDOUT: } @@ -506,9 +506,9 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: %.Self.as_type.loc10_41: type = facet_access_type %.Self.ref.loc10_41 [symbolic_self = constants.%.Self.as_type] // CHECK:STDOUT: %.loc10_41: type = converted %.Self.ref.loc10_41, %.Self.as_type.loc10_41 [symbolic_self = constants.%.Self.as_type] // CHECK:STDOUT: %impl.elem1: type = impl_witness_access constants.%J.lookup_impl_witness, element1 [symbolic_self = constants.%impl.elem1] -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc10_46.1: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc10_46.2: type = converted %bool.make_type, %.loc10_46.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc10_46.1: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc10_46.2: type = converted %Bool.call, %.loc10_46.1 [concrete = bool] // CHECK:STDOUT: %.loc10_23.2: type = where_expr %.Self [concrete = constants.%J_where.type] { // CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc10_35.2 // CHECK:STDOUT: requirement_rewrite %impl.elem1, %.loc10_46.2 @@ -527,9 +527,9 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: %.Self.as_type.loc12_25: type = facet_access_type %.Self.ref.loc12_25 [symbolic_self = constants.%.Self.as_type] // CHECK:STDOUT: %.loc12_25: type = converted %.Self.ref.loc12_25, %.Self.as_type.loc12_25 [symbolic_self = constants.%.Self.as_type] // CHECK:STDOUT: %impl.elem1: type = impl_witness_access constants.%J.lookup_impl_witness, element1 [symbolic_self = constants.%impl.elem1] -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc12_30.1: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc12_30.2: type = converted %bool.make_type, %.loc12_30.1 [concrete = bool] +// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] +// CHECK:STDOUT: %.loc12_30.1: type = value_of_initializer %Bool.call [concrete = bool] +// CHECK:STDOUT: %.loc12_30.2: type = converted %Bool.call, %.loc12_30.1 [concrete = bool] // CHECK:STDOUT: %.Self.ref.loc12_39: %J.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %K.ref: %J.assoc_type = name_ref K, @K.%assoc0 [concrete = constants.%assoc0] // CHECK:STDOUT: %.Self.as_type.loc12_39: type = facet_access_type %.Self.ref.loc12_39 [symbolic_self = constants.%.Self.as_type] diff --git a/toolchain/lower/testdata/array/array_in_place.carbon b/toolchain/lower/testdata/array/array_in_place.carbon index aed16fb6c070..1647b5ed8b5f 100644 --- a/toolchain/lower/testdata/array/array_in_place.carbon +++ b/toolchain/lower/testdata/array/array_in_place.carbon @@ -25,10 +25,10 @@ fn G() { // CHECK:STDOUT: entry: // CHECK:STDOUT: %v.var = alloca [2 x { i32, i32, i32 }], align 8, !dbg !7 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 24, ptr %v.var), !dbg !7 -// CHECK:STDOUT: %.loc16_47.2.array.index = getelementptr inbounds [2 x { i32, i32, i32 }], ptr %v.var, i32 0, i64 0, !dbg !8 -// CHECK:STDOUT: call void @_CF.Main(ptr %.loc16_47.2.array.index), !dbg !9 -// CHECK:STDOUT: %.loc16_47.4.array.index = getelementptr inbounds [2 x { i32, i32, i32 }], ptr %v.var, i32 0, i64 1, !dbg !8 -// CHECK:STDOUT: call void @_CF.Main(ptr %.loc16_47.4.array.index), !dbg !10 +// CHECK:STDOUT: %.loc16_47.6.array.index = getelementptr inbounds [2 x { i32, i32, i32 }], ptr %v.var, i32 0, i64 0, !dbg !8 +// CHECK:STDOUT: call void @_CF.Main(ptr %.loc16_47.6.array.index), !dbg !9 +// CHECK:STDOUT: %.loc16_47.5.array.index = getelementptr inbounds [2 x { i32, i32, i32 }], ptr %v.var, i32 0, i64 1, !dbg !8 +// CHECK:STDOUT: call void @_CF.Main(ptr %.loc16_47.5.array.index), !dbg !10 // CHECK:STDOUT: ret void, !dbg !11 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/builtins/bool.carbon b/toolchain/lower/testdata/builtins/bool.carbon index 915fcd8a0ab1..9959c30133a6 100644 --- a/toolchain/lower/testdata/builtins/bool.carbon +++ b/toolchain/lower/testdata/builtins/bool.carbon @@ -28,20 +28,20 @@ fn IfEq(a: Bool(), b: Bool()) -> Bool() { // CHECK:STDOUT: // CHECK:STDOUT: define i1 @_CTestEq.Main(i1 %a, i1 %b) !dbg !4 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %bool.eq = icmp eq i1 %a, %b, !dbg !7 -// CHECK:STDOUT: ret i1 %bool.eq, !dbg !8 +// CHECK:STDOUT: %Eq.call = icmp eq i1 %a, %b, !dbg !7 +// CHECK:STDOUT: ret i1 %Eq.call, !dbg !8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i1 @_CTestNeq.Main(i1 %a, i1 %b) !dbg !9 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %bool.neq = icmp ne i1 %a, %b, !dbg !10 -// CHECK:STDOUT: ret i1 %bool.neq, !dbg !11 +// CHECK:STDOUT: %Neq.call = icmp ne i1 %a, %b, !dbg !10 +// CHECK:STDOUT: ret i1 %Neq.call, !dbg !11 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i1 @_CIfEq.Main(i1 %a, i1 %b) !dbg !12 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %bool.eq = icmp eq i1 %a, %b, !dbg !13 -// CHECK:STDOUT: br i1 %bool.eq, label %if.then, label %if.else, !dbg !14 +// CHECK:STDOUT: %Eq.call = icmp eq i1 %a, %b, !dbg !13 +// CHECK:STDOUT: br i1 %Eq.call, label %if.then, label %if.else, !dbg !14 // CHECK:STDOUT: // CHECK:STDOUT: if.then: ; preds = %entry // CHECK:STDOUT: ret i1 true, !dbg !15 diff --git a/toolchain/lower/testdata/builtins/float.carbon b/toolchain/lower/testdata/builtins/float.carbon index 8875ba9a09d9..4df0ea200d65 100644 --- a/toolchain/lower/testdata/builtins/float.carbon +++ b/toolchain/lower/testdata/builtins/float.carbon @@ -48,68 +48,68 @@ fn TestGreaterEq(a: f64, b: f64) -> bool { return GreaterEq(a, b); } // CHECK:STDOUT: // CHECK:STDOUT: define double @_CTestNegate.Main(double %a) !dbg !4 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %float.negate = fneg double %a, !dbg !7 -// CHECK:STDOUT: ret double %float.negate, !dbg !8 +// CHECK:STDOUT: %Negate.call = fneg double %a, !dbg !7 +// CHECK:STDOUT: ret double %Negate.call, !dbg !8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define double @_CTestAdd.Main(double %a, double %b) !dbg !9 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %float.add = fadd double %a, %b, !dbg !10 -// CHECK:STDOUT: ret double %float.add, !dbg !11 +// CHECK:STDOUT: %Add.call = fadd double %a, %b, !dbg !10 +// CHECK:STDOUT: ret double %Add.call, !dbg !11 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define double @_CTestSub.Main(double %a, double %b) !dbg !12 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %float.sub = fsub double %a, %b, !dbg !13 -// CHECK:STDOUT: ret double %float.sub, !dbg !14 +// CHECK:STDOUT: %Sub.call = fsub double %a, %b, !dbg !13 +// CHECK:STDOUT: ret double %Sub.call, !dbg !14 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define double @_CTestMul.Main(double %a, double %b) !dbg !15 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %float.mul = fmul double %a, %b, !dbg !16 -// CHECK:STDOUT: ret double %float.mul, !dbg !17 +// CHECK:STDOUT: %Mul.call = fmul double %a, %b, !dbg !16 +// CHECK:STDOUT: ret double %Mul.call, !dbg !17 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define double @_CTestDiv.Main(double %a, double %b) !dbg !18 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %float.div = fdiv double %a, %b, !dbg !19 -// CHECK:STDOUT: ret double %float.div, !dbg !20 +// CHECK:STDOUT: %Div.call = fdiv double %a, %b, !dbg !19 +// CHECK:STDOUT: ret double %Div.call, !dbg !20 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i1 @_CTestEq.Main(double %a, double %b) !dbg !21 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %float.eq = fcmp oeq double %a, %b, !dbg !22 -// CHECK:STDOUT: ret i1 %float.eq, !dbg !23 +// CHECK:STDOUT: %Eq.call = fcmp oeq double %a, %b, !dbg !22 +// CHECK:STDOUT: ret i1 %Eq.call, !dbg !23 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i1 @_CTestNeq.Main(double %a, double %b) !dbg !24 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %float.neq = fcmp one double %a, %b, !dbg !25 -// CHECK:STDOUT: ret i1 %float.neq, !dbg !26 +// CHECK:STDOUT: %Neq.call = fcmp one double %a, %b, !dbg !25 +// CHECK:STDOUT: ret i1 %Neq.call, !dbg !26 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i1 @_CTestLess.Main(double %a, double %b) !dbg !27 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %float.less = fcmp olt double %a, %b, !dbg !28 -// CHECK:STDOUT: ret i1 %float.less, !dbg !29 +// CHECK:STDOUT: %Less.call = fcmp olt double %a, %b, !dbg !28 +// CHECK:STDOUT: ret i1 %Less.call, !dbg !29 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i1 @_CTestLessEq.Main(double %a, double %b) !dbg !30 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %float.less_eq = fcmp ole double %a, %b, !dbg !31 -// CHECK:STDOUT: ret i1 %float.less_eq, !dbg !32 +// CHECK:STDOUT: %LessEq.call = fcmp ole double %a, %b, !dbg !31 +// CHECK:STDOUT: ret i1 %LessEq.call, !dbg !32 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i1 @_CTestGreater.Main(double %a, double %b) !dbg !33 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %float.greater = fcmp ogt double %a, %b, !dbg !34 -// CHECK:STDOUT: ret i1 %float.greater, !dbg !35 +// CHECK:STDOUT: %Greater.call = fcmp ogt double %a, %b, !dbg !34 +// CHECK:STDOUT: ret i1 %Greater.call, !dbg !35 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i1 @_CTestGreaterEq.Main(double %a, double %b) !dbg !36 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %float.greater_eq = fcmp oge double %a, %b, !dbg !37 -// CHECK:STDOUT: ret i1 %float.greater_eq, !dbg !38 +// CHECK:STDOUT: %GreaterEq.call = fcmp oge double %a, %b, !dbg !37 +// CHECK:STDOUT: ret i1 %GreaterEq.call, !dbg !38 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !llvm.module.flags = !{!0, !1} diff --git a/toolchain/lower/testdata/builtins/int.carbon b/toolchain/lower/testdata/builtins/int.carbon index bf3f6a5047fd..e7503e2128a7 100644 --- a/toolchain/lower/testdata/builtins/int.carbon +++ b/toolchain/lower/testdata/builtins/int.carbon @@ -227,116 +227,116 @@ fn TestUint32ToUint64(a: u32) -> u64 { return Uint32ToUint64(a); } // CHECK:STDOUT: // CHECK:STDOUT: define i32 @_CTestNegate.Main(i32 %a) !dbg !4 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.snegate = sub i32 0, %a, !dbg !7 -// CHECK:STDOUT: ret i32 %int.snegate, !dbg !8 +// CHECK:STDOUT: %Negate.call = sub i32 0, %a, !dbg !7 +// CHECK:STDOUT: ret i32 %Negate.call, !dbg !8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i32 @_CTestAdd.Main(i32 %a, i32 %b) !dbg !9 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.sadd = add i32 %a, %b, !dbg !10 -// CHECK:STDOUT: ret i32 %int.sadd, !dbg !11 +// CHECK:STDOUT: %Add.call = add i32 %a, %b, !dbg !10 +// CHECK:STDOUT: ret i32 %Add.call, !dbg !11 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i32 @_CTestSub.Main(i32 %a, i32 %b) !dbg !12 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.ssub = sub i32 %a, %b, !dbg !13 -// CHECK:STDOUT: ret i32 %int.ssub, !dbg !14 +// CHECK:STDOUT: %Sub.call = sub i32 %a, %b, !dbg !13 +// CHECK:STDOUT: ret i32 %Sub.call, !dbg !14 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i32 @_CTestMul.Main(i32 %a, i32 %b) !dbg !15 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.smul = mul i32 %a, %b, !dbg !16 -// CHECK:STDOUT: ret i32 %int.smul, !dbg !17 +// CHECK:STDOUT: %Mul.call = mul i32 %a, %b, !dbg !16 +// CHECK:STDOUT: ret i32 %Mul.call, !dbg !17 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i32 @_CTestDiv.Main(i32 %a, i32 %b) !dbg !18 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.sdiv = sdiv i32 %a, %b, !dbg !19 -// CHECK:STDOUT: ret i32 %int.sdiv, !dbg !20 +// CHECK:STDOUT: %Div.call = sdiv i32 %a, %b, !dbg !19 +// CHECK:STDOUT: ret i32 %Div.call, !dbg !20 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i32 @_CTestMod.Main(i32 %a, i32 %b) !dbg !21 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.smod = srem i32 %a, %b, !dbg !22 -// CHECK:STDOUT: ret i32 %int.smod, !dbg !23 +// CHECK:STDOUT: %Mod.call = srem i32 %a, %b, !dbg !22 +// CHECK:STDOUT: ret i32 %Mod.call, !dbg !23 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i32 @_CTestComplement.Main(i32 %a) !dbg !24 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.complement = xor i32 -1, %a, !dbg !25 -// CHECK:STDOUT: ret i32 %int.complement, !dbg !26 +// CHECK:STDOUT: %Complement.call = xor i32 -1, %a, !dbg !25 +// CHECK:STDOUT: ret i32 %Complement.call, !dbg !26 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i32 @_CTestAnd.Main(i32 %a, i32 %b) !dbg !27 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.and = and i32 %a, %b, !dbg !28 -// CHECK:STDOUT: ret i32 %int.and, !dbg !29 +// CHECK:STDOUT: %And.call = and i32 %a, %b, !dbg !28 +// CHECK:STDOUT: ret i32 %And.call, !dbg !29 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i32 @_CTestOr.Main(i32 %a, i32 %b) !dbg !30 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.or = or i32 %a, %b, !dbg !31 -// CHECK:STDOUT: ret i32 %int.or, !dbg !32 +// CHECK:STDOUT: %Or.call = or i32 %a, %b, !dbg !31 +// CHECK:STDOUT: ret i32 %Or.call, !dbg !32 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i32 @_CTestXor.Main(i32 %a, i32 %b) !dbg !33 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.xor = xor i32 %a, %b, !dbg !34 -// CHECK:STDOUT: ret i32 %int.xor, !dbg !35 +// CHECK:STDOUT: %Xor.call = xor i32 %a, %b, !dbg !34 +// CHECK:STDOUT: ret i32 %Xor.call, !dbg !35 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i32 @_CTestLeftShift.Main(i32 %a, i32 %b) !dbg !36 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.left_shift = shl i32 %a, %b, !dbg !37 -// CHECK:STDOUT: ret i32 %int.left_shift, !dbg !38 +// CHECK:STDOUT: %LeftShift.call = shl i32 %a, %b, !dbg !37 +// CHECK:STDOUT: ret i32 %LeftShift.call, !dbg !38 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i32 @_CTestArithmeticRightShift.Main(i32 %a, i32 %b) !dbg !39 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.right_shift = ashr i32 %a, %b, !dbg !40 -// CHECK:STDOUT: ret i32 %int.right_shift, !dbg !41 +// CHECK:STDOUT: %ArithmeticRightShift.call = ashr i32 %a, %b, !dbg !40 +// CHECK:STDOUT: ret i32 %ArithmeticRightShift.call, !dbg !41 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i32 @_CTestLogicalRightShift.Main(i32 %a, i32 %b) !dbg !42 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.right_shift = lshr i32 %a, %b, !dbg !43 -// CHECK:STDOUT: ret i32 %int.right_shift, !dbg !44 +// CHECK:STDOUT: %LogicalRightShift.call = lshr i32 %a, %b, !dbg !43 +// CHECK:STDOUT: ret i32 %LogicalRightShift.call, !dbg !44 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i1 @_CTestEq.Main(i32 %a, i32 %b) !dbg !45 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.eq = icmp eq i32 %a, %b, !dbg !46 -// CHECK:STDOUT: ret i1 %int.eq, !dbg !47 +// CHECK:STDOUT: %Eq.call = icmp eq i32 %a, %b, !dbg !46 +// CHECK:STDOUT: ret i1 %Eq.call, !dbg !47 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i1 @_CTestNeq.Main(i32 %a, i32 %b) !dbg !48 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.neq = icmp ne i32 %a, %b, !dbg !49 -// CHECK:STDOUT: ret i1 %int.neq, !dbg !50 +// CHECK:STDOUT: %Neq.call = icmp ne i32 %a, %b, !dbg !49 +// CHECK:STDOUT: ret i1 %Neq.call, !dbg !50 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i1 @_CTestLess.Main(i32 %a, i32 %b) !dbg !51 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.less = icmp slt i32 %a, %b, !dbg !52 -// CHECK:STDOUT: ret i1 %int.less, !dbg !53 +// CHECK:STDOUT: %Less.call = icmp slt i32 %a, %b, !dbg !52 +// CHECK:STDOUT: ret i1 %Less.call, !dbg !53 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i1 @_CTestLessEq.Main(i32 %a, i32 %b) !dbg !54 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.less_eq = icmp sle i32 %a, %b, !dbg !55 -// CHECK:STDOUT: ret i1 %int.less_eq, !dbg !56 +// CHECK:STDOUT: %LessEq.call = icmp sle i32 %a, %b, !dbg !55 +// CHECK:STDOUT: ret i1 %LessEq.call, !dbg !56 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i1 @_CTestGreater.Main(i32 %a, i32 %b) !dbg !57 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.greater = icmp sgt i32 %a, %b, !dbg !58 -// CHECK:STDOUT: ret i1 %int.greater, !dbg !59 +// CHECK:STDOUT: %Greater.call = icmp sgt i32 %a, %b, !dbg !58 +// CHECK:STDOUT: ret i1 %Greater.call, !dbg !59 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i1 @_CTestGreaterEq.Main(i32 %a, i32 %b) !dbg !60 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.greater_eq = icmp sge i32 %a, %b, !dbg !61 -// CHECK:STDOUT: ret i1 %int.greater_eq, !dbg !62 +// CHECK:STDOUT: %GreaterEq.call = icmp sge i32 %a, %b, !dbg !61 +// CHECK:STDOUT: ret i1 %GreaterEq.call, !dbg !62 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !llvm.module.flags = !{!0, !1} @@ -410,129 +410,129 @@ fn TestUint32ToUint64(a: u32) -> u64 { return Uint32ToUint64(a); } // CHECK:STDOUT: // CHECK:STDOUT: define void @_CTestSAdd.Main(ptr %a, i32 %b) !dbg !4 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.sadd_assign = load i32, ptr %a, align 4, !dbg !7 -// CHECK:STDOUT: %int.sadd_assign1 = add i32 %int.sadd_assign, %b, !dbg !7 -// CHECK:STDOUT: store i32 %int.sadd_assign1, ptr %a, align 4, !dbg !7 +// CHECK:STDOUT: %SAdd.call = load i32, ptr %a, align 4, !dbg !7 +// CHECK:STDOUT: %SAdd.call1 = add i32 %SAdd.call, %b, !dbg !7 +// CHECK:STDOUT: store i32 %SAdd.call1, ptr %a, align 4, !dbg !7 // CHECK:STDOUT: ret void, !dbg !8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define void @_CTestSSub.Main(ptr %a, i32 %b) !dbg !9 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.ssub_assign = load i32, ptr %a, align 4, !dbg !10 -// CHECK:STDOUT: %int.ssub_assign1 = sub i32 %int.ssub_assign, %b, !dbg !10 -// CHECK:STDOUT: store i32 %int.ssub_assign1, ptr %a, align 4, !dbg !10 +// CHECK:STDOUT: %SSub.call = load i32, ptr %a, align 4, !dbg !10 +// CHECK:STDOUT: %SSub.call1 = sub i32 %SSub.call, %b, !dbg !10 +// CHECK:STDOUT: store i32 %SSub.call1, ptr %a, align 4, !dbg !10 // CHECK:STDOUT: ret void, !dbg !11 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define void @_CTestSMul.Main(ptr %a, i32 %b) !dbg !12 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.smul_assign = load i32, ptr %a, align 4, !dbg !13 -// CHECK:STDOUT: %int.smul_assign1 = mul i32 %int.smul_assign, %b, !dbg !13 -// CHECK:STDOUT: store i32 %int.smul_assign1, ptr %a, align 4, !dbg !13 +// CHECK:STDOUT: %SMul.call = load i32, ptr %a, align 4, !dbg !13 +// CHECK:STDOUT: %SMul.call1 = mul i32 %SMul.call, %b, !dbg !13 +// CHECK:STDOUT: store i32 %SMul.call1, ptr %a, align 4, !dbg !13 // CHECK:STDOUT: ret void, !dbg !14 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define void @_CTestSDiv.Main(ptr %a, i32 %b) !dbg !15 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.sdiv_assign = load i32, ptr %a, align 4, !dbg !16 -// CHECK:STDOUT: %int.sdiv_assign1 = sdiv i32 %int.sdiv_assign, %b, !dbg !16 -// CHECK:STDOUT: store i32 %int.sdiv_assign1, ptr %a, align 4, !dbg !16 +// CHECK:STDOUT: %SDiv.call = load i32, ptr %a, align 4, !dbg !16 +// CHECK:STDOUT: %SDiv.call1 = sdiv i32 %SDiv.call, %b, !dbg !16 +// CHECK:STDOUT: store i32 %SDiv.call1, ptr %a, align 4, !dbg !16 // CHECK:STDOUT: ret void, !dbg !17 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define void @_CTestSMod.Main(ptr %a, i32 %b) !dbg !18 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.smod_assign = load i32, ptr %a, align 4, !dbg !19 -// CHECK:STDOUT: %int.smod_assign1 = srem i32 %int.smod_assign, %b, !dbg !19 -// CHECK:STDOUT: store i32 %int.smod_assign1, ptr %a, align 4, !dbg !19 +// CHECK:STDOUT: %SMod.call = load i32, ptr %a, align 4, !dbg !19 +// CHECK:STDOUT: %SMod.call1 = srem i32 %SMod.call, %b, !dbg !19 +// CHECK:STDOUT: store i32 %SMod.call1, ptr %a, align 4, !dbg !19 // CHECK:STDOUT: ret void, !dbg !20 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define void @_CTestUAdd.Main(ptr %a, i32 %b) !dbg !21 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.uadd_assign = load i32, ptr %a, align 4, !dbg !22 -// CHECK:STDOUT: %int.uadd_assign1 = add i32 %int.uadd_assign, %b, !dbg !22 -// CHECK:STDOUT: store i32 %int.uadd_assign1, ptr %a, align 4, !dbg !22 +// CHECK:STDOUT: %UAdd.call = load i32, ptr %a, align 4, !dbg !22 +// CHECK:STDOUT: %UAdd.call1 = add i32 %UAdd.call, %b, !dbg !22 +// CHECK:STDOUT: store i32 %UAdd.call1, ptr %a, align 4, !dbg !22 // CHECK:STDOUT: ret void, !dbg !23 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define void @_CTestUSub.Main(ptr %a, i32 %b) !dbg !24 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.usub_assign = load i32, ptr %a, align 4, !dbg !25 -// CHECK:STDOUT: %int.usub_assign1 = sub i32 %int.usub_assign, %b, !dbg !25 -// CHECK:STDOUT: store i32 %int.usub_assign1, ptr %a, align 4, !dbg !25 +// CHECK:STDOUT: %USub.call = load i32, ptr %a, align 4, !dbg !25 +// CHECK:STDOUT: %USub.call1 = sub i32 %USub.call, %b, !dbg !25 +// CHECK:STDOUT: store i32 %USub.call1, ptr %a, align 4, !dbg !25 // CHECK:STDOUT: ret void, !dbg !26 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define void @_CTestUMul.Main(ptr %a, i32 %b) !dbg !27 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.umul_assign = load i32, ptr %a, align 4, !dbg !28 -// CHECK:STDOUT: %int.umul_assign1 = mul i32 %int.umul_assign, %b, !dbg !28 -// CHECK:STDOUT: store i32 %int.umul_assign1, ptr %a, align 4, !dbg !28 +// CHECK:STDOUT: %UMul.call = load i32, ptr %a, align 4, !dbg !28 +// CHECK:STDOUT: %UMul.call1 = mul i32 %UMul.call, %b, !dbg !28 +// CHECK:STDOUT: store i32 %UMul.call1, ptr %a, align 4, !dbg !28 // CHECK:STDOUT: ret void, !dbg !29 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define void @_CTestUDiv.Main(ptr %a, i32 %b) !dbg !30 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.udiv_assign = load i32, ptr %a, align 4, !dbg !31 -// CHECK:STDOUT: %int.udiv_assign1 = udiv i32 %int.udiv_assign, %b, !dbg !31 -// CHECK:STDOUT: store i32 %int.udiv_assign1, ptr %a, align 4, !dbg !31 +// CHECK:STDOUT: %UDiv.call = load i32, ptr %a, align 4, !dbg !31 +// CHECK:STDOUT: %UDiv.call1 = udiv i32 %UDiv.call, %b, !dbg !31 +// CHECK:STDOUT: store i32 %UDiv.call1, ptr %a, align 4, !dbg !31 // CHECK:STDOUT: ret void, !dbg !32 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define void @_CTestUMod.Main(ptr %a, i32 %b) !dbg !33 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.umod_assign = load i32, ptr %a, align 4, !dbg !34 -// CHECK:STDOUT: %int.umod_assign1 = urem i32 %int.umod_assign, %b, !dbg !34 -// CHECK:STDOUT: store i32 %int.umod_assign1, ptr %a, align 4, !dbg !34 +// CHECK:STDOUT: %UMod.call = load i32, ptr %a, align 4, !dbg !34 +// CHECK:STDOUT: %UMod.call1 = urem i32 %UMod.call, %b, !dbg !34 +// CHECK:STDOUT: store i32 %UMod.call1, ptr %a, align 4, !dbg !34 // CHECK:STDOUT: ret void, !dbg !35 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define void @_CTestAnd.Main(ptr %a, i32 %b) !dbg !36 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.and_assign = load i32, ptr %a, align 4, !dbg !37 -// CHECK:STDOUT: %int.and_assign1 = and i32 %int.and_assign, %b, !dbg !37 -// CHECK:STDOUT: store i32 %int.and_assign1, ptr %a, align 4, !dbg !37 +// CHECK:STDOUT: %And.call = load i32, ptr %a, align 4, !dbg !37 +// CHECK:STDOUT: %And.call1 = and i32 %And.call, %b, !dbg !37 +// CHECK:STDOUT: store i32 %And.call1, ptr %a, align 4, !dbg !37 // CHECK:STDOUT: ret void, !dbg !38 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define void @_CTestOr.Main(ptr %a, i32 %b) !dbg !39 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.or_assign = load i32, ptr %a, align 4, !dbg !40 -// CHECK:STDOUT: %int.or_assign1 = or i32 %int.or_assign, %b, !dbg !40 -// CHECK:STDOUT: store i32 %int.or_assign1, ptr %a, align 4, !dbg !40 +// CHECK:STDOUT: %Or.call = load i32, ptr %a, align 4, !dbg !40 +// CHECK:STDOUT: %Or.call1 = or i32 %Or.call, %b, !dbg !40 +// CHECK:STDOUT: store i32 %Or.call1, ptr %a, align 4, !dbg !40 // CHECK:STDOUT: ret void, !dbg !41 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define void @_CTestXor.Main(ptr %a, i32 %b) !dbg !42 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.xor_assign = load i32, ptr %a, align 4, !dbg !43 -// CHECK:STDOUT: %int.xor_assign1 = xor i32 %int.xor_assign, %b, !dbg !43 -// CHECK:STDOUT: store i32 %int.xor_assign1, ptr %a, align 4, !dbg !43 +// CHECK:STDOUT: %Xor.call = load i32, ptr %a, align 4, !dbg !43 +// CHECK:STDOUT: %Xor.call1 = xor i32 %Xor.call, %b, !dbg !43 +// CHECK:STDOUT: store i32 %Xor.call1, ptr %a, align 4, !dbg !43 // CHECK:STDOUT: ret void, !dbg !44 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define void @_CTestLeftShift.Main(ptr %a, i32 %b) !dbg !45 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.left_shift_assign = load i32, ptr %a, align 4, !dbg !46 -// CHECK:STDOUT: %int.left_shift_assign1 = shl i32 %int.left_shift_assign, %b, !dbg !46 -// CHECK:STDOUT: store i32 %int.left_shift_assign1, ptr %a, align 4, !dbg !46 +// CHECK:STDOUT: %LeftShift.call = load i32, ptr %a, align 4, !dbg !46 +// CHECK:STDOUT: %LeftShift.call1 = shl i32 %LeftShift.call, %b, !dbg !46 +// CHECK:STDOUT: store i32 %LeftShift.call1, ptr %a, align 4, !dbg !46 // CHECK:STDOUT: ret void, !dbg !47 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define void @_CTestArithmeticRightShift.Main(ptr %a, i32 %b) !dbg !48 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.right_shift_assign = load i32, ptr %a, align 4, !dbg !49 -// CHECK:STDOUT: %int.right_shift_assign1 = ashr i32 %int.right_shift_assign, %b, !dbg !49 -// CHECK:STDOUT: store i32 %int.right_shift_assign1, ptr %a, align 4, !dbg !49 +// CHECK:STDOUT: %ArithmeticRightShift.call = load i32, ptr %a, align 4, !dbg !49 +// CHECK:STDOUT: %ArithmeticRightShift.call1 = ashr i32 %ArithmeticRightShift.call, %b, !dbg !49 +// CHECK:STDOUT: store i32 %ArithmeticRightShift.call1, ptr %a, align 4, !dbg !49 // CHECK:STDOUT: ret void, !dbg !50 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define void @_CTestLogicalRightShift.Main(ptr %a, i32 %b) !dbg !51 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.right_shift_assign = load i32, ptr %a, align 4, !dbg !52 -// CHECK:STDOUT: %int.right_shift_assign1 = lshr i32 %int.right_shift_assign, %b, !dbg !52 -// CHECK:STDOUT: store i32 %int.right_shift_assign1, ptr %a, align 4, !dbg !52 +// CHECK:STDOUT: %LogicalRightShift.call = load i32, ptr %a, align 4, !dbg !52 +// CHECK:STDOUT: %LogicalRightShift.call1 = lshr i32 %LogicalRightShift.call, %b, !dbg !52 +// CHECK:STDOUT: store i32 %LogicalRightShift.call1, ptr %a, align 4, !dbg !52 // CHECK:STDOUT: ret void, !dbg !53 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -598,72 +598,72 @@ fn TestUint32ToUint64(a: u32) -> u64 { return Uint32ToUint64(a); } // CHECK:STDOUT: // CHECK:STDOUT: define i32 @_CTestLeftShiftSmaller.Main(i32 %a, i16 %b) !dbg !4 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.left_shift.rhs = zext i16 %b to i32, !dbg !7 -// CHECK:STDOUT: %int.left_shift = shl i32 %a, %int.left_shift.rhs, !dbg !7 -// CHECK:STDOUT: ret i32 %int.left_shift, !dbg !8 +// CHECK:STDOUT: %LeftShiftSmaller.call.rhs = zext i16 %b to i32, !dbg !7 +// CHECK:STDOUT: %LeftShiftSmaller.call = shl i32 %a, %LeftShiftSmaller.call.rhs, !dbg !7 +// CHECK:STDOUT: ret i32 %LeftShiftSmaller.call, !dbg !8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i32 @_CTestRightShiftSmaller.Main(i32 %a, i16 %b) !dbg !9 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.right_shift.rhs = zext i16 %b to i32, !dbg !10 -// CHECK:STDOUT: %int.right_shift = ashr i32 %a, %int.right_shift.rhs, !dbg !10 -// CHECK:STDOUT: ret i32 %int.right_shift, !dbg !11 +// CHECK:STDOUT: %RightShiftSmaller.call.rhs = zext i16 %b to i32, !dbg !10 +// CHECK:STDOUT: %RightShiftSmaller.call = ashr i32 %a, %RightShiftSmaller.call.rhs, !dbg !10 +// CHECK:STDOUT: ret i32 %RightShiftSmaller.call, !dbg !11 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i16 @_CTestLeftShiftLargerII.Main(i16 %a, i32 %b) !dbg !12 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.left_shift.rhs = trunc i32 %b to i16, !dbg !13 -// CHECK:STDOUT: %int.left_shift = shl i16 %a, %int.left_shift.rhs, !dbg !13 -// CHECK:STDOUT: ret i16 %int.left_shift, !dbg !14 +// CHECK:STDOUT: %LeftShiftLargerII.call.rhs = trunc i32 %b to i16, !dbg !13 +// CHECK:STDOUT: %LeftShiftLargerII.call = shl i16 %a, %LeftShiftLargerII.call.rhs, !dbg !13 +// CHECK:STDOUT: ret i16 %LeftShiftLargerII.call, !dbg !14 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i16 @_CTestRightShiftLargerII.Main(i16 %a, i32 %b) !dbg !15 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.right_shift.rhs = trunc i32 %b to i16, !dbg !16 -// CHECK:STDOUT: %int.right_shift = ashr i16 %a, %int.right_shift.rhs, !dbg !16 -// CHECK:STDOUT: ret i16 %int.right_shift, !dbg !17 +// CHECK:STDOUT: %RightShiftLargerII.call.rhs = trunc i32 %b to i16, !dbg !16 +// CHECK:STDOUT: %RightShiftLargerII.call = ashr i16 %a, %RightShiftLargerII.call.rhs, !dbg !16 +// CHECK:STDOUT: ret i16 %RightShiftLargerII.call, !dbg !17 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i16 @_CTestLeftShiftLargerIU.Main(i16 %a, i32 %b) !dbg !18 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.left_shift.rhs = trunc i32 %b to i16, !dbg !19 -// CHECK:STDOUT: %int.left_shift = shl i16 %a, %int.left_shift.rhs, !dbg !19 -// CHECK:STDOUT: ret i16 %int.left_shift, !dbg !20 +// CHECK:STDOUT: %LeftShiftLargerIU.call.rhs = trunc i32 %b to i16, !dbg !19 +// CHECK:STDOUT: %LeftShiftLargerIU.call = shl i16 %a, %LeftShiftLargerIU.call.rhs, !dbg !19 +// CHECK:STDOUT: ret i16 %LeftShiftLargerIU.call, !dbg !20 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i16 @_CTestRightShiftLargerIU.Main(i16 %a, i32 %b) !dbg !21 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.right_shift.rhs = trunc i32 %b to i16, !dbg !22 -// CHECK:STDOUT: %int.right_shift = ashr i16 %a, %int.right_shift.rhs, !dbg !22 -// CHECK:STDOUT: ret i16 %int.right_shift, !dbg !23 +// CHECK:STDOUT: %RightShiftLargerIU.call.rhs = trunc i32 %b to i16, !dbg !22 +// CHECK:STDOUT: %RightShiftLargerIU.call = ashr i16 %a, %RightShiftLargerIU.call.rhs, !dbg !22 +// CHECK:STDOUT: ret i16 %RightShiftLargerIU.call, !dbg !23 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i16 @_CTestLeftShiftLargerUI.Main(i16 %a, i32 %b) !dbg !24 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.left_shift.rhs = trunc i32 %b to i16, !dbg !25 -// CHECK:STDOUT: %int.left_shift = shl i16 %a, %int.left_shift.rhs, !dbg !25 -// CHECK:STDOUT: ret i16 %int.left_shift, !dbg !26 +// CHECK:STDOUT: %LeftShiftLargerUI.call.rhs = trunc i32 %b to i16, !dbg !25 +// CHECK:STDOUT: %LeftShiftLargerUI.call = shl i16 %a, %LeftShiftLargerUI.call.rhs, !dbg !25 +// CHECK:STDOUT: ret i16 %LeftShiftLargerUI.call, !dbg !26 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i16 @_CTestRightShiftLargerUI.Main(i16 %a, i32 %b) !dbg !27 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.right_shift.rhs = trunc i32 %b to i16, !dbg !28 -// CHECK:STDOUT: %int.right_shift = lshr i16 %a, %int.right_shift.rhs, !dbg !28 -// CHECK:STDOUT: ret i16 %int.right_shift, !dbg !29 +// CHECK:STDOUT: %RightShiftLargerUI.call.rhs = trunc i32 %b to i16, !dbg !28 +// CHECK:STDOUT: %RightShiftLargerUI.call = lshr i16 %a, %RightShiftLargerUI.call.rhs, !dbg !28 +// CHECK:STDOUT: ret i16 %RightShiftLargerUI.call, !dbg !29 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i16 @_CTestLeftShiftLargerUU.Main(i16 %a, i32 %b) !dbg !30 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.left_shift.rhs = trunc i32 %b to i16, !dbg !31 -// CHECK:STDOUT: %int.left_shift = shl i16 %a, %int.left_shift.rhs, !dbg !31 -// CHECK:STDOUT: ret i16 %int.left_shift, !dbg !32 +// CHECK:STDOUT: %LeftShiftLargerUU.call.rhs = trunc i32 %b to i16, !dbg !31 +// CHECK:STDOUT: %LeftShiftLargerUU.call = shl i16 %a, %LeftShiftLargerUU.call.rhs, !dbg !31 +// CHECK:STDOUT: ret i16 %LeftShiftLargerUU.call, !dbg !32 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i16 @_CTestRightShiftLargerUU.Main(i16 %a, i32 %b) !dbg !33 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.right_shift.rhs = trunc i32 %b to i16, !dbg !34 -// CHECK:STDOUT: %int.right_shift = lshr i16 %a, %int.right_shift.rhs, !dbg !34 -// CHECK:STDOUT: ret i16 %int.right_shift, !dbg !35 +// CHECK:STDOUT: %RightShiftLargerUU.call.rhs = trunc i32 %b to i16, !dbg !34 +// CHECK:STDOUT: %RightShiftLargerUU.call = lshr i16 %a, %RightShiftLargerUU.call.rhs, !dbg !34 +// CHECK:STDOUT: ret i16 %RightShiftLargerUU.call, !dbg !35 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !llvm.module.flags = !{!0, !1} @@ -710,76 +710,76 @@ fn TestUint32ToUint64(a: u32) -> u64 { return Uint32ToUint64(a); } // CHECK:STDOUT: // CHECK:STDOUT: define i1 @_CTestEq_u16_u32.Main(i16 %a, i32 %b) !dbg !4 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.eq.lhs = zext i16 %a to i32, !dbg !7 -// CHECK:STDOUT: %int.eq = icmp eq i32 %int.eq.lhs, %b, !dbg !7 -// CHECK:STDOUT: ret i1 %int.eq, !dbg !8 +// CHECK:STDOUT: %Eq_u16_u32.call.lhs = zext i16 %a to i32, !dbg !7 +// CHECK:STDOUT: %Eq_u16_u32.call = icmp eq i32 %Eq_u16_u32.call.lhs, %b, !dbg !7 +// CHECK:STDOUT: ret i1 %Eq_u16_u32.call, !dbg !8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i1 @_CTestEq_i16_u32.Main(i16 %a, i32 %b) !dbg !9 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.eq.lhs = sext i16 %a to i33, !dbg !10 -// CHECK:STDOUT: %int.eq.rhs = zext i32 %b to i33, !dbg !10 -// CHECK:STDOUT: %int.eq = icmp eq i33 %int.eq.lhs, %int.eq.rhs, !dbg !10 -// CHECK:STDOUT: ret i1 %int.eq, !dbg !11 +// CHECK:STDOUT: %Eq_i16_u32.call.lhs = sext i16 %a to i33, !dbg !10 +// CHECK:STDOUT: %Eq_i16_u32.call.rhs = zext i32 %b to i33, !dbg !10 +// CHECK:STDOUT: %Eq_i16_u32.call = icmp eq i33 %Eq_i16_u32.call.lhs, %Eq_i16_u32.call.rhs, !dbg !10 +// CHECK:STDOUT: ret i1 %Eq_i16_u32.call, !dbg !11 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i1 @_CTestEq_u16_i32.Main(i16 %a, i32 %b) !dbg !12 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.eq.lhs = zext i16 %a to i32, !dbg !13 -// CHECK:STDOUT: %int.eq = icmp eq i32 %int.eq.lhs, %b, !dbg !13 -// CHECK:STDOUT: ret i1 %int.eq, !dbg !14 +// CHECK:STDOUT: %Eq_u16_i32.call.lhs = zext i16 %a to i32, !dbg !13 +// CHECK:STDOUT: %Eq_u16_i32.call = icmp eq i32 %Eq_u16_i32.call.lhs, %b, !dbg !13 +// CHECK:STDOUT: ret i1 %Eq_u16_i32.call, !dbg !14 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i1 @_CTestEq_i16_i32.Main(i16 %a, i32 %b) !dbg !15 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.eq.lhs = sext i16 %a to i32, !dbg !16 -// CHECK:STDOUT: %int.eq = icmp eq i32 %int.eq.lhs, %b, !dbg !16 -// CHECK:STDOUT: ret i1 %int.eq, !dbg !17 +// CHECK:STDOUT: %Eq_i16_i32.call.lhs = sext i16 %a to i32, !dbg !16 +// CHECK:STDOUT: %Eq_i16_i32.call = icmp eq i32 %Eq_i16_i32.call.lhs, %b, !dbg !16 +// CHECK:STDOUT: ret i1 %Eq_i16_i32.call, !dbg !17 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i1 @_CTestEq_i32_u32.Main(i32 %a, i32 %b) !dbg !18 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.eq.lhs = sext i32 %a to i33, !dbg !19 -// CHECK:STDOUT: %int.eq.rhs = zext i32 %b to i33, !dbg !19 -// CHECK:STDOUT: %int.eq = icmp eq i33 %int.eq.lhs, %int.eq.rhs, !dbg !19 -// CHECK:STDOUT: ret i1 %int.eq, !dbg !20 +// CHECK:STDOUT: %Eq_i32_u32.call.lhs = sext i32 %a to i33, !dbg !19 +// CHECK:STDOUT: %Eq_i32_u32.call.rhs = zext i32 %b to i33, !dbg !19 +// CHECK:STDOUT: %Eq_i32_u32.call = icmp eq i33 %Eq_i32_u32.call.lhs, %Eq_i32_u32.call.rhs, !dbg !19 +// CHECK:STDOUT: ret i1 %Eq_i32_u32.call, !dbg !20 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i1 @_CTestLess_u16_u32.Main(i16 %a, i32 %b) !dbg !21 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.less.lhs = zext i16 %a to i32, !dbg !22 -// CHECK:STDOUT: %int.less = icmp ult i32 %int.less.lhs, %b, !dbg !22 -// CHECK:STDOUT: ret i1 %int.less, !dbg !23 +// CHECK:STDOUT: %Less_u16_u32.call.lhs = zext i16 %a to i32, !dbg !22 +// CHECK:STDOUT: %Less_u16_u32.call = icmp ult i32 %Less_u16_u32.call.lhs, %b, !dbg !22 +// CHECK:STDOUT: ret i1 %Less_u16_u32.call, !dbg !23 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i1 @_CTestLess_i16_u32.Main(i16 %a, i32 %b) !dbg !24 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.less.lhs = sext i16 %a to i33, !dbg !25 -// CHECK:STDOUT: %int.less.rhs = zext i32 %b to i33, !dbg !25 -// CHECK:STDOUT: %int.less = icmp slt i33 %int.less.lhs, %int.less.rhs, !dbg !25 -// CHECK:STDOUT: ret i1 %int.less, !dbg !26 +// CHECK:STDOUT: %Less_i16_u32.call.lhs = sext i16 %a to i33, !dbg !25 +// CHECK:STDOUT: %Less_i16_u32.call.rhs = zext i32 %b to i33, !dbg !25 +// CHECK:STDOUT: %Less_i16_u32.call = icmp slt i33 %Less_i16_u32.call.lhs, %Less_i16_u32.call.rhs, !dbg !25 +// CHECK:STDOUT: ret i1 %Less_i16_u32.call, !dbg !26 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i1 @_CTestLess_u16_i32.Main(i16 %a, i32 %b) !dbg !27 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.less.lhs = zext i16 %a to i32, !dbg !28 -// CHECK:STDOUT: %int.less = icmp slt i32 %int.less.lhs, %b, !dbg !28 -// CHECK:STDOUT: ret i1 %int.less, !dbg !29 +// CHECK:STDOUT: %Less_u16_i32.call.lhs = zext i16 %a to i32, !dbg !28 +// CHECK:STDOUT: %Less_u16_i32.call = icmp slt i32 %Less_u16_i32.call.lhs, %b, !dbg !28 +// CHECK:STDOUT: ret i1 %Less_u16_i32.call, !dbg !29 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i1 @_CTestLess_i16_i32.Main(i16 %a, i32 %b) !dbg !30 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.less.lhs = sext i16 %a to i32, !dbg !31 -// CHECK:STDOUT: %int.less = icmp slt i32 %int.less.lhs, %b, !dbg !31 -// CHECK:STDOUT: ret i1 %int.less, !dbg !32 +// CHECK:STDOUT: %Less_i16_i32.call.lhs = sext i16 %a to i32, !dbg !31 +// CHECK:STDOUT: %Less_i16_i32.call = icmp slt i32 %Less_i16_i32.call.lhs, %b, !dbg !31 +// CHECK:STDOUT: ret i1 %Less_i16_i32.call, !dbg !32 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i1 @_CTestLess_i32_u32.Main(i32 %a, i32 %b) !dbg !33 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.less.lhs = sext i32 %a to i33, !dbg !34 -// CHECK:STDOUT: %int.less.rhs = zext i32 %b to i33, !dbg !34 -// CHECK:STDOUT: %int.less = icmp slt i33 %int.less.lhs, %int.less.rhs, !dbg !34 -// CHECK:STDOUT: ret i1 %int.less, !dbg !35 +// CHECK:STDOUT: %Less_i32_u32.call.lhs = sext i32 %a to i33, !dbg !34 +// CHECK:STDOUT: %Less_i32_u32.call.rhs = zext i32 %b to i33, !dbg !34 +// CHECK:STDOUT: %Less_i32_u32.call = icmp slt i33 %Less_i32_u32.call.lhs, %Less_i32_u32.call.rhs, !dbg !34 +// CHECK:STDOUT: ret i1 %Less_i32_u32.call, !dbg !35 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !llvm.module.flags = !{!0, !1} @@ -846,50 +846,50 @@ fn TestUint32ToUint64(a: u32) -> u64 { return Uint32ToUint64(a); } // CHECK:STDOUT: // CHECK:STDOUT: define i16 @_CTestInt32ToInt16.Main(i32 %a) !dbg !14 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.convert = trunc i32 %a to i16, !dbg !15 -// CHECK:STDOUT: ret i16 %int.convert, !dbg !16 +// CHECK:STDOUT: %Int32ToInt16.call = trunc i32 %a to i16, !dbg !15 +// CHECK:STDOUT: ret i16 %Int32ToInt16.call, !dbg !16 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i16 @_CTestInt32ToUint16.Main(i32 %a) !dbg !17 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.convert = trunc i32 %a to i16, !dbg !18 -// CHECK:STDOUT: ret i16 %int.convert, !dbg !19 +// CHECK:STDOUT: %Int32ToUint16.call = trunc i32 %a to i16, !dbg !18 +// CHECK:STDOUT: ret i16 %Int32ToUint16.call, !dbg !19 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i16 @_CTestUint32ToInt16.Main(i32 %a) !dbg !20 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.convert = trunc i32 %a to i16, !dbg !21 -// CHECK:STDOUT: ret i16 %int.convert, !dbg !22 +// CHECK:STDOUT: %Uint32ToInt16.call = trunc i32 %a to i16, !dbg !21 +// CHECK:STDOUT: ret i16 %Uint32ToInt16.call, !dbg !22 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i16 @_CTestUint32ToUint16.Main(i32 %a) !dbg !23 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.convert = trunc i32 %a to i16, !dbg !24 -// CHECK:STDOUT: ret i16 %int.convert, !dbg !25 +// CHECK:STDOUT: %Uint32ToUint16.call = trunc i32 %a to i16, !dbg !24 +// CHECK:STDOUT: ret i16 %Uint32ToUint16.call, !dbg !25 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i64 @_CTestInt32ToInt64.Main(i32 %a) !dbg !26 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.convert = sext i32 %a to i64, !dbg !27 -// CHECK:STDOUT: ret i64 %int.convert, !dbg !28 +// CHECK:STDOUT: %Int32ToInt64.call = sext i32 %a to i64, !dbg !27 +// CHECK:STDOUT: ret i64 %Int32ToInt64.call, !dbg !28 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i64 @_CTestInt32ToUint64.Main(i32 %a) !dbg !29 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.convert = sext i32 %a to i64, !dbg !30 -// CHECK:STDOUT: ret i64 %int.convert, !dbg !31 +// CHECK:STDOUT: %Int32ToUint64.call = sext i32 %a to i64, !dbg !30 +// CHECK:STDOUT: ret i64 %Int32ToUint64.call, !dbg !31 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i64 @_CTestUint32ToInt64.Main(i32 %a) !dbg !32 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.convert = zext i32 %a to i64, !dbg !33 -// CHECK:STDOUT: ret i64 %int.convert, !dbg !34 +// CHECK:STDOUT: %Uint32ToInt64.call = zext i32 %a to i64, !dbg !33 +// CHECK:STDOUT: ret i64 %Uint32ToInt64.call, !dbg !34 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i64 @_CTestUint32ToUint64.Main(i32 %a) !dbg !35 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.convert = zext i32 %a to i64, !dbg !36 -// CHECK:STDOUT: ret i64 %int.convert, !dbg !37 +// CHECK:STDOUT: %Uint32ToUint64.call = zext i32 %a to i64, !dbg !36 +// CHECK:STDOUT: ret i64 %Uint32ToUint64.call, !dbg !37 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !llvm.module.flags = !{!0, !1} diff --git a/toolchain/lower/testdata/builtins/method_vs_nonmethod.carbon b/toolchain/lower/testdata/builtins/method_vs_nonmethod.carbon index e1fd9a571263..98a3faa27502 100644 --- a/toolchain/lower/testdata/builtins/method_vs_nonmethod.carbon +++ b/toolchain/lower/testdata/builtins/method_vs_nonmethod.carbon @@ -21,14 +21,14 @@ fn TestAddMethod(a: i32, b: i32) -> i32 { return a.(AddMethod)(b); } // CHECK:STDOUT: // CHECK:STDOUT: define i32 @_CTestAddNonmethod.Main(i32 %a, i32 %b) !dbg !4 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.sadd = add i32 %a, %b, !dbg !7 -// CHECK:STDOUT: ret i32 %int.sadd, !dbg !8 +// CHECK:STDOUT: %AddNonmethod.call = add i32 %a, %b, !dbg !7 +// CHECK:STDOUT: ret i32 %AddNonmethod.call, !dbg !8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i32 @_CTestAddMethod.Main(i32 %a, i32 %b) !dbg !9 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.sadd = add i32 %a, %b, !dbg !10 -// CHECK:STDOUT: ret i32 %int.sadd, !dbg !11 +// CHECK:STDOUT: %AddMethod.call = add i32 %a, %b, !dbg !10 +// CHECK:STDOUT: ret i32 %AddMethod.call, !dbg !11 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !llvm.module.flags = !{!0, !1} diff --git a/toolchain/lower/testdata/builtins/overloaded_operator.carbon b/toolchain/lower/testdata/builtins/overloaded_operator.carbon index 8d67c8eb1106..67906f720989 100644 --- a/toolchain/lower/testdata/builtins/overloaded_operator.carbon +++ b/toolchain/lower/testdata/builtins/overloaded_operator.carbon @@ -19,9 +19,9 @@ fn AddThreeIntegers(a: i32, b: i32, c: i32) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: define i32 @_CAddThreeIntegers.Main(i32 %a, i32 %b, i32 %c) !dbg !4 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.sadd.loc14_12 = add i32 %a, %b, !dbg !7 -// CHECK:STDOUT: %int.sadd.loc14_16 = add i32 %int.sadd.loc14_12, %c, !dbg !7 -// CHECK:STDOUT: ret i32 %int.sadd.loc14_16, !dbg !8 +// CHECK:STDOUT: %Int.as.AddWith.impl.Op.call.loc14_12 = add i32 %a, %b, !dbg !7 +// CHECK:STDOUT: %Int.as.AddWith.impl.Op.call.loc14_16 = add i32 %Int.as.AddWith.impl.Op.call.loc14_12, %c, !dbg !7 +// CHECK:STDOUT: ret i32 %Int.as.AddWith.impl.Op.call.loc14_16, !dbg !8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !llvm.module.flags = !{!0, !1} diff --git a/toolchain/lower/testdata/builtins/print_read.carbon b/toolchain/lower/testdata/builtins/print_read.carbon index e4695f297633..f0b632e2c8e9 100644 --- a/toolchain/lower/testdata/builtins/print_read.carbon +++ b/toolchain/lower/testdata/builtins/print_read.carbon @@ -34,21 +34,21 @@ fn Main() { // CHECK:STDOUT: // CHECK:STDOUT: define void @_CMain.Main() !dbg !4 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %print.int = call i32 (ptr, ...) @printf(ptr @printf.int.format, i32 1), !dbg !7 +// CHECK:STDOUT: %Print.call = call i32 (ptr, ...) @printf(ptr @printf.int.format, i32 1), !dbg !7 // CHECK:STDOUT: br label %while.cond, !dbg !8 // CHECK:STDOUT: // CHECK:STDOUT: while.cond: ; preds = %if.else, %entry -// CHECK:STDOUT: %read.char = call i32 @getchar(), !dbg !9 -// CHECK:STDOUT: %int.neq.loc22 = icmp ne i32 %read.char, -1, !dbg !9 -// CHECK:STDOUT: br i1 %int.neq.loc22, label %while.body, label %while.done, !dbg !8 +// CHECK:STDOUT: %ReadChar.call = call i32 @getchar(), !dbg !9 +// CHECK:STDOUT: %Int.as.EqWith.impl.NotEqual.call.loc22 = icmp ne i32 %ReadChar.call, -1, !dbg !9 +// CHECK:STDOUT: br i1 %Int.as.EqWith.impl.NotEqual.call.loc22, label %while.body, label %while.done, !dbg !8 // CHECK:STDOUT: // CHECK:STDOUT: while.body: ; preds = %while.cond -// CHECK:STDOUT: %print.char.loc24 = call i32 @putchar(i32 72), !dbg !10 -// CHECK:STDOUT: %int.neq.loc24 = icmp ne i32 %print.char.loc24, -1, !dbg !10 -// CHECK:STDOUT: br i1 %int.neq.loc24, label %if.then, label %if.else, !dbg !11 +// CHECK:STDOUT: %PrintChar.call.loc24 = call i32 @putchar(i32 72), !dbg !10 +// CHECK:STDOUT: %Int.as.EqWith.impl.NotEqual.call.loc24 = icmp ne i32 %PrintChar.call.loc24, -1, !dbg !10 +// CHECK:STDOUT: br i1 %Int.as.EqWith.impl.NotEqual.call.loc24, label %if.then, label %if.else, !dbg !11 // CHECK:STDOUT: // CHECK:STDOUT: if.then: ; preds = %while.body -// CHECK:STDOUT: %print.char.loc25 = call i32 @putchar(i32 105), !dbg !12 +// CHECK:STDOUT: %PrintChar.call.loc25 = call i32 @putchar(i32 105), !dbg !12 // CHECK:STDOUT: br label %if.else, !dbg !13 // CHECK:STDOUT: // CHECK:STDOUT: if.else: ; preds = %if.then, %while.body diff --git a/toolchain/lower/testdata/builtins/uint.carbon b/toolchain/lower/testdata/builtins/uint.carbon index 2fe478644865..8f6b020d333c 100644 --- a/toolchain/lower/testdata/builtins/uint.carbon +++ b/toolchain/lower/testdata/builtins/uint.carbon @@ -69,110 +69,110 @@ fn TestGreaterEq(a: u64, b: u64) -> bool { return GreaterEq(a, b); } // CHECK:STDOUT: // CHECK:STDOUT: define i64 @_CTestNegate.Main(i64 %a) !dbg !4 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.unegate = sub i64 0, %a, !dbg !7 -// CHECK:STDOUT: ret i64 %int.unegate, !dbg !8 +// CHECK:STDOUT: %Negate.call = sub i64 0, %a, !dbg !7 +// CHECK:STDOUT: ret i64 %Negate.call, !dbg !8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i64 @_CTestAdd.Main(i64 %a, i64 %b) !dbg !9 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.uadd = add i64 %a, %b, !dbg !10 -// CHECK:STDOUT: ret i64 %int.uadd, !dbg !11 +// CHECK:STDOUT: %Add.call = add i64 %a, %b, !dbg !10 +// CHECK:STDOUT: ret i64 %Add.call, !dbg !11 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i64 @_CTestSub.Main(i64 %a, i64 %b) !dbg !12 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.usub = sub i64 %a, %b, !dbg !13 -// CHECK:STDOUT: ret i64 %int.usub, !dbg !14 +// CHECK:STDOUT: %Sub.call = sub i64 %a, %b, !dbg !13 +// CHECK:STDOUT: ret i64 %Sub.call, !dbg !14 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i64 @_CTestMul.Main(i64 %a, i64 %b) !dbg !15 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.umul = mul i64 %a, %b, !dbg !16 -// CHECK:STDOUT: ret i64 %int.umul, !dbg !17 +// CHECK:STDOUT: %Mul.call = mul i64 %a, %b, !dbg !16 +// CHECK:STDOUT: ret i64 %Mul.call, !dbg !17 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i64 @_CTestDiv.Main(i64 %a, i64 %b) !dbg !18 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.udiv = udiv i64 %a, %b, !dbg !19 -// CHECK:STDOUT: ret i64 %int.udiv, !dbg !20 +// CHECK:STDOUT: %Div.call = udiv i64 %a, %b, !dbg !19 +// CHECK:STDOUT: ret i64 %Div.call, !dbg !20 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i64 @_CTestMod.Main(i64 %a, i64 %b) !dbg !21 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.umod = urem i64 %a, %b, !dbg !22 -// CHECK:STDOUT: ret i64 %int.umod, !dbg !23 +// CHECK:STDOUT: %Mod.call = urem i64 %a, %b, !dbg !22 +// CHECK:STDOUT: ret i64 %Mod.call, !dbg !23 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i64 @_CTestComplement.Main(i64 %a) !dbg !24 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.complement = xor i64 -1, %a, !dbg !25 -// CHECK:STDOUT: ret i64 %int.complement, !dbg !26 +// CHECK:STDOUT: %Complement.call = xor i64 -1, %a, !dbg !25 +// CHECK:STDOUT: ret i64 %Complement.call, !dbg !26 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i64 @_CTestAnd.Main(i64 %a, i64 %b) !dbg !27 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.and = and i64 %a, %b, !dbg !28 -// CHECK:STDOUT: ret i64 %int.and, !dbg !29 +// CHECK:STDOUT: %And.call = and i64 %a, %b, !dbg !28 +// CHECK:STDOUT: ret i64 %And.call, !dbg !29 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i64 @_CTestOr.Main(i64 %a, i64 %b) !dbg !30 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.or = or i64 %a, %b, !dbg !31 -// CHECK:STDOUT: ret i64 %int.or, !dbg !32 +// CHECK:STDOUT: %Or.call = or i64 %a, %b, !dbg !31 +// CHECK:STDOUT: ret i64 %Or.call, !dbg !32 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i64 @_CTestXor.Main(i64 %a, i64 %b) !dbg !33 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.xor = xor i64 %a, %b, !dbg !34 -// CHECK:STDOUT: ret i64 %int.xor, !dbg !35 +// CHECK:STDOUT: %Xor.call = xor i64 %a, %b, !dbg !34 +// CHECK:STDOUT: ret i64 %Xor.call, !dbg !35 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i64 @_CTestLeftShift.Main(i64 %a, i64 %b) !dbg !36 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.left_shift = shl i64 %a, %b, !dbg !37 -// CHECK:STDOUT: ret i64 %int.left_shift, !dbg !38 +// CHECK:STDOUT: %LeftShift.call = shl i64 %a, %b, !dbg !37 +// CHECK:STDOUT: ret i64 %LeftShift.call, !dbg !38 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i64 @_CTestRightShift.Main(i64 %a, i64 %b) !dbg !39 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.right_shift = lshr i64 %a, %b, !dbg !40 -// CHECK:STDOUT: ret i64 %int.right_shift, !dbg !41 +// CHECK:STDOUT: %RightShift.call = lshr i64 %a, %b, !dbg !40 +// CHECK:STDOUT: ret i64 %RightShift.call, !dbg !41 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i1 @_CTestEq.Main(i64 %a, i64 %b) !dbg !42 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.eq = icmp eq i64 %a, %b, !dbg !43 -// CHECK:STDOUT: ret i1 %int.eq, !dbg !44 +// CHECK:STDOUT: %Eq.call = icmp eq i64 %a, %b, !dbg !43 +// CHECK:STDOUT: ret i1 %Eq.call, !dbg !44 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i1 @_CTestNeq.Main(i64 %a, i64 %b) !dbg !45 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.neq = icmp ne i64 %a, %b, !dbg !46 -// CHECK:STDOUT: ret i1 %int.neq, !dbg !47 +// CHECK:STDOUT: %Neq.call = icmp ne i64 %a, %b, !dbg !46 +// CHECK:STDOUT: ret i1 %Neq.call, !dbg !47 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i1 @_CTestLess.Main(i64 %a, i64 %b) !dbg !48 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.less = icmp ult i64 %a, %b, !dbg !49 -// CHECK:STDOUT: ret i1 %int.less, !dbg !50 +// CHECK:STDOUT: %Less.call = icmp ult i64 %a, %b, !dbg !49 +// CHECK:STDOUT: ret i1 %Less.call, !dbg !50 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i1 @_CTestLessEq.Main(i64 %a, i64 %b) !dbg !51 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.less_eq = icmp ule i64 %a, %b, !dbg !52 -// CHECK:STDOUT: ret i1 %int.less_eq, !dbg !53 +// CHECK:STDOUT: %LessEq.call = icmp ule i64 %a, %b, !dbg !52 +// CHECK:STDOUT: ret i1 %LessEq.call, !dbg !53 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i1 @_CTestGreater.Main(i64 %a, i64 %b) !dbg !54 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.greater = icmp ugt i64 %a, %b, !dbg !55 -// CHECK:STDOUT: ret i1 %int.greater, !dbg !56 +// CHECK:STDOUT: %Greater.call = icmp ugt i64 %a, %b, !dbg !55 +// CHECK:STDOUT: ret i1 %Greater.call, !dbg !56 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i1 @_CTestGreaterEq.Main(i64 %a, i64 %b) !dbg !57 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.greater_eq = icmp uge i64 %a, %b, !dbg !58 -// CHECK:STDOUT: ret i1 %int.greater_eq, !dbg !59 +// CHECK:STDOUT: %GreaterEq.call = icmp uge i64 %a, %b, !dbg !58 +// CHECK:STDOUT: ret i1 %GreaterEq.call, !dbg !59 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !llvm.module.flags = !{!0, !1} diff --git a/toolchain/lower/testdata/class/adapt.carbon b/toolchain/lower/testdata/class/adapt.carbon index 0eb237a41772..b85c485b5492 100644 --- a/toolchain/lower/testdata/class/adapt.carbon +++ b/toolchain/lower/testdata/class/adapt.carbon @@ -84,8 +84,8 @@ fn DoStuff(a: Int) -> Int { // CHECK:STDOUT: %pa.var = alloca { i32, i32 }, align 8, !dbg !16 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %pa.var), !dbg !16 // CHECK:STDOUT: call void @_CMake.PairAdapter.Main(ptr %pa.var), !dbg !17 -// CHECK:STDOUT: %GetB.call = call i32 @_CGetB.PairAdapter.Main(ptr %pa.var), !dbg !18 -// CHECK:STDOUT: ret i32 %GetB.call, !dbg !19 +// CHECK:STDOUT: %PairAdapter.GetB.call = call i32 @_CGetB.PairAdapter.Main(ptr %pa.var), !dbg !18 +// CHECK:STDOUT: ret i32 %PairAdapter.GetB.call, !dbg !19 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) diff --git a/toolchain/lower/testdata/class/convert.carbon b/toolchain/lower/testdata/class/convert.carbon index 69070a2d3191..5cfe187f7254 100644 --- a/toolchain/lower/testdata/class/convert.carbon +++ b/toolchain/lower/testdata/class/convert.carbon @@ -48,8 +48,8 @@ fn DoIt() { // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 4, ptr %w.var), !dbg !12 // CHECK:STDOUT: %.loc24_31.3.n = getelementptr inbounds nuw { i32 }, ptr %w.var, i32 0, i32 0, !dbg !13 // CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %w.var, ptr align 4 @IntWrapper.val.loc24_3, i64 4, i1 false), !dbg !12 -// CHECK:STDOUT: %Convert.call = call i32 @"_CConvert.IntWrapper.Main:ImplicitAs.Core"(ptr %w.var), !dbg !14 -// CHECK:STDOUT: call void @_CConsume.Main(i32 %Convert.call), !dbg !15 +// CHECK:STDOUT: %IntWrapper.as.ImplicitAs.impl.Convert.call = call i32 @"_CConvert.IntWrapper.Main:ImplicitAs.Core"(ptr %w.var), !dbg !14 +// CHECK:STDOUT: call void @_CConsume.Main(i32 %IntWrapper.as.ImplicitAs.impl.Convert.call), !dbg !15 // CHECK:STDOUT: ret void, !dbg !16 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/class/generic.carbon b/toolchain/lower/testdata/class/generic.carbon index e3d844892f39..fc2e392a2b1e 100644 --- a/toolchain/lower/testdata/class/generic.carbon +++ b/toolchain/lower/testdata/class/generic.carbon @@ -250,8 +250,8 @@ fn AccessTuple() -> (i32, i32, i32) { // CHECK:STDOUT: %.loc19_37.2.v = getelementptr inbounds nuw { i1, i32 }, ptr %c.var, i32 0, i32 0, !dbg !8 // CHECK:STDOUT: %.loc19_37.5.w = getelementptr inbounds nuw { i1, i32 }, ptr %c.var, i32 0, i32 1, !dbg !8 // CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %c.var, ptr align 4 @C.val.98f.loc19_3, i64 8, i1 false), !dbg !7 -// CHECK:STDOUT: %GetBool.call = call i1 @_CGetBool.C.Main.b88d1103f417c6d4(ptr %c.var), !dbg !9 -// CHECK:STDOUT: ret i1 %GetBool.call, !dbg !10 +// CHECK:STDOUT: %C.GetBool.call = call i1 @_CGetBool.C.Main.b88d1103f417c6d4(ptr %c.var), !dbg !9 +// CHECK:STDOUT: ret i1 %C.GetBool.call, !dbg !10 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i32 @_CAccessInt.Main() !dbg !11 { @@ -261,8 +261,8 @@ fn AccessTuple() -> (i32, i32, i32) { // CHECK:STDOUT: %.loc24_37.2.v = getelementptr inbounds nuw { i1, i32 }, ptr %c.var, i32 0, i32 0, !dbg !13 // CHECK:STDOUT: %.loc24_37.5.w = getelementptr inbounds nuw { i1, i32 }, ptr %c.var, i32 0, i32 1, !dbg !13 // CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %c.var, ptr align 4 @C.val.98f.loc19_3, i64 8, i1 false), !dbg !12 -// CHECK:STDOUT: %GetT.call = call i32 @_CGetT.C.Main.b88d1103f417c6d4(ptr %c.var), !dbg !14 -// CHECK:STDOUT: ret i32 %GetT.call, !dbg !15 +// CHECK:STDOUT: %C.GetT.call = call i32 @_CGetT.C.Main.b88d1103f417c6d4(ptr %c.var), !dbg !14 +// CHECK:STDOUT: ret i32 %C.GetT.call, !dbg !15 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define void @_CAccessEmpty.Main() !dbg !16 { diff --git a/toolchain/lower/testdata/class/method.carbon b/toolchain/lower/testdata/class/method.carbon index ce061fd1aab9..6cffd8d341cf 100644 --- a/toolchain/lower/testdata/class/method.carbon +++ b/toolchain/lower/testdata/class/method.carbon @@ -31,8 +31,8 @@ fn F(p: C*) { // CHECK:STDOUT: // CHECK:STDOUT: define void @_CF.Main(ptr %p) !dbg !4 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %Get.call = call i32 @_CGet.C.Main(ptr %p), !dbg !7 -// CHECK:STDOUT: call void @_CSet.C.Main(ptr %p, i32 %Get.call), !dbg !8 +// CHECK:STDOUT: %C.Get.call = call i32 @_CGet.C.Main(ptr %p), !dbg !7 +// CHECK:STDOUT: call void @_CSet.C.Main(ptr %p, i32 %C.Get.call), !dbg !8 // CHECK:STDOUT: ret void, !dbg !9 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/class/virtual.carbon b/toolchain/lower/testdata/class/virtual.carbon index 3d4c18005756..08b8eb0803f4 100644 --- a/toolchain/lower/testdata/class/virtual.carbon +++ b/toolchain/lower/testdata/class/virtual.carbon @@ -219,9 +219,9 @@ fn Make() { // CHECK:STDOUT: // CHECK:STDOUT: define void @_CUse.Create(ptr %v) !dbg !15 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %Fn.call.vtable = load ptr, ptr %v, align 8, !dbg !16 -// CHECK:STDOUT: %Fn.call = call ptr @llvm.load.relative.i32(ptr %Fn.call.vtable, i32 0), !dbg !16 -// CHECK:STDOUT: call void %Fn.call(ptr %v), !dbg !16 +// CHECK:STDOUT: %Intermediate.Fn.call.vtable = load ptr, ptr %v, align 8, !dbg !16 +// CHECK:STDOUT: %Intermediate.Fn.call = call ptr @llvm.load.relative.i32(ptr %Intermediate.Fn.call.vtable, i32 0), !dbg !16 +// CHECK:STDOUT: call void %Intermediate.Fn.call(ptr %v), !dbg !16 // CHECK:STDOUT: ret void, !dbg !17 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -379,9 +379,9 @@ fn Make() { // CHECK:STDOUT: // CHECK:STDOUT: define void @_CUse.Main(ptr %b) !dbg !4 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %F.call.vtable = load ptr, ptr %b, align 8, !dbg !7 -// CHECK:STDOUT: %F.call = call ptr @llvm.load.relative.i32(ptr %F.call.vtable, i32 0), !dbg !7 -// CHECK:STDOUT: call void %F.call(ptr %b), !dbg !7 +// CHECK:STDOUT: %Base.F.call.vtable = load ptr, ptr %b, align 8, !dbg !7 +// CHECK:STDOUT: %Base.F.call = call ptr @llvm.load.relative.i32(ptr %Base.F.call.vtable, i32 0), !dbg !7 +// CHECK:STDOUT: call void %Base.F.call(ptr %b), !dbg !7 // CHECK:STDOUT: ret void, !dbg !8 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -420,9 +420,9 @@ fn Make() { // CHECK:STDOUT: %.loc14_32.2.base = getelementptr inbounds nuw { { ptr } }, ptr %v.var, i32 0, i32 0, !dbg !8 // CHECK:STDOUT: %.loc14_31.2.vptr = getelementptr inbounds nuw { ptr }, ptr %.loc14_32.2.base, i32 0, i32 0, !dbg !9 // CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 %v.var, ptr align 8 @Derived.val.loc14_3, i64 8, i1 false), !dbg !7 -// CHECK:STDOUT: %F.call.vtable = load ptr, ptr %v.var, align 8, !dbg !10 -// CHECK:STDOUT: %F.call = call ptr @llvm.load.relative.i32(ptr %F.call.vtable, i32 0), !dbg !10 -// CHECK:STDOUT: call void %F.call(ptr %v.var), !dbg !10 +// CHECK:STDOUT: %Derived.F.call.vtable = load ptr, ptr %v.var, align 8, !dbg !10 +// CHECK:STDOUT: %Derived.F.call = call ptr @llvm.load.relative.i32(ptr %Derived.F.call.vtable, i32 0), !dbg !10 +// CHECK:STDOUT: call void %Derived.F.call(ptr %v.var), !dbg !10 // CHECK:STDOUT: ret void, !dbg !11 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/for/bindings.carbon b/toolchain/lower/testdata/for/bindings.carbon index 37f7da53c78c..00eb98f1af80 100644 --- a/toolchain/lower/testdata/for/bindings.carbon +++ b/toolchain/lower/testdata/for/bindings.carbon @@ -54,8 +54,8 @@ fn For() { // CHECK:STDOUT: for.next: ; preds = %for.body, %entry // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 12, ptr %.loc29_33.1.temp), !dbg !8 // CHECK:STDOUT: call void @"_CNext.EmptyRange.Main:Iterate.Core.29d34654e802e24e"(ptr %.loc29_33.1.temp, ptr %r.var, ptr %var), !dbg !8 -// CHECK:STDOUT: %HasValue.call = call i1 @_CHasValue.Optional.Core.29d34654e802e24e(ptr %.loc29_33.1.temp), !dbg !8 -// CHECK:STDOUT: br i1 %HasValue.call, label %for.body, label %for.done, !dbg !8 +// CHECK:STDOUT: %Optional.HasValue.call = call i1 @_CHasValue.Optional.Core.29d34654e802e24e(ptr %.loc29_33.1.temp), !dbg !8 +// CHECK:STDOUT: br i1 %Optional.HasValue.call, label %for.body, label %for.done, !dbg !8 // CHECK:STDOUT: // CHECK:STDOUT: for.body: ; preds = %for.next // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 4, ptr %n.var), !dbg !9 diff --git a/toolchain/lower/testdata/for/break_continue.carbon b/toolchain/lower/testdata/for/break_continue.carbon index 2e7aad68d533..9a45cb96c80d 100644 --- a/toolchain/lower/testdata/for/break_continue.carbon +++ b/toolchain/lower/testdata/for/break_continue.carbon @@ -40,19 +40,19 @@ fn For() { // CHECK:STDOUT: %.loc20_33.1.temp = alloca { i1, i32 }, align 8, !dbg !8 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %.loc20_32.1.temp), !dbg !7 // CHECK:STDOUT: call void @_CRange.Core(ptr %.loc20_32.1.temp, i32 100), !dbg !7 -// CHECK:STDOUT: %NewCursor.call = call i32 @"_CNewCursor.IntRange.Core:Iterate.Core.be1e879c1ad406d8"(ptr %.loc20_32.1.temp), !dbg !8 +// CHECK:STDOUT: %IntRange.as.Iterate.impl.NewCursor.call = call i32 @"_CNewCursor.IntRange.Core:Iterate.Core.be1e879c1ad406d8"(ptr %.loc20_32.1.temp), !dbg !8 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 4, ptr %var), !dbg !8 -// CHECK:STDOUT: store i32 %NewCursor.call, ptr %var, align 4, !dbg !8 +// CHECK:STDOUT: store i32 %IntRange.as.Iterate.impl.NewCursor.call, ptr %var, align 4, !dbg !8 // CHECK:STDOUT: br label %for.next, !dbg !8 // CHECK:STDOUT: // CHECK:STDOUT: for.next: ; preds = %if.else.loc22, %if.then.loc22, %entry // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %.loc20_33.1.temp), !dbg !8 // CHECK:STDOUT: call void @"_CNext.IntRange.Core:Iterate.Core.be1e879c1ad406d8"(ptr %.loc20_33.1.temp, ptr %.loc20_32.1.temp, ptr %var), !dbg !8 -// CHECK:STDOUT: %HasValue.call = call i1 @_CHasValue.Optional.Core.b88d1103f417c6d4(ptr %.loc20_33.1.temp), !dbg !8 -// CHECK:STDOUT: br i1 %HasValue.call, label %for.body, label %for.done, !dbg !8 +// CHECK:STDOUT: %Optional.HasValue.call = call i1 @_CHasValue.Optional.Core.b88d1103f417c6d4(ptr %.loc20_33.1.temp), !dbg !8 +// CHECK:STDOUT: br i1 %Optional.HasValue.call, label %for.body, label %for.done, !dbg !8 // CHECK:STDOUT: // CHECK:STDOUT: for.body: ; preds = %for.next -// CHECK:STDOUT: %Get.call = call i32 @_CGet.Optional.Core.b88d1103f417c6d4(ptr %.loc20_33.1.temp), !dbg !8 +// CHECK:STDOUT: %Optional.Get.call = call i32 @_CGet.Optional.Core.b88d1103f417c6d4(ptr %.loc20_33.1.temp), !dbg !8 // CHECK:STDOUT: %F.call = call i1 @_CF.Main(), !dbg !9 // CHECK:STDOUT: br i1 %F.call, label %if.then.loc21, label %if.else.loc21, !dbg !10 // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/for/for.carbon b/toolchain/lower/testdata/for/for.carbon index 3f37f28b9c4c..efe1e49e379e 100644 --- a/toolchain/lower/testdata/for/for.carbon +++ b/toolchain/lower/testdata/for/for.carbon @@ -41,19 +41,19 @@ fn For() { // CHECK:STDOUT: call void @_CF.Main(), !dbg !9 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %.loc21_32.1.temp), !dbg !7 // CHECK:STDOUT: call void @_CRange.Core(ptr %.loc21_32.1.temp, i32 100), !dbg !7 -// CHECK:STDOUT: %NewCursor.call = call i32 @"_CNewCursor.IntRange.Core:Iterate.Core.be1e879c1ad406d8"(ptr %.loc21_32.1.temp), !dbg !8 +// CHECK:STDOUT: %IntRange.as.Iterate.impl.NewCursor.call = call i32 @"_CNewCursor.IntRange.Core:Iterate.Core.be1e879c1ad406d8"(ptr %.loc21_32.1.temp), !dbg !8 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 4, ptr %var), !dbg !8 -// CHECK:STDOUT: store i32 %NewCursor.call, ptr %var, align 4, !dbg !8 +// CHECK:STDOUT: store i32 %IntRange.as.Iterate.impl.NewCursor.call, ptr %var, align 4, !dbg !8 // CHECK:STDOUT: br label %for.next, !dbg !8 // CHECK:STDOUT: // CHECK:STDOUT: for.next: ; preds = %for.body, %entry // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %.loc21_33.1.temp), !dbg !8 // CHECK:STDOUT: call void @"_CNext.IntRange.Core:Iterate.Core.be1e879c1ad406d8"(ptr %.loc21_33.1.temp, ptr %.loc21_32.1.temp, ptr %var), !dbg !8 -// CHECK:STDOUT: %HasValue.call = call i1 @_CHasValue.Optional.Core.b88d1103f417c6d4(ptr %.loc21_33.1.temp), !dbg !8 -// CHECK:STDOUT: br i1 %HasValue.call, label %for.body, label %for.done, !dbg !8 +// CHECK:STDOUT: %Optional.HasValue.call = call i1 @_CHasValue.Optional.Core.b88d1103f417c6d4(ptr %.loc21_33.1.temp), !dbg !8 +// CHECK:STDOUT: br i1 %Optional.HasValue.call, label %for.body, label %for.done, !dbg !8 // CHECK:STDOUT: // CHECK:STDOUT: for.body: ; preds = %for.next -// CHECK:STDOUT: %Get.call = call i32 @_CGet.Optional.Core.b88d1103f417c6d4(ptr %.loc21_33.1.temp), !dbg !8 +// CHECK:STDOUT: %Optional.Get.call = call i32 @_CGet.Optional.Core.b88d1103f417c6d4(ptr %.loc21_33.1.temp), !dbg !8 // CHECK:STDOUT: call void @_CG.Main(), !dbg !10 // CHECK:STDOUT: br label %for.next, !dbg !11 // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/function/generic/call_different_impls.carbon b/toolchain/lower/testdata/function/generic/call_different_impls.carbon index aee76820e76c..2cf7f7864408 100644 --- a/toolchain/lower/testdata/function/generic/call_different_impls.carbon +++ b/toolchain/lower/testdata/function/generic/call_different_impls.carbon @@ -40,13 +40,13 @@ fn Run() { // CHECK:STDOUT: // CHECK:STDOUT: define void @"_CF.X.Main:I.Main"() !dbg !4 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %print.int = call i32 (ptr, ...) @printf(ptr @printf.int.format, i32 1), !dbg !7 +// CHECK:STDOUT: %Print.call = call i32 (ptr, ...) @printf(ptr @printf.int.format, i32 1), !dbg !7 // CHECK:STDOUT: ret void, !dbg !8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define void @"_CF.Y.Main:I.Main"() !dbg !9 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %print.int = call i32 (ptr, ...) @printf(ptr @printf.int.format, i32 2), !dbg !10 +// CHECK:STDOUT: %Print.call = call i32 (ptr, ...) @printf(ptr @printf.int.format, i32 2), !dbg !10 // CHECK:STDOUT: ret void, !dbg !11 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/function/generic/call_different_impls_with_const.carbon b/toolchain/lower/testdata/function/generic/call_different_impls_with_const.carbon index c95a7825b129..14732af35a75 100644 --- a/toolchain/lower/testdata/function/generic/call_different_impls_with_const.carbon +++ b/toolchain/lower/testdata/function/generic/call_different_impls_with_const.carbon @@ -49,13 +49,13 @@ fn Run() { // CHECK:STDOUT: // CHECK:STDOUT: define i1 @"_CF.X.Main:I.Main"() !dbg !4 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %print.int = call i32 (ptr, ...) @printf(ptr @printf.int.format, i32 1), !dbg !7 +// CHECK:STDOUT: %Print.call = call i32 (ptr, ...) @printf(ptr @printf.int.format, i32 1), !dbg !7 // CHECK:STDOUT: ret i1 false, !dbg !8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i32 @"_CF.Y.Main:I.Main"() !dbg !9 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %print.int = call i32 (ptr, ...) @printf(ptr @printf.int.format, i32 2), !dbg !10 +// CHECK:STDOUT: %Print.call = call i32 (ptr, ...) @printf(ptr @printf.int.format, i32 2), !dbg !10 // CHECK:STDOUT: ret i32 2, !dbg !11 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/function/generic/call_impl_function.carbon b/toolchain/lower/testdata/function/generic/call_impl_function.carbon index fd110424f26f..14fbd6d8a84c 100644 --- a/toolchain/lower/testdata/function/generic/call_impl_function.carbon +++ b/toolchain/lower/testdata/function/generic/call_impl_function.carbon @@ -48,8 +48,8 @@ fn G() { // CHECK:STDOUT: // CHECK:STDOUT: define i32 @"_CF.ImplsSomeInterface.Main:SomeInterface.Main"(i32 %x) !dbg !4 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.snegate = sub i32 0, %x, !dbg !7 -// CHECK:STDOUT: ret i32 %int.snegate, !dbg !8 +// CHECK:STDOUT: %Int.as.Negate.impl.Op.call = sub i32 0, %x, !dbg !7 +// CHECK:STDOUT: ret i32 %Int.as.Negate.impl.Op.call, !dbg !8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define void @_CG.Main() !dbg !9 { diff --git a/toolchain/lower/testdata/function/generic/call_method.carbon b/toolchain/lower/testdata/function/generic/call_method.carbon index 98ff0f0e6081..4bcab911861d 100644 --- a/toolchain/lower/testdata/function/generic/call_method.carbon +++ b/toolchain/lower/testdata/function/generic/call_method.carbon @@ -36,8 +36,8 @@ fn CallF() -> i32 { // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 4, ptr %n.var), !dbg !8 // CHECK:STDOUT: store i32 0, ptr %n.var, align 4, !dbg !8 // CHECK:STDOUT: %.loc22_14 = load i32, ptr %n.var, align 4, !dbg !9 -// CHECK:STDOUT: %F.call = call i32 @_CF.C.Main.b88d1103f417c6d4(ptr %c.var, i32 %.loc22_14), !dbg !10 -// CHECK:STDOUT: ret i32 %F.call, !dbg !11 +// CHECK:STDOUT: %C.F.call = call i32 @_CF.C.Main.b88d1103f417c6d4(ptr %c.var, i32 %.loc22_14), !dbg !10 +// CHECK:STDOUT: ret i32 %C.F.call, !dbg !11 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) diff --git a/toolchain/lower/testdata/function/generic/call_recursive_basic.carbon b/toolchain/lower/testdata/function/generic/call_recursive_basic.carbon index fe5d9f7bb61a..ca785366e367 100644 --- a/toolchain/lower/testdata/function/generic/call_recursive_basic.carbon +++ b/toolchain/lower/testdata/function/generic/call_recursive_basic.carbon @@ -70,43 +70,43 @@ fn M() { // CHECK:STDOUT: // CHECK:STDOUT: define linkonce_odr i32 @_CF.Main.b88d1103f417c6d4(i32 %x, i32 %count) !dbg !20 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.greater = icmp sgt i32 %count, 0, !dbg !21 -// CHECK:STDOUT: br i1 %int.greater, label %if.then, label %if.else, !dbg !22 +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Greater.call = icmp sgt i32 %count, 0, !dbg !21 +// CHECK:STDOUT: br i1 %Int.as.OrderedWith.impl.Greater.call, label %if.then, label %if.else, !dbg !22 // CHECK:STDOUT: // CHECK:STDOUT: if.then: ; preds = %entry // CHECK:STDOUT: ret i32 %x, !dbg !23 // CHECK:STDOUT: // CHECK:STDOUT: if.else: ; preds = %entry -// CHECK:STDOUT: %int.sadd = add i32 %count, 1, !dbg !24 -// CHECK:STDOUT: %F.call = call i32 @_CF.Main.b88d1103f417c6d4(i32 %x, i32 %int.sadd), !dbg !25 +// CHECK:STDOUT: %Int.as.AddWith.impl.Op.call = add i32 %count, 1, !dbg !24 +// CHECK:STDOUT: %F.call = call i32 @_CF.Main.b88d1103f417c6d4(i32 %x, i32 %Int.as.AddWith.impl.Op.call), !dbg !25 // CHECK:STDOUT: ret i32 %F.call, !dbg !26 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define linkonce_odr double @_CF.Main.66be507887ceee78(double %x, i32 %count) !dbg !27 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.greater = icmp sgt i32 %count, 0, !dbg !28 -// CHECK:STDOUT: br i1 %int.greater, label %if.then, label %if.else, !dbg !29 +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Greater.call = icmp sgt i32 %count, 0, !dbg !28 +// CHECK:STDOUT: br i1 %Int.as.OrderedWith.impl.Greater.call, label %if.then, label %if.else, !dbg !29 // CHECK:STDOUT: // CHECK:STDOUT: if.then: ; preds = %entry // CHECK:STDOUT: ret double %x, !dbg !30 // CHECK:STDOUT: // CHECK:STDOUT: if.else: ; preds = %entry -// CHECK:STDOUT: %int.sadd = add i32 %count, 1, !dbg !31 -// CHECK:STDOUT: %F.call = call double @_CF.Main.66be507887ceee78(double %x, i32 %int.sadd), !dbg !32 +// CHECK:STDOUT: %Int.as.AddWith.impl.Op.call = add i32 %count, 1, !dbg !31 +// CHECK:STDOUT: %F.call = call double @_CF.Main.66be507887ceee78(double %x, i32 %Int.as.AddWith.impl.Op.call), !dbg !32 // CHECK:STDOUT: ret double %F.call, !dbg !33 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define linkonce_odr ptr @_CF.Main.e8193710fd35b608(ptr %x, i32 %count) !dbg !34 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.greater = icmp sgt i32 %count, 0, !dbg !35 -// CHECK:STDOUT: br i1 %int.greater, label %if.then, label %if.else, !dbg !36 +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Greater.call = icmp sgt i32 %count, 0, !dbg !35 +// CHECK:STDOUT: br i1 %Int.as.OrderedWith.impl.Greater.call, label %if.then, label %if.else, !dbg !36 // CHECK:STDOUT: // CHECK:STDOUT: if.then: ; preds = %entry // CHECK:STDOUT: ret ptr %x, !dbg !37 // CHECK:STDOUT: // CHECK:STDOUT: if.else: ; preds = %entry -// CHECK:STDOUT: %int.sadd = add i32 %count, 1, !dbg !38 -// CHECK:STDOUT: %F.call = call ptr @_CF.Main.e8193710fd35b608(ptr %x, i32 %int.sadd), !dbg !39 +// CHECK:STDOUT: %Int.as.AddWith.impl.Op.call = add i32 %count, 1, !dbg !38 +// CHECK:STDOUT: %F.call = call ptr @_CF.Main.e8193710fd35b608(ptr %x, i32 %Int.as.AddWith.impl.Op.call), !dbg !39 // CHECK:STDOUT: ret ptr %F.call, !dbg !40 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/function/generic/call_recursive_diamond.carbon b/toolchain/lower/testdata/function/generic/call_recursive_diamond.carbon index da05b8e26339..72de3ffd233e 100644 --- a/toolchain/lower/testdata/function/generic/call_recursive_diamond.carbon +++ b/toolchain/lower/testdata/function/generic/call_recursive_diamond.carbon @@ -89,16 +89,16 @@ fn M() { // CHECK:STDOUT: // CHECK:STDOUT: define linkonce_odr i32 @_CA.Main.b88d1103f417c6d4(i32 %x, i32 %count) !dbg !20 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.greater = icmp sgt i32 %count, 4, !dbg !21 -// CHECK:STDOUT: br i1 %int.greater, label %if.then.loc22, label %if.else.loc22, !dbg !22 +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Greater.call = icmp sgt i32 %count, 4, !dbg !21 +// CHECK:STDOUT: br i1 %Int.as.OrderedWith.impl.Greater.call, label %if.then.loc22, label %if.else.loc22, !dbg !22 // CHECK:STDOUT: // CHECK:STDOUT: if.then.loc22: ; preds = %entry // CHECK:STDOUT: ret i32 %x, !dbg !23 // CHECK:STDOUT: // CHECK:STDOUT: if.else.loc22: ; preds = %entry -// CHECK:STDOUT: %int.smod = srem i32 %count, 2, !dbg !24 -// CHECK:STDOUT: %int.eq = icmp eq i32 %int.smod, 0, !dbg !24 -// CHECK:STDOUT: br i1 %int.eq, label %if.then.loc25, label %if.else.loc25, !dbg !25 +// CHECK:STDOUT: %Int.as.ModWith.impl.Op.call = srem i32 %count, 2, !dbg !24 +// CHECK:STDOUT: %Int.as.EqWith.impl.Equal.call = icmp eq i32 %Int.as.ModWith.impl.Op.call, 0, !dbg !24 +// CHECK:STDOUT: br i1 %Int.as.EqWith.impl.Equal.call, label %if.then.loc25, label %if.else.loc25, !dbg !25 // CHECK:STDOUT: // CHECK:STDOUT: if.then.loc25: ; preds = %if.else.loc22 // CHECK:STDOUT: %B.call = call i32 @_CB.Main.b88d1103f417c6d4(i32 %x, i32 %count), !dbg !26 @@ -111,16 +111,16 @@ fn M() { // CHECK:STDOUT: // CHECK:STDOUT: define linkonce_odr double @_CA.Main.66be507887ceee78(double %x, i32 %count) !dbg !30 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.greater = icmp sgt i32 %count, 4, !dbg !31 -// CHECK:STDOUT: br i1 %int.greater, label %if.then.loc22, label %if.else.loc22, !dbg !32 +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Greater.call = icmp sgt i32 %count, 4, !dbg !31 +// CHECK:STDOUT: br i1 %Int.as.OrderedWith.impl.Greater.call, label %if.then.loc22, label %if.else.loc22, !dbg !32 // CHECK:STDOUT: // CHECK:STDOUT: if.then.loc22: ; preds = %entry // CHECK:STDOUT: ret double %x, !dbg !33 // CHECK:STDOUT: // CHECK:STDOUT: if.else.loc22: ; preds = %entry -// CHECK:STDOUT: %int.smod = srem i32 %count, 2, !dbg !34 -// CHECK:STDOUT: %int.eq = icmp eq i32 %int.smod, 0, !dbg !34 -// CHECK:STDOUT: br i1 %int.eq, label %if.then.loc25, label %if.else.loc25, !dbg !35 +// CHECK:STDOUT: %Int.as.ModWith.impl.Op.call = srem i32 %count, 2, !dbg !34 +// CHECK:STDOUT: %Int.as.EqWith.impl.Equal.call = icmp eq i32 %Int.as.ModWith.impl.Op.call, 0, !dbg !34 +// CHECK:STDOUT: br i1 %Int.as.EqWith.impl.Equal.call, label %if.then.loc25, label %if.else.loc25, !dbg !35 // CHECK:STDOUT: // CHECK:STDOUT: if.then.loc25: ; preds = %if.else.loc22 // CHECK:STDOUT: %B.call = call double @_CB.Main.66be507887ceee78(double %x, i32 %count), !dbg !36 @@ -133,16 +133,16 @@ fn M() { // CHECK:STDOUT: // CHECK:STDOUT: define linkonce_odr ptr @_CA.Main.e8193710fd35b608(ptr %x, i32 %count) !dbg !40 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.greater = icmp sgt i32 %count, 4, !dbg !41 -// CHECK:STDOUT: br i1 %int.greater, label %if.then.loc22, label %if.else.loc22, !dbg !42 +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Greater.call = icmp sgt i32 %count, 4, !dbg !41 +// CHECK:STDOUT: br i1 %Int.as.OrderedWith.impl.Greater.call, label %if.then.loc22, label %if.else.loc22, !dbg !42 // CHECK:STDOUT: // CHECK:STDOUT: if.then.loc22: ; preds = %entry // CHECK:STDOUT: ret ptr %x, !dbg !43 // CHECK:STDOUT: // CHECK:STDOUT: if.else.loc22: ; preds = %entry -// CHECK:STDOUT: %int.smod = srem i32 %count, 2, !dbg !44 -// CHECK:STDOUT: %int.eq = icmp eq i32 %int.smod, 0, !dbg !44 -// CHECK:STDOUT: br i1 %int.eq, label %if.then.loc25, label %if.else.loc25, !dbg !45 +// CHECK:STDOUT: %Int.as.ModWith.impl.Op.call = srem i32 %count, 2, !dbg !44 +// CHECK:STDOUT: %Int.as.EqWith.impl.Equal.call = icmp eq i32 %Int.as.ModWith.impl.Op.call, 0, !dbg !44 +// CHECK:STDOUT: br i1 %Int.as.EqWith.impl.Equal.call, label %if.then.loc25, label %if.else.loc25, !dbg !45 // CHECK:STDOUT: // CHECK:STDOUT: if.then.loc25: ; preds = %if.else.loc22 // CHECK:STDOUT: %B.call = call ptr @_CB.Main.e8193710fd35b608(ptr %x, i32 %count), !dbg !46 @@ -155,42 +155,42 @@ fn M() { // CHECK:STDOUT: // CHECK:STDOUT: define linkonce_odr i32 @_CB.Main.b88d1103f417c6d4(i32 %x, i32 %count) !dbg !50 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %print.int = call i32 (ptr, ...) @printf(ptr @printf.int.format, i32 1), !dbg !51 +// CHECK:STDOUT: %Print.call = call i32 (ptr, ...) @printf(ptr @printf.int.format, i32 1), !dbg !51 // CHECK:STDOUT: %D.call = call i32 @_CD.Main.b88d1103f417c6d4(i32 %x, i32 %count), !dbg !52 // CHECK:STDOUT: ret i32 %D.call, !dbg !53 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define linkonce_odr i32 @_CC.Main.b88d1103f417c6d4(i32 %x, i32 %count) !dbg !54 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %print.int = call i32 (ptr, ...) @printf(ptr @printf.int.format, i32 2), !dbg !55 +// CHECK:STDOUT: %Print.call = call i32 (ptr, ...) @printf(ptr @printf.int.format, i32 2), !dbg !55 // CHECK:STDOUT: %D.call = call i32 @_CD.Main.b88d1103f417c6d4(i32 %x, i32 %count), !dbg !56 // CHECK:STDOUT: ret i32 %D.call, !dbg !57 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define linkonce_odr double @_CB.Main.66be507887ceee78(double %x, i32 %count) !dbg !58 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %print.int = call i32 (ptr, ...) @printf(ptr @printf.int.format, i32 1), !dbg !59 +// CHECK:STDOUT: %Print.call = call i32 (ptr, ...) @printf(ptr @printf.int.format, i32 1), !dbg !59 // CHECK:STDOUT: %D.call = call double @_CD.Main.66be507887ceee78(double %x, i32 %count), !dbg !60 // CHECK:STDOUT: ret double %D.call, !dbg !61 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define linkonce_odr double @_CC.Main.66be507887ceee78(double %x, i32 %count) !dbg !62 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %print.int = call i32 (ptr, ...) @printf(ptr @printf.int.format, i32 2), !dbg !63 +// CHECK:STDOUT: %Print.call = call i32 (ptr, ...) @printf(ptr @printf.int.format, i32 2), !dbg !63 // CHECK:STDOUT: %D.call = call double @_CD.Main.66be507887ceee78(double %x, i32 %count), !dbg !64 // CHECK:STDOUT: ret double %D.call, !dbg !65 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define linkonce_odr ptr @_CB.Main.e8193710fd35b608(ptr %x, i32 %count) !dbg !66 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %print.int = call i32 (ptr, ...) @printf(ptr @printf.int.format, i32 1), !dbg !67 +// CHECK:STDOUT: %Print.call = call i32 (ptr, ...) @printf(ptr @printf.int.format, i32 1), !dbg !67 // CHECK:STDOUT: %D.call = call ptr @_CD.Main.e8193710fd35b608(ptr %x, i32 %count), !dbg !68 // CHECK:STDOUT: ret ptr %D.call, !dbg !69 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define linkonce_odr ptr @_CC.Main.e8193710fd35b608(ptr %x, i32 %count) !dbg !70 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %print.int = call i32 (ptr, ...) @printf(ptr @printf.int.format, i32 2), !dbg !71 +// CHECK:STDOUT: %Print.call = call i32 (ptr, ...) @printf(ptr @printf.int.format, i32 2), !dbg !71 // CHECK:STDOUT: %D.call = call ptr @_CD.Main.e8193710fd35b608(ptr %x, i32 %count), !dbg !72 // CHECK:STDOUT: ret ptr %D.call, !dbg !73 // CHECK:STDOUT: } @@ -199,22 +199,22 @@ fn M() { // CHECK:STDOUT: // CHECK:STDOUT: define linkonce_odr i32 @_CD.Main.b88d1103f417c6d4(i32 %x, i32 %count) !dbg !74 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.sadd = add i32 %count, 1, !dbg !75 -// CHECK:STDOUT: %A.call = call i32 @_CA.Main.b88d1103f417c6d4(i32 %x, i32 %int.sadd), !dbg !76 +// CHECK:STDOUT: %Int.as.AddWith.impl.Op.call = add i32 %count, 1, !dbg !75 +// CHECK:STDOUT: %A.call = call i32 @_CA.Main.b88d1103f417c6d4(i32 %x, i32 %Int.as.AddWith.impl.Op.call), !dbg !76 // CHECK:STDOUT: ret i32 %A.call, !dbg !77 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define linkonce_odr double @_CD.Main.66be507887ceee78(double %x, i32 %count) !dbg !78 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.sadd = add i32 %count, 1, !dbg !79 -// CHECK:STDOUT: %A.call = call double @_CA.Main.66be507887ceee78(double %x, i32 %int.sadd), !dbg !80 +// CHECK:STDOUT: %Int.as.AddWith.impl.Op.call = add i32 %count, 1, !dbg !79 +// CHECK:STDOUT: %A.call = call double @_CA.Main.66be507887ceee78(double %x, i32 %Int.as.AddWith.impl.Op.call), !dbg !80 // CHECK:STDOUT: ret double %A.call, !dbg !81 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define linkonce_odr ptr @_CD.Main.e8193710fd35b608(ptr %x, i32 %count) !dbg !82 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.sadd = add i32 %count, 1, !dbg !83 -// CHECK:STDOUT: %A.call = call ptr @_CA.Main.e8193710fd35b608(ptr %x, i32 %int.sadd), !dbg !84 +// CHECK:STDOUT: %Int.as.AddWith.impl.Op.call = add i32 %count, 1, !dbg !83 +// CHECK:STDOUT: %A.call = call ptr @_CA.Main.e8193710fd35b608(ptr %x, i32 %Int.as.AddWith.impl.Op.call), !dbg !84 // CHECK:STDOUT: ret ptr %A.call, !dbg !85 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/function/generic/call_recursive_impl.carbon b/toolchain/lower/testdata/function/generic/call_recursive_impl.carbon index 144d844bd6cc..9cbc743b7709 100644 --- a/toolchain/lower/testdata/function/generic/call_recursive_impl.carbon +++ b/toolchain/lower/testdata/function/generic/call_recursive_impl.carbon @@ -48,13 +48,13 @@ fn Run() { // CHECK:STDOUT: // CHECK:STDOUT: define void @"_CF.X.Main:I.Main"() !dbg !4 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %print.int = call i32 (ptr, ...) @printf(ptr @printf.int.format, i32 1), !dbg !7 +// CHECK:STDOUT: %Print.call = call i32 (ptr, ...) @printf(ptr @printf.int.format, i32 1), !dbg !7 // CHECK:STDOUT: ret void, !dbg !8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define void @"_CF.Y.Main:I.Main"() !dbg !9 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %print.int = call i32 (ptr, ...) @printf(ptr @printf.int.format, i32 2), !dbg !10 +// CHECK:STDOUT: %Print.call = call i32 (ptr, ...) @printf(ptr @printf.int.format, i32 2), !dbg !10 // CHECK:STDOUT: ret void, !dbg !11 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -70,30 +70,30 @@ fn Run() { // CHECK:STDOUT: define linkonce_odr i32 @_CG.Main.2c436a64dfc3fd29(i32 %count) !dbg !16 { // CHECK:STDOUT: entry: // CHECK:STDOUT: call void @"_CF.X.Main:I.Main"(), !dbg !17 -// CHECK:STDOUT: %int.greater = icmp sgt i32 %count, 0, !dbg !18 -// CHECK:STDOUT: br i1 %int.greater, label %if.then, label %if.else, !dbg !19 +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Greater.call = icmp sgt i32 %count, 0, !dbg !18 +// CHECK:STDOUT: br i1 %Int.as.OrderedWith.impl.Greater.call, label %if.then, label %if.else, !dbg !19 // CHECK:STDOUT: // CHECK:STDOUT: if.then: ; preds = %entry // CHECK:STDOUT: ret i32 %count, !dbg !20 // CHECK:STDOUT: // CHECK:STDOUT: if.else: ; preds = %entry -// CHECK:STDOUT: %int.sadd = add i32 %count, 1, !dbg !21 -// CHECK:STDOUT: %G.call = call i32 @_CG.Main.2c436a64dfc3fd29(i32 %int.sadd), !dbg !22 +// CHECK:STDOUT: %Int.as.AddWith.impl.Op.call = add i32 %count, 1, !dbg !21 +// CHECK:STDOUT: %G.call = call i32 @_CG.Main.2c436a64dfc3fd29(i32 %Int.as.AddWith.impl.Op.call), !dbg !22 // CHECK:STDOUT: ret i32 %G.call, !dbg !23 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define linkonce_odr i32 @_CG.Main.c124d41ebc08c32b(i32 %count) !dbg !24 { // CHECK:STDOUT: entry: // CHECK:STDOUT: call void @"_CF.Y.Main:I.Main"(), !dbg !25 -// CHECK:STDOUT: %int.greater = icmp sgt i32 %count, 0, !dbg !26 -// CHECK:STDOUT: br i1 %int.greater, label %if.then, label %if.else, !dbg !27 +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Greater.call = icmp sgt i32 %count, 0, !dbg !26 +// CHECK:STDOUT: br i1 %Int.as.OrderedWith.impl.Greater.call, label %if.then, label %if.else, !dbg !27 // CHECK:STDOUT: // CHECK:STDOUT: if.then: ; preds = %entry // CHECK:STDOUT: ret i32 %count, !dbg !28 // CHECK:STDOUT: // CHECK:STDOUT: if.else: ; preds = %entry -// CHECK:STDOUT: %int.sadd = add i32 %count, 1, !dbg !29 -// CHECK:STDOUT: %G.call = call i32 @_CG.Main.c124d41ebc08c32b(i32 %int.sadd), !dbg !30 +// CHECK:STDOUT: %Int.as.AddWith.impl.Op.call = add i32 %count, 1, !dbg !29 +// CHECK:STDOUT: %G.call = call i32 @_CG.Main.c124d41ebc08c32b(i32 %Int.as.AddWith.impl.Op.call), !dbg !30 // CHECK:STDOUT: ret i32 %G.call, !dbg !31 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/function/generic/call_recursive_mutual.carbon b/toolchain/lower/testdata/function/generic/call_recursive_mutual.carbon index bc711a88d984..ede5b4037722 100644 --- a/toolchain/lower/testdata/function/generic/call_recursive_mutual.carbon +++ b/toolchain/lower/testdata/function/generic/call_recursive_mutual.carbon @@ -72,85 +72,85 @@ fn M() { // CHECK:STDOUT: // CHECK:STDOUT: define linkonce_odr i32 @_CF.Main.b88d1103f417c6d4(i32 %x, i32 %count) !dbg !20 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.greater = icmp sgt i32 %count, 3, !dbg !21 -// CHECK:STDOUT: br i1 %int.greater, label %if.then, label %if.else, !dbg !22 +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Greater.call = icmp sgt i32 %count, 3, !dbg !21 +// CHECK:STDOUT: br i1 %Int.as.OrderedWith.impl.Greater.call, label %if.then, label %if.else, !dbg !22 // CHECK:STDOUT: // CHECK:STDOUT: if.then: ; preds = %entry // CHECK:STDOUT: ret i32 %x, !dbg !23 // CHECK:STDOUT: // CHECK:STDOUT: if.else: ; preds = %entry -// CHECK:STDOUT: %int.sadd = add i32 %count, 1, !dbg !24 -// CHECK:STDOUT: %G.call = call i32 @_CG.Main.b88d1103f417c6d4(i32 %x, i32 %int.sadd), !dbg !25 +// CHECK:STDOUT: %Int.as.AddWith.impl.Op.call = add i32 %count, 1, !dbg !24 +// CHECK:STDOUT: %G.call = call i32 @_CG.Main.b88d1103f417c6d4(i32 %x, i32 %Int.as.AddWith.impl.Op.call), !dbg !25 // CHECK:STDOUT: ret i32 %G.call, !dbg !26 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define linkonce_odr double @_CF.Main.66be507887ceee78(double %x, i32 %count) !dbg !27 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.greater = icmp sgt i32 %count, 3, !dbg !28 -// CHECK:STDOUT: br i1 %int.greater, label %if.then, label %if.else, !dbg !29 +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Greater.call = icmp sgt i32 %count, 3, !dbg !28 +// CHECK:STDOUT: br i1 %Int.as.OrderedWith.impl.Greater.call, label %if.then, label %if.else, !dbg !29 // CHECK:STDOUT: // CHECK:STDOUT: if.then: ; preds = %entry // CHECK:STDOUT: ret double %x, !dbg !30 // CHECK:STDOUT: // CHECK:STDOUT: if.else: ; preds = %entry -// CHECK:STDOUT: %int.sadd = add i32 %count, 1, !dbg !31 -// CHECK:STDOUT: %G.call = call double @_CG.Main.66be507887ceee78(double %x, i32 %int.sadd), !dbg !32 +// CHECK:STDOUT: %Int.as.AddWith.impl.Op.call = add i32 %count, 1, !dbg !31 +// CHECK:STDOUT: %G.call = call double @_CG.Main.66be507887ceee78(double %x, i32 %Int.as.AddWith.impl.Op.call), !dbg !32 // CHECK:STDOUT: ret double %G.call, !dbg !33 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define linkonce_odr ptr @_CF.Main.e8193710fd35b608(ptr %x, i32 %count) !dbg !34 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.greater = icmp sgt i32 %count, 3, !dbg !35 -// CHECK:STDOUT: br i1 %int.greater, label %if.then, label %if.else, !dbg !36 +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Greater.call = icmp sgt i32 %count, 3, !dbg !35 +// CHECK:STDOUT: br i1 %Int.as.OrderedWith.impl.Greater.call, label %if.then, label %if.else, !dbg !36 // CHECK:STDOUT: // CHECK:STDOUT: if.then: ; preds = %entry // CHECK:STDOUT: ret ptr %x, !dbg !37 // CHECK:STDOUT: // CHECK:STDOUT: if.else: ; preds = %entry -// CHECK:STDOUT: %int.sadd = add i32 %count, 1, !dbg !38 -// CHECK:STDOUT: %G.call = call ptr @_CG.Main.e8193710fd35b608(ptr %x, i32 %int.sadd), !dbg !39 +// CHECK:STDOUT: %Int.as.AddWith.impl.Op.call = add i32 %count, 1, !dbg !38 +// CHECK:STDOUT: %G.call = call ptr @_CG.Main.e8193710fd35b608(ptr %x, i32 %Int.as.AddWith.impl.Op.call), !dbg !39 // CHECK:STDOUT: ret ptr %G.call, !dbg !40 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define linkonce_odr i32 @_CG.Main.b88d1103f417c6d4(i32 %x, i32 %count) !dbg !41 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.greater = icmp sgt i32 %count, 4, !dbg !42 -// CHECK:STDOUT: br i1 %int.greater, label %if.then, label %if.else, !dbg !43 +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Greater.call = icmp sgt i32 %count, 4, !dbg !42 +// CHECK:STDOUT: br i1 %Int.as.OrderedWith.impl.Greater.call, label %if.then, label %if.else, !dbg !43 // CHECK:STDOUT: // CHECK:STDOUT: if.then: ; preds = %entry // CHECK:STDOUT: ret i32 %x, !dbg !44 // CHECK:STDOUT: // CHECK:STDOUT: if.else: ; preds = %entry -// CHECK:STDOUT: %int.sadd = add i32 %count, 1, !dbg !45 -// CHECK:STDOUT: %F.call = call i32 @_CF.Main.b88d1103f417c6d4(i32 %x, i32 %int.sadd), !dbg !46 +// CHECK:STDOUT: %Int.as.AddWith.impl.Op.call = add i32 %count, 1, !dbg !45 +// CHECK:STDOUT: %F.call = call i32 @_CF.Main.b88d1103f417c6d4(i32 %x, i32 %Int.as.AddWith.impl.Op.call), !dbg !46 // CHECK:STDOUT: ret i32 %F.call, !dbg !47 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define linkonce_odr double @_CG.Main.66be507887ceee78(double %x, i32 %count) !dbg !48 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.greater = icmp sgt i32 %count, 4, !dbg !49 -// CHECK:STDOUT: br i1 %int.greater, label %if.then, label %if.else, !dbg !50 +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Greater.call = icmp sgt i32 %count, 4, !dbg !49 +// CHECK:STDOUT: br i1 %Int.as.OrderedWith.impl.Greater.call, label %if.then, label %if.else, !dbg !50 // CHECK:STDOUT: // CHECK:STDOUT: if.then: ; preds = %entry // CHECK:STDOUT: ret double %x, !dbg !51 // CHECK:STDOUT: // CHECK:STDOUT: if.else: ; preds = %entry -// CHECK:STDOUT: %int.sadd = add i32 %count, 1, !dbg !52 -// CHECK:STDOUT: %F.call = call double @_CF.Main.66be507887ceee78(double %x, i32 %int.sadd), !dbg !53 +// CHECK:STDOUT: %Int.as.AddWith.impl.Op.call = add i32 %count, 1, !dbg !52 +// CHECK:STDOUT: %F.call = call double @_CF.Main.66be507887ceee78(double %x, i32 %Int.as.AddWith.impl.Op.call), !dbg !53 // CHECK:STDOUT: ret double %F.call, !dbg !54 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define linkonce_odr ptr @_CG.Main.e8193710fd35b608(ptr %x, i32 %count) !dbg !55 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.greater = icmp sgt i32 %count, 4, !dbg !56 -// CHECK:STDOUT: br i1 %int.greater, label %if.then, label %if.else, !dbg !57 +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Greater.call = icmp sgt i32 %count, 4, !dbg !56 +// CHECK:STDOUT: br i1 %Int.as.OrderedWith.impl.Greater.call, label %if.then, label %if.else, !dbg !57 // CHECK:STDOUT: // CHECK:STDOUT: if.then: ; preds = %entry // CHECK:STDOUT: ret ptr %x, !dbg !58 // CHECK:STDOUT: // CHECK:STDOUT: if.else: ; preds = %entry -// CHECK:STDOUT: %int.sadd = add i32 %count, 1, !dbg !59 -// CHECK:STDOUT: %F.call = call ptr @_CF.Main.e8193710fd35b608(ptr %x, i32 %int.sadd), !dbg !60 +// CHECK:STDOUT: %Int.as.AddWith.impl.Op.call = add i32 %count, 1, !dbg !59 +// CHECK:STDOUT: %F.call = call ptr @_CF.Main.e8193710fd35b608(ptr %x, i32 %Int.as.AddWith.impl.Op.call), !dbg !60 // CHECK:STDOUT: ret ptr %F.call, !dbg !61 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/function/generic/call_recursive_reorder.carbon b/toolchain/lower/testdata/function/generic/call_recursive_reorder.carbon index 3932a99661fa..b3b3c52dd4b2 100644 --- a/toolchain/lower/testdata/function/generic/call_recursive_reorder.carbon +++ b/toolchain/lower/testdata/function/generic/call_recursive_reorder.carbon @@ -53,15 +53,15 @@ fn M() { // CHECK:STDOUT: // CHECK:STDOUT: define linkonce_odr i32 @_CF.Main.2fe87eb83f5a4614(ptr %x, ptr %y, i32 %count) !dbg !17 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.greater = icmp sgt i32 %count, 2, !dbg !18 -// CHECK:STDOUT: br i1 %int.greater, label %if.then, label %if.else, !dbg !19 +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Greater.call = icmp sgt i32 %count, 2, !dbg !18 +// CHECK:STDOUT: br i1 %Int.as.OrderedWith.impl.Greater.call, label %if.then, label %if.else, !dbg !19 // CHECK:STDOUT: // CHECK:STDOUT: if.then: ; preds = %entry // CHECK:STDOUT: ret i32 %count, !dbg !20 // CHECK:STDOUT: // CHECK:STDOUT: if.else: ; preds = %entry -// CHECK:STDOUT: %int.sadd = add i32 %count, 1, !dbg !21 -// CHECK:STDOUT: %F.call = call i32 @_CF.Main.2fe87eb83f5a4614(ptr %y, ptr %x, i32 %int.sadd), !dbg !22 +// CHECK:STDOUT: %Int.as.AddWith.impl.Op.call = add i32 %count, 1, !dbg !21 +// CHECK:STDOUT: %F.call = call i32 @_CF.Main.2fe87eb83f5a4614(ptr %y, ptr %x, i32 %Int.as.AddWith.impl.Op.call), !dbg !22 // CHECK:STDOUT: ret i32 %F.call, !dbg !23 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/function/generic/call_recursive_reorder_more.carbon b/toolchain/lower/testdata/function/generic/call_recursive_reorder_more.carbon index f955a1ffe5c5..fc92942a294b 100644 --- a/toolchain/lower/testdata/function/generic/call_recursive_reorder_more.carbon +++ b/toolchain/lower/testdata/function/generic/call_recursive_reorder_more.carbon @@ -131,99 +131,99 @@ fn M() { // CHECK:STDOUT: // CHECK:STDOUT: define linkonce_odr i32 @_CF.Main.077d2bb2ab5eee86(i16 %x, ptr %y, ptr %z, i32 %count) !dbg !65 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.greater = icmp sgt i32 %count, 2, !dbg !66 -// CHECK:STDOUT: br i1 %int.greater, label %if.then, label %if.else, !dbg !67 +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Greater.call = icmp sgt i32 %count, 2, !dbg !66 +// CHECK:STDOUT: br i1 %Int.as.OrderedWith.impl.Greater.call, label %if.then, label %if.else, !dbg !67 // CHECK:STDOUT: // CHECK:STDOUT: if.then: ; preds = %entry // CHECK:STDOUT: ret i32 %count, !dbg !68 // CHECK:STDOUT: // CHECK:STDOUT: if.else: ; preds = %entry -// CHECK:STDOUT: %int.sadd = add i32 %count, 1, !dbg !69 -// CHECK:STDOUT: %F.call = call i32 @_CF.Main.077d2bb2ab5eee86(i16 %x, ptr %z, ptr %y, i32 %int.sadd), !dbg !70 +// CHECK:STDOUT: %Int.as.AddWith.impl.Op.call = add i32 %count, 1, !dbg !69 +// CHECK:STDOUT: %F.call = call i32 @_CF.Main.077d2bb2ab5eee86(i16 %x, ptr %z, ptr %y, i32 %Int.as.AddWith.impl.Op.call), !dbg !70 // CHECK:STDOUT: ret i32 %F.call, !dbg !71 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define linkonce_odr i32 @_CF.Main.9a89ac9e10448feb(i32 %x, ptr %y, ptr %z, i32 %count) !dbg !72 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.greater = icmp sgt i32 %count, 2, !dbg !73 -// CHECK:STDOUT: br i1 %int.greater, label %if.then, label %if.else, !dbg !74 +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Greater.call = icmp sgt i32 %count, 2, !dbg !73 +// CHECK:STDOUT: br i1 %Int.as.OrderedWith.impl.Greater.call, label %if.then, label %if.else, !dbg !74 // CHECK:STDOUT: // CHECK:STDOUT: if.then: ; preds = %entry // CHECK:STDOUT: ret i32 %count, !dbg !75 // CHECK:STDOUT: // CHECK:STDOUT: if.else: ; preds = %entry -// CHECK:STDOUT: %int.sadd = add i32 %count, 1, !dbg !76 -// CHECK:STDOUT: %F.call = call i32 @_CF.Main.9a89ac9e10448feb(i32 %x, ptr %z, ptr %y, i32 %int.sadd), !dbg !77 +// CHECK:STDOUT: %Int.as.AddWith.impl.Op.call = add i32 %count, 1, !dbg !76 +// CHECK:STDOUT: %F.call = call i32 @_CF.Main.9a89ac9e10448feb(i32 %x, ptr %z, ptr %y, i32 %Int.as.AddWith.impl.Op.call), !dbg !77 // CHECK:STDOUT: ret i32 %F.call, !dbg !78 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define linkonce_odr i32 @_CF.Main.76a945443862cc1f(i1 %x, ptr %y, ptr %z, i32 %count) !dbg !79 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.greater = icmp sgt i32 %count, 2, !dbg !80 -// CHECK:STDOUT: br i1 %int.greater, label %if.then, label %if.else, !dbg !81 +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Greater.call = icmp sgt i32 %count, 2, !dbg !80 +// CHECK:STDOUT: br i1 %Int.as.OrderedWith.impl.Greater.call, label %if.then, label %if.else, !dbg !81 // CHECK:STDOUT: // CHECK:STDOUT: if.then: ; preds = %entry // CHECK:STDOUT: ret i32 %count, !dbg !82 // CHECK:STDOUT: // CHECK:STDOUT: if.else: ; preds = %entry -// CHECK:STDOUT: %int.sadd = add i32 %count, 1, !dbg !83 -// CHECK:STDOUT: %F.call = call i32 @_CF.Main.76a945443862cc1f(i1 %x, ptr %z, ptr %y, i32 %int.sadd), !dbg !84 +// CHECK:STDOUT: %Int.as.AddWith.impl.Op.call = add i32 %count, 1, !dbg !83 +// CHECK:STDOUT: %F.call = call i32 @_CF.Main.76a945443862cc1f(i1 %x, ptr %z, ptr %y, i32 %Int.as.AddWith.impl.Op.call), !dbg !84 // CHECK:STDOUT: ret i32 %F.call, !dbg !85 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define linkonce_odr i32 @_CF.Main.02da1a7614ea56b6(i64 %x, i1 %y, ptr %z, i32 %count) !dbg !86 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.greater = icmp sgt i32 %count, 2, !dbg !87 -// CHECK:STDOUT: br i1 %int.greater, label %if.then, label %if.else, !dbg !88 +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Greater.call = icmp sgt i32 %count, 2, !dbg !87 +// CHECK:STDOUT: br i1 %Int.as.OrderedWith.impl.Greater.call, label %if.then, label %if.else, !dbg !88 // CHECK:STDOUT: // CHECK:STDOUT: if.then: ; preds = %entry // CHECK:STDOUT: ret i32 %count, !dbg !89 // CHECK:STDOUT: // CHECK:STDOUT: if.else: ; preds = %entry -// CHECK:STDOUT: %int.sadd = add i32 %count, 1, !dbg !90 -// CHECK:STDOUT: %F.call = call i32 @_CF.Main.bea8bae6e14e4034(i64 %x, ptr %z, i1 %y, i32 %int.sadd), !dbg !91 +// CHECK:STDOUT: %Int.as.AddWith.impl.Op.call = add i32 %count, 1, !dbg !90 +// CHECK:STDOUT: %F.call = call i32 @_CF.Main.bea8bae6e14e4034(i64 %x, ptr %z, i1 %y, i32 %Int.as.AddWith.impl.Op.call), !dbg !91 // CHECK:STDOUT: ret i32 %F.call, !dbg !92 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define linkonce_odr i32 @_CF.Main.f51a89281f4fb62e(double %x, ptr %y, ptr %z, i32 %count) !dbg !93 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.greater = icmp sgt i32 %count, 2, !dbg !94 -// CHECK:STDOUT: br i1 %int.greater, label %if.then, label %if.else, !dbg !95 +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Greater.call = icmp sgt i32 %count, 2, !dbg !94 +// CHECK:STDOUT: br i1 %Int.as.OrderedWith.impl.Greater.call, label %if.then, label %if.else, !dbg !95 // CHECK:STDOUT: // CHECK:STDOUT: if.then: ; preds = %entry // CHECK:STDOUT: ret i32 %count, !dbg !96 // CHECK:STDOUT: // CHECK:STDOUT: if.else: ; preds = %entry -// CHECK:STDOUT: %int.sadd = add i32 %count, 1, !dbg !97 -// CHECK:STDOUT: %F.call = call i32 @_CF.Main.f51a89281f4fb62e(double %x, ptr %z, ptr %y, i32 %int.sadd), !dbg !98 +// CHECK:STDOUT: %Int.as.AddWith.impl.Op.call = add i32 %count, 1, !dbg !97 +// CHECK:STDOUT: %F.call = call i32 @_CF.Main.f51a89281f4fb62e(double %x, ptr %z, ptr %y, i32 %Int.as.AddWith.impl.Op.call), !dbg !98 // CHECK:STDOUT: ret i32 %F.call, !dbg !99 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define linkonce_odr i32 @_CF.Main.7776e910959584d9(ptr %x, ptr %y, ptr %z, i32 %count) !dbg !100 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.greater = icmp sgt i32 %count, 2, !dbg !101 -// CHECK:STDOUT: br i1 %int.greater, label %if.then, label %if.else, !dbg !102 +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Greater.call = icmp sgt i32 %count, 2, !dbg !101 +// CHECK:STDOUT: br i1 %Int.as.OrderedWith.impl.Greater.call, label %if.then, label %if.else, !dbg !102 // CHECK:STDOUT: // CHECK:STDOUT: if.then: ; preds = %entry // CHECK:STDOUT: ret i32 %count, !dbg !103 // CHECK:STDOUT: // CHECK:STDOUT: if.else: ; preds = %entry -// CHECK:STDOUT: %int.sadd = add i32 %count, 1, !dbg !104 -// CHECK:STDOUT: %F.call = call i32 @_CF.Main.7776e910959584d9(ptr %x, ptr %z, ptr %y, i32 %int.sadd), !dbg !105 +// CHECK:STDOUT: %Int.as.AddWith.impl.Op.call = add i32 %count, 1, !dbg !104 +// CHECK:STDOUT: %F.call = call i32 @_CF.Main.7776e910959584d9(ptr %x, ptr %z, ptr %y, i32 %Int.as.AddWith.impl.Op.call), !dbg !105 // CHECK:STDOUT: ret i32 %F.call, !dbg !106 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define linkonce_odr i32 @_CF.Main.bea8bae6e14e4034(i64 %x, ptr %y, i1 %z, i32 %count) !dbg !107 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.greater = icmp sgt i32 %count, 2, !dbg !108 -// CHECK:STDOUT: br i1 %int.greater, label %if.then, label %if.else, !dbg !109 +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Greater.call = icmp sgt i32 %count, 2, !dbg !108 +// CHECK:STDOUT: br i1 %Int.as.OrderedWith.impl.Greater.call, label %if.then, label %if.else, !dbg !109 // CHECK:STDOUT: // CHECK:STDOUT: if.then: ; preds = %entry // CHECK:STDOUT: ret i32 %count, !dbg !110 // CHECK:STDOUT: // CHECK:STDOUT: if.else: ; preds = %entry -// CHECK:STDOUT: %int.sadd = add i32 %count, 1, !dbg !111 -// CHECK:STDOUT: %F.call = call i32 @_CF.Main.02da1a7614ea56b6(i64 %x, i1 %z, ptr %y, i32 %int.sadd), !dbg !112 +// CHECK:STDOUT: %Int.as.AddWith.impl.Op.call = add i32 %count, 1, !dbg !111 +// CHECK:STDOUT: %F.call = call i32 @_CF.Main.02da1a7614ea56b6(i64 %x, i1 %z, ptr %y, i32 %Int.as.AddWith.impl.Op.call), !dbg !112 // CHECK:STDOUT: ret i32 %F.call, !dbg !113 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/function/generic/call_recursive_sccs_deep.carbon b/toolchain/lower/testdata/function/generic/call_recursive_sccs_deep.carbon index 20387a8980fd..26cae749fc6f 100644 --- a/toolchain/lower/testdata/function/generic/call_recursive_sccs_deep.carbon +++ b/toolchain/lower/testdata/function/generic/call_recursive_sccs_deep.carbon @@ -143,16 +143,16 @@ fn M() { // CHECK:STDOUT: // CHECK:STDOUT: define linkonce_odr i32 @_CD.Main.b88d1103f417c6d4(i32 %x, i32 %count) !dbg !35 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.greater = icmp sgt i32 %count, 4, !dbg !36 -// CHECK:STDOUT: br i1 %int.greater, label %if.then.loc48, label %if.else.loc48, !dbg !37 +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Greater.call = icmp sgt i32 %count, 4, !dbg !36 +// CHECK:STDOUT: br i1 %Int.as.OrderedWith.impl.Greater.call, label %if.then.loc48, label %if.else.loc48, !dbg !37 // CHECK:STDOUT: // CHECK:STDOUT: if.then.loc48: ; preds = %entry // CHECK:STDOUT: ret i32 %x, !dbg !38 // CHECK:STDOUT: // CHECK:STDOUT: if.else.loc48: ; preds = %entry -// CHECK:STDOUT: %int.smod = srem i32 %count, 2, !dbg !39 -// CHECK:STDOUT: %int.eq = icmp eq i32 %int.smod, 0, !dbg !39 -// CHECK:STDOUT: br i1 %int.eq, label %if.then.loc51, label %if.else.loc51, !dbg !40 +// CHECK:STDOUT: %Int.as.ModWith.impl.Op.call = srem i32 %count, 2, !dbg !39 +// CHECK:STDOUT: %Int.as.EqWith.impl.Equal.call = icmp eq i32 %Int.as.ModWith.impl.Op.call, 0, !dbg !39 +// CHECK:STDOUT: br i1 %Int.as.EqWith.impl.Equal.call, label %if.then.loc51, label %if.else.loc51, !dbg !40 // CHECK:STDOUT: // CHECK:STDOUT: if.then.loc51: ; preds = %if.else.loc48 // CHECK:STDOUT: %E.call = call i32 @_CE.Main.b88d1103f417c6d4(i32 %x, i32 %count), !dbg !41 @@ -171,16 +171,16 @@ fn M() { // CHECK:STDOUT: // CHECK:STDOUT: define linkonce_odr double @_CD.Main.66be507887ceee78(double %x, i32 %count) !dbg !48 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.greater = icmp sgt i32 %count, 4, !dbg !49 -// CHECK:STDOUT: br i1 %int.greater, label %if.then.loc48, label %if.else.loc48, !dbg !50 +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Greater.call = icmp sgt i32 %count, 4, !dbg !49 +// CHECK:STDOUT: br i1 %Int.as.OrderedWith.impl.Greater.call, label %if.then.loc48, label %if.else.loc48, !dbg !50 // CHECK:STDOUT: // CHECK:STDOUT: if.then.loc48: ; preds = %entry // CHECK:STDOUT: ret double %x, !dbg !51 // CHECK:STDOUT: // CHECK:STDOUT: if.else.loc48: ; preds = %entry -// CHECK:STDOUT: %int.smod = srem i32 %count, 2, !dbg !52 -// CHECK:STDOUT: %int.eq = icmp eq i32 %int.smod, 0, !dbg !52 -// CHECK:STDOUT: br i1 %int.eq, label %if.then.loc51, label %if.else.loc51, !dbg !53 +// CHECK:STDOUT: %Int.as.ModWith.impl.Op.call = srem i32 %count, 2, !dbg !52 +// CHECK:STDOUT: %Int.as.EqWith.impl.Equal.call = icmp eq i32 %Int.as.ModWith.impl.Op.call, 0, !dbg !52 +// CHECK:STDOUT: br i1 %Int.as.EqWith.impl.Equal.call, label %if.then.loc51, label %if.else.loc51, !dbg !53 // CHECK:STDOUT: // CHECK:STDOUT: if.then.loc51: ; preds = %if.else.loc48 // CHECK:STDOUT: %E.call = call double @_CE.Main.66be507887ceee78(double %x, i32 %count), !dbg !54 @@ -199,16 +199,16 @@ fn M() { // CHECK:STDOUT: // CHECK:STDOUT: define linkonce_odr ptr @_CD.Main.e8193710fd35b608(ptr %x, i32 %count) !dbg !61 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.greater = icmp sgt i32 %count, 4, !dbg !62 -// CHECK:STDOUT: br i1 %int.greater, label %if.then.loc48, label %if.else.loc48, !dbg !63 +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Greater.call = icmp sgt i32 %count, 4, !dbg !62 +// CHECK:STDOUT: br i1 %Int.as.OrderedWith.impl.Greater.call, label %if.then.loc48, label %if.else.loc48, !dbg !63 // CHECK:STDOUT: // CHECK:STDOUT: if.then.loc48: ; preds = %entry // CHECK:STDOUT: ret ptr %x, !dbg !64 // CHECK:STDOUT: // CHECK:STDOUT: if.else.loc48: ; preds = %entry -// CHECK:STDOUT: %int.smod = srem i32 %count, 2, !dbg !65 -// CHECK:STDOUT: %int.eq = icmp eq i32 %int.smod, 0, !dbg !65 -// CHECK:STDOUT: br i1 %int.eq, label %if.then.loc51, label %if.else.loc51, !dbg !66 +// CHECK:STDOUT: %Int.as.ModWith.impl.Op.call = srem i32 %count, 2, !dbg !65 +// CHECK:STDOUT: %Int.as.EqWith.impl.Equal.call = icmp eq i32 %Int.as.ModWith.impl.Op.call, 0, !dbg !65 +// CHECK:STDOUT: br i1 %Int.as.EqWith.impl.Equal.call, label %if.then.loc51, label %if.else.loc51, !dbg !66 // CHECK:STDOUT: // CHECK:STDOUT: if.then.loc51: ; preds = %if.else.loc48 // CHECK:STDOUT: %E.call = call ptr @_CE.Main.e8193710fd35b608(ptr %x, i32 %count), !dbg !67 @@ -221,13 +221,13 @@ fn M() { // CHECK:STDOUT: // CHECK:STDOUT: define linkonce_odr void @_CC.Main.b88d1103f417c6d4(i32 %x, i32 %count) !dbg !71 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.less_eq = icmp sle i32 %count, 2, !dbg !72 -// CHECK:STDOUT: br i1 %int.less_eq, label %if.then, label %if.else, !dbg !73 +// CHECK:STDOUT: %Int.as.OrderedWith.impl.LessOrEquivalent.call = icmp sle i32 %count, 2, !dbg !72 +// CHECK:STDOUT: br i1 %Int.as.OrderedWith.impl.LessOrEquivalent.call, label %if.then, label %if.else, !dbg !73 // CHECK:STDOUT: // CHECK:STDOUT: if.then: ; preds = %entry -// CHECK:STDOUT: %print.int = call i32 (ptr, ...) @printf(ptr @printf.int.format, i32 %count), !dbg !74 -// CHECK:STDOUT: %int.sadd = add i32 %count, 1, !dbg !75 -// CHECK:STDOUT: call void @_CB.Main.b88d1103f417c6d4(i32 %x, i32 %int.sadd), !dbg !76 +// CHECK:STDOUT: %Print.call = call i32 (ptr, ...) @printf(ptr @printf.int.format, i32 %count), !dbg !74 +// CHECK:STDOUT: %Int.as.AddWith.impl.Op.call = add i32 %count, 1, !dbg !75 +// CHECK:STDOUT: call void @_CB.Main.b88d1103f417c6d4(i32 %x, i32 %Int.as.AddWith.impl.Op.call), !dbg !76 // CHECK:STDOUT: br label %if.else, !dbg !77 // CHECK:STDOUT: // CHECK:STDOUT: if.else: ; preds = %if.then, %entry @@ -248,13 +248,13 @@ fn M() { // CHECK:STDOUT: // CHECK:STDOUT: define linkonce_odr void @_CC.Main.66be507887ceee78(double %x, i32 %count) !dbg !85 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.less_eq = icmp sle i32 %count, 2, !dbg !86 -// CHECK:STDOUT: br i1 %int.less_eq, label %if.then, label %if.else, !dbg !87 +// CHECK:STDOUT: %Int.as.OrderedWith.impl.LessOrEquivalent.call = icmp sle i32 %count, 2, !dbg !86 +// CHECK:STDOUT: br i1 %Int.as.OrderedWith.impl.LessOrEquivalent.call, label %if.then, label %if.else, !dbg !87 // CHECK:STDOUT: // CHECK:STDOUT: if.then: ; preds = %entry -// CHECK:STDOUT: %print.int = call i32 (ptr, ...) @printf(ptr @printf.int.format, i32 %count), !dbg !88 -// CHECK:STDOUT: %int.sadd = add i32 %count, 1, !dbg !89 -// CHECK:STDOUT: call void @_CB.Main.66be507887ceee78(double %x, i32 %int.sadd), !dbg !90 +// CHECK:STDOUT: %Print.call = call i32 (ptr, ...) @printf(ptr @printf.int.format, i32 %count), !dbg !88 +// CHECK:STDOUT: %Int.as.AddWith.impl.Op.call = add i32 %count, 1, !dbg !89 +// CHECK:STDOUT: call void @_CB.Main.66be507887ceee78(double %x, i32 %Int.as.AddWith.impl.Op.call), !dbg !90 // CHECK:STDOUT: br label %if.else, !dbg !91 // CHECK:STDOUT: // CHECK:STDOUT: if.else: ; preds = %if.then, %entry @@ -275,13 +275,13 @@ fn M() { // CHECK:STDOUT: // CHECK:STDOUT: define linkonce_odr void @_CC.Main.e8193710fd35b608(ptr %x, i32 %count) !dbg !99 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.less_eq = icmp sle i32 %count, 2, !dbg !100 -// CHECK:STDOUT: br i1 %int.less_eq, label %if.then, label %if.else, !dbg !101 +// CHECK:STDOUT: %Int.as.OrderedWith.impl.LessOrEquivalent.call = icmp sle i32 %count, 2, !dbg !100 +// CHECK:STDOUT: br i1 %Int.as.OrderedWith.impl.LessOrEquivalent.call, label %if.then, label %if.else, !dbg !101 // CHECK:STDOUT: // CHECK:STDOUT: if.then: ; preds = %entry -// CHECK:STDOUT: %print.int = call i32 (ptr, ...) @printf(ptr @printf.int.format, i32 %count), !dbg !102 -// CHECK:STDOUT: %int.sadd = add i32 %count, 1, !dbg !103 -// CHECK:STDOUT: call void @_CB.Main.e8193710fd35b608(ptr %x, i32 %int.sadd), !dbg !104 +// CHECK:STDOUT: %Print.call = call i32 (ptr, ...) @printf(ptr @printf.int.format, i32 %count), !dbg !102 +// CHECK:STDOUT: %Int.as.AddWith.impl.Op.call = add i32 %count, 1, !dbg !103 +// CHECK:STDOUT: call void @_CB.Main.e8193710fd35b608(ptr %x, i32 %Int.as.AddWith.impl.Op.call), !dbg !104 // CHECK:STDOUT: br label %if.else, !dbg !105 // CHECK:STDOUT: // CHECK:STDOUT: if.else: ; preds = %if.then, %entry @@ -304,22 +304,22 @@ fn M() { // CHECK:STDOUT: // CHECK:STDOUT: define linkonce_odr i32 @_CG.Main.b88d1103f417c6d4(i32 %x, i32 %count) !dbg !113 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.sadd = add i32 %count, 1, !dbg !114 -// CHECK:STDOUT: %D.call = call i32 @_CD.Main.b88d1103f417c6d4(i32 %x, i32 %int.sadd), !dbg !115 +// CHECK:STDOUT: %Int.as.AddWith.impl.Op.call = add i32 %count, 1, !dbg !114 +// CHECK:STDOUT: %D.call = call i32 @_CD.Main.b88d1103f417c6d4(i32 %x, i32 %Int.as.AddWith.impl.Op.call), !dbg !115 // CHECK:STDOUT: ret i32 %D.call, !dbg !116 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define linkonce_odr double @_CG.Main.66be507887ceee78(double %x, i32 %count) !dbg !117 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.sadd = add i32 %count, 1, !dbg !118 -// CHECK:STDOUT: %D.call = call double @_CD.Main.66be507887ceee78(double %x, i32 %int.sadd), !dbg !119 +// CHECK:STDOUT: %Int.as.AddWith.impl.Op.call = add i32 %count, 1, !dbg !118 +// CHECK:STDOUT: %D.call = call double @_CD.Main.66be507887ceee78(double %x, i32 %Int.as.AddWith.impl.Op.call), !dbg !119 // CHECK:STDOUT: ret double %D.call, !dbg !120 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define linkonce_odr ptr @_CG.Main.e8193710fd35b608(ptr %x, i32 %count) !dbg !121 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.sadd = add i32 %count, 1, !dbg !122 -// CHECK:STDOUT: %D.call = call ptr @_CD.Main.e8193710fd35b608(ptr %x, i32 %int.sadd), !dbg !123 +// CHECK:STDOUT: %Int.as.AddWith.impl.Op.call = add i32 %count, 1, !dbg !122 +// CHECK:STDOUT: %D.call = call ptr @_CD.Main.e8193710fd35b608(ptr %x, i32 %Int.as.AddWith.impl.Op.call), !dbg !123 // CHECK:STDOUT: ret ptr %D.call, !dbg !124 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/function/generic/call_specific_in_class.carbon b/toolchain/lower/testdata/function/generic/call_specific_in_class.carbon index a221460893b6..98e9ceeb4a48 100644 --- a/toolchain/lower/testdata/function/generic/call_specific_in_class.carbon +++ b/toolchain/lower/testdata/function/generic/call_specific_in_class.carbon @@ -110,32 +110,32 @@ fn M() { // CHECK:STDOUT: entry: // CHECK:STDOUT: %c.var = alloca {}, align 8, !dbg !38 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 0, ptr %c.var), !dbg !38 -// CHECK:STDOUT: %Cfn.call = call ptr @_CCfn.C.Main.e8193710fd35b608(ptr %c.var, ptr %x), !dbg !39 -// CHECK:STDOUT: ret ptr %Cfn.call, !dbg !40 +// CHECK:STDOUT: %C.Cfn.call = call ptr @_CCfn.C.Main.e8193710fd35b608(ptr %c.var, ptr %x), !dbg !39 +// CHECK:STDOUT: ret ptr %C.Cfn.call, !dbg !40 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define linkonce_odr i32 @_CG.Main.b88d1103f417c6d4(i32 %x) !dbg !41 { // CHECK:STDOUT: entry: // CHECK:STDOUT: %c.var = alloca {}, align 8, !dbg !42 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 0, ptr %c.var), !dbg !42 -// CHECK:STDOUT: %Cfn.call = call i32 @_CCfn.C.Main.b88d1103f417c6d4(ptr %c.var, i32 %x), !dbg !43 -// CHECK:STDOUT: ret i32 %Cfn.call, !dbg !44 +// CHECK:STDOUT: %C.Cfn.call = call i32 @_CCfn.C.Main.b88d1103f417c6d4(ptr %c.var, i32 %x), !dbg !43 +// CHECK:STDOUT: ret i32 %C.Cfn.call, !dbg !44 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define linkonce_odr double @_CG.Main.66be507887ceee78(double %x) !dbg !45 { // CHECK:STDOUT: entry: // CHECK:STDOUT: %c.var = alloca {}, align 8, !dbg !46 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 0, ptr %c.var), !dbg !46 -// CHECK:STDOUT: %Cfn.call = call double @_CCfn.C.Main.66be507887ceee78(ptr %c.var, double %x), !dbg !47 -// CHECK:STDOUT: ret double %Cfn.call, !dbg !48 +// CHECK:STDOUT: %C.Cfn.call = call double @_CCfn.C.Main.66be507887ceee78(ptr %c.var, double %x), !dbg !47 +// CHECK:STDOUT: ret double %C.Cfn.call, !dbg !48 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define linkonce_odr %type @_CG.Main.5754c7a55c7cbe4a(%type %x) !dbg !49 { // CHECK:STDOUT: entry: // CHECK:STDOUT: %c.var = alloca {}, align 8, !dbg !50 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 0, ptr %c.var), !dbg !50 -// CHECK:STDOUT: %Cfn.call = call %type @_CCfn.C.Main.5754c7a55c7cbe4a(ptr %c.var, %type %x), !dbg !51 -// CHECK:STDOUT: ret %type %Cfn.call, !dbg !52 +// CHECK:STDOUT: %C.Cfn.call = call %type @_CCfn.C.Main.5754c7a55c7cbe4a(ptr %c.var, %type %x), !dbg !51 +// CHECK:STDOUT: ret %type %C.Cfn.call, !dbg !52 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define linkonce_odr ptr @_CCfn.C.Main.e8193710fd35b608(ptr %self, ptr %x) !dbg !53 { diff --git a/toolchain/lower/testdata/impl/assoc_fn_alias.carbon b/toolchain/lower/testdata/impl/assoc_fn_alias.carbon index d94ee91ec261..ce6e3e63ae56 100644 --- a/toolchain/lower/testdata/impl/assoc_fn_alias.carbon +++ b/toolchain/lower/testdata/impl/assoc_fn_alias.carbon @@ -41,8 +41,8 @@ fn Call(a: A) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: define i32 @_CCall.Main(ptr %a) !dbg !9 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %F.call = call i32 @"_CF.A.Main:I.Main"(ptr %a), !dbg !10 -// CHECK:STDOUT: ret i32 %F.call, !dbg !11 +// CHECK:STDOUT: %A.as.I.impl.F.call = call i32 @"_CF.A.Main:I.Main"(ptr %a), !dbg !10 +// CHECK:STDOUT: ret i32 %A.as.I.impl.F.call, !dbg !11 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !llvm.module.flags = !{!0, !1} diff --git a/toolchain/lower/testdata/impl/extend_impl.carbon b/toolchain/lower/testdata/impl/extend_impl.carbon index 666de69e4be0..e146ba09712e 100644 --- a/toolchain/lower/testdata/impl/extend_impl.carbon +++ b/toolchain/lower/testdata/impl/extend_impl.carbon @@ -40,14 +40,14 @@ fn InstanceAccess(a: A) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: define i32 @_CTypeAccess.Main() !dbg !8 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %F.call = call i32 @"_CF.A.Main:I.Main"(), !dbg !9 -// CHECK:STDOUT: ret i32 %F.call, !dbg !10 +// CHECK:STDOUT: %A.as.I.impl.F.call = call i32 @"_CF.A.Main:I.Main"(), !dbg !9 +// CHECK:STDOUT: ret i32 %A.as.I.impl.F.call, !dbg !10 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i32 @_CInstanceAccess.Main(ptr %a) !dbg !11 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %F.call = call i32 @"_CF.A.Main:I.Main"(), !dbg !12 -// CHECK:STDOUT: ret i32 %F.call, !dbg !13 +// CHECK:STDOUT: %A.as.I.impl.F.call = call i32 @"_CF.A.Main:I.Main"(), !dbg !12 +// CHECK:STDOUT: ret i32 %A.as.I.impl.F.call, !dbg !13 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !llvm.module.flags = !{!0, !1} diff --git a/toolchain/lower/testdata/impl/impl.carbon b/toolchain/lower/testdata/impl/impl.carbon index 60e3f0d7dc24..64a7aa521d37 100644 --- a/toolchain/lower/testdata/impl/impl.carbon +++ b/toolchain/lower/testdata/impl/impl.carbon @@ -40,8 +40,8 @@ fn Call(a: A) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: define i32 @_CCall.Main(ptr %a) !dbg !9 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %F.call = call i32 @"_CF.A.Main:I.Main"(ptr %a), !dbg !10 -// CHECK:STDOUT: ret i32 %F.call, !dbg !11 +// CHECK:STDOUT: %A.as.I.impl.F.call = call i32 @"_CF.A.Main:I.Main"(ptr %a), !dbg !10 +// CHECK:STDOUT: ret i32 %A.as.I.impl.F.call, !dbg !11 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !llvm.module.flags = !{!0, !1} diff --git a/toolchain/lower/testdata/impl/import.carbon b/toolchain/lower/testdata/impl/import.carbon index 86fd9524808e..e0a7ec914a38 100644 --- a/toolchain/lower/testdata/impl/import.carbon +++ b/toolchain/lower/testdata/impl/import.carbon @@ -63,8 +63,8 @@ fn Call(a: A) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: define i32 @_CCall.Main(ptr %a) !dbg !4 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %F.call = call i32 @"_CF.A.Main:I.Main"(ptr %a), !dbg !7 -// CHECK:STDOUT: ret i32 %F.call, !dbg !8 +// CHECK:STDOUT: %A.as.I.impl.F.call = call i32 @"_CF.A.Main:I.Main"(ptr %a), !dbg !7 +// CHECK:STDOUT: ret i32 %A.as.I.impl.F.call, !dbg !8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: declare i32 @"_CF.A.Main:I.Main"(ptr) diff --git a/toolchain/lower/testdata/impl/instance_method.carbon b/toolchain/lower/testdata/impl/instance_method.carbon index d22b8f5b1d77..53b834cbae69 100644 --- a/toolchain/lower/testdata/impl/instance_method.carbon +++ b/toolchain/lower/testdata/impl/instance_method.carbon @@ -38,8 +38,8 @@ fn Call(a: A*) -> A* { // CHECK:STDOUT: // CHECK:STDOUT: define ptr @_CCall.Main(ptr %a) !dbg !8 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %Get.call = call ptr @"_CGet.A.Main:GetSelf.Main"(ptr %a), !dbg !9 -// CHECK:STDOUT: ret ptr %Get.call, !dbg !10 +// CHECK:STDOUT: %A.as.GetSelf.impl.Get.call = call ptr @"_CGet.A.Main:GetSelf.Main"(ptr %a), !dbg !9 +// CHECK:STDOUT: ret ptr %A.as.GetSelf.impl.Get.call, !dbg !10 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !llvm.module.flags = !{!0, !1} diff --git a/toolchain/lower/testdata/interop/cpp/method.carbon b/toolchain/lower/testdata/interop/cpp/method.carbon index 36a2b14d7c05..67c84d867afc 100644 --- a/toolchain/lower/testdata/interop/cpp/method.carbon +++ b/toolchain/lower/testdata/interop/cpp/method.carbon @@ -49,8 +49,8 @@ fn UseVal(a: Cpp.A*) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: define i32 @_CUseVal.Main(ptr %a) !dbg !7 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %by_val.call = call i32 @_ZNK1A6by_valEv(ptr %a), !dbg !10 -// CHECK:STDOUT: ret i32 %by_val.call, !dbg !11 +// CHECK:STDOUT: %A.by_val.call = call i32 @_ZNK1A6by_valEv(ptr %a), !dbg !10 +// CHECK:STDOUT: ret i32 %A.by_val.call, !dbg !11 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: mustprogress noinline nounwind optnone @@ -92,8 +92,8 @@ fn UseVal(a: Cpp.A*) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: define i32 @_CUseVal.Main(ptr %a) !dbg !7 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %by_ref.call = call i32 @_ZN1A6by_refEv(ptr %a), !dbg !10 -// CHECK:STDOUT: ret i32 %by_ref.call, !dbg !11 +// CHECK:STDOUT: %A.by_ref.call = call i32 @_ZN1A6by_refEv(ptr %a), !dbg !10 +// CHECK:STDOUT: ret i32 %A.by_ref.call, !dbg !11 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: mustprogress noinline nounwind optnone diff --git a/toolchain/lower/testdata/operators/arithmetic.carbon b/toolchain/lower/testdata/operators/arithmetic.carbon index 67d943f66f07..69649d76e7fd 100644 --- a/toolchain/lower/testdata/operators/arithmetic.carbon +++ b/toolchain/lower/testdata/operators/arithmetic.carbon @@ -41,86 +41,86 @@ fn div_u16(a: u16, b: u16) -> u16 { return a / b; } // CHECK:STDOUT: // CHECK:STDOUT: define i32 @_Cadd_i32.Main(i32 %a, i32 %b) !dbg !4 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.sadd = add i32 %a, %b, !dbg !7 -// CHECK:STDOUT: ret i32 %int.sadd, !dbg !8 +// CHECK:STDOUT: %Int.as.AddWith.impl.Op.call = add i32 %a, %b, !dbg !7 +// CHECK:STDOUT: ret i32 %Int.as.AddWith.impl.Op.call, !dbg !8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i32 @_Cadd_u32.Main(i32 %a, i32 %b) !dbg !9 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.uadd = add i32 %a, %b, !dbg !10 -// CHECK:STDOUT: ret i32 %int.uadd, !dbg !11 +// CHECK:STDOUT: %UInt.as.AddWith.impl.Op.call = add i32 %a, %b, !dbg !10 +// CHECK:STDOUT: ret i32 %UInt.as.AddWith.impl.Op.call, !dbg !11 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i32 @_Cdiv_i32.Main(i32 %a, i32 %b) !dbg !12 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.sdiv = sdiv i32 %a, %b, !dbg !13 -// CHECK:STDOUT: ret i32 %int.sdiv, !dbg !14 +// CHECK:STDOUT: %Int.as.DivWith.impl.Op.call = sdiv i32 %a, %b, !dbg !13 +// CHECK:STDOUT: ret i32 %Int.as.DivWith.impl.Op.call, !dbg !14 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i32 @_Cdiv_u32.Main(i32 %a, i32 %b) !dbg !15 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.udiv = udiv i32 %a, %b, !dbg !16 -// CHECK:STDOUT: ret i32 %int.udiv, !dbg !17 +// CHECK:STDOUT: %UInt.as.DivWith.impl.Op.call = udiv i32 %a, %b, !dbg !16 +// CHECK:STDOUT: ret i32 %UInt.as.DivWith.impl.Op.call, !dbg !17 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i32 @_Cmod_i32.Main(i32 %a, i32 %b) !dbg !18 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.smod = srem i32 %a, %b, !dbg !19 -// CHECK:STDOUT: ret i32 %int.smod, !dbg !20 +// CHECK:STDOUT: %Int.as.ModWith.impl.Op.call = srem i32 %a, %b, !dbg !19 +// CHECK:STDOUT: ret i32 %Int.as.ModWith.impl.Op.call, !dbg !20 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i32 @_Cmod_u32.Main(i32 %a, i32 %b) !dbg !21 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.umod = urem i32 %a, %b, !dbg !22 -// CHECK:STDOUT: ret i32 %int.umod, !dbg !23 +// CHECK:STDOUT: %UInt.as.ModWith.impl.Op.call = urem i32 %a, %b, !dbg !22 +// CHECK:STDOUT: ret i32 %UInt.as.ModWith.impl.Op.call, !dbg !23 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i32 @_Cmul_i32.Main(i32 %a, i32 %b) !dbg !24 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.smul = mul i32 %a, %b, !dbg !25 -// CHECK:STDOUT: ret i32 %int.smul, !dbg !26 +// CHECK:STDOUT: %Int.as.MulWith.impl.Op.call = mul i32 %a, %b, !dbg !25 +// CHECK:STDOUT: ret i32 %Int.as.MulWith.impl.Op.call, !dbg !26 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i32 @_Cmul_u32.Main(i32 %a, i32 %b) !dbg !27 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.umul = mul i32 %a, %b, !dbg !28 -// CHECK:STDOUT: ret i32 %int.umul, !dbg !29 +// CHECK:STDOUT: %UInt.as.MulWith.impl.Op.call = mul i32 %a, %b, !dbg !28 +// CHECK:STDOUT: ret i32 %UInt.as.MulWith.impl.Op.call, !dbg !29 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i32 @_Cneg_i32.Main(i32 %a) !dbg !30 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.snegate = sub i32 0, %a, !dbg !31 -// CHECK:STDOUT: ret i32 %int.snegate, !dbg !32 +// CHECK:STDOUT: %Int.as.Negate.impl.Op.call = sub i32 0, %a, !dbg !31 +// CHECK:STDOUT: ret i32 %Int.as.Negate.impl.Op.call, !dbg !32 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i32 @_Cneg_u32.Main(i32 %a) !dbg !33 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.unegate = sub i32 0, %a, !dbg !34 -// CHECK:STDOUT: ret i32 %int.unegate, !dbg !35 +// CHECK:STDOUT: %UInt.as.Negate.impl.Op.call = sub i32 0, %a, !dbg !34 +// CHECK:STDOUT: ret i32 %UInt.as.Negate.impl.Op.call, !dbg !35 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i32 @_Csub_i32.Main(i32 %a, i32 %b) !dbg !36 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.ssub = sub i32 %a, %b, !dbg !37 -// CHECK:STDOUT: ret i32 %int.ssub, !dbg !38 +// CHECK:STDOUT: %Int.as.SubWith.impl.Op.call = sub i32 %a, %b, !dbg !37 +// CHECK:STDOUT: ret i32 %Int.as.SubWith.impl.Op.call, !dbg !38 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i32 @_Csub_u32.Main(i32 %a, i32 %b) !dbg !39 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.usub = sub i32 %a, %b, !dbg !40 -// CHECK:STDOUT: ret i32 %int.usub, !dbg !41 +// CHECK:STDOUT: %UInt.as.SubWith.impl.Op.call = sub i32 %a, %b, !dbg !40 +// CHECK:STDOUT: ret i32 %UInt.as.SubWith.impl.Op.call, !dbg !41 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i16 @_Cdiv_i16.Main(i16 %a, i16 %b) !dbg !42 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.sdiv = sdiv i16 %a, %b, !dbg !43 -// CHECK:STDOUT: ret i16 %int.sdiv, !dbg !44 +// CHECK:STDOUT: %Int.as.DivWith.impl.Op.call = sdiv i16 %a, %b, !dbg !43 +// CHECK:STDOUT: ret i16 %Int.as.DivWith.impl.Op.call, !dbg !44 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: define i16 @_Cdiv_u16.Main(i16 %a, i16 %b) !dbg !45 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %int.udiv = udiv i16 %a, %b, !dbg !46 -// CHECK:STDOUT: ret i16 %int.udiv, !dbg !47 +// CHECK:STDOUT: %UInt.as.DivWith.impl.Op.call = udiv i16 %a, %b, !dbg !46 +// CHECK:STDOUT: ret i16 %UInt.as.DivWith.impl.Op.call, !dbg !47 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !llvm.module.flags = !{!0, !1} diff --git a/toolchain/sem_ir/inst_namer.cpp b/toolchain/sem_ir/inst_namer.cpp index eaf9b2a4dfce..24a616e8a842 100644 --- a/toolchain/sem_ir/inst_namer.cpp +++ b/toolchain/sem_ir/inst_namer.cpp @@ -18,7 +18,6 @@ #include "toolchain/base/value_ids.h" #include "toolchain/lex/tokenized_buffer.h" #include "toolchain/parse/tree.h" -#include "toolchain/sem_ir/builtin_function_kind.h" #include "toolchain/sem_ir/entity_with_params_base.h" #include "toolchain/sem_ir/function.h" #include "toolchain/sem_ir/ids.h" @@ -88,10 +87,16 @@ InstNamer::InstNamer(const File* sem_ir) : sem_ir_(sem_ir) { // We process the stack between each large block in order to reduce the // temporary size of the stack. auto process_stack = [&] { - while (!stack_.empty()) { - auto [scope_id, inst_id] = stack_.pop_back_val(); - NamingContext context(this, scope_id, inst_id); - context.NameInst(); + while (!inst_stack_.empty() || !inst_block_stack_.empty()) { + if (inst_stack_.empty()) { + auto [scope_id, block_id] = inst_block_stack_.pop_back_val(); + PushBlockInsts(scope_id, sem_ir_->inst_blocks().Get(block_id)); + } + while (!inst_stack_.empty()) { + auto [scope_id, inst_id] = inst_stack_.pop_back_val(); + NamingContext context(this, scope_id, inst_id); + context.NameInst(); + } } }; @@ -176,6 +181,9 @@ auto InstNamer::GetUnscopedNameFor(InstId inst_id) const -> llvm::StringRef { if (!inst_id.has_value()) { return ""; } + if (IsSingletonInstId(inst_id)) { + return sem_ir_->insts().Get(inst_id).kind().ir_name(); + } const auto& inst_name = insts_[inst_id.index].second; return inst_name ? inst_name.GetFullName() : ""; } @@ -452,7 +460,7 @@ auto InstNamer::AddBlockLabel(ScopeId scope_id, LocId loc_id, AnyBranch branch) auto InstNamer::PushBlockId(ScopeId scope_id, InstBlockId block_id) -> void { if (block_id.has_value()) { - PushBlockInsts(scope_id, sem_ir_->inst_blocks().Get(block_id)); + inst_block_stack_.push_back({scope_id, block_id}); } } @@ -460,7 +468,7 @@ auto InstNamer::PushBlockInsts(ScopeId scope_id, llvm::ArrayRef inst_ids) -> void { for (auto inst_id : llvm::reverse(inst_ids)) { if (inst_id.has_value() && !IsSingletonInstId(inst_id)) { - stack_.push_back(std::make_pair(scope_id, inst_id)); + inst_stack_.push_back(std::make_pair(scope_id, inst_id)); } } } @@ -504,12 +512,45 @@ auto InstNamer::PushEntity(ClassId class_id, ScopeId scope_id, Scope& scope) PushBlockId(scope_id, class_info.pattern_block_id); } +auto InstNamer::GetNameForParentNameScope(NameScopeId name_scope_id) + -> llvm::StringRef { + if (!name_scope_id.has_value()) { + return ""; + } + + auto scope_inst = + sem_ir_->insts().Get(sem_ir_->name_scopes().Get(name_scope_id).inst_id()); + CARBON_KIND_SWITCH(scope_inst) { + case CARBON_KIND(ClassDecl class_decl): { + return MaybePushEntity(class_decl.class_id); + } + case CARBON_KIND(ImplDecl impl): { + return MaybePushEntity(impl.impl_id); + } + case CARBON_KIND(InterfaceDecl interface): { + return MaybePushEntity(interface.interface_id); + } + case SemIR::Namespace::Kind: { + // Only prefix type scopes. + return ""; + } + default: { + return ""; + } + } +} + auto InstNamer::PushEntity(FunctionId function_id, ScopeId scope_id, Scope& scope) -> void { const auto& fn = sem_ir_->functions().Get(function_id); LocId fn_loc(fn.latest_decl_id()); + + auto scope_prefix = GetNameForParentNameScope(fn.parent_scope_id); + scope.name = globals_.AllocateName( - *this, fn_loc, sem_ir_->names().GetIRBaseName(fn.name_id).str()); + *this, fn_loc, + llvm::formatv("{0}{1}{2}", scope_prefix, scope_prefix.empty() ? "" : ".", + sem_ir_->names().GetIRBaseName(fn.name_id))); if (!fn.body_block_ids.empty()) { AddBlockLabel(scope_id, fn.body_block_ids.front(), "entry", fn_loc); } @@ -528,18 +569,27 @@ auto InstNamer::PushEntity(ImplId impl_id, ScopeId scope_id, Scope& scope) const auto& impl = sem_ir_->impls().Get(impl_id); auto impl_fingerprint = fingerprinter_.GetOrCompute(sem_ir_, impl_id); - // TODO: Invent a name based on the self and constraint types. - std::string impl_name; - if (auto interface_id = impl.interface.interface_id; - interface_id.has_value()) { - auto interface_info = sem_ir_->interfaces().Get(interface_id); - impl_name = llvm::formatv( - "{0}.impl", - sem_ir_->names().GetIRBaseName(interface_info.name_id).str()); + llvm::StringRef self_name; + auto self_const_id = + sem_ir_->constant_values().GetConstantInstId(impl.self_id); + if (IsSingletonInstId(self_const_id)) { + self_name = sem_ir_->insts().Get(self_const_id).kind().ir_name(); + } else if (const auto& inst_name = insts_[self_const_id.index].second) { + self_name = inst_name.GetBaseName(); } else { - impl_name = "impl"; + self_name = ""; } - scope.name = globals_.AllocateName(*this, impl_fingerprint, impl_name); + + llvm::StringRef interface_name; + if (impl.interface.interface_id.has_value()) { + interface_name = MaybePushEntity(impl.interface.interface_id); + } else { + interface_name = ""; + } + + scope.name = globals_.AllocateName( + *this, impl_fingerprint, + llvm::formatv("{0}.as.{1}.impl", self_name, interface_name)); AddBlockLabel(scope_id, impl.body_block_id, "impl", impl_fingerprint); // Push blocks in reverse order. @@ -571,6 +621,8 @@ auto InstNamer::PushEntity(VtableId vtable_id, ScopeId /*scope_id*/, scope.name = globals_.AllocateName( *this, vtable_loc, sem_ir_->names().GetIRBaseName(class_info.name_id).str() + ".vtable"); + // TODO: Add support for generic vtables here and elsewhere. + // PushGeneric(scope_id, vtable_info.generic_id); } InstNamer::NamingContext::NamingContext(InstNamer* inst_namer, @@ -708,19 +760,7 @@ auto InstNamer::NamingContext::NameInst() -> void { AddInstName(""); return; } - const auto& function = - sem_ir().functions().Get(callee_function.function_id); - auto function_name = - inst_namer_->MaybePushEntity(callee_function.function_id); - // Name the call's result based on the callee. - if (function.builtin_function_kind() != BuiltinFunctionKind::None) { - // For a builtin, use the builtin name. Otherwise, we'd typically pick - // the name `Op` below, which is probably not very useful. - AddInstName(function.builtin_function_kind().name().str()); - return; - } - - AddInstName((function_name + ".call").str()); + AddEntityNameAndMaybePush(callee_function.function_id, ".call"); return; } case CARBON_KIND(ClassDecl inst): { @@ -910,8 +950,7 @@ auto InstNamer::NamingContext::NameInst() -> void { if (const_id.has_value() && const_id.is_concrete()) { auto const_inst_id = sem_ir().constant_values().GetInstId(const_id); if (!inst_namer_->insts_[const_inst_id.index].second) { - inst_namer_->PushBlockInsts(ScopeId::Imports, - llvm::ArrayRef(const_inst_id)); + inst_namer_->PushBlockInsts(ScopeId::Imports, const_inst_id); } } return; diff --git a/toolchain/sem_ir/inst_namer.h b/toolchain/sem_ir/inst_namer.h index fcaf44c2b7d6..6c322d96a0c6 100644 --- a/toolchain/sem_ir/inst_namer.h +++ b/toolchain/sem_ir/inst_namer.h @@ -63,6 +63,10 @@ class InstNamer { // Returns the IR name for the specified scope. auto GetScopeName(ScopeId scope) const -> std::string; + // Returns the name for a parent NameScope. Does not return a name for + // namespaces. Used as part of naming functions with their containing scope. + auto GetNameForParentNameScope(NameScopeId name_scope_id) -> llvm::StringRef; + // Returns the IR name to use for a function, class, or interface. template requires(ScopeIdTypeEnum::Contains || std::same_as) @@ -229,7 +233,9 @@ class InstNamer { std::vector generic_scopes_; // The stack of instructions to name. - llvm::SmallVector> stack_; + llvm::SmallVector> inst_stack_; + // The stack of blocks to traverse. + llvm::SmallVector> inst_block_stack_; }; } // namespace Carbon::SemIR